数字时钟的单片机设计.docx
《数字时钟的单片机设计.docx》由会员分享,可在线阅读,更多相关《数字时钟的单片机设计.docx(38页珍藏版)》请在冰豆网上搜索。
数字时钟的单片机设计
单片机数字时钟设计
摘要
近年来随着计算机在社会各领域的渗透和大规模集成电路的发展,单片机的应用正在不断地深入。
由于单片机有体积小、质量轻、能耗低、价格便宜、功能可靠性强、使用方便等优点,因此其特别适用于与控制有关的系统,原来越广泛的应用于军事产品,家用电器、智能仪表、自动控制、数据采集等一些列现代化产品之中。
单片机往往作为一个核心部件,再根据具体硬件结构以及针对具体应用对象的软件特点相结合,以作完善。
本文所设计的数字时钟以ATMEL公司的片机AT89S52为核心,结合相关元器件(LED液晶显示屏、按键、蜂鸣器、电阻、晶体振荡器等),再配以相应的软件(PROTEUS、Keil),过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键S1、S2、S3和S4键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、精度、稳定等优点。
整个过程就是先设计和焊接好硬件电路,再通过汇编语言编写应用程序来实现我们需要的功能,这期间,程序编制、软件仿真和调试是本设计的重点和难点。
关键词:
AT89S52PROTEUS程序编制软件仿真;
前言
单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点。
因此,它应用广泛前景美好,它的实用性大大地提高了我对毕业设计的兴趣。
在我国,单片机的开发应用已有20左右,已经形成一支庞大的技术开发队伍,为我国单片机应用积累了丰富的经验。
随着电子技术、计算机芯片技术和微电子技术的飞速发展促进了单片机技术一日千里的变化。
随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。
然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。
来自英国LabcenterElectronics公司的Proteus软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优势。
它包括PROTEUSVSM(VirtualSystemModelling)、PROTEUSPCBDESIGN两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程。
单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个过程。
如果采用单片机系统的虚拟仿真软件——Proteus,则不用制作具体的电路板也能够完成以上工作。
数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。
数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。
不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
而且是控制的核心部分。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
电子钟在工业控制和日常生活中是很重要的,它不仅可以用于计时、提醒又可用于对机器的控制,在自动化的过程中必然有电子钟的参与,因此电子钟的应用会越来越广泛。
而且向着精确、低功耗、多功能发展。
基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。
从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。
另外,程序较为简洁,具有可靠性和较好的可读性。
如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。
数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。
这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于功能扩充,精确度高等特点。
基于以上分析,在此次设计中,我选择的是利用单片机制作电子钟。
电子钟的设计本身包括程序的设计和硬件电路的设计。
我的思路是,先进行电路的整体设计,再根据电路进行编程,在编程的过程中,对电路进行微调,以更好地配合程序。
在设计完成后,进行程序调试,调试软件选择MedWin,调试成功后,再根据电路图画出仿真图,将软件装入单片机芯片,利用Proteus软件进行仿真,仿真中的错误通过改正程序中的逻辑错误和电路中的设计不当进行排除,这个过程是很艰难的但也是很重要的。
若仿真可以实现,则硬件电路的实现就可以有条不紊地进行。
设计者
2012年10月
CONTENTS
第1章设计任务、功能要求说明及方案介绍……………………………………
1
1.1设计任务……………………………………………………………………
1
1.2功能要求说明………………………………………………………………
1
1.3设计总体方案介绍及原理说明……………………………………………
1
第2章数字时钟系统的设计………………………………………………………
4
2.1数字时钟各模块功能简要介绍……………………………………………
4
2.1.1单片机最小系统模块简介……………………………………………………
5
①AT89S52芯片简介②晶振电路简介③复位电路简介
5
2.2数字时钟原理图、元器件布局图…………………………………………
6
2.3数字时钟设计所需的元器件清单…………………………………………
6
第3章数字时钟软件系统的设计…………………………………………………
6
3.1数字时钟使用单片机资源的情况…………………………………………
7
3.2数字时钟软件系统各模块功能简要介绍…………………………………
10
3.3数字时钟软件系统程序流程框图…………………………………………
10
3.4数字时钟软件系统程序清单………………………………………………
10
第4章设计结论、仿真结果、设计体会……………………………………………
11
4.1数字时钟的设计结论及使用说明…………………………………………
11
4.2数字时钟的仿真结果………………………………………………………
12
4.3设计体会……………………………………………………………………
12
参考文献……………………………………………………………………………
14
致谢……………………………………………………………………………
附录……………………………………………………………………………
第1章设计任务、功能要求说明及方案介绍
1.1设计任务
设计一个具有特定功能的数字时钟。
具有时间显示、准点报时等功能。
并有时间设定,时间调整功能。
1.2功能要求说明
设计一个具有特定功能的数字时钟。
该数字时钟上电或按键复位后能自动显示系统提示符“P.”并且不断移动,进入时钟准备屏幕保护状态;第一次按数字时钟启动/调整键(S1键),电子钟从00时00分00秒开始运行,进入时钟运行状态;再次按数字时钟启动/调整键,则电子钟进入时钟时、分、秒调整状态,此时可利用各调整键调整时间,S2键“+”输入、S3键“-”输入,调整结束后可按启动/调整键再次进入时钟运行状态。
1.3设计总体方案介绍及工作原理说明
◆1.3.1整体设计思路
这部分主要介绍工作安排和整体设计的思想。
其工作过程规划如下:
图1.1整体设计思路
针对要实现的功能,拟采用AT89S52单片机进行设计,AT89S52单片机是一款低功耗,高性能CMOS8位单片机,片内含8Kbytes在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。
这样,既能做到经济合理又能实现预期的功能。
AT89S52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。
程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。
运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。
本数字时钟设计主要是依照图1.1中的流程做出来的,时间分配比较均匀。
首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。
这是前期准备工作。
第二部分是硬件部分:
依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。
第三部分是软件部分:
先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。
第四部分是软件画图部分:
设计好电路后进行画图,包括电路图和仿真图的绘制。
第五部分是软件仿真部分:
软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。
本数字时钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1.1所示:
图1.1总体设计方案图
本数字时钟的所有的软件、参数均存放在AT89S52的FlashROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
由于AT89S52芯片内部FlashROM有8KB,RAM有256个字节,故软件下载编译时有足够的存储空间。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
第2章数字时钟硬件系统的设计
2.1数字时钟硬件系统各模块功能简要介绍
数字时钟的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。
2.1.1单片机最小系统模块简介
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括低功耗、高性能CMOS8位微控制器AT8S52、晶振电路、复位电路。
①AT89S52简介(原理图见附件一)
AT89S52芯片是51单片系列中最常用的一种,其属于低功耗高性能CMOS8位单片机,片内8kBytesISP(In-systemprogrammable)有可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司之高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
单芯片上,拥有8位CPU及在系统可编程FLASH,使AT89S52为众多嵌入式控制应用系统提供高灵活、超有效之解决方案。
AT89S52的特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes
的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
②晶振电路(原理图见附件一)
在51单片机内部,有一个高增益的反相放大器,用于构成振荡器。
其输入端接至单片机内部,即XTAL1引脚;其输出端接至单片机的外部,即XTAL2引脚。
在XTAL1和XTAL2两端跨接一个晶振,两个电容,构成一个稳定的自激式晶振电路。
51单片机中常用晶振的标称频率有4MHz、6MHz、12MHz、11.0592MHz等。
电容C1、C2通常取18-47pF,这两个电容还可以对晶振频率起微调作用,因为购买到的晶振实际频率可能与其标称频率不完全相同,调整这两个电容可以将频率调到所希望的频率上去。
③复位电路(原理图见附件一)
电容在上接高电平,电阻在下接地,中间为RST。
这种复位电路的工作原理是:
通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。
首先RST保持两个机器周期以上的高电平时自动复位
上电复位:
上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。
手动复位:
首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被短路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,正常工作。
(2)输入模块:
本模块共用到了5个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。
3个按键独立式键盘,S1键控制电数字时子钟的启动、调准状态,S2键为加1键,S3键为减1键。
且S1、S2、S3任一键都独自连一个I/O(P1.0、P1.1、P1.2)口线,说明它们可以独立实现相应的数字时钟功能。
(3)输出模块:
本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。
数码管驱动为74LS245芯片。
(4)电源模块:
现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。
2.2数字时钟电路原理图、PCB图、元器件布局图
①、数字时钟电路原理图,详见附录一;
②、数字时钟电路的PCB图,详见附录二;
③、数字时钟电路的仿真电路图,详见附录三;
2.3数字时钟设计所需的元器件清单
数字时钟元器件清单如表2.1所示。
表2.1设计所用元器件清单
名称
数量
参数
电阻
5个
1K
共阳数码管
2个
4位一体
电阻
4个
4.7k
ISP下载口插座
1个
普通插座
1个
40PIN
电阻
8个
470
电阻
5个
200
按键
5个
插针
1排
40PIN
锁紧插座
1个
40PIN
驱动
一套
74ls245
USB供电接口及供电线
一套
晶振及其插座
一套
12MHz
电容
2个
30pF
极性电容
1个
22μF
排阻
1个
10K
芯片
1块
AT89S52
发光二极管
1个
六角开关
1个
电容
各1个
470μf、104P
铜柱(带螺母)
4个
第3章数字时钟软件系统的设计
3.1数字时钟设计使用单片机资源的情况
数字时钟设计使用单片机资源的情况如下:
P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M;调整选择键SET_KEY:
P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:
P1.1;按一次使选中位加1;减少键DEC_KEY:
P1.2;按一次使选中位减1;P2.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元;
50H用于控制秒基准时钟源的产生;51H清零秒寄存器;
52H清零分寄存器;53H清零时寄存器;
5FH用于秒个位;5EH用于秒十位;
5DH用于分个位;5CH用于分十位;
5BH用于时个位;5AH用于时十位;
54H用于控制调时闪烁;堆栈栈底:
70H。
3.2数字时钟软件系统个模块功能简要介绍
数字时钟的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。
主程序:
主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。
中断服务程序:
主要是用于电子钟的准确运行、数据输入过程中的闪烁。
键盘输入程序模块:
主要是用于确定按键并得到特定的键码值。
数码管及其驱动模块:
主要是用于驱动数码管及利用数码管显示时间。
延时模块:
程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。
3.3数字时钟软件系统程序流程框图
系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程
序转变成十六进制程序语言,接着使用Proteous进行仿真,读出显示数据。
主程序流程框图如3.1所示;
加1子程序如3.2所示;
键盘扫描子程序框图如3.3所示;
中断服务程序程序如3.4所示;
显示子程序框图如3.5所示;
图3.1主程序流程框图
图3.2加1子程序流程框图
图3.3键盘扫描子程序
图3.4中断子程序
图3.5显示子程序
3.4数字时钟软件系统程序清单
数字时钟软件系统程序清单,详见附录四。
第4章设计结论、仿真结果、设计体会
4.1数字时钟的设计结论及使用说明
本设计为基于单片机的电子钟的设计。
刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中S1为启动/选择调整位置,S2为加控制键S3为减控制键,当整点时间到时,蜂鸣器报警。
这样的结果与设计要求完全相符,本设计成功。
完成了设计任务。
4.2数字时钟的仿真结果
在ProteusISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图4.1与4.2所示。
实现功能:
可调整运行的电子钟具有三种工作状态:
“P.”状态、运行状态、调整状态。
(1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按S2、S3键均无效,
按S1键有效,进入运行状态;
(2)、运行状态,在此状态下,按S2、S3键均无效,只有按S1键有效,按下S1键后,退出运行状态,进入调整状态;
(3)、调整状态,按S1键进入时、分、秒的闪烁,在此状态下,按S2(+1键)、
S3(-1键)键均有效;调整结束后必须按S1键,即可退出调整状态,进入
运行状态。
在调整状态时长按S2、S3时可以连加及连减。
时间显示格式为:
时-分-秒;
图4.1“P.”运行状态仿真
图4.2时钟运行状态仿真
4.3设计体会
毕业设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
这次我设计的课题内容是数字时钟。
对于我们这些工科学生来说,这是一次考验。
怎样才能找到课堂所学与实际运用的最佳结合点?
怎样让自己业余更接近专业?
怎样让自己的计划更具有序性,而不会忙无一用?
这都是我们所要考虑和努力的方向的。
这次课程设计我学到了很多很多的东西,学会了怎样去制定计划,怎样去实现这个计划,并掌握了执行这个计划过程中怎样去克服心理上的不良情绪。
不仅巩固了以前所学的知识,而且学到了书本上所没有的过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程,提高了自己独立思考的能力。
本次毕业设计,让我受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。
在我们以往的学习过程中,我们刻意地去加强理论的基础,对于一个程序我们只求它在运行时没有出错,我们便以为我们的计划成功了岂不知它能否在硬件结构中得以实现则是另外一回事,这就要求我们的动手能力,如果无法使软件与硬件实现有机的结合,那么再好的程序也只是一堆废字符。
参考文献
[1]代启化.基于Proteus的电路设计与仿真[J].现代电子技术.2006,第19期.
[2]刘文秀.单片机应用系统仿真的研究[J].现代电子技术.2005,第286期.
[3]曹巧媛.单片机原理及应用[M],北京:
电子工业出版社,1997.7.
[4]张洪润.兰清华,单片机应用技术教程[M],北京:
清华大学出版社,1997.11.
[5]周坚.单片机项目教程[M],北京航空大学出版社,2008.5
致谢
通过不断努力,终于完成了此次单片机的课程设计。
在此,首先感谢,谢老师,正是他在万忙之中还抽出宝贵的时间对我进行精心的指导,才使我顺利完成了此次单片机课程设计。
同时也感谢各位同学对我提供的帮助。
使我在此次设计中学到了许多宝贵的知识和经验。
在此,衷心地感谢你们!
附录
附录一:
附录二:
附录三:
附录四:
;-------------------------------------------------------------------------
;本电子钟实现24小时制,8位数码管显示时分秒,可整点报时
;显示格式:
00-00-00(设置小时十位为0时,不显示)
;通过3只按键来调整时间
;调整选择键SET_KEY:
P1.0;通过选择键选择调整位,选中位闪烁
;增加键ADD_KEY:
P1.1;按一次使选中位加1
;减少键D