1、 3)建议有条件的同学做出实物。 4)时间:12周到16周,16周上交。四 设计基本原理时钟是利用单片机内部的定时器/计数器来实现,它的处理过程如下:首先设定单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后用另一个定时器/计数器或软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容在相应位置显示出来即可。用定时计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为15536。形成定时时间为50ms。用片内RAM的7BH单元对50
2、ms计数,计20次1秒钟到,然后对秒计数器78H单元加1,秒计数器加到60后向分进位,则分计数器79H单元加1而秒计数器78H单元清零;分计数器加到60后又向时进位,则时计数器7AH单元加1而分计数器79H单元清零;时计数器加到24则时计数器清零。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位、分十位、分个位、秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理。另外添加两个按键,一个显示时间,一个用于显示年月日。此外,还从P0口引出两条线,分别控制led灯,蜂鸣器。所用的主要器件为:单片机:80C52 LED数码管:7
3、SEG-MPX8-CA-BLUE(CA:共阳)五 设计成果 1.仿真电路图2.日历界面3.计时器界面六 流程图: 开始显示单元清零T0、T1设为16位计数模式允许T0中断调用显示子程序进入功能程序按下键否?否是 七 主要代码:ORG 0000HLJMP STARTORG 000BH LJMP INTT0START:MOV R0,#70HMOV R7,#0CHINIT: MOV R0,#00H;存储单元清零INC R0DJNZ R7,INITMOV 72H,#10;时、分、秒之间的短横显示MOV 75H,#10MOV TMOD,#01HMOV TL0,#0B0H;50ms定时初值MOV TH0,
4、#03CHSETB EASETB ET0SETB TR0START1:LCALL SCANLCALL KEYSCANSJMP START1;延时1MS子程序DL1MS:MOV R6,#14HDL1:MOV R7,#19HDL2:DJNZ R7,DL2DJNZ R6,DL1RET延时20MS子程序DL20MS:ACALL SCAN数码管显示程序SCAN:MOV A,78H ;秒计数值由二进制转十进制后MOV B,#0AH; 送入显示缓冲区相应位置DIV ABMOV 71H,AMOV 70H,BMOV A,79H;分计数值由二进制转十进制后MOV B,#0AH;MOV 74H,AMOV 73H,B
5、MOV A,7AH;时计数值由二进制转十进制后MOV 77H,AMOV 76H,BMOV R1,#70H ;循环扫描显示MOV R5,#80H ;显示秒个位的位码(LED共阳)MOV R3,#08HSCAN1:MOV A,R5MOV P2,A;位码从P2口送出MOV A,R1MOV DPTR,#TABMOVC A,A+DPTRMOV P0,A;字段码从P0口送出LCALL DL1MS;延时1msINC R1RR AMOV R5,ADJNZ R3,SCAN1MOV P2,#00HMOV P0,#0FFHTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H
6、,90H,0BFH;“09”,“-”的共阳极字段码INTT0:PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HINC 7BHMOV A,7BHCJNE A,#14H,OUTT0MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0MOV 78H,#00INC 79HMOV A,79HMOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0MOV 7AH,#00OUTT0:pop pswpop accRETI按键处理程序KEYSCAN:CLR EAJNB P1.0,KEYSCAN0JNB P1
7、.1,KEYSCAN1JNB P1.2,KEYSCAN2KEYOUT:KEYSCAN0:LCALL DL20MSJB P1.0,KEYOUTWAIT0:JNB P1.0,WAIT0INC 7CHMOV A,7CHCJNE A,#03H,KEYOUTMOV 7CH,#00SETB TR0;K0按3次后又恢复走时SJMP KEYOUTKEYSCAN1:JB P1.1,KEYOUTWAIT1:JNB P1.1,WAIT1CJNE A,#02H,KSCAN11INC 79H;分计数器加1CJNE A,#3CH,KEYOUTKSCAN11:INC 7AH ;时计数器加1CJNE A,#18H,KEYOU
8、TKEYSCAN2:JB P1.2,KEYOUTWAIT2:JNB P1.2,WAIT2CJNE A,#02H,KSCAN21DEC 79HCJNE A,#0FFH,KEYOUTMOV 79H,#3BH;把59给分计数器KSCAN21:DEC 7AHMOV 7AH,#17H;把23给时计数器END八 心得体会 经过这次课程设计,我发现了很多单靠课堂知识无法解决的问题,通过自己动手实践也加强了处理问题的能力,能够排除困难和问题完成设计。第一次实际使用protues,出现了许多问题,甚至包括系统兼容问题,通过查找资料逐步解决问题,使得自己的实践能力有了较大提高,对protues的应用环境也更为熟悉。而实际的设计电路编写程序更是对本学期课程的检验。再说代码的编写,程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出。最后在不断地调试改进后,终于完成了这一设计。而整个过程表明实践能力还有待加强,在今后的学习工作中,需要逐渐加强这一点。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1