单片机课程设计 数字钟.docx
- 文档编号:24631662
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:20
- 大小:74.95KB
单片机课程设计 数字钟.docx
《单片机课程设计 数字钟.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 数字钟.docx(20页珍藏版)》请在冰豆网上搜索。
单片机课程设计数字钟
学号:
2011-2012学年第2学期
《单片机应用技术》
课程设计报告
题目:
数字钟
(二)
专业:
班级:
姓名:
指导教师:
成绩:
电气工程系
2012年4月18日
课程设计任务书
学生班级:
学生姓名:
学号:
设计名称:
数字钟
(二)
起止日期:
指导教师:
设计要求:
开机时,显示00:
00:
00的时间开始计时;其中AT89C51单片机的引脚P0.0/AD0控制“秒”调整,每按一次加1s;P0.1/AD1控制“分”调整,每按一次加1min;P0.2/AD2控制“时”的调整,每按一次加1h。
计时满23:
59:
59时,返回00:
00:
00重新开始计时。
硬件电路使用protel软件绘制,并使用proteus6和keilC51进行仿真,观察运行结果与过程。
目录
一.摘要..........................................3
二.设计步骤.......................................4
1.单片机数字钟的基本原理.......................4
2.硬件电路的设计原则..........................4
3程序流程...................................6
4.定时程序设计................................7
5.Proteus仿真图.............................12
三.小结..........................................13
四.附录..........................................14
五.参考文献......................................18
一.摘要
近年来随着计算机在社会领域的渗透和大规模集成电路的发展单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(LED数码显示器、74LS2458路同相三态双向总线收发器等),再配以相应的软件,达到制作简易数字钟的目的,使其可以实现键盘按键与数字动态显示。
使用protel软件绘制电路原理图,使用proteus和keil进行联合仿真。
2.设计步骤
1.单片机数字钟的基本原理
它是利用单片机的内部的定时/计数器工作与定时方式,对机器周期计数形成基准时间(如10ms)然后用另外一个计数器或软件计数的形式对基准时间进行计数形成秒(如对10ms计数100次),“秒”计数60次“分”,“分”计数60次形成“时”,“时”计数24次满一天清零,然后通过译码器,数码管把他们的内容在相应的位置显示出来。
在具体的设计时定时器采用中断方式工作,对时钟的形成在终中断序中实现,在主程序只是对定时/计数器的定义初始化,调用显示程序和控制程序的初始化。
另外为了使用的方便,也设计了按键,可以通过按键对时分秒进行调整,这样程序就加了按键程序
2.硬件电路的设计原则
在性价比满足应用系统要求的情况下,选择更可靠,更熟悉的单片机缩短研制周期。
尽可能选择自己较为熟悉的应用电路,以提高系统的可靠性。
单片机内部的资源与外部的扩展资源应在满足系统设计的基础上留有余地,为进一步的升级和扩展提供方便。
应充分的结合软件方案考虑硬件的结构,通常硬件功能较完善,其相应的软件程序就简单,但硬件的成本较高,而功能较低,其相应的软件就复杂,其实际常用软件代替硬件来降低成本。
整个系统相关的器件尽可能的做到性能相匹配。
充分的考虑系统的抗干扰性,如具有抗干扰的单片机并充分的帅选芯片与器件,在电路中采取隔离或屏蔽的措施等。
更具以上的原则我们选择我们较为熟悉的AT89C51单片机;为了LED数码管的显示和和键盘的控制,我们也选择了74LS245的译码器
图1.电气原理图
3程序流程
这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。
主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。
开始
设置定时时间,定时5ms
显示时间
S键按下?
M键按下?
H键按下?
否否否
是是是
秒计数加1
到60s?
否
分计数加1
是
到60min?
否
是
小时计数加1
到24h?
否
是
所有计数值清1
4.定时程序设计
(1)选择工作方式,计算初值;
(2)采用中断方式进行溢出次数累计;
(3)从秒——分——时的计时是通过累加和数值比较实现的;
(4)时钟显示缓冲区:
时钟时间在方位数码管上进行显示,为此在内部RAM中要设置显示缓冲区,共6个地址单元。
显示缓冲区从左到右依次存放时、分、秒数值;
(5)主程序:
主要进行定时器/计数器的初始化编程,然后反复调用显示子程序的方法等待中断的到来。
(6)中断服务程序:
进行计时操作
(7)加1子程序:
用于完成对时、分、秒的加操作,中断服务程序在秒、分、时加1时共有三种条调用加1子程序,包括三项内容:
合字、加1并进行十进制调整、分字。
源程序如下:
S_SETBITP1.0;数字钟秒控制位
M_SETBITP1.1;分钟控制位
H_SETBITP1.2;小时控制位
SECONDEQU30H
MINUTEEQU31H
HOUREQU32H
TCNTEQU34H
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVDPTR,#TABLE
MOVHOUR,#0;初始化
MOVMINUTE,#0
MOVSECOND,#0
MOVTCNT,#0
MOVTMOD,#01H
MOVTH0,#(65536-50000)/256;定时50毫秒
MOVTL0,#(65536-50000)MOD256
MOVIE,#82H
SETBTR0
;****************************************************
;判断是否有控制键按下,是哪一个键按下
A1:
LCALLDISPLAY
JNBS_SET,S1
JNBM_SET,S2
JNBH_SET,S3
LJMPA1
S1:
LCALLDELAY;去抖动
JBS_SET,A1
INCSECOND;秒值加1
MOVA,SECOND
CJNEA,#60,J0;判断是否加到60秒
MOVSECOND,#0
LJMPK1
S2:
LCALLDELAY
JBM_SET,A1
K1:
INCMINUTE;分钟值加1
MOVA,MINUTE
CJNEA,#60,J1;判断是否加到60分
MOVMINUTE,#0
LJMPK2
S3:
LCALLDELAY
JBH_SET,A1
K2:
INCHOUR;小时值加1
MOVA,HOUR
CJNEA,#24,J2;判断是否加到24小时
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
LJMPA1
;****************************************************
;等待按键抬起
J0:
JBS_SET,A1
LCALLDISPLAY
SJMPJ0
J1:
JBM_SET,A1
LCALLDISPLAY
SJMPJ1
J2:
JBH_SET,A1
LCALLDISPLAY
SJMPJ2
;***********************************************
;定时器中断服务程序,对秒,分钟和小时的计数
INT_T0:
MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)MOD256
INCTCNT
MOVA,TCNT
CJNEA,#20,RETUNE;计时1秒
INCSECOND
MOVTCNT,#0
MOVA,SECOND
CJNEA,#60,RETUNE
INCMINUTE
MOVSECOND,#0
MOVA,MINUTE
CJNEA,#60,RETUNE
INCHOUR
MOVMINUTE,#0
MOVA,HOUR
CJNEA,#24,RETUNE
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
MOVTCNT,#0
RETUNE:
RETI
;******************************************
;显示控制子程序
DISPLAY:
MOVA,SECOND;显示秒
MOVB,#10
DIVAB
CLRP3.6
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.6
MOVA,B
CLRP3.7
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.7
CLRP3.5
MOVP0,#40H;显示分隔符
LCALLDELAY
SETBP3.5
MOVA,MINUTE;显示分钟
MOVB,#10
DIVAB
CLRP3.3
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.3
MOVA,B
CLRP3.4
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.4
CLRP3.2
MOVP0,#40H;显示分隔符
LCALLDELAY
SETBP3.2
MOVA,HOUR;显示小时
MOVB,#10
DIVAB
CLRP3.0
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.0
MOVA,B
CLRP3.1
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DELAY:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
END
5.Proteus仿真
(1)打开KeiluVision3,新建Keil项目,选择AT89S51单片机作为CPU,新建C语言源文件,编写程序,并将其导入到“SourceGroup”中。
在“OptionforTarget”对话窗口中,选中“Output”选项卡中的“CreateHEX”选项和“Debug”选项卡中的“Use:
ProteusVSMSimulator”选项。
编译源程序,改正程序中的错误。
(2)在ProteusISIS中,选中AT89S51并单击鼠标左键,打开“EditCompoment”对话窗口,设置单片机晶振频率为12MHZ,在此窗口中的“ProgramFile”栏中,选择先前用Keil生成的.HEX文件。
在ProteusISIS的菜单栏中选择“File”->“SaveDesign”选项,保存设计。
在ProteusISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“UseRemoteDebugMonitor”选项,以支持与Keil的联合调试。
(3)在Keil的菜单栏中选择“Debug”->“Star/StopDebugSession”选项,或者直接单击工具栏的“Debug>Star/StopDebugSession”图标,进入程序调试环境。
按“F5”键,顺序运行程序。
调出“ProteusISIS”界面,可以看到相应功能得到实现。
(4)对Proteus仿真软件的熟悉程度是此次能顺利仿真、调试成功的关键。
起初对仿真软件的不熟悉,导致画图速度慢,实物的连接存在错误,使仿真不能够很好的完成。
通过多次的查阅相关资料和画图练习,仿真调试后的结果基本符合设计要求。
图2.软件仿真与结果
三.小结
一周的课程设计结束了,时间很短,但是最后还是从中学到了很多东西,同时,我也体会到了课本知识与实际应用之间的不同与联系,离开课本知识的铺垫,没有课本知识的支持,课程设计是万万谈不上的,也是不切合实际的!
然而,只是学好课本的知识,不去学会应用,不联系实际,那么所学到的知识是空洞的,是不可靠的,我们必须有将理论联系实践的能力,必须学会这种能力!
本次的课程设计,需要画电路图,所用到的是protel软件,在大二的时候我们学过这个软件的使用,在本次设计中应用到,也算是一种对已学知识的复习吧!
由此也可以看出,要做好一门课程设计需要多学科的支持,在平时学习中应该扎实掌握好没门学科。
通过这次的课程设计也锻炼了自己的动手能力,特别是在protel软件的使用上是一种锻炼。
在此设计同时需要用到proteus和keil仿真软件,对于我们应用此软件是一种较好的锻炼。
同时由于是五人一组做设计,团队的合作精神是必不可少的,要做好课题就必须分工明确,相互帮助!
这次的课程设计在一定程度上是对课本知识的升华,也是检验自己对课本知识的掌握情况,通过这次的课程设计反映出了对于课本知识我还是有很多未理解未掌握的,在课下的时候还应该加强一下学习,不断在学习中完善自己!
现在再回想这次的课程设计,感觉受益良多,从画电路图到仿真,中间遇到了一次又一次的失败,又是在一次又一次的失败中走出来,最后在老师的细心指导之下比较满意地完成了自己的课程设计。
同时也发现在平时的学习中应该注重于理论联系实践,要学会将课本知识应用到实际当中。
在平时的学习中应该端正自己的学习态度,不可以浮躁,应该脚踏实地。
总而言之,本次的课程设计是一次很有意义的设计,从中我学会了很多。
四.附录
89C51引脚图及功能
89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。
89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图3.AT89C51引脚图
1.主要特性:
与MCS-51兼容·4K字节可编程闪烁存储器;寿命:
1000写/擦循环数据保留时间:
10年·全静态工作:
0Hz-24Hz·三级程序存储器锁定128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道低功耗的闲置和掉电模式·片内振荡器和时钟电路
2.管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口) P3.1TXD(串行输出口) P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
5.结构特点:
8位CPU;片内振荡器和时钟电路;32根I/O线;外部存贮器寻址范围ROM、RAM64K;2个16位的定时器/计数器;
5个中断源,两个中断优先级;全双工串行口;布尔处理器;
五.参考文献
1.电子线路CAD实用教程(第三版)潘永雄沙河编著
2.单片机C语言程序设计100例彭伟编著
3.单片机原理及接口技术(第三版)李朝清编著
指导老师评语
课程设计成绩
指导老师签字
2012年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 数字钟 单片机 课程设计 数字