单片机课程设计数字时钟_第1页
单片机课程设计数字时钟_第2页
单片机课程设计数字时钟_第3页
单片机课程设计数字时钟_第4页
单片机课程设计数字时钟_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华北电力大学科技学院单片机课程设计报告 (20 20 年度第 学期) 题目:电子时钟(LCD)院系:动力工程系 题 目:数字时钟专业班级:学 号:姓 名:指导老师:一、功能能实现定时、时间的调整(只能加不能减)、闹钟的设定(只能加不能减),当闹钟按键按下就进入闹钟设定,再按下那个键就进入时间显示,并且闹钟响铃时间是10秒钟。其整个设计的电路图如下:其中显示的是8个8段LED显示,单片机是80C51,外部晶振是12MHZ,其中和晶振连接的是两个47pF的电容。单片机的p1.0p1.3作为地址总线起到控制作用,p1.7在电路中用一个灯泡代替,在实际中接喇叭,起到闹钟的作用。 P0.0p0.7作为数

2、据总线,把单片机的信号输入到显示器上,p2.0p2.7作为单片机的额数据总线,其作用在显示总起到位选的作用,决定8段LED的亮灭。最下面的那个是RESPACK-8排阻,在电路中防止输入到显示的电压很小,是为输出提供电源的装置,配合显示器的显示。在整个程序中时间的秒、分、时的计数分别存放在20H、21H、22H,闹钟的秒、分、时的计数分别存放在40H、41H、42H。实现定时闹钟的程序有以下几个部分组成:二、流程图1、 定时程序(时间的设定)其程序流程图如下:返回分钟和时钟的流程图和秒钟的一样(20H)+1(20H)是否等于5FH延时1SDA修正20H中的内容(20H)+1开始 N Y2、 调时

