单片机课程设计多功能数字电子时钟07891Word格式文档下载.docx
- 文档编号:21340634
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:25
- 大小:211.24KB
单片机课程设计多功能数字电子时钟07891Word格式文档下载.docx
《单片机课程设计多功能数字电子时钟07891Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计多功能数字电子时钟07891Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
(1)上电以后自动进入计时状态,起始于00:
00。
(2)设计键盘调整时间,完成时间设计,并设置闹钟。
(3)定时时间为1/20秒,采用定时器实现。
(4)采用LED数码管显示,时、分,秒采用数字显示。
(5)采用24小时制,具有方便的时间调校功能。
(6)具有时钟和秒表的切换功能。
第2章硬件电路设计
2.1总原理图
如原理图所示,硬件系统主要由单片机最小使用系统、LED数码管显示模块、电源模块、晶振模块、按键模块等组成。
图2-1电子时钟原理图
2.2各个模块设计
1、单片机最小系统
AT89S52概述:
是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止……
详述:
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,和工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制使用系统提供高灵活、超有效的解决方案。
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器。
一个6向量2级中断结构,全双工串行口及时钟电路。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止.
2、显示模块
LED数码管是由发光二极管构成的,亦称半导体数码管。
将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。
若按规定使某些笔段上的发光二极管发光,就能显示从0~9的…系列数字。
同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:
体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能和TTL、CMOS电路兼容等的数显器件。
+、-分别表示公共阳极和公共阴极。
a~g是7个笔段电极,DP为小数点。
另有一种字高为7.6mm的超小型LED数码管,管脚从左右两排引出,小数点则是独立的。
本系统利用6位LED数码管显示时间,共阴极结构。
LED数码管由7段发光二极管组成,当要显示某个数字时只要将数字所对应的引脚送入低电平。
3.按键模块
本设计中主要有三个控制按键,按键功能为:
(1)P3.2为调时间模式,长按P3.2进入调分状态:
图2-2
(2)按P3.3进入设定闹时状态:
(3)按下P3.4进入秒表状态:
4.晶振模块
下图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图2-3晶振电路
2.3器件清单
元件名
封装名
型号
CRYSTAL
XTAL-1
VOLTREG
TO-220
MC7805T
TRANS4
FLY4
10TO1
VSIN
CAP
RB.2/.4
CAPACITORPOL
RAD-0.1
TRANSISTOR
TO18
PNP
TRANSISITOR
TO92A
NPN
SPEAKER
SIP-2
LED
DIODE-0.4
SW-PB
RES2
AXIAL0.3-1.0
DPY_7-SEG_DP
DIP8
单片机
AT89S52
表一元件器件清单
第3章软件设计
3.1硬件框图
根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:
单片机模块、数码显示模块、晶振模块、电源模块和按键模块等,模块之间的关系图如下面得方框电路图所示。
图3-1
3.2程序流程图
(1)总体流程图
图3-2
(2)时钟调整模式
图3-3
(3)秒表模式
图3-4
第4章心得体会
本次课程设计是用AT89S52单片机CPU及接口电路设计一个数字时钟,经过一个星期的调试,结果满足设计要求,验证无误。
通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到了多种芯片,程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。
关于显示模块,在以前的实验中做过,所以问题很容易解决。
随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。
智能仪器的核心部件是单片机,因其极高的性价比得到广泛的使用和发展,从而加快了智能仪器的发展。
而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。
传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的基础上设计而成的。
因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。
通过本次设计,我们系统的了解了实时时钟的设计流程,尤其是硬、软件的设计方法,掌握了键盘显示电路的基本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了89S52定时器的使用和中断处理器程序的编程方法。
开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,达到了本次课程设计的目的。
在调试电路的过程中也积累了一些宝贵的经验,比如说,在I/O口要保证标准的高电平”1”的产生,一般要上拉电阻5.1k,在一些需要高电平的地方,不能用悬空来模拟,必须严格的按照“+5v”来连接,特别是调试过程中的分部分进行很重要。
此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期里,学到了很多的东西。
同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论和实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。
设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
单片机课程设计虽然结束了,但通过设计所学到的东西将长久存在。
相信这次设计带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。
单片机课程设计,是对单片机知识的验证,可以帮助我们理解巩固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。
在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。
我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:
CAD制图、汇编语言、模拟和数字电路知识等。
虽然过去从未独立使用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
最后,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
要有一个清晰的思路和一个完整的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美和否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
另外,这次课程设计让我感到了团队合作的重要性。
在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。
还有要感谢指导老师在我们遇到困难时,给予我们的建议和鼓励。
第5章附件
附录A.源程序清单
;
AT89S52时钟程序;
********************************************************定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁及秒表定时用,P3.2、P3.3、P3.4为调整按钮,P0口为字符输出口,P2为扫描口,P1.2为蜂呜器口,采用共阳显示管。
50H-55H为闹钟定时单元,60H-65H为秒表计时单元,70H-75H为显示时间单元,76H-79H为分时计时单元。
03H标志=0时钟闪烁,=1秒表,05H=0,不闹铃,=1要闹铃.07H每秒改变一次,用作间隔呜叫.
********************************************************
DISPFIRSTEQU30H;
显示首址存放单元
BELLEQUP1.2
CONBSEQU2FH;
存放报时次数
CLOCKEQU2DH
****************************************
中断入口程序
ORG0000H;
程序执行开始地址
LJMPSTART;
跳到标号START执行
ORG0003H;
外中断0中断程序入口
RETI;
外中断0中断返回
ORG000BH;
定时器T0中断程序入口
LJMPINTT0;
跳至INTTO执行
ORG0013H;
外中断1中断程序入口
RETI;
外中断1中断返回
ORG001BH;
定时器T1中断程序入口
LJMPINTT1;
跳至INTT1执行
ORG0023H;
串行中断程序入口地址
串行中断程序返回
以下程序开始;
整点报时用
QQQQ:
MOVA,#10H
MOVB,79H
MULAB
ADDA,78H
MOVCONBS,A
BSLOOP:
LCALLDS21MS
LCALLDL1S
DJNZCONBS,BSLOOP
CLR08H;
清整点报时标志
AJMPSTART1
主程序开始;
START:
LCALLST;
上电显示00:
00
MOVR0,#00H;
清00H-7FH内存单元
MOVR7,#80H;
CLEARDISP:
MOV@R0,#00H;
INCR0;
DJNZR7,CLEARDISP;
MOV20H,#00H;
清20H(标志用)
MOV55H,#1
MOV54H,#2
MOV7AH,#0AH;
放入"
熄灭符"
数据
MOVTMOD,#11H;
设T0、T1为16位定
MOVTL0,#0B0H;
50MS定时(T0计时用)
MOVTH0,#3CH;
50MS定时初值
MOVTL1,#0B0H;
50MS定时初值MOVTH1,#3CH;
SETBEA;
总中断开放
SETBET0;
允许T0中断
SETBTR0;
开启T0定时器
MOVR4,#14H;
1秒定时用计数值
MOVDISPFIRST,#70H;
显示单元为70-75H
以下主程序循环
START1:
LCALLDISPLAY;
调用显示子程序
JNBP3.2,SETMM1;
P3.2口为0时转时间
JNBP3.3,TSFUN;
定时闹铃设定
JNBP3.4,FUNPT;
秒表功能
JB08H,QQQQ
AJMPSTART1;
P3.2口为1时跳回START1
FUNPT:
LJMPFUNPTT
START12:
LJMPSTART1
以下闹铃时间设定程序,按P3.3进入设定
TSFUN:
LCALLDS20MS
JBP3.3,START1;
WAIT113:
JNBP3.3,WAIT113;
等待键释放
JB05H,CLOSESP;
闹铃已开的话,关闹铃
MOVDISPFIRST,#52H;
进入闹铃设定程序,显示52-55H闹钟定时单元
DSWAIT:
SETBEA
LCALLDISPLAY
JNBP3.4,DSFINC;
分加1
JNBP3.2,DSDEC;
分减1
JNBP3.3,DSSFU;
进入时调整
AJMPDSWAIT
CLOSESP:
CLR05H;
关闹铃标志
CLRBELL
DSSFU:
LCALLDS20MS;
消抖
JBP3.3,DSWAIT
LJMPDSSFUNN;
进入时调整;
SETMM1:
LJMPSETMM;
转到时间调整程序SETMM
DSFINC:
JBP3.4,DSWAIT
DSWAIT12:
等键释放
JNBP3.4,DSWAIT12
CLREA
MOVR0,#53H;
LCALLADD1;
闹铃设定分加1
MOVA,R3;
分数据放入A
CLRC;
清进位标志
CJNEA,#60H,ADDHH22;
ADDHH22:
JCDSWAIT;
小于60分时返回
ACALLCLR0;
大于或等于60分
DSDEC:
JBP3.2,DSWAIT
DSWAITEE:
JNBP3.2,DSWAITEE
LCALLsub1;
闹铃设定分减1
LJMPDSWAIT
以下键等待释放时显示不会熄灭用
WAIT21:
AJMPWAIT22
WAIT31:
AJMPWAIT33
WAIT41:
AJMPWAIT44
WAIT51:
AJMPWAIT55
WAIT61:
AJMPWAIT66
WAIT81:
AJMPWAIT88
WAIT91:
AJMPWAIT99
闪动调时程序\秒表功能程序;
T1中断服务程序,用作时间调整时调整单元闪烁指示或秒表计时
INTT1:
PUSHACC;
中断现场保护
PUSHPSW
JB03H,MMFUN;
=1时秒表
MOVTL1,#0B0H;
装定时器T1定时MOVTH1,#3CH;
DJNZR2,INTT1OUT;
MOVR2,#06H;
CPL02H;
JB02H,FLASH1;
MOV72H,76H;
MOV73H,77H;
MOV74H,78H;
MOV75H,79H;
INTT1OUT:
POPPSW;
恢复现场
POPACC;
中断退出
FLASH1:
JB01H,FLASH2;
MOV72H,7AH;
MOV73H,7AH;
AJMPINTT1OUT;
转中断退出
***************************************
显示程序;
显示数据在70H-75H单元内,用六位LED共阳数码管显示,P0口输出段码数据,P2口作
扫描控制,每个LED数码管亮1MS时间再逐位循环。
DISPLAY:
MOVR1,DISPFIRST;
指向显示数据首址
MOVR5,#0FEH;
扫描控制字初值
PLAY:
MOVA,R5;
扫描字放入A
MOVP2,A;
从P2口输出
MOVA,@R1;
取显示数据到A
MOVDPTR,#TAB;
取段码表地址
MOVCA,@A+DPTR;
MOVP0,A;
段码放入P1口
MOVA,R5;
JBACC.2,LOOP5;
小数点处理
CLRP0.7;
LOOP5:
JBACC.4,LOOP6;
LOOP6:
LCALLDL1MS;
显示1MS
INCR1;
指向下一地址
扫描控制字放入A
JNBACC.5,ENDOUT;
RLA;
A中数据循环左移
MOVR5,A;
放回R5内
MOVP0,#0FFH
AJMPPLAY;
跳回PLAY
ENDOUT:
MOVP2,#0FFH;
MOVP0,#0FFH;
P0口复位
RET;
子程序返回
TAB:
共阴段码表"
0"
"
1"
2"
"
3"
4"
5"
6"
7"
8"
9"
不亮"
“A”“-”
********************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 多功能 数字 电子 时钟 07891