基于单片机的数字钟设计.docx
《基于单片机的数字钟设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字钟设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于单片机的数字钟设计
基于单片机的数字时钟摘要
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。
通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。
关键词:
数字钟,单片机,数码管
Abstract
Author:
chengdong
Tutor:
wangxin
Electronictechnologyhasbeendevelopedrapidlyinthe20century,withitsmodernelectronicproducts,pushedbyalmostpermeatedeveryareaofsocietyhasvigorouslypromotedsocialproductiveforcesdevelopmentandimprovementofsocialinformatizationlevel,alsomakemodernelectronicproductperformancefurtherimproved,andtherhythmofupgradeitsproductsisbecomingmoreandmorequickly.
ThemostcommonSCMmoduleisadigitalclock,adigitalclockisakindofdigitalcircuittechnologyimplementation,minutesandseconds,thetimingdevicewithmechanicalclockcomparedwithhigheraccuracyandintuitiveandnomechanicaldevice,hasmorelongerservicelife,soithasbeenwidelyused.
ThistopicresearchisthedigitalclockdesignbasedonSCM,AT89C51SCMasthemaincontrolchipsystem,externalLEDdisplaycircuit,keycircuits,crystalscircuit,resetcircuitmoduleconstituteasimpledigitalclock.Throughthekeycircuitscanrespectivelythediffculties,minutesandsecondssettingandreal-timeadjustment,andtheresultshowedthatinthedigitaltube.
Keywords:
digitalclockSCM;digital
1引言1
2单片机介绍2
3数字钟硬件设计3
3.1系统方案的确定3
3.2功能分析3
3.3数字钟设计原理3
3.3.1晶振电路4
3.3.2复位电路5
3.3.3数码显示电路6
4.数字钟的软件设计7
4.1程序设计容7
4.2系统设计流程图7
4.2.1主程序流程7
4.2.2定时器中断流程8
4.2.3时间显示流程图9
5.系统调试10
5.1KeilC51软件环境简介10
5.2Proteus软件环境简介10
5.3数字钟系统PROTEUS仿真调试结果11
参考文献13
致14
附录15
元件列表15
源程序15
1引言
在单片机技术日趋成熟的今天,其灵活的硬件电路和软件电路的设计,让单片机得到广泛的应用,几乎是从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。
单片机小的系统结构几乎是所有具有可编程硬件的一个缩影,可谓是“麻雀虽小,肝胆俱全”,单片机的学习和研究是对微机系统学习和研究的简捷途径。
基于单片机的定时和控制装置在许多行业有着广泛的应用,而数字钟是其中最基本的,也是最具有代表性的一个例子,用数字电路实现对时、分、秒数字显示的计时装置。
因为机具有体积小、功耗低、功能强、性价比高、易于推广应用的优点,在自动化装置、智能仪器表、过程控制、通信、家用电器等许多领域得到日益广泛的应用,因此具有很大的研究价值。
2单片机介绍
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显著的特点,因而在各个领域都得到了迅猛的发展。
单片机主要有如下特点:
(1)性价比高;
(2)集成度高、体积小、可靠性强。
机把各功能部件集成在一块芯片上,部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。
另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作;(3)控制功能强;(4)功耗小、电压低、便于生产的携式产品。
;(5)外部总线采用串行总线连接,以此缩小了体积;(6)单片机的系统扩展和系统配置典型、规,容易构成各种规模的应用系统。
3数字钟硬件设计
3.1系统方案的确定
硬件电路是一个系统的重要部分,在本次设计中主要是以AT89C51为核心控制器,外加一些控制电路来实现数字钟的基本功能。
单片机芯片作为控制系统的核心部件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制,外围控制电路主要包括晶振电路模块、复位电路模块、按键电路模块以及数码管显示电路模块,通过这些控制电路的连接构成完整的电路,其结构框图如图3.1所示。
图3.1数字钟系统结构图
3.2功能分析
1.准确计时,以数字形式显示时、分的时间;2.小时的计时为24小时制,分和秒的计时要求为60进位;3.四位数码管显示HH-MM(时分),4.晶振电路起到减小误差,提高精确度的作用;5.复位电路是对单片机的初始化操作。
3.3数字钟设计原理
数字钟的实现一般有两种方法:
其一是直接用单片机的定时计数器产生固定时间,这种方法的优点是可以省去一些外围的芯片,其缺点是只能适用于一些要求不是十分精确、不作长期保留的场合;而对于要求较高的场合,则必须选用专用的芯片,本设计采用的是第一种方法。
直接用单片机的定时计数器产生固定时间,这种方法的工作原理是利用单片机芯片的定时器产生固定时间,模拟时钟的时、分、秒。
基于这一原理构成的数字钟系统主要由以下几部分组成:
89C51单片机控制器电路,4位数码管显示电路,复位电路,晶振电路四部分构成。
其工作原理电路图如图3.3所示。
图3.3数字钟设计原理图
3.3.1晶振电路
晶振的全称叫晶体振荡器,它在单片机系统里作用非常大,主要作用是产生单片机所需的时钟频率,单片机执行程序所需的时间完全取决于单片机晶振所提供的时钟频率,时钟频率越高,那么单片机运行速度就越快。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定围调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
晶振电路如图3.3.1所示。
图3.3.1晶振电路
3.3.2复位电路
复位是单片机的初始化操作。
单片机启动运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。
因而,复位是一个很重要的操作方式。
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作:
07H写入堆栈指针SP,P0口—P3口均置1,程序计数器PC和其他特殊功能寄存器SFR全部清零。
只要RST持续为高电平,单片机就处于循环复位状态。
单片机的复位方式有上电自动复位和手工复位两种,本设计采用的是手动复位方式,其电路图如图3.3.2所示。
图3.3.2复位电路
3.3.3数码显示电路
发光二极管显示器驱动(点亮)的方法有两种。
一种是静态驱动法,即给欲点亮的LED通以恒定的定流。
这种驱动方法要有寄存器,译码器,驱动电路等逻辑部件。
当需要显示的位数增加时,所需的逻辑部件及连线也相应增加,成本也增加。
另一种是动态驱动方法,这种方法是给欲点亮的LED通过通以电流,此时LED的亮度是通断的平均亮度。
为保证亮度,通过LED的脉冲电流应数倍于其额定电流值。
利用动态驱动法可以减少需要的逻辑部件和连线,单片机应用系统中常采用动态驱动法。
数码管有两种接法即共阳极接法和共阴极接法。
所谓共阳共阴,是针对数码管的公共脚而言的。
一个1位典型的数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。
共阳指的是公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合形成我们看到的数字或字母。
共阴刚好相反,也就是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮,本次设计选择共阴极数码管,其中有4位显示“时”,“分”,,数码管A~DP接单片机P0端口用于段选,1~4接单片机P2端口用于位选。
4位共阴极LED数码显示电路如图3.3.3所示。
图3.3.3八位8段共阴极LED数码显示
4.数字钟的软件设计
4.1程序设计容
单片机软件设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。
设计步骤如下所示。
1.采用模块化程序结构设计软件,首先将整个软件分成若干功能模块;
2.根据流程图,编写源程序;
3.上机调试各模块程序;
4.与硬件一起联调,最后完成全部调试工作。
4.2系统设计流程图
开始
启动定时器
开始计数
时间显示
4.2.1主程序流程
图4.2.1主程序流程图
4.2.2定时器中断流程
开始
60分钟到?
分单元清零,时单元加1
一秒时间到?
秒单元加1
60秒时间到?
秒单元清零,分单元加1
时单元清零
时间显示
中断返回
24小时
N
N
N
Y
N
Y
Y
Y
图4.2.2定时器中断流程图
定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间,定时器中断流程图如图4.2.2所示。
4.2.3时间显示流程图
时间显示是先秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示.,时间显示流程图如图4.2.3所示。
时十位计算显示
结束
开始
秒个位计算
秒十位计算
分个位计算显示
分十位计算显示
时个位计算显示
图4.2.3时间显示流程图
5.系统调试
5.1KeilC51软件环境简介
KeilC51集成开发环境是基于80C51核的微处理器软件平台,嵌多种符合当前工业标准的开发工具,可以完成从工程建立、管理、程序编译、、目标代码生成、软硬件仿真等完整的开发流程[。
尤其是C编译工具在产生代码的准确性和效率方面达到了较高水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。
KeilC51集成开发环境的主要功能有以下几点:
(1)uVision2forWindows一个集成开发环境,它将项目管理、源代码编辑和程序调试等组合在一个功能强大的环境中;
(2)C51国际标准优化C交叉编译器。
代码产生可重定位的目标模块;(3)A51宏汇编器。
从80C51汇编源代码产生可重定位的目标模块;(4)BL51/定位器。
组合由C51和A51产生可重定位的目标模块,生成绝对目标模块;(5)LIB库管理器。
从目标模块生成连接器可以使用的库文件;(6)OH51目标文件至HEX格式的转换器。
从绝对目标模块生成IntelHEX文件;(7)RTX-51实时操作系统。
简化了复杂的实时应用软件项目的设计。
keilC51软件编译环境如图5.1所示。
图5.1keilC51软件编译环境
5.2Proteus软件环境简介
本系统的硬件设计首先是在Proteus软件环境中仿真实现的。
Proteus软件集成了高级原理绘图、混合模式SPICE电路仿真,PCB板设计以及自动布线来实现一个完整的电子设计系统。
Proteus软件由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件。
Proteus软件主要具有以下几个方面的特点:
(1)设计和仿真软件Proteus是一个很有用的工具,它可以帮助学生和专业人士提高他们的模拟和数字电路的设计能力。
(2)它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。
(3)它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。
(4)它可以仿真目前流行的单片机,如PICS,ATMEL-AVR,MOTOROLA,8051等。
(5)在设计综合性方案中,还可以利用ARES开发印制电路板。
Proteus软件仿真环境如图5.2所示。
图5.2Proteus软件仿真环境
5.3数字钟系统PROTEUS仿真调试结果
仿真结果(电路原理图)
用PROTUES软件,根据数字电子钟的原理图,选择如图按钮开始仿真
,画出仿真图,如果显示如图
,则说明没有错误,即仿真成功得到仿真结果如图5.3如下所示。
图5.3数字钟的PROTES仿真
参考文献
【1】林志琦,郎建军,等基于Proteus的单片机可视化软硬件仿真【M】.:
航空航天大学,2009:
25.
【2】俞存锡,,单片机原理及接口技术.:
电子科技大学,2008:
32.
致
历时将近半个月的时间终于将这篇论文写完,在论文的写作过程中遇到了很多的困难和障碍,都在同学和老师的帮助下度过了。
尤其要感我的论文指导老师—王鑫老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。
在此向帮助和指导过我的各位老师表示最衷心的感!
感这篇论文所涉及到的各位学者。
本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。
感我的同学和朋友,在我写论文的过程中给予我了很多素材,还在论文的撰写和排版的过程中提供热情的帮助。
由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!
附录
元件列表
序号
器件名称
数量
备注
1
主控芯片AT89C51
1
2
4位共阴极数码管
1
7SEG-MPX8-CC-RED
5
电阻
8
1K
6
晶振
1
12kHZ
7
电容
3
1个1uf,2个30uf
源程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitw1=P2^4;
sbitw2=P2^5;
sbitw3=P2^6;
sbitw4=P2^7;
/////////////////////////////
/////共阴数码管段选//////////////////////////////////////////////
uchartable[22]=
{0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,
0x40,0x38,0x76,0x00,0xff,0x37};//'-',L,H,灭,全亮,n16-21
ucharnum,miao,fen,shi;
uchard1,d2,d3,d4;
voiddelay(uintms)
{
ucharx;
for(ms;ms>0;ms--)
for(x=50;x>0;x--);
}
voiddisplay()//显示函数
{
d1=shi/10;//小时
d2=shi%10;//
d3=fen/10;//
d4=fen%10;//分钟
w1=0;P0=table[d1];delay(10);//第1位显示数据
w1=1;P0=0x00;delay
(1);//关闭显示消除动态扫描阴影
if(num>=10)
{
w2=0;P0=table[d2];delay(10);//第2位显示数据
w2=1;P0=0x00;delay
(1);//关闭显示消除动态扫描阴影
}
if(num<10)
{
w2=0;P0=table[d2]|0x80;delay(10);//第2位显示数据
w2=1;P0=0x00;delay
(1);//关闭显示消除动态扫描阴影
}
w3=0;P0=table[d3];delay(10);//第3位显示数据
w3=1;P0=0x00;delay
(1);//关闭显示消除动态扫描阴影
w4=0;P0=table[d4];delay(10);//第4位显示数据
w4=1;P0=0x00;delay
(1);//关闭显示消除动态扫描阴影
}
voidmain()
{
TMOD=0x01;
TH0=(65536-50000)/256;//50ms定时
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;//关闭定时器
while
(1)
{
display();//显示函数
}
}
voidT0_time()interrupt1
{
TH0=(65536-50000)/256;//50ms定时
TL0=(65536-50000)%256;
num++;
if(num==20)//1S
{
num=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)shi=0;
}
}
}
}