3、间的流程图开始 Y判断P1.0是否为60H判断P1.0是否为0判断P1.0是否为0(20H)+1 NN Y N N清零(20H) Y 判断P1.1是否为60H Y判断P1.1是否为0判断P1.1是否为0 (21H)+1 N N Y N N清零(21H) Y判断P1.2是否为24H判断P1.2是否为0判断P1.2是否为0 Y(22H)+1 N N Y N N清零(22H) Y3、 显示的流程图(因为显示的刚好是8个,所以不要去考虑左移的个数,直接跳转到初始值。开始提取(20H)的个位查询并送给p0延时150us右移p2提取(20H)的十位查询并送给p0延时150us··4、

4、闹钟设定开始(30H)清零判断p3.5是否为0判断p3.5是否为0和时间设置一样,把(20H)、(21H)、(22H)改成(40H)、(41H)、(42H)时间显示(30H)置1判断p1.3是否为0判断p1.3是否为0NYNYYN时间的设定结束NY三、总程序ORG 0000HMOV P0,#00HMOV P2,#00HMOV SP,#60HCLR 20HCLR 21HCLR 22HCLR 40HCLR 41HCLR 42HMOV DPTR,#TABVV: MOV R6,#1MM: MOV R5,#4NN: MOV R4,#100BB: JNB P1.3,LPP SJMP LLLPP: JNB

5、P1.3,LPP0 SETB 30HAAC: MOV R3,#1AAB: MOV R2,#4AAA: MOV R1,#100CC0: JNB P1.0,CC1 ;判断p1.0是否为按下 SJMP DD0CC1: JNB P1.0,LPP1 ;判断p1.0是否松开,松开秒钟加1 MOV A,40H ADD A,#01H DA A CJNE A,#60H,CC2 CLR ACC2: MOV 40H,ADD0: JNB P1.1,DD1 ;判断p1.1是否按下 SJMP EE0DD1: JNB P1.1,LPP2 ;判断p1.1是否松开,松开分钟加1 MOV A,41H ADD A,#01H DA

6、A CJNE A,#60H,DD2 CLR ADD2: MOV 41H,AEE0: JNB P1.2,EE1 ;判断p1.2是否按下 SJMP HH1EE1: JNB P1.2,LPP3 ;判断p1.2是否松开,松开时钟加1 MOV A,42H ADD A,#01H DA A CJNE A,#24H,EE2 CLR AEE2: MOV 42H,AHH1:LCALL LP JNB P1.3,LP1 DJNZ R1,CC0 DJNZ R2,AAA DJNZ R3,AAB LCALL B2 SJMP AACLP1:JNB P1.3,LPP4LL: CLR 30H LCALL C0 DJNZ R4,B

7、B DJNZ R5,NN DJNZ R6,MM LCALL B2 SJMP VVLPP0:LCALL LP NOP NOP NOP SJMP LPPLPP1:LCALL LP NOP NOP NOP SJMP CC1LPP2:LCALL LP NOP NOP NOP SJMP DD1LPP3:LCALL LP NOP NOP NOP SJMP EE1LPP4:LCALL LP NOP NOP NOP SJMP LP1C0: JNB P1.0,C1 ;判断p1.0是否为按下 SJMP D0C1: JNB P1.0,LLP ;判断p1.0是否松开,松开秒钟加1 MOV A,20H ADD A,#0

8、1H DA A CJNE A,#60H,C2 CLR AC2: MOV 20H,AD0: JNB P1.1,D1 ;判断p1.1是否按下 SJMP E0D1: JNB P1.1,LLP1 ;判断p1.1是否松开,松开分钟加1 MOV A,21H ADD A,#01H DA A CJNE A,#60H,D2 CLR AD2: MOV 21H,AE0: JNB P1.2,E1 ;判断p1.2是否按下 AJMP H0E1: JNB P1.2,LLP2 ;判断p1.2是否松开,松开时钟加1 MOV A,22H ADD A,#01H DA A CJNE A,#24H,E2 CLR AE2: MOV 22

9、H,AH0: LCALL LP RETLLP: LCALL LP NOP ;3个空指令是消除松开时执行指令的时间差 NOP NOP SJMP C1LLP1:LCALL LP NOP NOP NOP SJMP D1LLP2:LCALL LP NOP NOP NOP SJMP E1B2: MOV A,20H ;设置秒钟 ADD A,#01H DA A DEC A CJNE A,#5FH,A1 CLR A MOV 20H,A MOV A,21H ;设置分钟 ADD A,#01H DA A DEC A CJNE A,#5FH,A2 CLR A MOV 21H,A MOV A,22H ;设置时钟 ADD

10、 A,#01H DA A MOV 22H,A CJNE A,#24H,LOOP CLR A MOV 22H,A SJMP LOOPA1: INC A MOV 20H,A SJMP LOOPA2: INC A MOV 21H,ALOOP:DJNZ R0,RR1 SETB P1.7RR1: MOV A,42H ;比较时钟和闹钟的时间是否相等,相等把 XRL A,22H ; p1.7置高电平启动闹钟 CJNE A,#00H,QQ MOV A,41H XRL A,21H ; 异或相等为零 CJNE A,#00H,QQ MOV A,40H XRL A,20H CJNE A,#00H,QQ CLR P1.

11、7 MOV R0,#10QQ: RETLP: MOV P2,#01111111B JNB 30H,WW MOV A,40H SJMP WW0WW: MOV A,20H ;显示秒钟的个位WW0: MOV B,#10H DIV AB MOV 50H,A MOV A,B MOVC A,A+DPTR MOV P0,A LCALL DEL MOV A,P2 ;显示秒钟的十位 RR A MOV P2,A MOV A,50H MOVC A,A+DPTR MOV P0,A LCALL DEL MOV A,P2 ;显示'-' RR A MOV P2,A MOV P0,#01000000B LCA

12、LL DEL MOV A,P2 ;显示分钟的个位 RR A MOV P2,A JNB 30H,WW1 MOV A,41H SJMP WW2WW1: MOV A,21HWW2: MOV B,#10H DIV AB MOV 51H,A MOV A,B MOVC A,A+DPTR MOV P0,A LCALL DEL MOV A,P2 ;显示分钟的十位 RR A MOV P2,A MOV A,51H MOVC A,A+DPTR MOV P0,A LCALL DEL MOV A,P2 ;显示'-' RR A MOV P2,A MOV P0,#01000000B LCALL DEL MO

13、V A,P2 ;显示时钟的个位 RR A MOV P2,A JNB 30H,WW4 MOV A,42H SJMP WW5WW4: MOV A,22HWW5: MOV B,#10H DIV AB MOV 52H,A MOV A,B MOVC A,A+DPTR MOV P0,A LCALL DELMOV A,P2 ;显示时钟的十位RR AMOV P2,A MOV A,52HMOVC A,A+DPTR MOV P0,A LCALL DEL RETDEL: MOV R7,#150 ;显示延迟150us DJNZ R7,$ RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END总结在整个设计中我们学到了在显示程序中的一些方法,比如说怎么实现动态显示,开始的时候总是显示不了,在经过把位选放慢就可以知道自己在设计程序中先显示后右移,所以没有显示的余光,使得显示出现异常。在经过先右移后显示的情况下动态能够正常显示。还有在设定闹钟的时候经常出现到了闹钟的设定时间不跳转,在经过在闹钟的设定的同时还要进行时间的调用,使得这次程序使用的都是程序的调用,把闹钟的设定看作一个主程序,就相当于p1.3按下之后进入闹钟的设定和显示,之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论