多功能电子钟设计报告.doc_第1页
多功能电子钟设计报告.doc_第2页
多功能电子钟设计报告.doc_第3页
多功能电子钟设计报告.doc_第4页
多功能电子钟设计报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计报告班级: 学号:姓名: 专业: 学院: 多功能电子时钟设计一、 设计任务1、 基本任务:利用定时器/计数器中断和静态显示或动态显示,实现电子钟的时分秒精确走时和校准。时间显示用四个数码管分别显示时、分,秒用点表示,在时和分的中间闪动。时间校准用2个键实现:一个键K1做选择(选中要修改的位,选中的位用闪烁指示),一个键K2做加1键(对选中的位要加1修改)。2、 功能增强型任务:在基本任务的基础上加日历功能,能实现时、分、秒和月、日计时,分两屏显示。二、 设计要求1、 基本任务要求:(1) 时间走时准确,每天误差不能超过3秒。(2) 仿照电子表的校时功能,校时修改时,被修改为能闪烁显示,按键要灵敏。(3) 若最高位为0,高位要能灭零显示。三、 硬件设计1、按键的设计按键K1、K2、K3、K4分别连接单片机芯片的P1.4、P1.5、P1.6、P1.7引脚,K1为时间与日期的切换显示键,K2为时间校正键,K3为加1键,K4为确定键。2、 定时器的设计定时器采用T0,T0的工作方式为方式1,定时器初值=21662500=3036,化为十六进制即为0BDC,所以定时器T0由3036计到65536所需的时间为1/16s。3、 显示电路的设计本设计采用串行口静态显示方式,数据由RXD(P3.0)口送到74LS164中,4段数码管和4片74LS164相串联,TXD(P3.1)口作为移位脉冲,连接74LS164的第8引脚。四、 资源分配 1/16计数单元:2FH 月单元:30H 日单元:31H 时单元;:32H分单元:33H秒单元:34H校正状态标志位:20H.1时间日期标志位:20H.0校正指针单元:21H五、 流程图主程各地址单元初始化启动定时器T0,开中断等待初始化T0中断程序T0重赋初值月单元变1是否计满16次秒加1,是否到60秒分加1,是否到60分时加1,是否到24时日加1,是否到31天月加1,是否到12月NNNNNYYYYYYKEYKEY走时显示日期显示时间校时20H,1是否为1判断20H.1是否为1判断是否与上次按键相同判断是否与上次按键相同判断20H.0是否为1KEY2KEY1显示时间显示日期NNYNYNYYYN显示显示缓冲区中的内容分解为BCD码依次放入43H40H中送熄灭码查表42H,43H#0A40H,41H#0A判断20H.1是否为1判断2FH.3是否为1判断21H.0是否为1判断高位是否为零将A中的笔画码送至SBUF中NYNYYNYN六、 程序代码 ORG 0000H SJMP MAIN ORG 000BH LJMP ITOP ORG 0030HMAIN: MOV 50H,#0FFH ;按键信息初始化为未按键状态 MOV 30H,#1 ;月单元 MOV 31H,#1 ;日单元 MOV 32H,#0 ;时单元 MOV 33H,#0 ;分单元 MOV 34H,#0 ;秒单元 MOV 2FH,#16 ;2FH为十六分之一秒计数单元 CLR 20H.1 ;校正状态标志清零,为正常走时状态 SETB 20H.0 ;时间/日期标志置1 MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0BH ;采用12M晶振,定时十六分之一秒 MOV TL0,#0DCH ;装载定时器初值 MOV IE,#82H ; 允许中断 SETB TR0 ;启动定时器 SJMP $ITOP: PUSH PSW ;现场保护 PUSH ACC MOV TH0,#0BH MOV TL0,#0DCH DJNZ 2FH,KEY ;计数开始 MOV 2FH,#16 ;十六分之一秒计数单元 MOV A,34H ADD A,#01H ;在09之间,加01H DA A ;进行十进制调整 MOV 34H,A ;送到秒计数单元 CJNE A,#60H,KEY ;未到六十秒转移到KEY,到了则顺序往下执行 MOV 34H,#00H ;秒单元清零 MOV A,33H ;分单元加1,并做十进制调整 ADD A,#01H DA A MOV 33H,A ;送到分计数单元 CJNE A,#60H,KEY ;未到六十分转移到KEY MOV 33H,#00H ;分单元清零 MOV A,32H ;时单元加1,并做十进制调整 ADD A,#01H DA A MOV 32H,A ;送到时单元 CJNE A,#24H,KEY ;未到二十四小时转移,到了则顺序往下执行 MOV 32H,#00H ;时单元清零 MOV A,31H ;日单元加1,并做十进制调整 ADD A,#01H DA A MOV 31H,A ;送到日单元 CJNE A,#31H,KEY ;未到三十一天转移 MOV 31H,#01H ;日单元变为一 MOV A,30H ;月单元加1,并做十进制调整 ADD A,#01H DA A MOV 30H,A ;送到月单元 CJNE A,#12H,KEY ;未到十二个月转移 MOV 30H,#01H ;月单元变为一KEY: JNB 20H.1,ZOUSHI ;判断是否校正状态,不是,则转非校正状态 LJMP JIAOSHI ;是,则转为校正状态ZOUSHI: MOV A,P1 CJNE A,50H,KEY1 ;判断是否与上次按键相同,不相同则转移到KEY LJMP NONE1 ;相同则不断判键KEY1: MOV 50H,A ;保存上次按键信息 JNB ACC.4,SWITCH1 ;是否按下切换键 JNB ACC.5,SET1 ;是否为校正键 LJMP NONE1 ;没按与无效键均不作判断SWITCH1:CPL 20H.0 ;时间与日期的转换NONE1: JNB 20H.0,DATE1 ;判断日期与时间的标志 MOV 3BH,32H ;将时间送到显示缓冲区 MOV 3AH,33H LJMP DISPDATE1: MOV 3BH,30H ;将日期送到显示缓冲区 MOV 3AH,31H LJMP DISPSET1: SETB 20H.1 ;切换到校正标志 MOV 21H,#0 ;校正指针并请零 CLR 20H.0 ;选择日期标志 MOV 3BH,30H ;将日期送到显示缓冲区 MOV 3AH,31H LJMP DISPJIAOSHI:MOV A,P1 CJNE A,50H,KEY2 ;判断是否与上次按键相同 LJMP NONE2 ;若相同则不能判断按键KEY2: MOV 50H,A ;保存上次按键信息 JNB ACC.5,SET2 ;是否为校正键 JNB ACC.6,ADD2 ;是否为加键 JNB ACC.7,SURE ;是否为确定键 LJMP NONE2 ;空操作SET2: INC 21H ;校正指针并自动加1 ANL 21H,#03H SJMP NONE2ADD2: MOV A,#30H ;指向需要校正的指针 ADD A,21H MOV R0,A MOV A,R0 ;需要校正的指针并自动加1 ADD A,#1 DA A MOV R0,A CJNE R0,#30H,DATE ;判断月是否校正完成,校正完成跳转日 CJNE R0,#13H,NONE2 MOV R0,#1 SJMP NONE2DATE: CJNE R0,#31H,HOUR ;判断日是否校正完成,完成则跳转到时 CJNE R0,#32H,NONE2 MOV R0,#1 SJMP NONE2HOUR: CJNE R0,#32H,MIN ;判断时是否校正完成,完成则跳转到分 CJNE R0,#24H,NONE2 MOV R0,#0 SJMP NONE2MIN: CJNE R0,#60H,NONE2 ;校正分 MOV R0,#0 SJMP NONE2SURE: CLR 20H.1 ;校时完成跳转到走时标志 SJMP TIME2NONE2: JNB 21H.1,DATE2 ;判断送到显示缓冲区的是时间还是日期TIME2: SETB 20H.0 ;时间/日期标志置1,为显示时间状态 MOV 3BH,32H ;时间送到显示缓冲区 MOV 3AH,33H LJMP DISPDATE2: CLR 20H.0 ;时间/日期标志位清零,为显示日期状态 MOV 3BH,30H ;日期送到显示缓冲区 MOV 3AH,31H DISP: MOV A,3BH ;显示缓冲区中的内容分解为四位BCD码依次放入43H40H单元 ANL A,#0F0H SWAP A MOV 43H,A MOV A,3BH ANL A,#0FH MOV 42H,A MOV A,3AH ANL A,#0F0H SWAP A MOV 41H,A MOV A,3AH ANL A,#0FH MOV 40H,A JNB 20H.1,DISP1 ;不是校正状态,正常显示,否则校正状态下,闪烁显示 JNB 2FH.3,DISP1 ;若2FH.3为0正常显示,若2FH.3为1,校正内容对应的BCD码单元送熄灭码 JNB 21H.0,N1 ;从校正指针判断送熄灭码的单元,为0高两位传送,为1低两位传送 MOV 40H,#0AH MOV 41H,#0AH SJMP DISP1N1: MOV 42H,#0AH MOV 43H,#0AH LJMP DISP1DISP1: MOV DPTR,#TAB ;指向表单 MOV A,43H ;查最高位 MOVC A,A+DPTR CJNE A,#09H,NEXT1 ;判断最高位是否为0 MOV A,#0FFH ;为0 则给熄灭码NEXT1: MOV SBUF,A ;传送到数码管上,串行静态显示 JNB TI,$ CLR TI MOV A,42H ;查第二位 MOVC A,A+DPTR MOV C,2FH.3 ;判断并改变小数点,并判断半秒亮半秒灭 ANL C,20H.0 MOV ACC.0,C MOV SBUF,A ;传送到数码管上 JNB TI,$ ;等待传输完毕 CLR TI ;允许继续传输 MOV A,41H ;查第三位 MOVC A,A+DPTR ;查显示数据对应段码 JB 20H.0,NEXT2 ;判断时间/日期标志 CJNE A,#09H,NEXT2 ; 日期灭0,时间状太不灭0 MOV A,#0FFHNEXT2: MOV SBUF,A JNB TI,$ CLR TI MOV A,40H ;查第四位 MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI POP ACC ;现场恢复 POP PSW RETITAB: DB 09H,7DH,07H,15H,71H,91H,81H,3DH,01H,11H,0FFH END 七、总结 通过维持两天的课程设计,我对单片机有了更深的理解,以前做一些简单的实验还能自己编写代码,然后独立完成实验,但现在做个复杂点的设计,还是觉得有些难度的,不过思路还是有点的,在自己尝试着编写程序时,遇到的困难还是挺多的,特别是在写校时和显示的程序写到一半就写不下了,最后不得不参考别人的程序!有时候自己觉得刚开始不会写程序不要紧,能看懂别人写的程序还是挺重要的,因为程序看多了,有一定的积累,到最后自己写程序还是没问题的。这两

温馨提示

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

评论

0/150

提交评论