前言
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89C205芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示。.
数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。本系统是基于AT89C2051单片机设计的一个具有六位LED 显示的数字时实时钟,采用独立式按键进行时间调整,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。
目录
摘要
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED 显示器代替显示器代替指针显示进而显
示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。本文利用单片机实现数字时钟计时功能的主要内容,其中AT89C2051是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确, 显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C2051芯片和LED 数码管为核心,辅以必要的电路,构成了一个单片机电子时钟
一.方案论证
本文数字时钟设计原理主要利用AT89C2051单片机, 由单片机的P1口控制数码管的位显示, P3口控制数码管的段显示,P3.7口与按键相接用于时间的校正。在设计中引入一个电源电路,是外部电源系统产生+5V电压,用于给CPU 及显示电路提供工作电压,这是数字时钟正常工作时的总电压。
整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED 显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对。
二.时钟电路硬件的设计
数码管时钟电路如图所示,其采用AT89C2051单片机最小化应用设计,LED 显示采用动态扫描方式实现,P1口输出段码数据,
P3.0~P3.5口作扫描输出,P3.7接按纽开关。为了提供LED 数码管的驱动电流,用三极管9012作电源驱动输出。为了提供秒计时的精确性,采用12MHz 晶振。
AT89C2051的功能:
AT89C2051是一个低电压,高性能CMOS 8位单片机,片内含2k bytes 的可反复擦写的只读Flash 程序存储器和128 bytes的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash 存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。
AT89C2051是一个功能强大的单片机,但它只有20个引脚,15个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器, 两个全双向串行通信口,一个模拟比较放大器。
同时AT89C2051的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM 、定时/计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。省电模式中,片内RAM 将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。
主要功能特性:
兼容MCS51指令系统 · 2k可反复擦写(>1000次)Flash ROM 15个双向I/O口 · 6个中断源
两个16位可编程定时/计数器 · 2.7-6.V的宽工作电压范围
时钟频率0-24MHz · 128x8bit内部RAM
两个外部中断源 · 两个串行中断
可直接驱动LED · 两级加密位
低功耗睡眠功能 · 内置一个模拟比较放大器
可编程UARL 通道 · 软件设置睡眠和唤醒功能
LED 数码管时钟电路采用24计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用5V 电池供电,只使用一个按键开关即可进入调时、省电(不显示LED 数码管)和正常显示三种状态。
三.. 系统主要程序的设计
3.1.主程序
本设计中的计时采用定时器T0中断完成,其余状态循环调用显示子程序,当P3.7端口开关按下时,转入调时功能程序。系统主程序流程图如图所示。
主程序流程图:
3.2.显示子程序
数码管显示的数据存放在内存单元70H~75H中,其中70H~71H存放秒数据,72H~73H存放分数据,74H~75H存放时数据,每一地址单元内均为十进制BCD 码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD 码数据的对应段码存放在ROM 表中显示时,先取出70H~75H某一地址中的数据,然后查得对应的显示用段码从P1口输出。P3口将对应的数码管选中,就能显示该地址单元的数据值。
3.3.定时器T0中断服务程序
定时器T0用于时间计时。定时溢出中断周期设定为50ms ,中断累计20次(1秒)时对秒计时单元地址分别在70H~71H(s)、76H~77H(min)、78H~79H(h),7AH单元内存放“熄灭符” 数据(#0AH)。在计数单元中采用十进制BCD 码计数满60进位。T0中断服务程序流程图如图所示。
T0中断服务程序:
3.4.T1中断服务程序
T1中断服务程序用于指示调整单元数字的亮闪。在时间调整状态下,每过0.3秒,将对应单元的显示数据换成“熄灭符” 数据(#0AH)。这样,在调整时间时,对应调整单元的显示数据就会间隔闪烁。