基于AT89C51单片机的可调式电子时钟设计.docx
- 文档编号:11785814
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:32
- 大小:233.51KB
基于AT89C51单片机的可调式电子时钟设计.docx
《基于AT89C51单片机的可调式电子时钟设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的可调式电子时钟设计.docx(32页珍藏版)》请在冰点文库上搜索。
基于AT89C51单片机的可调式电子时钟设计
摘要
电子时钟主要是利用了电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。
对当前的电子时钟开发手段进行了比较和分析,最终确定了采用单片机技术实现的电子时钟。
本次课题介绍了以AT89C51单片机为主控芯片的可调式电子时钟,功耗小,能在3V的低压工作。
时钟芯片采用美国DALLAS公司提供的具有涓细电流低功耗的DS1302。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。
显示部分采用LCD1602液晶显示,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,与普通数码管相比功耗较小,硬件连接简单,较直观。
软件使用高级C语言编程,具有灵活的可移植性,同时该时钟具有按键可调的功能,能够对日期时间调整。
本设计说明书首先介绍的是总体方案设计,接着是硬件设计,本部分详细的介绍了各模块的工作原理及相互的连接,再接着介绍了软件设计部分,最后是仿真调试。
经仿真验证,该设计能满足所有的功能。
关键词:
可调式;AT89C51;DS1302;C语言
ABSTRACT
Electronicclockbasicallyistousetheelectronictechnologywillclockelectronic,digital,hastheclockaccurate,smallvolume,friendlyinterface,canbeexpandedperformanceisstrongandothercharacteristics,arewidelyusedinlifeandwork.Onthecurrentdevelopmentoftheelectronicclockmeanswerecomparedandanalyzed,finallydeterminedbysinglechipmicrocomputertechnologytotheelectronicclock.ThissubjectintroducestheAT89C51asthecontrollerchipadjustableelectronicclock,powerconsumptionissmall,canbein3Voflow-pressurework.TheclockchipadoptAmericanDALLAScompanyhasJuanfinecurrentDS1302oflowpowerconsumption.Itcanbetoyear,month,day,Sunday,when,minutesandsecondsforthetime,alsohasaleapyearcompensationandotherfunctions,andtheDS1302longservicelifeandsmallerror.ShowLCD1602partadoptsLCDdisplay,LCDscreenshowspowerful,canshowalargetext,graphics,showdiversity,clearlyvisible,comparedwithcommondigitaltubepowerconsumptionissmall,hardwareconnectasimple,moreintuitive.SeniorsoftwareusetheCprogramminglanguage,hastheflexibleportability,andtheclockisthekeyadjustablefunctiontoadjusttoatimeanddate.Thedesignmanualintroducedisfirstoveralldesign,thenthehardwaredesign.Thispartdescribesindetailthemodulesandworkingprincipleofthemutualconnection,thenintroducesthedesignofthesoftwareinpart,andfinallythesimulationtest.Thesimulationresults,thisdesigncanmeetallfunctions.
Keywords:
adjustable;AT89C51;DS1302;Clanguage
目录
绪论1
1总体方案设计2
1.1设计要求2
1.2总体设计框图2
1.3芯片的选择2
2硬件设计与实现4
2.1电路图4
2.1.1Protel连接图4
2.1.2硬件概述4
2.1.3工作原理5
2.2主要单元电路的设计5
2.2.1单片机主控制模块5
2.2.2时钟信号产生模块6
2.2.3液晶显示模块8
3软件设计11
3.1设计主程序流程图11
3.1.1DS1302读写操作12
3.1.2LCD1602初始化12
3.1.3时间调整子程序12
3.2延时函数12
4综合仿真13
4.1编辑工具keiluVision313
4.1.1软件安装13
4.1.2创建工程13
4.1.3代码编辑13
4.2仿真软件Proteus14
4.3软件仿真14
结论16
参考文献17
附录18
致谢27
绪论
20世纪末,电子技术获得了飞速的发展,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
目前,单片机正朝着高性能和多品种方向发展,其发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是电子时钟,电子时钟是一种用电子技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,广泛的使用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。
由于集成电路的发展和石英晶体振荡器的广泛应用,使得电子时钟的精度,远远超过老式钟表,给人们生产生活带来了极大的方便。
因此,研究电子钟及扩大其应用,有着非常现实的意义。
电子时钟的设计方法有很多种,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校。
本次课题研究的目的是通过利用AT89C51单片机和DS1302芯片以及外围的按键和LCD显示器等部件,设计一个基于单片机的电子时钟。
设计的电子时钟通过液晶显示器显示,并能通过按键对时间进行设置。
具有编程灵活、精确度高、编写直观等特点。
译码代替机械式传动,用LCD显示器代替指针进而显示时间,减少了计时误差。
这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,灵活性好。
该次设计充分的结合了单片机技术,并通过具体的硬件电路和软件的编程调试达到了预期的设计目标,能够很好的证明单片机技术的实践性和时钟芯片的应用性,同时也具有一定的实用价值。
1总体方案设计
1.1设计要求
1)具有年、月、日、星期、时、分、秒等功能;
2)具备年、月、日、星期、时、分、秒校准功能;
3)具有12/24小时切换功能;
1.2总体设计框图
由AT89C51作为主控芯片模块,还有键盘模块、DS1302模块、LCD1602液晶显示模块构成。
具体的硬件模块连接框图如下图1-1所示
图1-1系统总体电路设计框图
1.3芯片的选择
1)单片机芯片选择:
AT89C52具有8K字节Flash闪速存储器,256字节的RAM,32个I/O口线,三个16位定时/计数器,一个6向量级中断结构,一个全双工串行通信接口,片内振荡器和时钟电路。
但是价格也偏高,故不采用。
AT89C51具有4K字节Flash闪速存储器,128字节的RAM,32个I/O口线,两个16位定时/计数器,一个5向量级中断结构,一个全双工串行通信接口,片内振荡器和时钟电路。
能够满足设计电路所需要的功能要求,故选其作为本次设计的主控芯片。
2)显示模块选择:
采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,所以也不用此种作为显示。
采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,与普通数码管相比功耗较小,硬件连接简单。
所以显示部分采用1602液晶。
3)时钟芯片的选择:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本。
但实现的时间误差较大,所以不采用此方案。
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM做为数据暂存区,工作电压2.0V~5.5V范围内,2.5V时耗电小于300nA,故选用其作为时钟信号产生电路
2硬件设计与实现
2.1电路图
2.1.1Protel连接图
该电路由AT89C51作为主控芯片模块,还有键盘模块、DS1302模块、LCD1602液晶显示模块构成。
具体的硬件模块连接框图如下图2-1所示
图2-1总体硬件电路设计图
2.1.2硬件概述
本电路是由AT89C51单片机为控制核心,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本电路采用DS1302单字节传送方式实现与主控机之间数据的传送。
显示部份由LCD1602液晶模块构成。
2.1.3工作原理
时钟电路由高精度低功耗的DS1302提供,采用三线接口与CPU进行同步通信,输入部分采用四个独立式按键K1、K2、K3、K4。
1602液晶显示部分,D0-D7口与单片机P0口相连。
设计由DS1302产生时间和日期信号,通过单片机和时钟芯片的串行通信,将读取的数据送至LCD液晶显示器进行显示。
同时时间和日期的大小可以通过键盘模块进行调节,从而达到实际的设计需求。
2.2主要单元电路的设计
2.2.1单片机主控制模块
1)AT89C51单片机为40引脚双列直插芯片,最小系统如图2-2所示,有四个I/O口,每一条I/O线都能独立地作输出或输入。
2)电源电路:
芯片引脚VCC一般接上直流稳压电源+5V,电源电压范围在4V~5.5V之间,可保证单片机系统能正常工作。
为提高电路的抗干扰性能,通常在引角Vcc与GND之间接上一个10uF的电解电容和一个0.1uF陶片电容,这样可抑制杂波串扰,从而有效确保电路稳定性。
3)时钟电路:
单片机引脚18和引脚19外接晶振及电容,ATC89C51芯片的工单片机工作频率取决于晶振的频率,通常选用11.0592MHz晶振。
两个小电容通常取值30pF,以保证振荡器电路的稳定性及快速性。
4)复位电路:
复位电路应使引脚RST保持10ms以上的高电平。
如图复位电路带有上电自动复位功能,当电路上电时,由于C1电容两端电压值不能突变,电源+5V会通过电容向RST提供充电电流,因此在RST引脚上产生一高电平,使单片机进入复位状态。
图2-2AT89C51芯片最小系统模块图
2.2.2时钟信号产生模块
1)DS1302的性能特性
图2-3示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。
DS1302由Vcc1或Vcc2两者中的较大者供电。
X1和X2是振荡源,外接32.768KHZ晶振。
CE是复位/片选线,通过把CE输入驱动置高电平来启动所有的数据传送。
CE输入有两种功能:
首先,CE接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,CE提供终止单字节或多字节数据的传送手段。
当CE为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中CE置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于2.5V之前,CE必须保持低电平。
只有在SCLK为低电平时,才能将CE置为高电平,I/O为串行数据输入端(双向)。
SCLK始终是输入端。
图2-3DS1302的引脚图
2)DS1302读写操作
a)DS1302的控制字节DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把CE端置“1”,最后才给予SCLK脉冲。
DS1302的控制字如表2-1所示。
控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
表2-1DS1302的控制字格式
1
RAM/CK
A4
A3
A2
A1
A0
RD/WR
b)数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
单字节的读写操作时序如下图2-4所示
图2-4DS1302单字节读/写时序图
c)DS1302工作过程
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字。
本次设计使用到的即是日历、时钟相关的寄存器,在数据进行传输时CE必须置为高电平,在每个SCLK的上升沿时数据被输入,下降沿时数据被输出,一次只能读写一位,故设计还中需要通过串行输入控制指令来实现,通过8个脉冲便可以读取一个字节从而实现串行输入与输出。
具体的读写操作中还应该注意写保护操作,在控制字节的Bit7位是写保护位,低7位(Bit0~Bit6),被置0,在任何写操作前Bit7都要置为0。
2.2.3液晶显示模块
1)LCD1602介绍
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。
一般1602字符型液晶显示器引脚图如图2-5所示,共有16引脚。
图2-5LCD1602液晶显示模块
2)LCD1602接口信号
在实际的设计电路中VL要接入一个滑动变阻器,用以调节液晶背光的亮度,每次进行读写操作的时候是能信号端E必须置为高电平,表示有效。
输入RS=L,RW=H,E=H,则输出D7~D0为状态字;输入RS=H,RW=L,E=H,则输出D7~D0为数据;输入RS=L,RW=L,E=高脉冲,D7~D0=指令码,为写指令;输入RS=H,RW=L,E=高脉冲,D7~D0=数据,为写数据。
个引脚说明如下图2-6所示:
图2-6LCD1602液晶接口显示说明表
3)LCD1602读写操作的时序分别如图2-7和2-8,图如下所示。
LCD1602有8位的状态字即STA7~STA0,具体映射关系STA0~STA6表示当前的地址指针的数值,STA7表示读写操作是能(STA7=1时允许读写,反之则禁止)对控制器每次进行读写之前都必须进行读写检测,确保STA7为0。
一下的单字节读写时序中出现的符号的含义分别表示为:
tcb表示E信号脉冲的周期;tpw为E脉冲宽度;tR和tF表示E上升/下降沿时间;tsp1为地址建立时间;thd1地址保持时间;tD读数据建立时间;thd2读数据保持时间;tsp2写数据建立时间;thd2写数据保持时间。
图2-7LCD1602读操作时序图
图2-8LCD1602写操作时序图
3软件设计
3.1设计主程序流程图
本程序按模块编写,结构清晰,可读性强,主程序流程图如图3-1所示。
系统开始之前要进行初始化操作,主要的是进行DS1302和LCD1602液晶的初始化。
设置16*2显示,5*7点阵,8位数据接口,显示清屏,当读或写一个字符后地址指针加一且光标加一开显示,不显示光标,光标不闪烁。
同时对DS1302进行初始化,写控制字,取消写保护,从DS1302指定位置读取数据.包括向DS1302某地址写入数据,从DS1302中读取一个字节一些列的操作。
图3-1主程序流程框图
3.1.1DS1302读写操作
在对DS1302时钟芯片操作前,应对其操作时序有所了解,参看前文DS1302介绍。
DS1302采用串行方式与单片机进行通信,一个机器周期只能读写一个字节的一位,因此,在单片机与DS1302芯片间传输一字节(8位)数据,要分8次进行,且先从低位开始传输。
(具体的程序代码见附录部分)
3.1.2LCD1602初始化
对LCD1602进行操作前要对其进行初使化,初使化完成后它才能正常显示。
如果想在LCD1602液晶的某一个位置显示一个内容,要先对其写入一个指令:
在什么地方显示。
然后再对其写入一个数据:
要显示什么内容。
对LCD1602的液晶初使化,需要用写入指令的方式完成(具体的程序代码见附录部分)。
3.1.3时间调整子程序
用4个调整按钮,K1键选择调整对象,K2键和K3键进行加减,K4键进行确定。
使用外部中断0中断,首先进行按键是否按下的检测,假如有按键被按下,则进入具体的日期时间的调整,按键检测用一条if语句和内嵌while语句来进行判断。
(具体的初始化函数和功能函数,见附录部分)
3.2延时函数
voiddelay(uintz)
{
uchari;
while(z--)
for(i=0;i<120;i++);
}
由while大循环和内部的for小循环构成的延时函数,z的取值为这个函数的延时ms数,如delay(200),大约延时200ms。
delay(500),大约延时500ms。
延迟函数多次用到,故在这里特别的声明下。
4综合仿真
4.1编辑工具keiluVision3
KeilSoftware公司推出的uVision3是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。
除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。
此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。
uVision3提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。
uVision3提供对多种最新的8051类微处理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以及Infineon的XC866等。
本次课题设计,使用keiluVision3进行文件兴建、工程建立、源代码的编辑、编译没有错误最后生成一个*.hex的文件,然后就可以将*.hex添加到Proteus编辑的电路原理图中进行仿真测试。
4.1.1软件安装
1)点击c51v802.exe直接安装直到结束,安装路径最好选用默认的c:
\keil与原来的老板本放到相同的目录下会自动添加一个新的目录c:
\keil\uv3。
2)第一次运行请先进入file->LicenseManagement弹出窗口下输入注册码,注册码由Keil_lic_v2.exe生成,选择V2选项,生成后复制LIC0内容到keil弹出窗口的NewLicenseIDCode中然后点击AddLIC。
3)复制ccKeilVxx.exe文件到c:
\keil\c51\bin\下面并运行,以修正0xFDBUG.至此安装完毕。
4)点击桌面
按扭,选中
并单击,运行keil软件。
4.1.2创建工程
选择Project->Newproject,选择工程路径并保存,然后选择器件。
兴建.c文本文件,并加到工程文件中。
4.1.3代码编辑
使用keil编辑器编写C语言代码,之后经过链接编译最后生成一个*.hex文件。
4.2仿真软件Proteus
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
Proteus提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号。
本次设计使用该仿真软件,它的元器件、连接线路等和传统的单片机实验硬件高度对应。
在Proteus绘制好原理图后,调入已编译好的目标代码文件:
*.hex,可以在Proteus的原理图中看到模拟的实物运行状态和过程,体的使用过程如下步骤所示:
1)点击桌面Proteus软件快捷图标(假设已经安装好该软件),打开软件界面。
2)在元件库中选择相应的元器件。
主要的是本次设计的单片机主控芯片AT89C51、LCD1602液晶模块和DS1302时钟模块,布局好然后画线画出原理图。
3)由于主控芯片的晶振在该软件中是默认的,故在画线的时候可省略不画。
布局布线要整齐规范,管脚标号要正确,器件的量值要选取合理。
4)导入*.hex文件。
双击主控芯片的中心位置,在弹出的界面中选择*.hex文件的路径,选中该文件并添加进去。
(*.hex文件存放路径最好不要放在桌面)
5)点击左下角的play按键,来查看仿真电路的运行情况。
4.3软件仿真
通过多次的测试与分析,对电路的原理及功能更加熟悉,提高了设计能力及对电路的分析能力。
液晶分两行显示,上面一行显示日期,下面一行显示时间,显示的是当前的日期和时间。
如果时间或者日期与实际的不相符合,可以通过右下角的四个按键进行调节,具体调节的方法:
K1键选择调整对象,K2键和K3键进行加减,K4键进行确定。
次设计完整显示仿真电路图见图4-1所示:
图4-1整体仿真电路设计框图
结论
我在这一次可调式电子钟的设计过程中,受益匪浅。
通过对自己在大学所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考,最终完
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 调式 电子 时钟 设计
文档标签
- 基于单片机调式时钟
- 基于ARM可调电子钟
- 基于AT89C51单片机电子
- 基于单片机的可调电子时钟温度计基于单片机
- 基于AT89C51单片机电子表
- 基于AT89C51单片机电烤箱
- 基于AT89C51可调下限
- 基于AT89C51的单片机电子时钟的设计基于AT89C51
- MCS51单片机可调电子钟
- AT89C51单片机核心时钟
- 基于AT89C51单片机定时
- AT89C51单片机电子时钟
- MCS51单片机可调电子钟设计单片机可调
- 电子时钟基于AT89c51
- 基于STC89C52时钟系统
- 基于STC89C52单片机实验
- 基于NRF24l0151单片机
- 基于STC89C52电子时钟
- 基于proteus51单片机
- 基于STC89C52单片机超市
- 基于GPSOEM单片机
- 基于GPSOEM单片机
- 基于STC89C52单片机简易