51单片机做数字电子钟.docx
- 文档编号:8092957
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:13
- 大小:19.60KB
51单片机做数字电子钟.docx
《51单片机做数字电子钟.docx》由会员分享,可在线阅读,更多相关《51单片机做数字电子钟.docx(13页珍藏版)》请在冰豆网上搜索。
51单片机做数字电子钟
51单片机做数字电子钟
悬赏分:
10-解决时间:
2009-7-517:
42
设计一个数字电子钟,要求可以进行时、分、秒显示,最大显示时间为23:
59:
59,并且可以通过按键进行时、分调整。
"
画出硬件连接电路图,说明各个控制信号的作用。
"
画出程序流程图,编写程序,硬件连接调试,直至正确。
"
编写课程设计报告。
"
3、给定条件
在Dais-52PH+单片机实验箱中,有一片8155芯片用于扩展3×3键盘,还具有6位LED数码显示器,可分别用于按键和显示控制。
在PC机上调试可使用MCS51仿真开发系统。
数字电子钟的工作过程为:
从00:
00:
00(时:
分:
秒)开始计时,以24小时为一循环,最大计时时间为23:
59:
59。
当需要校正时间时,按下调整键,小时的十位闪烁,等待键入新值,若需调整则按下加1按键,数值以秒为单位自动加1,当十位调整好后,按下确认键确认,然后小时的个位闪烁,等待键入新值,按照十位的调整步骤调整时间,并按下确认键确认,当确认后,分钟的十位开始闪烁,等待键入新值,分钟的十位和个位调整过程与小时调整一样,只是当分的个位调整好后,按下确认键即启动计时。
数字电子钟是以1s为最小定时单位的,51单片机自身具有两个16位定时/计数器,当晶振频率为6MHz时,最大定时时间为0.13s。
而具有时、分和秒的数字电子钟只能以1s定时,所以要实现实现1s定时,必须采用软件计数和定时器定时相结合的方法。
每1s定时到,修改显示值,送6位LED显示。
本课题需用6个LED数码管显示时间值,并且需调整键、加1键、确认键等控制键。
在Dais-52PH+单片机实验箱中,6位LED数码显示器的字形口地址为0FFDCH,字位口地址为0FFDDH,字形表和字位表见附录一。
可通过8155可编程接口芯片驱动的3×3键盘实现按键控制(具体电路参考课题一数字秒表)。
8155的PC0~PC2为3×3键盘的行扫线,PB0~PB2为3×3键盘的列扫线,键盘工作过程为:
单片机从8155的PB0~PB2送出全零,并从PC0~PC2读入数据,当PC0~PC2≠000时,表明有键按下,则逐行从PB0~PB2送出零,再从PC0~PC2口读入,最终确定按键位置和键值,此后,转入相应的按键处理程序,修改显示缓冲区内容。
提问者:
wangalong211-一级
最佳答案
源程序如下:
ORG0000H;程序开始入口
LJMPSTART
ORG0003H;外中断0中断程序入口
RETI
ORG000BH;定时器T0中断程序入口
LJMPINTT0;跳至INTTO执行
ORG0013H;外中断1中断程序入口
RETI
ORG001BH;定时器T1中断程序入口
LJMPINTT1
ORG0023H;串行中断程序入口地址
RETI
;---------------主程序----------------------;
START:
MOVR0,#70H;70给R0,清70-7FH显示内存
MOVR7,#0FH
CLEARDISP:
MOVR0,#00H;0给R0中的数为地址的内存中存放(70H)
INCR0
DJNZR7,CLEARDISP
MOV78H,#2;默认时间为12:
00,闹钟5:
00
MOV79H,#1
MOV74H,#2;防止上电时数码管显示00小时
MOV75H,#1
MOV66H,#1;中断退出时66H为1时,分、时计时单元数据移入显存标志
MOV68H,#1;上电默认闹钟开状态
MOV7DH,#6;闹钟时十位
MOV7CH,#3
MOV69H,#0
MOV7AH,#0AH;放入"熄灭符"数据
MOVTMOD,#11H;设T0、T1为16位定时器
MOVTL0,#0B0H;50MS定时初值(T0计时用)
MOVTH0,#3CH
SETBEA;总中断开放
SETBET0;允许T0中断
SETBTR0;T0定时器开始计时
MOVR4,#14H;1秒定时用初值(50MS×20)
START1:
LCALLDISPLAY;显示子程序
LCALLBEEP;闹钟查询
JNBP1.7,SETTIME;P1.7口为0时转时间调整程序
JMPSTART1;P1.7口为1时跳回START1
;-----------------------时间闹钟调整系统--------------------------;
NFLAG:
MOVA,68H;设置闹钟开关状态
CJNEA,#1,BEE68
MOV68H,#0
JMPE6
BEE68:
MOV68H,#1
E6:
MOV66H,#8;中断退出66H不为1时分、时计时单元数据移入显存标志
MOV72H,7BH
MOV73H,7CH
MOV74H,7DH
MOV75H,7EH
LCALLDDL
LCALLDDL
MOV72H,68H
MOV73H,69H
MOV74H,7AH
MOV75H,7AH
LCALLDDL
LCALLDDL
MOV66H,#1
LJMPSTART1
SETTIME:
LCALLDDL
P1.7,NFLAG;键按下时间小于1秒,设置闹钟开关状态并查看闹钟时间,不关走时,确保准确,大于1秒调时
MOVTL1,#0B0H;T1闪烁定时初值
MOVTH1,#3CH
MOVR2,#06H;进入调时状态,赋闪烁定时初值
MOV66H,#8;调闹钟时保持走时,关闭时钟显示数据
SETBET1;允许T1中断
SETBTR1;开启定时器T1
SET1:
LCALLDISPLAY;调用显示,防止键按下无显示
JNBP1.7,SET1;P1.7口为0等待键释放
MOVR5,#00H;清设置类型闪烁标志
SETN1:
INCR5;闹钟分调整
SET5:
LCALLDISPLAY
P1.7,SET5
SEETN1:
LCALLDDL;有键按下大于1秒分时间连续加(0.5秒加1),小于1秒转调时状态
P1.7,SET6;键释放查询,键释放自动转调时
MOVR0,#7CH
LCALLADD1
MOVA,R3
CLRC
CJNEA,#60H,HHN1
HHN1:
JCSEETN1
LCALLCLR0
JMPSEETN1
SET6:
INCR5;闹钟时调整
SEET6:
LCALLDISPLAY
P1.7,SEET6
SEETNH1:
LCALLDDL
P1.7,SETF
MOVR0,#7EH
LCALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUU1
HOUU1:
JCSEETNH1
LCALLCLR0
JMPSEETNH1
SETF:
LCALLDISPLAY
P1.7,SETF
LCALLDDL
JNBP1.7,SETOUT;短按调时,长按退出
CLRET0
CLRTR0
MOV70H,#00H;设定后的时间从00秒开始走时
MOV71H,#00H
INCR5
SET3:
LCALLDISPLAY
P1.7,SET3
SETMM:
LCALLDDL
P1.7,SET4
MOVR0,#77H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#60H,MMH
MMH:
JCSETMM
LCALLCLR0
AJMPSETMM
SET4:
INCR5
SEET4:
LCALLDISPLAY
P1.7,SEET4
SETHH:
LCALLDDL
P1.7,SETOUT1
MOVR0,#79H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUU
HOUU:
JCSETHH
LCALLCLR0
AJMPSETHH
SETOUT1:
SETBET0
SETBTR0;计时开始
SETOUT:
MOVR5,#00H;清设置类型闪烁标志
CLRTR1;关闭T1
CLRET1;关T1中断
MOV66H,#1
SETOUT2:
LCALLDISPLAY
JNBP1.7,SETOUT2
LJMPSTART1
;--------------------------延时1秒钟-----------------------;
DDL:
MOV18H,#36
DDL0:
MOV17H,#239
DDL1:
LCALLDISPLAY
DJNZ17H,DDL1
DJNZ18H,DDL0
RET
;----------------------------T0中断程序------------------------;
INTT0:
PUSHACC;打包
PUSHPSW
CLRET0
CLRTR0
MOVA,#0B7H
ADDA,TL0
MOVTL0,A
MOVA,#3CH
ADDCA,TH0
MOVTH0,A
SETBTR0
DJNZR4,OUTT0;20次中断未到中断退出
ADDSS:
MOVR4,#14H;20次中断到(1秒)重赋初值
MOVR0,#71H;指向秒计时单元(70-71H)
ACALLADD1;调用加1程序(加1秒操作)
MOVA,R3;秒数据放入A(R3为2位十进制数组合)
CLRC;清进位标志
CJNEA,#60H,ADDMM
ADDMM:
JCOUTT01;小于60秒退出
ACALLCLR0;等于或大于60秒清0
MOVR0,#77H;指向分计时单元(76H-77H)
ACALLADD1
MOVA,R3
CLRC
CJNEA,#60H,ADDHH
ADDHH:
JCOUTT0
ACALLCLR0
MOVR0,#79H;指向小时计时单元(78H-79H)
ACALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUR
HOUR:
JCOUTT0
ACALLCLR0
OUTT0:
MOVA,66H;查询标志
CJNEA,#1,OUTT01
MOV72H,76H;中断退出时将分、时计时单元数据移入对应显示单元
MOV73H,77H
MOV74H,78H
MOV75H,79H
OUTT01:
POPPSW;出栈
POPACC
SETBET0;开放T0
RETI;中断返回
;---------------------------加1程序--------------------------;
ADD1:
MOVA,R0;取当前计时单元数据到A
DECR0;指向前一地址
SWAPA;A中数据高四位与低四位交换
ORLA,R0;前一地址中数据放入A中低四位
ADDA,#01H;A加1操作
DAA;十进制调整
MOVR3,A;移入R3寄存器
ANLA,#0FH;高四位变0
MOVR0,A;放回前一地址单元
MOVA,R3;取回R3中暂存数据
INCR0;指向当前地址单元
SWAPA;A中数据高四位与低四位交换
ANLA,#0FH;高四位变0
MOVR0,A;数据放入当削地址单元中
RET
CLR0:
CLRC
CLRA;清累加器
MOVR0,A;清当前地址单元
DECR0;指向前一地址
MOVR0,A;前一地址单元清0
RET;子程序返回
;-------------------------调时闪烁程序----------------------;
INTT1:
PUSHACC
PUSHPSW
MOVTL1,#0B0H
MOVTH1,#3CH
DJNZR2,INTT1OUT;0.3秒未到退出中断(50MS中断6次)
MOVR2,#06H;重装0.3秒定时用初值
CPL02H;0.3秒定时到对闪烁标志取反
02H,FLASH1;02H位为1时显示单元"熄灭"
MOVA,R5
CJNEA,#01H,NL
JMPNNN1
NL:
CJNEA,#02H,NL1
LJMPNNN1
NL1:
CJNEA,#03H,NL2
LJMPNLL
NL2:
CJNEA,#04H,INTT1OUT
LJMPNLL
NLL:
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
AJMPINTT1OUT
NNN1:
MOV72H,7BH
MOV73H,7CH
MOV74H,7DH
MOV75H,7EH
INTT1OUT:
POPPSW;恢复现场
POPACC
RETI;中断退出
FLASH1:
MOVA,R5
CJNEA,#01H,ML
LJMPMNN1
ML:
CJNEA,#02H,ML1
LJMPMNN2
ML1:
CJNEA,#03H,MN
LJMPMLL
MN:
CJNEA,#04H,INTT1OUT
LJMPMHL
MLL:
MOV72H,7AH
MOV73H,7AH;显示单元(72-73H),将不显示分数据
MOV74H,78H
MOV75H,79H
AJMPINTT1OUT
MHL:
MOV72H,76H
MOV73H,77H
MOV74H,7AH;显示单元(74-75H),小时数据将不显示
MOV75H,7AH
AJMPINTT1OUT
MNN1:
MOV72H,7AH
MOV73H,7AH;显示单元(72-73H),将不显示闹钟分数据
MOV74H,7DH
MOV75H,7EH
AJMPINTT1OUT
MNN2:
MOV72H,7BH
MOV73H,7CH
MOV74H,7AH
MOV75H,7AH;显示单元(74-75H),闹钟小时数据将不显示
AJMPINTT1OUT
;-------------------------显示-------------------------------;
DISPLAY:
MOVDPTR,#DISDATA
MOVA,70H
MOVCA,A+DPTR
MOVP3,A
CLRP1.0
NOP
NOP
NOP
SETBP1.0
MOVA,71H
MOVCA,A+DPTR
MOVP3,A
CLRP1.1
NOP
NOP
NOP
SETBP1.1
MOVA,72H
MOVCA,A+DPTR
MOVP3,A
CLRP1.2
NOP
NOP
NOP
SETBP1.2
MOVA,73H
MOVCA,A+DPTR
MOVP3,A
CLRP1.3
NOP
NOP
NOP
SETBP1.3
MOVA,74H
MOVCA,A+DPTR
MOVP3,A
CLRP1.4
NOP
NOP
NOP
SETBP1.4
MOVA,75H
MOVCA,A+DPTR
MOVP3,A
CLRP1.5
NOP
NOP
NOP
SETBP1.5
RET
BEEP:
MOVA,68H;查询标志
CJNEA,#1,BEERE
MOVA,78H;查询闹钟时个位
CJNEA,7DH,BEERE
MOVA,79H;查询闹钟时十位
CJNEA,7EH,BEERE
MOVA,76H;查询闹钟分个位
CJNEA,7BH,BEERE
MOVA,77H;查询闹钟分十位
CJNEA,7CH,BEERE
BB:
CLRP1.6
LCALLDDL
SETBP1.6
LCALLDDL
JNBP1.7,BEERR
BEERE:
RET
BEERR:
SETBP1.6
MOV68H,#0
LCALLDISPLAY
JNBP1.7,BEERR
JMPBEERE
DISDATA:
DB0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H,50H,0FFH;0123456789空白
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 数字 电子钟