单片机课程设计报告
专业:电气工程及其自动化 班级:电0901-4班 姓名:代红新 学号:20092444 指导老师:石彦辉
电气与电子工程学院
2012/6/22
一、设计题目:电子时钟
二、设计要求:
1.通过键设置当前时间(时分秒) 2.可切换显示年月日
3.可设定闹钟,到时报警,一个发光管闪烁(1次/秒),有复位键停止报警 4.可切换显示闹钟时间和当前时间
5.本机地址为02H,当接到上位机发的02H时,则回发02H 当接到上位机发的AAH时,则将当前时间发给上位机 当收到上位机发的55H时,则修改当前时间(时分秒)
三、设计思路
经过思考,该电子时钟试验须有六个八段数码管,分别指示时分秒,切换指示年月日,由指示灯指示闹钟提醒,以及上位机对下位机的控制,更改时间。
硬件设计思路:下位机显示时间和日期,以及闹钟指示灯,时间日期的更改由两个中断实现,一个位选,一个加一。上位机显示发送的数据和接受显示,仅由一个外部中断来切换方式。
软件设计思路:通过之前的单片机实验的练习,加上对本实验的理解,知道该由数码管显示时间,日期,进位转换,定时器计数器的应用,将数字转换为24进制,60进制,30进制以及365进制,并通过位选和片选实现显示。
四、硬件设计
五、软件设计
(一) 上位机编程设计
SOK EQU 24H ;fasongdezhonglei HOUR EQU 25H ;xiangcongjifade hour MIN EQU 26H
;xiangcongjifade min SOK1 EQU 27H
;weixuanze HOUR1 EQU 28H
;zhujijieshoude hour MIN1 EQU 29H
;zhujijieshoude min ORG 0000H AJMP MAIN ORG 0003H AJMP X0IN ;zhongleigaibian ORG 000BH AJMP T0IN
; zhujixiugaicongji ORG 0013H AJMP X1IN
;weixuanze
ORG 0030H MAIN:MOV SOK,#01H
MOV HOUR,#00H
MOV MIN,#00H
MOV SOK1,#01H
MOV HOUR1,#00H
MOV MIN1,#00H
MOV 21H,#02H
MOV 22H,#0AAH
MOV 23H,#55H
MOV TMOD,#26H
MOV TH1,#0FAH
MOV TL1,#0FAH
MOV TH0,#0FFH
MOV TL0,#0FFH
MOV PCON,#00H
MOV SCON,#50H
SETB PX0
CLR PS
CLR PT1
CLR PT0
CLR PX1
CLR ET1
SETB TR1
CLR ES
CLR TI
SETB IT0
SETB IT1
SETB EX0
SETB EX1
SETB ET0
SETB TR0
SETB EA ccc:MOV A,SOK
CJNE A,#1,aaa
LCALL DISP1
SJMP ccc aaa:MOV A,SOK
CJNE A,#2,eee
LCALL DISP2
SJMP ccc
eee:MOV DPTR,#8004H
MOV A,#6DH
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#6DH
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP ccc
;XIANSHI ;WAIT3:JNB TI,WAIT3
; CLR TI
;cc:MOV A,SOK
; CJNE A,#03H ,aa
; MOV A,23H
; MOV SBUF,A
;WAIT13:JNB TI,WAIT13
; CLR TI
X0IN:INC SOK
MOV A,SOK
CJNE A,#04H,dd
MOV SOK,#01H
SJMP ddd
dd:MOV A,SOK
CJNE A,#02H,qqq
MOV A,#0AAH
MOV SBUF,A WAITa:JNB TI,WAITa
CLR TI
WAIT4:JNB RI,WAIT4
CLR RI
MOV A,SBUF
MOV MIN1,A WAIT5:JNB RI,WAIT5
CLR RI
MOV A,SBUF
MOV HOUR1,A ddd: RETI qqq:MOV A,#55H
MOV SBUF,A WAITB:JNB TI,WAITB
CLR TI
RETI X1IN:INC SOK1
MOV A,SOK1
CJNE A,#03H,ee
MOV SOK1,#01H
ee:RETI T0IN:MOV A,SOK1
CJNE A,#1,ff
MOV A,SOK1
MOV SBUF,A WAIT6:JNB TI,WAIT6
CLR TI
MOV A,HOUR
CJNE A,#23,hh
MOV HOUR,#00H
MOV A,HOUR
MOV SBUF,A WAIT7:JNB TI,WAIT7
CLR TI
RETI
hh:INC HOUR
MOV A,HOUR
MOV SBUF,A WAIT8:JNB TI,WAIT8
CLR TI
RETI
ff: MOV A,SOK1
MOV SBUF,A WAIT9:JNB TI,WAIT9
CLR TI
MOV A,MIN
CJNE A,#59,ii
MOV MIN,#00H
MOV A,MIN
MOV SBUF,A WAIT10:JNB TI,WAIT10
CLR TI
RETI
ii:INC MIN
MOV A,MIN
MOV SBUF,A WAIT11:JNB TI,WAIT11
CLR TI
RETI DISP1:MOV DPTR,#8004H
MOV A,#3FH
MOVX @DPTR,A
MOV A,#04H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#5BH
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#76H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#3FH
MOVX @DPTR,A
MOV A,#20H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#5BH
MOVX @DPTR,A
MOV A,#10H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#76H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
RET
DISP2:MOV DPTR,#8004H
MOV A,#77H
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,#77H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#TAB
MOV A,HOUR1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 40H,A
MOV A,B
MOVC A,@A+DPTR
MOV 41H,A
MOV A,MIN1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 42H,A
MOV A,B
MOVC A,@A+DPTR
MOV 43H,A
MOV DPTR,#8004H
MOV A,40H
MOVX @DPTR,A
MOV A,#20H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,41H
MOVX @DPTR,A
MOV A,#10H
MOV DPTR,#8002H
MOVX @DPTR,A (二) 下位机编程设计
SOK2 BIT 20H.0 ;秒标志位 SOK5 BIT 20H ;秒标志位
SEC EQU 30H
;秒
MIN EQU 31H
;分
HOUR EQU 32H
;时
DAY EQU 33H
;天
MON EQU 34H
;月
YEAR EQU 35H
;年
SEC1 EQU 36H
;闹钟的秒
MIN1 EQU 37H
;闹钟的分
HOUR1 EQU 38H ;闹钟的时
SOK1 EQU 57H
;模式切换
SOK3 EQU 58H ; 位选择标志
SOK4 EQU 59H ;模式表示
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP X0IN
ORG 000BH
LJMP T0IN
ORG 0013H
LCALL DEL
MOV DPTR,#8004H
MOV A,42H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,43H
MOVX @DPTR,A
MOV A,#04H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
RET
;XIANSHI
DEL:MOV R1,#750
zzz:DJNZ R1,zzz
RET
TAB:DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH
END
LJMP X1IN
ORG 0023H
LJMP ESIN
ORG 0070H MAIN:MOV SOK1,#00H
MOV SOK3,#01H
MOV SEC,#00H
MOV MIN,#11
MOV HOUR,#11
MOV DAY,#21
MOV MON,#06
MOV YEAR,#12
MOV SEC1,#00H
MOV MIN1,#00H
MOV HOUR1,#00H
MOV R0,#10
MOV TMOD,#21H
MOV TL1,#0FAH
MOV TH1,#0FAH
MOV TH0,#3CH
MOV TL0,#0B0H
MOV PCON,#00H
MOV SCON,#50H
CLR TI
SETB ES
SETB PS
CLR PT1
CLR PX1
CLR PT0
CLR PT1
SETB P1.1
SETB EX0
SETB EX1
SETB IT0
SETB IT1
SETB ET0
CLR ET1
SETB TR0
SETB TR1
SETB EA
aa:JNB SOK2,ff
CLR SOK2
MOV A,SEC
CJNE A,#59,gg
MOV SEC,#00H
MOV A,MIN
CJNE A,#59,hh
MOV MIN,#00H
MOV A,HOUR
CJNE A,#23,ii
MOV HOUR,#00H
MOV A,DAY
CJNE A,#30,jj
MOV DAY,#01
MOV A,MON
CJNE A,#12,kk
MOV MON,#01
INC YEAR
gg:INC SEC
AJMP ff
hh:INC MIN
AJMP ff
ii:INC HOUR
AJMP ff
jj:INC DAY
AJMP ff
kk:INC MON
AJMP ff
ff:MOV A,HOUR
CJNE A,HOUR1,zz
MOV A,MIN
CJNE A,MIN1,zz
JNB SOK5,xx
CLR SOK5
SETB P1.0
LJMP zz
xx:CLR P1.0
zz:MOV A,SOK1
CJNE A,#00H,bb
AJMP DISP1
bb:CJNE A,#01,cc
AJMP DISP2
cc:AJMP DISP3
DISP1:MOV SOK4,#01H
MOV DPTR,#TAB
MOV A,DAY
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 45H,A
MOV A,B
MOVC A,@A+DPTR
MOV 46H,A
MOV A,MON
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 47H,A
MOV A,B
MOVC A,@A+DPTR
MOV 48H,A
MOV A,YEAR
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 49H,A
MOV A,B
MOVC A,@A+DPTR
MOV 50H,A
MOV DPTR,#8004H
MOV A,49H
MOVX @DPTR,A
MOV A,#20H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP aa
DISP2:MOV SOK4,#02
MOV DPTR,#TAB
MOV A,HOUR
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 43H,A
LCALL DEL
MOV DPTR,#8004H
MOV A,50H
MOVX @DPTR,A
MOV A,#10H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,47H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,48H
MOVX @DPTR,A
MOV A,#04H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,45H
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,46H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
MOV A,B
MOVC A,@A+DPTR MOV 44H,A MOV A,MIN MOV B,#10 DIV AB
MOVC A,@A+DPTR MOV 41H,A MOV A,B
MOVC A,@A+DPTR MOV 42H,A MOV A,SEC MOV B,#10 DIV AB
MOVC A,@A+DPTR MOV 39H,A MOV A,B
MOVC A,@A+DPTR MOV 40H,A MOV DPTR,#8004H MOV A,43H MOVX @DPTR,A MOV A,#20H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,44H MOVX @DPTR,A MOV A,#10H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,41H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,42H
MOVX @DPTR,A
MOV A,#04H
MOV 54H,A
MOV A,SEC1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 51H,A
MOV A,B
MOVC A,@A+DPTR
MOV 52H,A
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,39H
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
MOV DPTR,#8004H
MOV A,40H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP aa
DISP3:MOV SOK4,#03
MOV DPTR,#TAB
MOV A,HOUR1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 55H,A
MOV A,B
MOVC A,@A+DPTR
MOV 56H,A
MOV A,MIN1
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 53H,A
MOV A,B
MOVC A,@A+DPTR
MOV DPTR,#8004H MOV A,55H MOVX @DPTR,A MOV A,#20H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,56H MOVX @DPTR,A MOV A,#10H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,53H MOVX @DPTR,A MOV A,#08H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,54H MOVX @DPTR,A MOV A,#04H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL MOV DPTR,#8004H MOV A,51H MOVX @DPTR,A MOV A,#02H MOV DPTR,#8002H MOVX @DPTR,A LCALL DEL
MOV DPTR,#8004H
MOV A,52H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DEL
LJMP aa
X0IN:INC SOK1
CJNE A,#12,uu
MOV MON,#1
RETI
uu:INC MON
RETI
tt:INC YEAR
RETI
vv:MOV A,SOK4
CJNE A,#02H,ww
MOV A,SOK1
CJNE A,#3,dd
MOV SOK1,#00H
dd:RETI
T0IN:MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,ee
SETB SOK2
SETB SOK5
MOV R0,#10
ee:RETI
X1IN:JNB P1.1,kkk
MOV A,HOUR
CJNE A,HOUR1,aaa
MOV A,MIN
CJNE A,MIN1,aaa
INC MIN
aaa:INC SOK3
MOV A,SOK3
CJNE A,#4,ll
MOV SOK3,#01H
ll:RETI
kkk:MOV A,SOK4
CJNE A,#01H,vv
MOV A,SOK3
CJNE A,#01H,www
MOV A,DAY
CJNE A,#30,
MOV DAY,#1
RETI
:INC DAY
RETI
www:MOV A,SOK3
CJNE A,#2,tt
MOV A,MON
MOV A,SOK3
CJNE A,#1,nn
MOV A,SEC
CJNE A,#59,mm
MOV SEC,#00H
RETI mm:INC SEC
RETI nn:MOV A,SOK3
CJNE A,#2,pp
MOV A,MIN
CJNE A,#59,oo
MOV MIN,#00H
RETI oo:INC MIN
RETI pp:MOV A,HOUR
CJNE A,#23,qq
MOV HOUR,#00H
RETI qq:INC HOUR
RETI ww:MOV A,SOK4
CJNE A,#03H,bbb
MOV A,SOK3
CJNE A,#1,ccc
MOV A,SEC1
CJNE A,#59,ddd
MOV SEC1,#00H
RETI ddd:INC SEC1
RETI ccc:MOV A,SOK3
CJNE A,#2,eee
MOV A,MIN1
CJNE A,#59,ggg
MOV MIN1,#00H
RETI
ggg:INC MIN1
RETI
eee:MOV A,HOUR1
CJNE A,#23,fff
MOV HOUR1,#00H
RETI
fff:INC HOUR1
bbb:RETI
ESIN: CLR RI ;很容易被忽略
MOV A,SBUF
CJNE A,#02H,aaaa
MOV A,#02H
MOV SBUF,A WAIT1:JNB TI,WAIT1
CLR TI
RETI aaaa:
CJNE A,#0AAH,bbbb
MOV A,MIN
MOV SBUF,A
WAIT2:JNB TI,WAIT2
CLR TI
MOV A,HOUR
MOV SBUF,A
WAIT3:JNB TI,WAIT3
CLR TI
RETI
bbbb: CPL P1.7
;WAIT7:JNB RI,WAIT7
;
CLR RI
;
MOV A,SBUF
;
CJNE A,#01H,cccc
;WAIT4:JNB RI,WAIT4
;
CLR RI
;
MOV A,SBUF
;
MOV HOUR,A
;cccc: NOP
; WAIT5:JNB RI,WAIT5
;
CLR RI
;
MOV A,SBUF
; MOV MIN,A
RETI
DEL:MOV R1,#750
zzz:DJNZ R1,zzz
RET
TAB:DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH
END
六、设计总结。
单片机已渗透到我们生活的各个领域,几乎很难找到没有单片机足迹的领域。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说全自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。科技越发达,智能化的东西就越多。因此学习单片机是社会发展的必然需求。
为期十天的单片机课程设计结束了,回想起这十天的设计过程,有紧张激烈的构思讨论过程,有忙碌甚至绞尽脑汁的编程调试阶段。有久久实现不了的无奈,也有灵机一动的兴奋,更有老师的肯定和鼓励。
几天的单片机课程设计,较之前的实验上机实现了更多的功能,使得单片机实力有更充分的发挥,硬件设计还算简单,但是其编程技巧有了更深更高的要求,软件编程是本课程设计的难点和重点,通过对题目要求的仔细研究,外加之前实验的经验,加上老师的悉心指点,并提出了宝贵的意见,我们的“时钟“功能得以实现。在这里,我必须要感谢老师的悉心指导,同学们的互相帮助,谢谢你们!