合肥学院《单片机原理与应用》课程论文课程论文题目基于AT89C51多功能电子万年历的设计院系名称计算机科学与技术系专业(班级)计算机科学与技术(09计本2班)姓名(学号)张玉(0904012045)指导教师龙夏2012年6月10日1摘要:随着单片机应用技术的飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些大部分都是以单片机为控制核心的。单片机是集CPU、RAM、ROM、定时、计数器和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于工业自动化和消费电子,因此具有非常现实的研究意义。本文通过对一个基于单片机实现的电子万年历设计,让我们加深了对单片机、C语言编程、Keil调试、Proteus仿真的理解。此系统由主控制器AT89C51、时钟电路模块DS1302、显示电路模块、温度采集模块DS18B20等部分构成,能实现实时年、月、日、时、分、秒、星期、温度等显示。关键词:DS1302;DS18B20;单片机;多功能万年历引言:万年历是采用数字电路实现对年、月、日、时、分、秒、星期、温度等数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的功能。诸如能显示周围温度,能动态显示需要的文字信息,而且配上优美的画质,动听的音乐,更有美化环境的功能。因此,研究万年历及扩大其应用,有着非常现实的意义。1方案论证1.1单片机芯片的选择在单片机控制中,常用的ATMEL公司单片机种类有AT89C51、AT89C52、AT89S51、AT89S52,都兼容MCS-51单片机。对于AT89C51,是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,128×8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源等主要特性。相比而言,AT89C52有8K的ROM,256B的RAM,还增加一个定时器/计数器2,自然价格比C51略高。而相对而言,S系列的单片机具有在线编程下载(ISP)功能和看门狗,而且运行的速度的最高频率达到33MHZ,使得运行速度更快,自然价格比C系列的要高2元左右。但是当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,S系列的不需要对芯片多次拔插,节省了调试的时间。综合考虑以上种种因素,由于考虑到产品的成本,在同样能完成我们所要求的功能时,自然会选择相对便宜的AT89C51,这样更容易把产品推向市场。但是在实验室的的调试中,我们依然可以用AT89S51,这样就方便了我们的硬件调试,同样降低了开发产品的成本。1.2显示模块的选择常见的文字、图像显示屏主要有LED(LightEmittingDiode)显示屏,LCD(LiquidCrystalDisplay),LED点阵数码管显示。LED显示器与LCD显示器相比,LED在亮度、功耗、可视角度和刷新速率等方面,都更具优势。LED与LCD的功耗比大约为10:1,而且更高的刷新速率使得LED在视频方面有更好的性能表现,能提供宽达160°的视角,可以显示各种文字、数字、彩色图像及动画信息,也可以播放电视、录像、VCD、DVD等彩色视频信号,多幅显示屏还可以进行联网播出。但是考虑到LED的价格比LCD贵的多,一般应用在对成本不是很敏感的产品上的。对于LED点阵数码管显示,一般体积较大,适合用于机场,广场等大型屏幕显示,显然不符合袖珍型的电子万年历室内产品。LCD占用空间小,低功耗,低辐射,无闪烁,降低视觉疲劳。综合考虑,基于时代的潮流,在人们能普遍接受的价格内,我们优先考虑用LCD,这样既满足了人们的审美观,也符合世界潮流的发展,是一项新产品成功推向市场的必要条件。1.3时钟芯片的选择可以直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,而且精度不是很高。因此选用专用的DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。1.4电路设计最终方案综上各方案所述,对此次作品的方案选定:采用AT89C51作为主控制系统;DS1302提供时钟;LCD液晶显示器作为显示,DS18B20用来采集温度信息,ADC0832用来实现模拟和数字信号的转换。2系统的硬件电路设计和实现22.1电路设计框图2.2系统硬件概述本电路是由AT89C52单片机为控制核心,具有可编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒、星期进行计时,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、时、分、秒、星期等时钟所需数据,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由LCD液晶显示屏显示。2.3主要单元电路的设计2.3.1单片机主控制模块的设计AT895C1单片机为40引脚双列直插芯片,有四个8位I/O口,分别P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。如图2所示:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51R1300C130pfC230pfX1CRYSTALC310uf图2主控制系统2.3.2时钟电路模块的设计低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。AT89C51主控DS18B20模块LCD模块图1原理框图DS1302模块DAC0832模块3Vcc2Vcc1X1SCLKX2I/OGNDRST273645采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录些具有特殊意义的数据及其出现的时间。记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。传统的数据记录方式是隔时采样或定时样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。而在系统中采用DS1302则能很好地解决这个问题。(1)DS1302的性能特性·实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;·用于高速数据暂存的31×8位RAM;·最少引脚的串行I/O;·2.5~5.5V电压工作范围;·2.5V时耗电小于300nA;·用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;·简单的3线接口;·可选的慢速充电(至VCC1)的能力。DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:VCC1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;VCC2在双电源系统中提供主电源,在这种运用方式中,VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。(2)DS1302数据操作原理DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。U3DS130218图4-3DS1302管脚图如果在传送过程中置RST为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在VCC=2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的管脚图如图4-3所示,内部结构图如图4-4所示,表4-2为各引脚的功能。4DS1302的控制字如图4-5所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。位5~1(A4~A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出.为了提高对32个地址的寻址能力(地址/命令位1~5=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至RAM。数据读写程序如图4-6所示。5DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表4-3,其中奇数为读操作,偶数为写操作。时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式。