单片机数字钟课程设计.docx
- 文档编号:27004575
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:33
- 大小:210.77KB
单片机数字钟课程设计.docx
《单片机数字钟课程设计.docx》由会员分享,可在线阅读,更多相关《单片机数字钟课程设计.docx(33页珍藏版)》请在冰豆网上搜索。
单片机数字钟课程设计
单
片
机数
课字
程钟
设设
报计
告报
告
●设计目的:
1、熟悉MCS-51指令,以及基本程序的编写/子程序的调用/调试的方法;
2、学习定时/计数器的使用,掌握定时/计数器的编程方法;
3、加强对MCS-51单片机存储器结构的了解,以及堆栈的使用,PUSH、MOV、JB、MOVC等指令和ORG、EQU、DB等指令的用法;
4、根据跑马灯的不同循环模式设计出相应的程序,使跑马灯实现不同的灯光效果。
5、学习将程序从电脑捎入单片机的方法。
●设计要求:
设计的程序必须满足以下要求:
当按下电路板上4※4行列式键盘上相应的按键时,将能够完成不同的功能:
1、F1:
进入计算功能,数据与显示归零,按数字键(0~9)输入数据,按“+”、“—”进行加减运算,数码管显示键入数据或运算结果。
2、F2:
进入时钟显示,数码管显示为时间状态。
3、F3:
进入时间设置功能,当前设置位闪烁,键入数字设定时间,设定完成后按F2确认。
4、F4:
进入跑马灯功能,有四种跑马灯模式可以循环切换,当然也可通过编程实现更多的模式。
●设计电路图:
●程序流程图:
1、时钟功能的程序流程图:
计算器程序流程图
跑马灯程序流程图时钟程序流程图
●程序:
SUDAT00EQU40H;加(减数)
SUDAT01EQU41H
SUDAT02EQU42H
SUDAT03EQU43H
SUDAT10EQU44H;加(被减数)
SUDAT11EQU45H
SUDAT12EQU46H
SUDAT13EQU47H
DISPDAT0EQU29H;显示数据区
DISPDAT1EQU2AH
DISPDAT2EQU2BH
DISPDAT3EQU2CH
DISPDAT4EQU2DH
DISPDAT5EQU2EH
DISPDAT6EQU2FH
DISPLONGEQU31H;显示长度
DISPCONEQU32H;显示计位
KEYDATEQU30H;键码
HOURHEQU34H;时间数据
HOURLEQU35H
MINHEQU36H
MINLEQU37H
LEDMODEQU39H;流水灯模式
SUCONEQU3AH;输入计数
SUBITEQU20H.1;减标示
DPEQU20H.2;秒显标示
KEYBITEQU20H.3;有键码标示
SUEQU20H.4;计算标示
TIMEEQU20H.5;时间标示
TIMESETEQU20H.6;时间设置标示
;
ORG0000H
AJMPSTART
ORG0003H
RETI
ORG000BH
AJMPTIME0
ORG0013H
RETI
ORG001BH
LJMPTIME1
ORG0023H
RETI
;-------------------------------
ORG0050H
START:
MOVA,#00H
MOVR0,#20H
MOVR1,#30H
LOOP0:
MOV@R0,A
INCR0
DJNZR1,LOOP0
MOVSP,#50H
MOVDISPLONG,#07
SETBRS0
SETBRS1
MOVR0,#DISPDAT0
MOVR2,#200
MOVR3,#120
MOVR4,#00
MOVR5,#00
MOVR6,#0FEH
MOVR7,DISPLONG
CLRRS0
MOVR2,#50
MOVR3,#30
CLRRS1
MOVLEDMOD,#02
MOVDISPLONG,#07
MOVDISPCON,#07
MOVKEYDAT,#0FFH
SETBTIME
MOVTL0,#0AH;1E定时2.5MS
MOVTH0,#0F7H
MOVIE,#8AH;开T0,T1
MOVTMOD,#11H;定时方式1
SETBTR0
MOVTL1,#00H;定时10MS
MOVTH1,#0DCH
SETBTR1
MAIN:
ACALLKEY
JNBKEYBIT,MAIN1
ACALLDOKEY
MAIN1:
JBTIME,MAIN2
JBTIMESET,MAIN2
JBSU,MAIN3
MAIN2:
MOVR0,#HOURH
MOVR1,#DISPDAT0
MOVR2,#04H
MAINLOOP:
MOVA,@R0;时间转七段码送显示数据区
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVC,DP
MOVACC.7,C
MOV@R1,A
INCR0
INCR1
DJNZR2,MAINLOOP
SJMPMAIN
MAIN3:
MOVR0,#SUDAT00;计算数转段码送显区
MOVR1,#DISPDAT0
MOVR2,#04H
SJMPMAINLOOP
;;;;;;;;;;;;;;;;;;;;
TAB:
DB
40H,79H,24H,30H,19H
DB
12H,02H,78H,00H,10H
DB7FH,7FH,7FH,7FH,7FH,7FH;0A-0FF全黑
;;;;;;;;;;;;;;;;;;;;;;;;;
;显示子程序
;R0显示数址,R6位选值,R7显示计数,DISPL0NG显示数长度
;DISPDATA0显示数据区首址
DISPLAY:
MOVP2,#0FFH
MOVP0,@R0
MOVP2,R6
INCR0
DJNZR7,DISPLAY1
MOVR7,DISPLONG
MOVR0,#DISPDAT0
MOVR6,#0FEH
SJMPDISPOUT
DISPLAY1:
MOVA,R6
RLA
MOVR6,A
DISPOUT:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;
;键盘扫描程序
;KEYDAT存放键码,双键按下时只认前键
;KEYBIT有键标示
KEY:
MOVP1,#0F0H
MOVA,P1
ORLA,#0FH
XRLA,#0FFH
JZKEYOUT0
MOVA,#60H
LCALLDELAY
MOVP1,#0F0H
MOVA,P1
ORLA,#0FH
XRLA,#0FFH
JZKEYOUT0
MOVP1,#0FEH;KEYDAT存放键码
JNBP1.4,KEY1
JNBP1.5,KEY2
JNBP1.6,KEY3
JNBP1.7,KEY4
MOVP1,#0FDH
JNBP1.4,KEY5
JNBP1.5,KEY6
JNBP1.6,KEY7
JNBP1.7,KEY8
MOVP1,#0FBH
JNBP1.4,KEY9
JNBP1.5,KEY10
JNBP1.6,KEY11
JNBP1.7,KEY12
MOVP1,#0F7H
JNBP1.4,KEY13
JNBP1.5,KEY14
JNBP1.6,KEY15
JNBP1.7,KEY16
MOVKEYDAT,#0FFH
CLRKEYBIT
KEYOUT0:
AJMPKEYOUT1
KEY1:
MOVKEYDAT,#0AH
SJMPKEYOUT
KEY2:
MOVKEYDAT,#09H
SJMPKEYOUT
KEY3:
MOVKEYDAT,#08H
SJMPKEYOUT
KEY4:
MOVKEYDAT,#07H
SJMPKEYOUT
KEY5:
MOVKEYDAT,#0BH
SJMPKEYOUT
KEY6:
MOVKEYDAT,#06H
SJMPKEYOUT
KEY7:
MOVKEYDAT,#05H
SJMPKEYOUT
KEY8:
MOVKEYDAT,#04H
SJMPKEYOUT
KEY9:
MOVKEYDAT,#0CH
SJMPKEYOUT
KEY10:
MOVKEYDAT,#03H
SJMPKEYOUT
KEY11:
MOVKEYDAT,#02H
SJMPKEYOUT
KEY12:
MOVKEYDAT,#01H
SJMPKEYOUT
KEY13:
MOVKEYDAT,#0DH
SJMPKEYOUT
KEY14:
MOVKEYDAT,#0EH
SJMPKEYOUT
KEY15:
MOVKEYDAT,#00H
SJMPKEYOUT
KEY16:
MOVKEYDAT,#0FH
KEYOUT:
SETBKEYBIT
MOVP1,#0F0H
MOVA,P1
ORLA,#0FH
XRLA,#0FFH
JNZKEYOUT
MOVA,#100H
LCALLDELAY
KEYOUT1:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;键盘处理,
;SU计算标志,TIME时间标志,TIMSET时间设置标志
;SUCON计算输入位数,TSETCON时间设置位数
;DISPCON显示位数
;SUDAT00-03加数(减数),SUDAT10-13加数(被减数)
;LEDMOD流水灯模式,TSETCON时间设置位数,DISPCON显示位数
;ADDBIT加法标示,SUBBIT减法标示
DOKEY:
MOVA,KEYDAT
CLRC
SUBBA,#10H;大于16为错码
JNCDONEXT
CLRC
MOVA,KEYDAT
SUBBA,#0AH;大于10为功能键,小于10为数字键
JCNEXT
MOVB,#03
MULAB
MOVDPTR,#DOFKEY;功能键处理
JMP@A+DPTR
DOFKEY:
LJMPDOFKEY1
LJMPDOFKEY2
LJMPDOFKEY3
LJMPDOFKEY4
LJMPDOFKEY5
LJMPDOFKEY6
NOP
NOP
DONEXT:
LJMPDOKEYOUT
NEXT:
LJMPDOSKEY
DOFKEY1:
;计算功能
LCALLTIMDBJNBTIMESET,DOFKEY11
PUSHPSW
SETBRS0
SETBRS1
MOVR2,#200
MOVR3,#120
POPPSW
DOFKEY11:
SETBSU;SU计算标志
CLRTIME;TIME时间标志
CLRTIMESET;TIMSET时间设置标志
MOVSUCON,#04H;SUCON计算输入位数
SETBDP
CLRSUBIT
MOVSUDAT00,#00H
MOVSUDAT01,#00H
MOVSUDAT02,#00H
MOVSUDAT03,#00H
MOVSUDAT10,#00H
MOVSUDAT11,#00H
MOVSUDAT12,#00H
MOVSUDAT13,#00H
LJMPDOKEYOUT
DOFKEY2:
;计时功能
LCALLTIMDB
JNBTIMESET,DOFKEY21
PUSHPSW
SETBRS0
SETBRS1
MOVR2,#200
MOVR3,#120
POPPSW
DOFKEY21:
SETBTIME
CLRSU
CLRTIMESET
MOVSUCON,#00H
SETBDP
LJMPDOKEYOUT
DOFKEY3:
;时间设置功能
LCALLTIMDB
SETBTIMESET
CLRTIME
CLRSU
MOVSUCON,#00H
SETBDP
LJMPDOKEYOUT
DOFKEY4:
;流水灯功能
MOVA,LEDMOD
CLRC
SUBBA,#01H
JNCDOFKEY40
MOVLEDMOD,#03
MOVDISPLONG,#04H
LJMPDOKEYOUT
DOFKEY40:
MOVLEDMOD,A
MOVDISPLONG,#07H;DISPLONG显示位数
MOVLEDMOD
CJNEA,#02H,DOFKEY41
MOVDISPDAT4,#00H
MOVDISPDAT5,#00H
MOVDISPDAT6,#00H
LJMPDOKEYOUT
DOFKEY41:
MOVDISPDAT4,#24H
MOVDISPDAT5,#92H
MOVDISPDAT6,#49H
LJMPDOKEYOUT
DOFKEY5:
;加号处理
MOVR4,SUDAT00
MOVR5,SUDAT01
MOVR6,SUDAT02
MOVR7,SUDAT03
MOVR0,SUDAT10
MOVR1,SUDAT11
MOVR2,SUDAT12
MOVR3,SUDAT13
LCALLBADD
MOVSUCON,#04H
CLRSUBIT
LJMPDOKEYOUT
DOFKEY6:
;减号处理
MOVR4,SUDAT00
MOVR5,SUDAT01
MOVR6,SUDAT02
MOVR7,SUDAT03
MOVR0,SUDAT10
MOVR1,SUDAT11
MOVR2,SUDAT12
MOVR3,SUDAT13
LCALLBADD
MOVSUCON,#04H
SETBSUBIT
LJMPDOKEYOUT
DOSKEY:
;数字键处理
JBSU,DOSKEY1
JBTIMESET,DOSKEY2;时间设定
LJMPDOKEYOUT
DOSKEY1:
MOVA,SUCON
CJNEA,#04H,DOSKEY10
MOVSUDAT00,#00H
MOVSUDAT01,#00H
MOVSUDAT02,#00H
MOVSUDAT03,#00H
DOSKEY10:
MOVA,SUCON
JZDOKEYOUT
MOVSUDAT00,SUDAT01
MOVSUDAT01,SUDAT02
MOVSUDAT02,SUDAT03
MOVSUDAT03,KEYDAT
DECSUCON
LJMPDOKEYOUT
DOSKEY2:
MOVA,SUCON;设定时间
ADDA,SUCON
MOVDPTR,#DOSKEY20
JMP@A+DPTR
DOSKEY20:
SJMPDOSKEY21
SJMPDOSKEY22
SJMPDOSKEY23
SJMPDOSKEY24
DOSKEY21:
MOVA,KEYDAT;设定小时高位
CLRC
SUBBA,#03
JNCDOKEYOUT
MOVHOURH,KEYDAT
SJMPDOSKEY25
DOSKEY22:
MOVA,HOURH;设定小时低位
CJNEA,#02,NE1
MOVA,KEYDAT
CLRC
SUBBA,#4
JNCDOKEYOUT
NE1:
MOVHOURL,KEYDAT
SJMPDOSKEY25
DOSKEY23:
MOVA,KEYDAT;设分高位
CLRC
SUBBA,#6
JNCDOKEYOUT
MOVMINH,KEYDAT
SJMPDOSKEY25
DOSKEY24:
MOVMINL,KEYDAT;设分低位
DOSKEY25:
LCALLSU10T08
LCALLTIMDB
INCSUCON
MOVA,SUCON
CLRC
SUBBA,#4
JCDOKEYOUT
MOVSUCON,#00H
DOKEYOUT:
CLRKEYBIT
MOVKEYDAT,#0FFH;0FFH为无键码指示
RET
;;;;;;;;;;;;TIME0;;;;;;;;
;用第三组寄存器,MINL分钟低位,MINH分钟高位
;HOURL小时低位,HOURH小时高位
;R4分钟数<60,R5小时数<24,R2为2.5MS计数,R3为0.5S计数
;DP秒闪标示
TIME0:
;T0计时
PUSHACC
MOVF0,C
PUSHPSW
SETBRS0
SETBRS1
MOVTL0,#0AH;1E定时2.5MS
MOVTH0,#0F7H
SETBTR0
ACALLDISPLAY;0.25MS显示一位
DJNZR2,TIMEOUTMOVR2,#200;200*0.25MS=0.5S
JBSU,TIME00
CPLDP
TIME00:
DJNZR3,TIMEOUT
MOVR3,#120;120*0.5S=60S
INCR4;R4计分钟值,满60向R5进位
MOVA,R4
CLRC
SUBBA,#60
JCTIME01
MOVR4,#00INCR5;R5计小时值
TIME01:
MOVA,R4;将R5值化为十进制数
MOVB,#10
DIVAB
MOVMINH,A
MOVMINL,B
MOVA,R5
CLRC
SUBBA,#24
JCTIME02
MOVR5,#00
TIME02:
MOVA,R5
MOVB,#10
DIVAB
MOVHOURH,A
MOVHOURL,B
TIMEOUT:
POPPSW
MOVC,PSW.1
POPACC
RETI
;;;;;;;;;;;;;;;;;;;;;;;;
TIME1:
;T1计时,用于跑马灯和控制时间设置闪烁
PUSHACC;R2计数时间闪烁频率
MOVF0,C;r3计数跑马灯频率
PUSHPSW;R4保存时间闪动初值
CLRRS0;第二组寄存器
SETBRS1
MOVTL1,#00H;定时10MS
MOVTH1,#0DCH
SETBTR1
JNBTIMESET,TI10
DJNZR2,TI10
MOVR2,#50
MOVA,SUCON
MOVR0,#HOURH
ADDA,R0
MOVR0,A
MOVA,@R0
CJNEA,#0AH,TI11
MOVA,R4
MOV@R0,A
SJMPTI10
TI11:
MOVA,@R0
MOVR4,A
MOV@R0,#0AH
TI10:
MOVA,LEDMOD
CJNEA,#02H,TI12
DJNZR3,TI1OUT
MOVR3,#15
ACALLLED
SJMPTI1OUT
TI12:
DJNZR3,TI1OUT
MOVR3,#60
ACALLLED
TI1OUT:
POPPSW
MOVC,PSW.1
POPACC
RETI
;;;;;;;;;;DELAY:
;延时程序,时间常数在ACC
PUSHACC
DELAY1:
DJNZACC,$
POPACC
DJNZACC,DELAY
RET
;;;;;;;;;;;;;;;;;;;;;;
;流水灯子程序
;LEDMOD模式,流水灯数据在DISPDAT4-6
LED:
MOVA,LEDMOD
ADDA,LEDMOD
MOVDPTR,#LED0
JMP@A+DPTR
LED0:
SJMPMODL1
SJMPMODL2
SJMPMODL3
MOVDISPLONG,#04H
RET
RET
MODL1:
MOVC,DISPDAT6.7;右移动
MOVA,DISPDAT4
RLCA
MOVDISPDAT4,A
MOVA,DISPDAT5
RLCA
MOVDISPDAT5,A
MOVA,DISPDAT6
RLCA
MOVDISPDAT6,A
RET
MODL2:
MOVC,DISPDAT4.0;左移动
MOVA,DISPDAT6
RRCA
MOVDISPDAT6,A
MOVA,DISPDAT5
RRCA
MOVDISPDAT5,A
MOVA,DISPDAT4
RRCA
MOVDISPDAT4,A
RET
MODL3:
MOVC,DISPDAT4.7;灯从左全亮后又到全灭
CPLC
MOVA,DISPDAT5
RLCA
MOVDISPDAT5,A
MOVA,DISPDAT6
RLCA
MOVDISPDAT6,A
MOVA,DISPDAT4
RLCA
MOVDISPDAT4,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;十进制加法子程序
;入口R0-3,R4-7,出口R4-7
SUADD:
MOVA,R3
ADDA,R7
DAA
MOVC,ACC.4
ANLA,#0FH
MOVR7,A
MOVA,R2
ADDCA,R6
DAA
MOVA,ACC.4
ANLA,#0FH
MOVR6,A
MOVA,R1
ADDCA,R5
DAA
MOVC,ACC.4
ANLA,#0FH
MOVR5,A
MOVA,R0
ADDCA,R4
DAA
MOVR4,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;
DOBM:
;求补码
MOVA,#99H
CLRC
SUBBA,R4
MOVR4,A
MOVA,#09H
CLRC
SUBBA,R5
MOVR5,A
MOVA,#09H
C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 课程设计