单片机课程设计报告数字电子钟正文文档格式.docx
- 文档编号:19065357
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:22
- 大小:241.84KB
单片机课程设计报告数字电子钟正文文档格式.docx
《单片机课程设计报告数字电子钟正文文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告数字电子钟正文文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
当使用芯片内部时钟时,XTAL1和XTAL2用于外接石英晶体谐振器和微调电容;
当使用外部时钟时,用于接入外部时钟脉冲信号。
(7):
地线Vss
(8):
+5V电源Vcc
3系统硬件电路设计
3.1硬件系统各模块功能介绍
本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。
(1)单片机最小系统模块:
包括低功耗、高性能CMOS8位微控制AT89S52;
复位电路;
晶振电路。
本本模块AT89S52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。
通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。
这样就构成一个稳定的自激振荡器。
(2)输入模块:
本模块共用到了5个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。
3个按键独立式键盘,S1键控制电子钟的启动\调整状态,S2键为加1键,S3键为减1键。
且S1、S2、S3任一键都独自连一个I/O(P1.0、P1.1、P1.2)口线,说明它们可以独立实现相应的电子钟功能。
(3)输出模块:
本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。
数码管用8个PNP三极管驱动。
(4)电源模块:
用市场上的USB供电。
3.2数码管显示方案
数码管显示方案分静态显示和动态显示两种。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
所谓动态显示,就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
静态显示每一位都需要一个8位输出口控制,静态显示时较小的电流能获得较高的亮度,且字符不闪烁,但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
动态显示是利用人的视觉暂留功能来看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既与导通电流有关,也与点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/0口,降低了能耗,因此本设计采用动态显示。
3.3总电路图的设计
图1数字电子钟总电路原理图
4系统软件设计
4.1使用单片机资源的说明
P0口输出数码管段选信号,P3口输出数码管位选信号;
晶振12MHz;
调整选择键SET_KEY:
P1.0;
通过选择键选择调整位,选中位闪烁;
增加键ADD_KEY:
P1.1;
按一次使选中位加1;
减少键DEC_KEY:
P1.2;
按一次使选中位减1;
50H-5FH;
16个寄存器单元作为显示单元。
50H用于控制秒基准时钟源的产生;
51H清零秒寄存器;
52H清零分寄存器;
53H清零时寄存器;
5FH用于秒个位;
5EH用于秒十位;
5DH用于分个位;
5CH用于分十位;
5BH用于时个位;
5AH用于时十位;
54H用于控制调时闪烁;
堆栈栈底:
70H。
4.2程序设计构想流程框图
图2主程序流程框图
图3加1子程序流程框图
图4中断子程序
图5键盘扫描子程序
图6显示子程序
4.3程序清单
;
----------------------------------
程序入口
ORG0000H
LJMPSTART
ORG000BH;
定时器0中断入口地址
LJMPTIMET0
ORG1000H
----------------------------------
显P.程序
功能:
可以在8个数码闪烁移位进行屏保
START:
MOVR6,#2;
闪烁次数
MOVA,#0FEH;
位选
TT:
MOVP2,A
MOVP0,#0CH;
段码"
P."
LCALLDELAY
MOVP2,#0FFH
DJNZR6,TT
LCALLDELAY1
RRA
JBP1.0,TT;
键是否按下,没按下则转移
LCALLDELAY;
延时去抖
JNBP1.0,KAI;
再次判断键是否按下
KAI:
SETBP1.0
CLRA;
状态恢复
MOVP0,#0FFH
SETB48H;
用于调时闪烁标志
SETB47H;
用于产生脉冲用于调时快进的脉冲
MOVR1,#0;
键功能标志:
0计时、1调时、2调分、3调秒
MOVR0,#50H;
初始化
MOVR6,#10H
CLEARJCQ:
MOV@R0,#00H;
清寄存器
INCR0
DJNZR6,CLEARJCQ
MOVIP,#02H
SETBEA
SETBET0
MOVTMOD,#01H;
设定定时器0工作方式1
MOVTH0,#3CH
MOVTL0,#0B0H;
赋定时初值,定时50ms
SETBTR0;
启动定时器0
MOVSP,#70H;
堆栈
---------------------------------
主程序
---------------------------------
MAIN:
LCALLDISPLAY
LCALLKEY_SCAN
JZMAIN
LCALLSET_KEY
JB46H,MAIN;
如果已进行调时快进,则不再执行下面的调整
LCALLADD_KEY;
调用增加键处理子程序,加一
LCALLDEC_KEY;
调用减少键处理子程序,减一
LJMPMAIN;
重新循环
显示处理程序
DISPLAY:
MOVA,51H
ANLA,#0FH
MOV5FH,A;
转换出秒个位,存入5FH
ANLA,#0F0H
SWAPA
MOV5EH,A;
转换出秒十位,存入5EH
JB46H,MIN;
如果调时快进,则跳过闪烁处理程序
CJNER1,#3,MIN;
如果R1为3,闪烁秒位待调整
JB48H,MIN
MOV5FH,#0AH;
使该位为10,查表得到使该位不显示
MOV5EH,#0AH
MIN:
MOVA,52H
ANLA,#0FH
MOV5DH,A;
转换出分个位,存入5DH
MOVA,52H
SWAPA
MOV5CH,A;
转换出分十位,存入5CH
JB46H,HOUR
CJNER1,#2,HOUR;
如果R1为2,闪烁分位待调整
JB48H,HOUR
MOV5DH,#0AH
MOV5CH,#0AH
HOUR:
MOVA,53H
MOV5BH,A;
转换出时个位,存入5BH
MOVA,53H
MOV5AH,A;
转换出时十位,存入5AH
JB46H,DISP
CJNER1,#1,DISP;
如果R1为1,闪烁时位待调整
JB48H,DISP
MOV5BH,#0AH;
MOV5AH,#0AH
------------------------------
数码管动态扫描显示
DISP:
MOVDPTR,#TABLE
MOVA,5FH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.0
LCALLDELAY
SETBP2.0
MOVA,5EH
CLRP2.1
LCALLDELAY
SETBP2.1;
显示秒十位
MOVA,#0BFH
CLRP2.5
SETBP2.5;
显示“-”
MOVA,5DH
MOVCA,@A+DPTR
CLRP2.3
SETBP2.3;
显示分个位
MOVA,5CH
CLRP2.4
SETBP2.4;
显示分十位
MOVA,#0BFH
MOVP0,A
CLRP2.2
SETBP2.2;
MOVA,5BH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.6
SETBP2.6;
显示时个位
MOVDPTR,#TABLE1;
消除时的十位置0
MOVA,5AH
MOVCA,@A+DPTR
CLRP2.7
SETBP2.7;
显示时十位
RET
--------------------------------
定时器中断1s程序
TIMET0:
PUSHACC;
保护现场
PUSHPSW
MOVTH0,#3CH
MOVTL0,#0B0H
CPL47H;
产生脉冲用于调时快进
INC54H
MOVA,54H
CJNEA,#10,ADD_TIME;
产生0.5秒,用于调时闪烁
CPL48H;
取反调时闪烁标志位
MOV54H,#00H
ADD_TIME:
INC50H
MOVA,50H
CJNEA,#10,ZDBACD;
整点报时时蜂鸣器响延迟时间
SETBP3.1
ZDBACD:
CJNEA,#20,RETI1;
产生1秒时钟
MOV50H,#00H;
一秒钟时间到,清零50H
MOVA,51H
ADDA,#01H
DAA;
十进制调整
MOV51H,A
CJNEA,#60H,RETI1
MOV51H,#00H;
一分钟到
ADDA,#01H
DAA
MOV52H,A
CLRP3.1
MOV52H,#00H
ADDA,#01H
MOV53H,A
CJNEA,#24H,RETI1
MOV53H,#00H;
到24点,清零小时
RETI1:
POPPSW
POPACC;
恢复现场
RETI;
中断返回
---------------------------------------
键盘扫描程序
R4设置为00H是为了在进入长按处理前加长延时,以区分长按与短按键
KEY_SCAN:
CLR46H;
关闭调时快进标志
MOVP1,#0FFH;
将P1口设置成输入状态
MOVA,P1
CPLA
ANLA,#07H
JZEXIT_KEY
LCALLDELAY;
延时去抖动
MOVA,P1;
重新判断
ANLA,#07H
MOVR5,A
MOVR4,#00H;
用于控制调时快进速度
LOOP:
LCALLDISPLAY;
进入长按处理
JB47H,LOOP1
INCR4
LOOP1:
CJNER1,#03H,LOOP2
LJMPLOOP3
LOOP2:
CJNER4,#99H,LOOP3
MOVR4,#70H
SETB46H
LCALLADD_KEY
LCALLDEC_KEY
LOOP3:
JNZLOOP;
等待键释放
MOVA,R5;
输出键值
EXIT_KEY:
RET
-----------------------------------
延时子程序
DELAY:
MOVR7,#200
DJNZR7,$
DELAY1:
MOVR3,#50
MOVTMOD,#00H
MOVTH1,#63H
MOVTL1,#18H
SETBTR1
LP1:
JBCTF1,LP2
SJMPLP1
LP2:
MOVTH1,#63H
MOVTL1,#18H
DJNZR3,LP1
RET
选择键处理子程序
SET_KEY:
CJNER5,#01H,EXIT;
选择键键值
INCR1;
调整选择功能标志加一
CJNER1,#4,EXIT
MOVR1,#0
MOV54H,#00H;
调时闪烁清零
加1子程序
ADD_KEY:
CJNER5,#02H,EXIT;
加1键值
CJNER1,#01H,NEXT1
MOVA,53H
ADDA,#01H
DAA
MOV53H,A
CJNEA,#24H,EXIT
MOV53H,#00H
NEXT1:
CJNER1,#02H,NEXT2
MOVA,52H
MOV52H,A
CJNEA,#60H,EXIT
MOV52H,#00H
NEXT2:
CJNER1,#03H,EXIT
MOVA,51H
MOV51H,A
MOV51H,#00H
减1子程序
DEC_KEY:
CJNER5,#04H,EXIT;
减1键键值
CJNER1,#01H,NEXT3
MOVA,53H
ADDA,#99H
CJNEA,#99H,EXIT
MOV53H,#23H
NEXT3:
CJNER1,#02H,NEXT4
CJNEA,#99H,EXIT
MOV52H,#59H
NEXT4:
CJNER1,#03H,EXIT;
选择键功能标志为3调秒,否则跳出
MOV51H,#59H
返回子程序
-----------------------------------
EXIT:
数码管字形编码表
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
"
0"
,"
1"
2"
3"
4"
5"
6"
7"
8"
,9"
不显示"
TABLE1:
DB0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;
小时编码
9"
END
5调试与功能说明
5.1硬件调试
检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;
元器件在安装前要逐一检查,用万用表测棋数值,看是否与所用相同;
完成焊接后,应先空载上电,比检查各引脚的点位是否正确。
若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。
将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。
5.2系统性能测试与功能说明
走时:
默认为走时状态,按24小时制分别显示“时时-分分-秒秒”,有2个“-”动态显示,时间会按实际时间以秒为最少单位变化。
走时调整:
按对秒进行调整,按一下加一秒;
按对分进行调整,按一下加一分;
按对时进行调整,按一下加一小时,从而达到快速设定时间的目的。
结束语
本次课程设计,让我受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。
在我们以往的学习过程中,我们刻意地去加强理论的基础,对于一个程序我们只求它在运行时没有出错,我们便以为我们的计划成功了岂不知它能否在硬件结构中得以实现则是另外一回事,这就要求我们的动手能力,如果无法使软件与硬件实现有机的结合,那么再好的程序也只是一堆废字符。
参考文献
[1]张志良.单片机原理与控制技术[M].第2版.北京:
机械工业出版社,2005.3.
[2]张志良.单片机学习指导及习题解答[M].北京:
[3]李广弟.单片机基础[M].第3版.北京:
北京航空航天大学出版社,2007.6.
[4]阎石.数字电子技术基础[M].第四版.北京:
高等教育出版社,1998.12.
[5]康华光.电子技术基础模拟部分[M].第五版.北京:
高等教育出版社,2006.1.
[6]谢自美.电子线路-实验-测试[M].武汉:
华中科技大学出版社,2000.7.
致谢
通过这次的单片机课程设计,不仅使我更好的掌握了单片机的理论知识,进一步熟练了Keil、protel99SE、Proteus等软件的应用,更让我很好的锻炼了自己分析问题、解决问题的能力,学会了如何去将理论与实际相结合,培养了自己的动手能力。
在此,我要感谢我的指导老师王韧老师,他是一个教学严谨严肃又和蔼可亲的老师,即使是一点小错误也会给你指出来,让你改正。
每当我们有问题的时候,他都总是耐心地给我们解释,例举很多生活中常见的例子,循循善诱,每次都让我们豁然开朗。
在他的教学指导下,此次课程设计顺利完成。
在此对王韧老师表示感谢!
此外,感谢这次课程设计中给我帮助的同学,是你们的帮助,才让我顺利的完成了此项课程设计任务,谢谢你们。
附录一仿真结果
附录二PCB图
附录三元器件清单
元器件名称
规格
需要数目
AT89S52加底座
1
四位一体
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 数字 电子钟 正文