1 / 13
文档名称:

单片机彩灯实验.pdf

格式:pdf   大小:1,083KB   页数:13页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机彩灯实验.pdf

上传人:青山代下 2024/5/21 文件大小:1.06 MB

下载得到文件列表

单片机彩灯实验.pdf

相关文档

文档介绍

文档介绍:该【单片机彩灯实验 】是由【青山代下】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【单片机彩灯实验 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..《微机实验》报告实验名称华中科技大学彩灯控制实验指导教师曹丹华专业班级光实1201姓名学号一、任务要求实验内容:利用C8051F310单片机设计一个彩灯控制器主要功能和技术指标要求:。。。提高要求:使用按键(KINT)控制LED灯闪烁频率,闪烁频率多级可调。二、设计思路功能实现:不按键时显示器最开始显示“love”,从左至右,,响完一个周期,响一次蜂鸣器,继续循环。按下Kint键,频率变慢,连续按频率更慢,变为之前的一半,分为四个档,直到变为最开始的1/8后,继续按变回最开始的频率。按键K0,K1,K2,K3时,显示屏上的图形变为从右至左的再从左至右的“L”,每个“L”,响完一轮响一次蜂鸣器,频率同样可以按KINT键调节。按键K4,K5,K6,K7时,显示屏上的图形变为从右至左的“O”,每个“O”,响完一轮响一次蜂鸣器,频率同样可以按KINT键调节。按键K8,K9,K10,K11时,显示屏上的图形变为从右至左的“V”,每个“V”,响完一轮响一次蜂鸣器,频率同样可以按KINT键调节。按键K12,K13,K14,K15时,显示屏上的图形变为从右至左的“E”,每个“E”,响完一轮响一次蜂鸣器,频率同样可以按KINT键调节。设计思路:先进行初始化设置,利用Config2软件生成初始代码,关闭看门狗,设置P0,P1,P2端口的输入输出形态,,,来得到想要的图形,并利用延时控制1:..《微机实验》报告好视觉效果,最重要的是在延时程序中插入扫描键盘的程序,这样每次显示图形的时候都能扫描一次键盘,能使频率和图形随时根据键盘发生改变,扫描键盘后判断有无按键,无按键继续显示之前的图形,有按键再跳到对应的图形显示程序,反复循环。扫描键盘时先扫描KINT键,,不是则延时不变,是则改变延时程序的循环次数来改变频率。此外,按键时要注意防抖,防抖程序延时10ms。三、:KINT键,,:控制图形显示在哪个数码管,=0,=0,=0,=1,=1,=0,=1,=1,最右边的数码管P1:控制每个数码管的图形P2::蜂鸣器,=0,蜂鸣器关闭,=1,蜂鸣器打开30H:储存改变频率的延时循环次数T0:定时,通过控制延时来控制闪烁频率R0:暂时存储数据四、流程图2:..《微机实验》报告开始初始化显示LOVE延时200ms*(30H)=0?=0?=1?=1?=1?示VY循环显示E3:..《微机实验》报告五、源代码(含文件头说明、语句行注释)$include()ORG0000HLJMPMAINORG0100HMAIN:LCALLInit_Device;;关闭蜂鸣器MOV30H,#01H;赋初值ACALLLED0;未按键时显示loveLED0:MOVP0,#0FFHMOVP1,#1CHACALLDLY2;跳转到延时程序MOVP0,#0BFHMOVP1,#0FCHACALLDLY2MOVP0,#7FHMOVP1,#7CHACALLDLY2MOVP0,#3FHMOVP1,#;;循环显示RET4:..《微机实验》报告KINT:,SCANKEY;判断是否按下kint键ACALLDLY1;延时后继续查看,,SCANKEYMOVA,30H;30H中存的数改变延时程序的循环次数RLACJNEA,#16,PINLV;频率分四档,继续按kint键返回原始频率MOVA,#01HPINLV:MOV30H,A;存入按键后的改变频率的循环次数SCANKEY:ACALLJK;转入判键程序JNZAKAJMPNOKEYAK:ACALLDLY1;防抖ACALLJKJNZCASE1;有键按下跳转到数码显示管AJMPNOKEYNOKEY:RET;无键按下返回CASE1:.4,CASE2;按键为K0,K1,K2,K3时,显示LED1,否则跳到case2LED1:MOVP0,#3FH;按键为K0,K1,K2,K3时,来回显示LMOVP1,#1CHACALLDLY2;延时MOVP0,#7FHMOVP1,#1CHACALLDLY2MOVP0,#0BFHMOVP1,#1CHACALLDLY25:..《微机实验》报告MOVP0,#0FFHMOVP1,#1CHACALLDLY2MOVP0,#0BFHMOVP1,#1CHACALLDLY2MOVP0,#7FHMOVP1,#;循环显示RETCASE2:.5,CASE3;按键为K4,K5,K6,K7时,显示LED2,否则跳到case3LED2:MOVP0,#3FH;按键为K4,K5,K6,K7时,循环显示OMOVP1,#0FCHACALLDLY2;;延时MOVP0,#7FHMOVP1,#0FCHACALLDLY2MOVP0,#0BFHMOVP1,#0FCHACALLDLY2MOVP0,#0FFHMOVP1,#;一轮显示结束,响一次蜂鸣器6:..《微机实验》;循环显示RETCASE3:.6,LED4;按键为K8,K9,K10,K11时,显示LED3,否则跳到LED4LED3:MOVP0,#3FH;按键为K8,K9,K10,K11时,循环显示VMOVP1,#7CHACALLDLY2;延时MOVP0,#7FHMOVP1,#7CHACALLDLY2MOVP0,#0BFHMOVP1,#7CHACALLDLY2MOVP0,#0FFHMOVP1,#;一轮显示结束,;循环显示RETLED4:MOVP0,#3FH;按键为K12,K13,K14,K15时,循环显示EMOVP1,#9EHACALLDLY2MOVP0,#7FHMOVP1,#9EH7:..《微机实验》报告ACALLDLY2MOVP0,#0BFHMOVP1,#9EHACALLDLY2MOVP0,#0FFHMOVP1,#;一轮显示结束,;循环显示RETJK:MOVP2,#0F0H;判键程序MOVA,P2ORLA,#0FHCPLARETDLY1:CLRTF0;防抖程序,延时10msMOVTH0,#0FDHMOVTL0,#8FHSETBTR0JNBTF0,$;等待定时结束CLRTF0;清除TF0CLRTR0RETDLY2:CLRTF0;延时程序MOVR0,30H;取出30H中的控制频率的数8:..《微机实验》报告DLY3:MOVTH0,#0CFH;定时200msMOVTL0,#2CHSETBTR0JNBTF0,$;等待定时结束CLRTF0CLRTR0DJNZR0,DLY3;控制延时次数,改变频率LCALLKINT;延时结束后扫描键盘RET;返回;------------------------------------;-GeneratedInitializationFile--;------------------------------------;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:anlPCA0MD,#0BFhmovPCA0MD,#000hretTimer_Init:movTMOD,#001hmovCKCON,#002hretPort_IO_Init:;-Unassigned,Open-Drain,Digital;-Unassigned,Open-Drain,Digital;-Unassigned,Open-Drain,Digital9:..;-Unassigned,Open-Drain,Digital;-Unassigned,Open-Drain,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,Digital;-Unassigned,Push-Pull,DigitalmovP0MDOUT,#0C0hmovP1MDOUT,#0FFhmovP2MDOUT,#00FhmovXBR1,#040hret;Initializationfunctionfordevice,;CallInit_DevicefromyourmainprogramInit_Device:lcallPCA_InitlcallTimer_Init10:..retend测试结果如图,程序运行正常下图为未按键时显示的P1各端口的波形图,~,由图知,-=,与设计的5*200ms=1s接近,符合要求。其他模式的闪烁也符合要求。11:..下图为变频一次后的P1各端口的波形图,~,变频一次后周期变为之前的两倍,即2s,-=,与预期的频率接近,其他模式也符合要求。下图为单片机运行时的图片:Love图片按键测试:按键多次,均能灵敏反应,改变闪烁频率或闪烁图形。12:..这次试验难度很大,但却很有意思,虽然花了很长时间但是收获很大。设计这样一个系统时,首先一定要有一个清晰地思路,然后画好流程图是关键,一步步按照流程图去做,之后再慢慢进行调试,先一个模块一个模块进行,再整体调试。调试过程中也遇到了很多的问题,比如开始时总是说超出范围,后来改变了一下代码问题就解决了。刚开始时,运行按键一直没用,后来我一步一步运行,设置断点,观察寄存器和各端口数据终于找到了问题之所在,是把已经赋值的端口拿去判断了,导致一直是同样的结果,经过修改,程序终于能够正常运行。而程序能够运行的那一瞬间,心里特别高兴。总之,设计单片机实验一定要有耐心,不能心急,要一步一步来,理清楚思路,也要对所学知识牢固掌握,运用自如,才能把程序设计出来设计好。这次课程设计培养了我的动手能力,也让我更了解了有关单片机的知识,提升了自己对程序与硬件的理解,收获很大。:本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。签字:年月日13