单片机数字电子钟课程设计实训报告.docx
《单片机数字电子钟课程设计实训报告.docx》由会员分享,可在线阅读,更多相关《单片机数字电子钟课程设计实训报告.docx(12页珍藏版)》请在冰豆网上搜索。
单片机数字电子钟课程设计实训报告
第一章设计概要
设计要求:
1、用单片机及6位LED数码管显示时、分、秒
00时00分00秒——23时59分59秒循环运行
2、整点提醒0,1…23时短蜂鸣
3、用按键实现时、分、秒调整
*4、省电功能(关闭显示)
*5、定时设定提醒如设定08时15分00秒长蜂鸣
*6、秒表功能显示××分××秒.××
健复位从00分00秒00开始计时
启动从00分00秒00开始计时
停止显示实际计时××分××秒××
第二章硬件设计方案
2.1设计框架图
2.2总体设计方案说明
设计框架图如图2.1所示总共分为5小部分:
时间显示部分,键盘控制部分,单片机部分,闹钟部分,电源部分。
本设计各部分由统一电源集中供电,外加被用电源确保主电源断电时备用电源及时供电避免时间的丢失.采用12MHZ晶振为单片机提供时钟。
显示部分采用容易购买的LED八段数码显示管,利用单片机输出高低电平实现数码管的刷新显示。
LED具有显示明亮,容易识别,价格便宜等优点,特别适合时间的显示。
按键部分采用普通的按建开关,使用查询方式从而节约元件。
2.3数码显示管设计部分
.
图3.1-1
数码显示部分采用八块共阳极八段数码显示管分别对时,分,秒进行显示。
将第三块和第六块显示横杠,可以使时间显示更美观.显示部分采用刷新显示方案.具体如下:
当p2口输出第一块的三极管导通,u1数码管被选中,然后p0口输出数字的数码管编码。
如p0口输出时u1数码管就输出数字0。
当循环右移一位是u2被选通显示。
依次类推u1-u8数码管显示完成,再循环显示。
由于单片机的刷新速度很快所以8个数码管看起来就像同时显示的一样。
2.4键盘控制电路
键盘部分采用普通的按键进行设计,使用软件延时消除开关抖动.
2.5闹铃电路
闹铃电路通过p1.7口输出1HZ脉冲使蜂鸣器发出间隔为一秒的蜂鸣声.
2.6电源电路
2.7总体电路图设计
图3.4-1
第三章软件设计方案
3.1程序流程图
3.2总体程序设计
//主程序
ORG0000H
AJMPMAIN
ORG000BH
AJMPTZP
ORG0030H
MAIN:
MOVSP,#60H
MOVR4,#00H
MOVTMOD,#02h
MOVTH0,#06H
MOVTL0,#06H
SETBEA
SETBET0
SETBTR0
//初始化
MOVR2,#3
MOVR1,#30H
LOOP:
MOV@R1,#00H
INCR1
DJNZR2,LOOP
LCALLRINGPI
//
LOOP2:
MOVR2,#6
MOVR1,#30H
LCALLDPZP
//开启节能功能
JBP1.0,XWJN
JBP1.0,$
//
//闹钟设置入口
ZWJN:
JBP1.1,XPP1
LCALLRINGP
LCALLRELAY
//
//调时入口
XPP1:
JBP1.3,XPP2
LCALLZPP1
XPP2:
JBP1.2,ZPP
LCALLZPP2
ZPP:
AJMPLOOP2//
//定时器0中断
TZP:
PUSH00H
PUSH03H
INCR4//软件-硬件延时1秒
CJNER4,#40,ENDI
MOVR4,#0
INCR5
CJNER5,#100,ENDI//结束
MOVR5,#0
ZP:
MOVR0,#30H
MOVR3,#3
MOVDPTR,#TCOUNT
LCALLTTZP
LCALLRING
ENDI:
POP03H
POP00H
RETI
//定时器0中断返回
//软中断1
ZPP1:
MOVA,31H
ADDA,#1
DAA
MOV31H,A
CJNEA,#60H,END1
MOV31H,#00H
END1:
LCALLRELAY
RET
//
//软中断2
ZPP2:
MOVA,32H
ADDA,#1
DAA
MOV32H,A
CJNEA,#24H,END2
MOV32H,#00H
END2:
LCALLRELAY
RET
//
//延时显示程序
RELAY:
MOVR6,#255
REP:
MOVR7,#4
REEE:
MOVR2,#6
MOVR1,#30H
LCALLDPZP
DJNZR7,REEE
DJNZR6,REP
RET
//延时显示程序结束
//显示子程序
DPZP:
MOVP0,#0FFH//显示横杠
MOVP2,#0DBH
MOVP0,#0BFH//END
DPZP1:
MOVP0,#0FFH
MOVDPTR,#CHART//P3part
MOVA,R2
MOVCA,@A+DPTR
MOVP2,A//
MOVDPTR,#LED
MOVA,@R1
JNBF0,DPZPS
INCR1
SWAPA
DPZPS:
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
CPLF0
DJNZR2,DPZP1
RET
//显示子程序结束
//不规则循环加一子程序
TTZP:
MOVA,@R0
ADDA,#1
DAA
MOV@R0,A
MOVA,R3
MOVCA,@A+DPTR
CLRC
SUBBA,@R0
JNCRTTZP
MOV@R0,#0
INCR0
DJNZR3,TTZP
RTTZP:
RET
//响铃程序
RING:
MOVR0,#34H
MOV24H,#6
RRING:
MOVA,31H
SUBBA,@R0
JNZERING
INCR0
MOVA,32H
SUBBA,@R0
DECR0
JNZERING
CPLP1.7
RET
ERING:
MOVA,R0
ADDA,#3
MOVR0,A
DJNZ24H,RRING
SETBP2.1
RET
//
//闹钟调整程序
RINGP:
MOV20H,#33H
MOV21H,#6
MOVR3,#20
MOV22H,#5
LPRP:
LCALLRELAY1
JBP1.1,LPRP1
MOVR3,#20
MOVA,20H
ADDA,#3
MOV20H,A
DJNZ22H,LPRP
RET
LPRP1:
JBP1.3,LPRP2
MOVR3,#20H
MOVA,20H
ADDA,#1
MOVR0,A
MOVA,@R0
ADDA,#1
MOV@R0,A
DAA
CJNEA,#60H,LPRP21
MOV@R0,#00H
LPRP21:
LCALLRELAY1
LPRP2:
JBP1.2,LPRP3
MOVR3,#20H
MOVA,20H
ADDA,#2
MOVR0,A
MOVA,@R0
ADDA,#1
DAA
MOV@R0,A
CJNEA,#24H,LPRP31
MOV@R0,#00H
LPRP31:
LCALLRELAY1
LPRP3:
DJNZR3,LPRP
LPRPEND:
RET
//
//闹钟组初始化程序(共5组)
RINGPI:
MOVR2,#5
MOVR1,#41H
LPRPI:
MOV@R1,#00H
DECR1
MOV@R1,#00H
DECR1
MOVA,#00H
ORLA,#0A0H
ADDA,R2
MOV@R1,A
DECR1
DJNZR2,LPRPI
RET
//
//延时显示程序1
RELAY1:
MOVR6,#255
REP1:
MOVR7,#4
REEE1:
MOVR2,21H
MOVR1,20H
LCALLDPZP
DJNZR7,REEE1
DJNZR6,REP1
RET
//延时显示程序结束
//数据表
LED:
DB0c0H,0f9H,0a4H,0b0H,099H,092H,82H,0f8H,80H,90H,8EH,0A8H//0,1,2,3,4,5,6,7,8,9,F,n
CHART:
DB0FEH,0FEH,0FDH,0F7H,0EFH,0BFH,7FH
TCOUNT:
DB0,23H,59H,59H
END
第四章心得体会
4.1心得体会
在整个课程设计完后,总的感觉是:
有收获。
以前上课都是上一些最基本的东西,而现在却可以将以前学的东西作出有实际价值的东西。
在这个过程中,我的确学得到很多在书本上学不到的东西,如:
如何利用现有的元件组装得到设计要求,如何找到错误的原因,如何利用计算机来画图等等。
但也遇到了不少的挫折,有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是芯片的管脚接错了,有时更是忘接电源了。
在学习中的小问题在课堂上不可能犯,在动手的过程中却很有可能犯。
特别是在接电路时,一不小心就会犯错,而且很不容易检查出来。
但现在回过头来看,还是挺有成就感的。
参考文献
[1]
[2]
[3]
[4]
[5]
辞谢
在本次数字电路课程设计完成之际,谨向我的指导老师**老师致予衷心的谢意。
此次课程设计得到了**老师细心指导,给我很大的支持。
这设计过程中遇到了很多困难,诸如怎样不熟悉的集成块的使用,数字电路的编码等问题。
在解决这些问题的过程中多得到了**老师的大力支持,在此再次衷心的感谢**老师。