基于STC89C52的闹铃万年历设计.docx
《基于STC89C52的闹铃万年历设计.docx》由会员分享,可在线阅读,更多相关《基于STC89C52的闹铃万年历设计.docx(41页珍藏版)》请在冰豆网上搜索。
基于STC89C52的闹铃万年历设计
基于STC89C52的闹铃万年历设计
基于STC89C52的闹铃万年历设计
【摘要】:
近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,在生活和生产的各领域中,凡是有时间显示和控制要求的地方都会有单片机的身影出现,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,因此本次设计则采用单片机为核心来实现对以时间显示和记录提示的闹铃万年历设计。
本次设计的闹铃万年历的电路,具有三大功能、分别表示小时时间显示,年月日时间显示,时间记录提示功能,试验中用数码管显示,蜂鸣器模拟语音提示。
基于题目基本要求,本系统对功能设置、数据装入和定时设定功能进行了重点设计。
此外,扩展了掉电记忆、万年历显示、LED状态指示等。
该系统设计采用以单片机AT89S52为核心,结合数码管显示以及必要的外围电路,通过功能设置和数据输入,完成不同功能下的显示。
在发挥部分,该系统还添加了万年历的功能,使得用户可以随时知道当前的时间;当设定时间达到时,会发出蜂鸣提示。
测试表明,该系统具有操作简单,控制精确,更加人性化等特点。
【关键词】:
单片机ATC89S52;LCD1602;DS1302;
[Abstract]:
Inrecentyears,withthepenetrationofcomputersinthesocialsphereandthedevelopmentoflargescaleintegratedcircuit,microcontrollerapplicationsisconstantlydeepening,lifeandproductioninallareas,allthetimedisplayandcontrolrequirementswillhaveachipwherethefigure,andsinceithasstrongfunctions,smallsize,lowpowerconsumption,cheap,reliable,easytousefeatures,itisparticularlysuitableinrelationtocontrolofthesystem,sothischipisusedasthecoredesigntoachieveatimedisplayandrecordvoicepromptsnotebookdesign.
ThedesignofthevoicecircuitNotepadhasthreemainfunctions,namely,thathourtimedisplay,datetimedisplay,timerecordingprompts,testsusingdigitaldisplay,buzzeranalogvoiceprompts.Basedonthebasicrequirementsofthesubject,setthesystemtofunction,dataloadingandtimingwerekeydesignfeatureset.Inaddition,theexpansionofthepower-downmemory,calendardisplay,LEDstatusindication.ThesystemisdesignedwiththeAT89S52microcontrollercore,combinedwiththedigitaldisplayandthenecessaryperipheralcircuits,anddatainputbythefeatureset,performdifferentfunctionsofthedisplay.Playapartin,thesystemalsoaddsacalendarfunctionthatallowsuserstoalwaysknowthecurrenttime;whenthesettimeisreached,itwillbeepprompt.Testsshowthatthesystemissimple,precisecontrolandamoreuser-friendlyfeature.
[Keywords]:
MCUATC89S52;LCD1602;DS1302
前言
近年来随着科技的的发展,生活水平的提高,万年历已经走进了千家万户的家中,成为现代家庭的必备产品。
快节奏的生活是万年历在大城市普及的首要原因,万年历更具方便性和准确性。
其类型也从最初的机械控制发展到目前的电脑控制。
通常用户调整一次时间后,在很长一段时间中不需要在进行调整。
尽管万年历得到了很大发展,功能越来越完善。
为此,我选择了在此基础上的创新改革设计出具有自动计算日期与星期功能的设计题目,设计一个高质量的万年历,使其除了能显示时间以外还能提示人们重要的时间,使用更方便。
通常我们家居用的万年历大部分都是只能显示年月日不能设置年月日时间闹铃,此次设计就针对这一点进行改良,用EEPROM存储时间的闹铃,使得控制起来更加的方便;添加了掉电记忆功能,改变原有的掉电丢失情况,可以根据用户不同的需求设置不同时间的闹铃功能;使得家居生活更加的有趣。
未来的发展趋势将以智能、信息为主流,使闹铃万年历的发展更人性化。
因此闹铃万年历设计的开发有利于推动万年历市场的发展,使老百姓能用上更优秀的钟表。
第1章概述
第1.1节单片机设计电子时钟的背景
单片机是一种采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU,随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等集成到一块硅片上构成一个小而完善计算机系统的集成电路芯片。
目前单片机已经渗透到我们生活的各个领域,几乎很难找到某个领域没有单片机的踪迹了。
自导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,到广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等这些都离不开单片机,更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
在科技高速发展的今天,由单片机自由发挥的舞台更加宽广,现已明显的朝着巨型化,单片化和网络化方向发展。
因此在大学阶段打好基础,为今后真正学会并灵活运用好单片机做好充分的准备,是我们每一个电子信息类专业大学生义不容辞的责任。
本着学以致用的原则,本次课程设计我从实际生活出发,结合单片机原理和技术理论的学习,设计制作了一个电子时钟,通过液晶显示时间,希望经过简单电子制作的程序,在实际动手做板和软件编程过程中,体会单片机强大功能的同时提高自己动手的能力。
基于此,本文讨论的单片机多功能定时器的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高等特点。
第1.2节本设计任务及要求
1.2.1.设计任务
设计制作一个闹铃万年历电路,具有万年历显示功能,分别表示日期和时间,带时间提示功能,试验中用LCD1602显示。
1.2.2.要求
(1)、以52单片机为核心设计一个时间提示系统。
(2)、系统具有标准的日历时钟,年、月、日、星期、时、分、秒自动修正。
(3)、系统应当使用LCD1602显示器,显示时间和日期。
(4)、能够随时对当前时间进行调整。
(5)、定时时间到,应当发出语音一是信号或者蜂鸣器提示信号。
第2章系统功能及总体结构
第2.1节工作原理
闹铃万年历工作分四个步骤分别为:
系统待机显示时间—用户设定时间—用户设定记事本—到达设定时间蜂鸣提示。
具体流程如下图2.1所示。
图2.1系统流程图
第2.2节总体方框图
系统以AT89C52单片机为核心,连接各外部电路完成人机交互等各功能的控制。
系统的总体框图如下图2.2所示。
图2.2总体方框图
电路设计部分以单片机控制电路为核心由时钟电路,复位电路,LCD显示电路,电源电路,声音报警电路,按键电路和LED指示电路共同组成闹铃万年历系统电路。
第2.3节方案论证比较
2.3.1.主控制器
控制部分是本系统的核心,它接收用户的输入完成相应的控制逻辑功能,并将当前的工作状态等信息送显示部分显示。
方案1:
采用数字逻辑芯片
系统有功能设置、数据装入、定时、显示、音响控制多个功能模块。
各个状态保持或转移的条件依赖于键盘控制信号。
由于键盘控制信号繁多,系统的逻辑状态以及相互转移更是复杂,用纯粹的数字电路或小规模的可编程逻辑电路实现该系统有一定的困难,需要用中大规模的可编程逻辑电路。
这样,系统的成本就会急剧上升〔相对于方案二〕。
因此,本设计并未采用这种方案。
方案2:
采用单片机作为整个控制系统的核心
我们的设计采用了AT89S52单片机系统。
有8kb的FPEROM和256字节RAM,可满足系统编程需要,并且价格低廉,有更好的性价比,因此我们采用AT89S52单片机。
晶振取12MHZ。
AT89S52不需要专门编程器烧写程序,因此我们选择了AT89S52单片机系统。
综合考虑以上因素,我们采用了方案二。
2.3.2.时钟电路部分方案
方案1:
采用传统的机械式定时
定时时间通过机械按钮控制。
该方案操作简单,对设定时间只要旋钮转到相应的位置即可。
但由于机械式定时容易磨损,定时精度低,也不能实现一些复杂的功能。
特别是一些人性化的界面设计无法实现。
方案2:
采用小规模集成元件定时
比如用计数器/分频器,该方法价格便宜,但是接线复杂,设计也比较困难,对时序要求比较高。
该方案功能单一,也无法实现复杂功能。
扩展麻烦。
也不能实现一些人性化的界面设计。
方案3:
采用MCU内部定时器
采用单片机的定时器定时。
由于当前市场上的单片机都内含定时器计数器,所以用单片机定时比较方便。
另外,单片机能够实现复杂功能,能够设计出友好的人机界面接口,价格也比较便宜。
但是单片机定时并不是很精准,而且掉电后会丢失时间。
方案4:
使用专用时钟芯片
使用微控制器控制专用时钟芯片实现计时控制,这种方案有着计时精度高、控制简单的优点,而且更易于实现日期/时间显示等计时扩展功能。
在这里我选用的是方案4,由于方案4具有较好的灵活性、较少的电路元器件和较高的性价比,而且通过硬件可以精确的记录时间,并且可以通过一节纽扣电池保证掉电后一段时间内不会丢失时间,完全可以满足控制需要,所以我们选择该方案完成设计。
2.3.3.按键部分方案
方案1:
采用阵列式键盘。
此类键盘是采用行列扫描方式,优点是当按键较多时可以降低占用单片机的I/O口数目,缺点是电路复杂且会加大编程难度。
方案2:
采用独立式按键电路。
每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
缺点是当按键较多时占用单片机的I/O数目较多,优点是电路设计简单,且编程极其容易。
由于该系统采用了常规设计方式,使用较多的外围芯片所以IO口充足,而且用键较少,系统资源足够用,故采用了方案二。
原理图如图2.3.3所示。
图2.3.3按键原理图
2.3.4.显示部分方案
方案1:
采用数码管显示:
该方案控制最简单,可以通过设置完成制作任务,经济耐用,但是只能显示非常有限的符号和数字,显示不够直观、提供信息量少、不易理解等缺点。
对于设计中复杂的显示功能显然不能胜任。
方案2:
采用液晶显示:
采用LCD16O2液晶显示屏,字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,其拥有友好的人机界面及强大的显示功能。
特别适用于智能控制的可编程人性化显示。
与中文液晶显示相比,英文液晶显示其编程更简单,因此选择英文的LCD。
而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。
方案3:
采用LED点阵显示:
LED点阵显示虽然能显示字符和数字,但显示效果不好,且不易编程。
方案4:
使用TFT材质16K色或26万色彩液晶显示
TFT材质LCD现已广泛用于手机MP4等数码产品,以及电脑液晶显示器、液晶电视等。
具有色彩艳丽,分辨率高,显示信息量大等优点。
缺点是功耗稍高,需要高压驱动,将可能会将近期新兴的LED彩色液晶屏逐步取代。
本系统显示信息量不是很大,无需彩色显示而增加成本,且其驱动程序复杂,因此本系统部采用此方案考虑实用问题,故采用方案2。
2.3.5.电源电路设计
电源电路在很大程度上决定了一个系统的稳定性,因此电源电路的设计在于本系统中也占据了重要的地位。
方案1:
采用半波整流电路
220v交流电源经过整流滤波后可用得到所需电源电压,但是电压不稳定,即稳定性差。
半波整流产生的电源电压不恒定且具有间隙性,顾在设计中不采用。
方案2:
采用桥式整流电路
220v交流电源经过整流滤波后可以得到所需电源电压+5v,整流效果好,电压稳定性好,220v交流电经12v变压器后,经桥式整流滤波后得到约16.8v的电源电压,然后经7805三端稳压器及滤波电容得到电路中所需的+5v电源。
但由于电路复杂,顾在设计中不采用。
方案3:
采用USB供电
每台PC都有一个USB(通用串行总线)端口,它可以为外设提供500mA的5V+5%供电。
带电源的USB集线器也能提供这种供电能力。
用USB端口可以为外部电路供电,在没有其他直流电源的情况下,这种方式很有用。
方案4:
采用电池供电
这种方案最为简单,方便,通过4个5号电池的串联,来提供电源所需的电压,操作方便安全,电路简单。
综合以上情况,为了减小体积和节约成本,我们选择了方案4。
第3章硬件电路设计
第3.1节系统所需的硬件介绍
3.1.1.STC89C52单片机
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器器。
STC89C52单片机引脚分布如下图3.1.1
图3.1.1STC89C52单片机引脚分布图
(1)P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0不具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
(2)P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能:
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
(3)P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
(4)P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
(5)RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
(6)ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
(7)PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
(8)EA/VPP:
外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
(9)XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
(10)XTAL2:
振荡器反相放大器的输出端。
3.1.2.复位电路
复位电路是使平均的CPU或系统中的其他部件处于某一确定的初始状态,并从这个状态开始工作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位电路以重新启动。
本设计采用的是上电复位电路,即使用一个10uF电容以及10K电阻完成设计,在上电时对单片机进行一次系统复位。
下面详细介绍下复位电路的原理,上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。
为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。
上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为12MHz,起振时间为0.833ms;晶振频率为1MHz,起振时间则为10ms。
在本次设计中当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。
如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序,但是通过10uF电容与10K电阻配合后就会有一个稳定复位过程。
以上就是本次复位电路的复位原理。
如图3.1.2所示。
图3.1.2复位电路
3.1.3.晶振电路
时钟电路由一个晶体振荡器12MHz和两个30pF的瓷片电容组成。
时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地作。
下面我就对晶振详细的介绍下,晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。
这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。
晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。
以上就是晶振的起振原理,设计中此晶振为单片机提供运行的必要条件,只有晶振产生振荡才可以是单片机正常运行,这也看出来晶振在电路中的重要性了。
如图3.1.3晶振原理图。
图3.1.3晶振电路
3.1.4.时钟模块DS1302
DS1302由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路,它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。
DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。
DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。
DS1302引脚图如图3.1.4。
图3.1.4DS1302引脚图
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),SCLK为时钟输入端。
3.1.5.显示模块LCD1602
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
在本设计采用的字符型液晶