首页 基于Proteus的单片机实时时钟仿真设计

基于Proteus的单片机实时时钟仿真设计

举报
开通vip

基于Proteus的单片机实时时钟仿真设计基于Proteus的单片机实时时钟仿真设计PAGEPAGE1————————————————————————————————作者:————————————————————————————————日期:个人收集整理勿做商业用途个人收集整理勿做商业用途PAGE32个人收集整理勿做商业用途绪论1.1课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差...

基于Proteus的单片机实时时钟仿真设计
基于Proteus的单片机实时时钟仿真设计PAGEPAGE1————————————————————————————————作者:————————————————————————————————日期:个人收集整理勿做商业用途个人收集整理勿做商业用途PAGE32个人收集整理勿做商业用途绪论1.1课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89C51单片机作为核心,功耗小,能在5V的低压工作,电压可选用4。5~5.5V电压供电。  此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2课题的研究目的与意义二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色.电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。1.3课题解决的主要内容本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单.(4)根据硬件电路图,在开发板上完成器件的焊接.(5)根据设计的硬件电路,编写控制AT89C51芯片的单片机程序。(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能.(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。(8)软件设计时必须要有完善的思路,要做到程序简单,调试方便。设计要求与 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证2。1 设计要求基本要求具有年、月、日、星期、时、分、秒显示和校准功能,24小时制;具有定时响铃和定点报时功能;具有环境温度采集和显示功能;具有响铃播放音乐功能;具有响铃显示特定字符、字符串等功能。2.2系统基本方案选择和论证2.2。1单片机芯片的选择方案和论证方案一:用中小规模集成电路74/54系列和CC4000系列及555集成电路构建秒脉冲源,再利用分频器、计数器、缓存器等得到分、时、日、月、年的计时信号,最后用译码器驱动数码管显示,得到时钟功能。用热敏电阻、A/D转换芯片及相关控制、显示电路组成温度显示部分。用寄存器、比较器及相关控制电路组成闹钟电路。方案二:采用FPGA(现场可编辑门列阵)或CPLD(复杂可编程逻辑器件)作为系统控制器.FPGA/CPLD可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。方案三:采用AT89C51单片机,完全兼容MCS-51系列单片机的所有功能,并且本身带有2K的内存储器,可以在编程器上实现闪烁式的电擦写达几万次以上,比以往惯用的8031CPU外加EPROM为核心的单片机系统在硬件上具有更加简单方便等优点,具体如下:  1)AT89C51单片机是最早期也最典型的产品,低功耗、高性能、采用CHMOS 工艺 钢结构制作工艺流程车尿素生产工艺流程自动玻璃钢生产工艺2工艺纪律检查制度q345焊接工艺规程 的8位单片机.  2)它在硬件资源和功能、软件指令及编程上与Intel80C3X单片机完全相同。在应用中可直接替换.  3)在AT89C51内部有FLASH程序存储器,既可用常规的编程器编程,也可用在线使之处于编程状态对其编程.编程速度很快,擦除时也无需紫外线,非常方便。  4)AT89C5X系列可认为是Intel80C3X的内核与AtmelFLASH技术的结合体。它为许多嵌入式控制系统提供了灵活、低成本的解决方案。方案比较:由三种方案可以看出,用方案一实现设计要求需要使用大量的集成电路,系统结构复杂,电路连接困难。单个芯片的质量对系统的稳定性影响甚大,逻辑功能出现错误不易定位,整体调试费时费力。扩展系统功能工作量极大,甚至有可能要将整个设计方案推倒重来。方案二使用一片FPGA/CPLD即可替代方案一中绝大多数的集成电路。使用VHDL超高速硬件描述语言设计电路,基本不需要硬件调试,方便快捷。但是FPGA/CPLD高速处理能力得不到充分发挥且价格较贵不适合在数字钟这种简单电路中使用。方案三利用单片机作为控制核心,硬件按照技术手册要求连接后基本不需要调试,相关的逻辑功能全部由软件实现,修改方便.功能扩展只需要在现有程序的基础上增加函数即可实现,无需对已实现功能的程序进行改动,调试方便,问题定位快捷、准确。综上所述,我们采用方案三实现系统总体要求。2。2.2显示模块选择方案和论证方案一:采用LED数码管动态扫描,LED数码价格适中,对于显示数字最合适,而且采用动态扫描方法与单片机连接时,占用的单片机口线少,驱动电路简单,且LED在亮度、功耗、可视角度和刷新速率等方面,都更具很大的优势.但所需数码管太多焊接困难极易出错,所以不采用LED数码管作为显示.方案二:采用字段式LCD,显示类型与数码管类似,靠7个字段拼凑生数字显示。一般只能显示0~9,A~F16种字符。这种LCD驱动简单,耗电量小,在仅需要显示数字的场合应用较多,也用来在便携式应用的场合来代替数码管,所以也不采用字段式LCD作为显示。方案三:采用点阵式LCD显示,LCD1602是字符型液晶,显示字母和数字比较方便,控制简单,功耗低,体积小,显示内容丰富,超薄轻巧,可以用电池供电,便于携带,成本较低.在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。本设计需要显示较多的数字和字符,因此,采用点阵式LCD显示。2.2.3时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数.采用此种方案虽然减少芯片的使用,节约成本,但是,需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,实现的时间误差较大.方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能、低功耗、涓流充电的实时时钟芯片,内部含有一个实时时钟/日历,可自动对年、月、日、星期、时、分、秒进行计时,可以自动调整每月的天数。同时具有闰年补偿功能,而且精度高,芯片内部有一个31字节的RAM作为数据暂存区,工作电压2.5V~5。5V范围内,2.5V时耗电小于300nA。用户可以通过对DS1302的设置实现AM/PM指示的12小时制。DS1302采用三线串行通信接口与CPU进行同步通信,并采用突发方式一次传送多个字节的时钟数据或RAM数据。方案比较:由于我们需要定时,而且防止掉电现象,能够保证准确的时间,所以我们采用了方案一。2.2。4温度传感器的选择方案和论证方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计需用A/D转换电路。增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器,而且仅需要一条数据线进行传输易于与单片机连接,可以除去A/D模块,降低硬件成本,简化系统电路。另外,单总线具有经济性好,抗干扰能力强,使用方便等优点.在使用中不需要任何外围元件.具有负压特性,电源极性接反时,温度计不会因为发热而烧毁,而且还具有掉电保护功能。数字式温度传感器还具有测量精度高测量范围广等优点。所以选择DS18B20.2。2。5按键模块的选择方案和论证方案一:采用4×4矩阵式键盘,在修改时钟或设置闹铃时间时就可以直接从键盘输入,节省I/O口,方便、快捷,但程序较为复杂。方案二:采用独立式按键,占用较多的I/O口,稍为麻烦一些,但其程序简单。方案比较:由于,此多功能电子万年历不需要经常修改时间,需要的按键也不多,而且方案二程序简单,成本低,因此选择方案二。2.3电路设计最终方案决定综上各方案所述,对此次作品的方案选定:采用AT89C51作为主控制系统;点阵式LCD作为显示;DS1302提供时钟;数字式温度传感器DS18B20;独立式按键.系统的硬件设计与实现3.1电路设计框图3.2系统硬件概述本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在4。5V超低压工作;显示部分用LCD1602实现,能够同时显示16x02即32个字符;闹钟部分由蜂鸣器构成,蜂鸣器是一种一体化结构的电子讯响器,采用HYPERLINK”http://baike。baidu.com/view/2070482.htm"\t"_blank”直流电压供电,作为发声HYPERLINK"http://baike.baidu.com/view/481400。htm”\t"_blank”器件广泛应用于HYPERLINK”http://baike.baidu。com/view/3314.htm"\t"_blank”计算机、打印机、复印机、报警器、HYPERLINK"http://baike.baidu。com/view/1387196。htm”\t”_blank"电子玩具、汽车电子设备、电话机、HYPERLINK"http://baike.baidu.com/view/281961.htm”\t"_blank”定时器等电子产品中;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5。5V.采用三线接口与单片机进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据.DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本设计中为DS1302增加了备用电池,当主电源掉电时,备用电池自动为其供电;温度的采集由DS18B20构成;当闹铃时间到时,通过蜂鸣器播放闹铃铃声。本文为互联网收集,请勿用作商业用途本文为互联网收集,请勿用作商业用途3。3主要单元电路的设计3.3。1单片机主控制模块的设计AT89C51为40引脚双开列直插式芯片,有四个I/O口P0口,P1口,P2口,P3口,MCS—51单片机共有4个8位的I/O口,(P0,P1,P2,P3),每一条I/O线都能独立地作为输入或输出线。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.如图-1所示.图-1主控制系统3。32显示模块的设计如图-2所示,采用LCD1602字符型液晶显示.1602LCD分为带背光和不带背光两种,其控制器大多为HD44780,带背光的比不带背光的厚,两者尺寸差别如下图—3所示.1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4。5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5。0V字符尺寸:2。95×4。35(W×H)mm(1)LCD1602的基本参数及引脚功能1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表—1所示.第1脚:VSS为地电源。图-2LCD1602字符型液晶显示第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。图—31602LCD尺寸图编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表—1引脚接口说明表第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令.第7~14脚:D0~D7为8位双向数据线.第15脚:背光源正极。第16脚:背光源负极。(2)1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表-2所示。序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容表-2控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H.指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移;S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效.指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C:控制光标的开与关,高电平表示有光标,低电平表示无光标;B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线;N:低电平时为单行显示,高电平时双行显示;F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙.指令10:写数据.指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0-D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0—D7=数据写数据输入RS=H,R/W=L,D0-D7=数据,E=高脉冲输出无表—3基本操作时序表读写操作时序如图—4和图—5所示:图-4读操作时序图-5写操作时序(3)1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图-6是1602的内部显示地址。图-61602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行。因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是:01000000B(40H)+10000000B(80H)=11000000B(C0H).在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预.每次输入指令前都要判断液晶模块是否处于忙的状态.1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图—7所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。(4)1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS图—7字符代码与图形对应图写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置3.3.3时钟电路模块的设计图-8示出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进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端.时钟芯片DS1302的工作原理:DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,再接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图-9所示。表-4为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据.对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作.控制字节总是从最低位开始输入/输出的.表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP"是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0.当“WP”为1时,写保护位防止对任一寄存器的写操作。(2)DS1302的控制字节DS1302的控制字如表—1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。图—8DS1302的引脚图表-4DS1302的控制字格式图-9DS1302读/写时序图(3)数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如表—4所示.(4)DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-5。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等.时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围81H80HCH10秒秒0-5983H82H10分分0—5985H84H12/24010时时1—12/0-23AM/PM87H86H0010日日1—3189H88H00010月月1—128BH8AH00000周日1-78DH8CH年0-998FH8EHWP0000000—-表-5DS1302的日历、时间寄存器3.3.4温度传感器模块的设计如图—10所示.采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P1.0与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。图—10DS18B20温度采集(1)DS18B20的理:DS18B20的测温原理如图-11所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将—55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值.减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循图-11DS18B20测温原理图环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。DS18B20的核心功能是一个直接数字式温度传感器。芯片的分辨率可以按照用户的需要配置为9位、10位、11位、12位,芯片在上电后默认设置为12位.DS18B20可工作在低功耗的空闲状态。单总线系统中的主机发出温度转换命令(44H)后,DS18B20便开始启动温度测量并把测量的结果进行A/D转换。经过A/D转换后,所产生的温度数据将存储在暂存器中的两个温度寄存单元中,数据的格式为符号扩展的二进制补码,同时DS18B20返回到空闲状态。DS18B20的温度数据输出单位为“摄氏度”。温度数据在两个温度寄存器单元中的存储格式见下图:标志位(S)是温度数据的符号扩展位,表示温度的正负:如果温度为正,则S=0;如果温度为负,则S=1.在实际使用过程中,如果DS18B20被设置为12位分辨率,则在温度所有数据位都是有效位;如果DS18B20被设置为11位分辨率,则D0位数据无效;如果DS18B20被设置为10位分辨率,则D1、D0位数据无效;如果DS18B20被设置为9位分辨率,则D2、D1、D0位数据无效。以12位分辨率为例,表-6给出了DS18B20部分数字量输出与温度值之间的关系。在表—6中,+85℃是DS18B20上电复位后在温度寄存器内对应的数字量。温度/℃数字量输出(二进制)数字量输出(十六进制)+125000001111101000007D0+8500000101010100000550+25.062500000001100100010191+10。125000000001010001000A2+0。500000000000010000008000000000000000000000-0.51111111111111000FFF8—10.1251111111101011110FF5E—25。06251111111001101111FF6F—551111110010010000FC90表—6DS18B20部分数字量输出与温度值之间的对应关系在DS18B20完成温度转换以后,其温度值将与报警寄存器中的值相比较.在DS18B20中有两个报警寄存器,TH为温度上限值,TL为温度下限值,这两个寄存器均为8位,所以在进行温度比较时,只取出温度的中间8位(D4~D11)进行比较.TH和TL寄存器格式如下表所示:D7D6D5D4D3D2D1D0S26252423222120如果温度寄存器测量的结果低于TL或高于TH,则设置报警标志,这个比较过程会在每次温度测量时进行。一旦报警标志设置后,器件就会响应系统主机发出的条件搜索命令(ECH).这样处理的好处是,可以是单总线上的所有器件同时测量温度,如果有些点上的温度超过了设定的阈值,则这些报警器件就会通过条件搜索方式识别出来,而不需要一个个器件去读取。无论是温度测量值还是报警阈值,都会存储在DS18B20芯片内的寄存器中。DS18B20的寄存器包括SRAM(暂存寄存器)和EEPROM(非易失寄存器)。EEPROM用于存放报警上限寄存器(TH)、报警下限寄存器(TL)和配置寄存器。如果在使用过程中,没有使用报警功能,TH和TL可作为普通寄存器单元使用。DS18B20的存储器结构如表—7所示。表-7DS18B2存储结构字节0和字节1是温度数字量的低位字节和高位字节,这两个寄存器是只读寄存器,在上电时默认值为0550H,即+85℃。字节2和字节3可用于存放报警阈值或用户寄存器。字节4是配置寄存器,用于设置DS18B20温度测量分辨率,其格式如下表:D7D6D5D4D3D2D1D00R1R011111字节6、6、7保留未使用.字节8用于存放前8个字节的CRC校验值。EEPROM中的值在掉电后仍然保留,SRAM中的值在掉电后会丢失。在器件上电时,将EEPROM中的数据复制到SRAM中,SRAM恢复默认值。所以SRAM的字节2、3、4、8中的值取决于EEPROM中的值。用户可通过“回读EEPROM”命令后,通过一个读时隙来判断回读操作是否完成:如果回读操作正在执行,则DS18B20会向总线上发送一个0;如果回读操作已完成,则DS18B20会向总线上发送一个1.“回读EEPROM"命令会在DS18B20上电时自动完成一次,保证芯片在上电后可以使用有效数据。(2)DS18B20的功能命令:DS18B20的功能命令包括两类:温度转换和存储命令,见表-8。1和表-8。2。表—8。1ROM指令表指令约定代码功能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。搜索ROM0FOH用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备.跳过ROM0CCH忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。表-8.2RAM指令表指令约定代码功能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中.读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据.复制暂存器48H将RAM中第3、4字节的内容复制到EEPROM中。重调EEPROM0B8H将EEPROM中内容恢复到RAM中的第3、4字节。读供电方式0B4H读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。当系统中DS18B20使用寄生电源供电时,由于“温度转换”和“复制SRAM”的操作都是发生在主机发命令之后,由DS18B20自主完成,同时又需要较长的时间(“温度转换”的时间最长),所以通常在主机发出这些命令后,通过MOSFET将总线电压强拉至高电平,以保证这些操作顺利完成。如图-12所示.一般在“温度转换”时需要根据测量的分辨率选择保持强上拉的时间;在“复制SRAM”时需要至少保持10ms的强上拉,而且必须在主机发出命令的10μs的时间内使用MOSFET进行上拉.3。3.5掉电保护模块的设计I2C总线是一种双向二线制总线,结构简单,可靠性和抗干扰性能好。24C02芯片是一个带有I2C总线接口的E2PROM存储器,具有掉电记忆的功能,方便进行数据的长期保存。图—12DS18B20使用MOSFET进行强上拉电路原理图(1)I2C总线结构I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。单片机串行通讯的发送和接收一般都各用一条线TXD和RXD,而I2C总线的数据线既可以发送也可以接受,工作方式可以通过软件设置。所以,I2C总线结构的硬件结构非常简洁。24C02的引脚图:当某器件向总线上发送信息时,它就是发送器,而当其从总线上接收信息时,又成为接收器。(2)I2C总线上的数据传送1)位传输I2C总线每传送一位数据必须有一个时钟脉冲。被传送的数据在时钟SCL的高电平期间保持稳定,只有在SCL低电平期间才能够改变,示意图如下图所示,在标准模式下,高低电平宽度必须不小于4.7us.那么是不是所有I2C总线中的信号都必须符合上述的有效性呢?只有两个例外,就是开始和停止信号。开始信号:当SCL为高电平时,SDA发生从高到低的跳变,就定义为开始信号。停止信号:当SCL为高电平时,SDA发生从低到高的跳变,就定义为结束信号.2)数据传输的字节格式SDA传送数据是以字节为单位进行的。每个字节必须是8位,但是传输的字节数量不受限制,首先传送的是数据的最高位。每次传送一个字节完毕,必须接收到从机发出的一个应答位,才能开始下一个字节的传输.如果没有接受到应答位,主机则产生一个停止条件结束本次的传送。那么从机应该发出什么信号算是产生了应答呢?这个过程是这样的。当主器件传送一个字节后,在第9个SCL时钟内置高SDA线,而从器件的响应信号将SDA拉低,从而给出一个应答位。3)I2C数据传输协议I2C总线的数据传输协议如下:主器件发出开始信号主器件发出第一个字节,用来选通相应的从器件。其中前7位为地址码,第8位为方向位(R/W).方向位为“0”表示发送,方向位为“1”表示接受。从机产生应答信号,进入下一个传送周期,如果从器件没有给出应答信号,此时主器件产生一个结束信号使得传送结束,传送数据无效。接下来主、从器件正式进行数据的传送,这时在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位(传送的时候先送高位,再送低位)。当一个字节传送完毕时,再发送一个应答位(第9位),如上一条所述,这样每次传送一个字节都需要9个时钟脉冲.(3)AT24C02的存储结构与寻址AT24C02的存储容量为256B,内部分成32页,每页8B,操作时有两种寻址方式:芯片寻址和片内子地址寻址。EQ\o\ac(○,1)芯片寻址AT2402的芯片地址固定为1010,是I2C总线器件特征编码,其地址控制字格式为1010A2A1A0R/EQ\*jc2\*"Font:TimesNewRoman"\*hps12\o\ad(\s\up11(——),W)。其中,A2、A1、A0为可编程地址选择位。A2、A1、A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。由于A2、A1、A0或接高电平,或接低电平,共有8种组合,故系统最多可接8片AT24C02,对应的存储容量为2KB.R/EQ\*jc2\*"Font:TimesNewRoman”\*hps12\o\ad(\s\up11(——),W)为芯片读/写控制位,R/EQ\*jc2\*”Font:TimesNewRoman"\*hps12\o\ad(\s\up11(——),W)=0,表示对芯片进行写操作;R/EQ\*jc2\*”Font:TimesNewRoman”\*hps12\o\ad(\s\up11(—-),W)=1,表示读芯片进行读操作。个人收集整理,勿做商业用途文档为个人收集整理,来源于网络表—9AT24C02引脚定义及功能引脚名称功能1~3A0、A1、A2可编程地址输入端4GND电源地5SDA串行数据输入/输出端6SCL串行时钟输入端7WP写保护输入端,用于硬件数据保护,当WP为低电平时,可以对整个存储器进行正常的读/写操作;当WP为高电平时,存储器具有写保护功能,但读操作不受影响8Vcc电源输入引脚,接+5VEQ\o\ac(○,2)片内子地址寻址在确定了AT24C02芯片的7位地址编码后,片内的存储空间可用一个字节作为地址码进行寻址,可寻址范围为00~FFH,可对其内部256个单元进行读/写操作。(4)AT24C02的读/写操作AT24C02有两种写入方式,一种是字节写入方式,一种是页写入方式。EQ\o\ac(○,1)字节写入方式在字节写入方式下,单片机(主控器)先发送启动信号和一个字节的控制字(AT24C02的芯片地址和读/写控制位),AT24C02(从器件)发出应答信号后,单片机再发送一个字节的存储单元子地址(AT24C02芯片内部单元地址码),单片机收到AT24C02的响应后,再发送8位数据和一位停止信号。EQ\o\ac(○,2)页写入方式在页写入方式下,单片机先发送启动信号,接着送一个字节的控制字,再送一个字节的存储器起始单元地址,上述几个字节都得到AT24C02应答后,就可以发送最多一页的数据并顺序存放在以指定起始地址开始的相继单元中,最后以停止信号结束.AT24C02的读操作也有两种方式,一种是指定地址读方式,另一种是指定地址连续读方式.EQ\o\ac(○,1)指定地址读方式在指定地址读方式下,单片机在启动信号后先发送含有片选地址的写操作控制字,AT24C02应答后,再发送一个字节的指定单元的地址,AT24C02应答后再发送一个含有片选地址的读操作控制字,此时如果AT24C02做出应答,被访问单元的数据就会按SCL信号同步出现在SDA线上,供单片机读取.EQ\o\ac(○,2)指定地址连续读方式指定地址连续读方式的读写地址控制与指定读地址方式相同。单片机在收到每个字节数据后要做出应答,只要AT24C02检测到应答信号后,其内部的地址寄存器就自动加1指向下一个单元,并顺序将指向的单元的数据送到SDA线上。当需要结束读操作时,单片机接收到数据后,在需要应答的时刻发送一个非应答信号,接着再发送一个停止信号即可。第四章系统的软件设计4。1程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 框图图-A主程序流程图图—B时间调整程序流程图图—C定时闹铃程序流程图4.2子程序的设计4.2.1LCD1602初始化子程序voidlcd1602_init()//LCD初始化函数{ucharlcdnum;P3=0xdf;lcd_write_com(0x38);lcd_write_com(0x0c);lcd_write_com(0x06);lcd_write_com(0x01);lcd_write_com(0x80);for(lcdnum=0;lcdnum<8;lcdnum++)//写第一行数据{lcd_write_date(tabe1[lcdnum]);delay(2);}lcd_write_com(0x80+0x40);//写入第二行数据for(lcdnum=0;lcdnum〈13;lcdnum++){lcd_write_date(tabe2[lcdnum]);delay(2);}}4.2。2DS1302写子程序voidwrite_byte(uchardat)//写一字节{uchark;ACC=dat;for(k=8;k>0;k-—){ds1302_io=ACC0;ds1302_sclk=0;//拉低sclkds1302_sclk=1;//拉高sclkACC〉〉=1;}}ucharread_byte(){uchark;for(k=8;k〉0;k——){ACC7=ds1302_io;ds1302_sclk=1;//拉高sclkds1302_sclk=0;//拉低sclkACC>〉=1;}returnACC;}voidds1302_write(ucharadd,uchardate){ds1302_rst=0;ds1302_sclk=0;//在rst没拉高之前先把sclk置0ds1302_rst=1;write_byte(add);write_byte(date);ds1302_sclk=1;ds1302_rst=0;}4.2.3DS18B20读子程序ucharread_onechar()//读一字节{ucharvalue=0,i;for(i=8;i>0;i--){value〉〉=1;DQ=0;ds18b20_delay(1);DQ=1;if(DQ==1)value|=0x80;elsevalue&=0x7f;ds18b20_delay(4);}returnvalue;}4.2。4定时闹铃子程序voidalarm_ring(){uchari,j,a,t;uintb;if(alarm_on==1)//alarm_on=1为闹钟有效{if(shi==alarm_shi&&fen==alarm_fen&&miao==alarm_miao)flag_alarm=1;}//闹钟时间到,闹钟标志位置1if(flag_alarm==1){alarm_out=~alarm_out;{TMOD=0x11;EA=1;//开总中断ET0=1;ET1=1;cnt=0;TR1=1;i=0;display_1602_alarm();while(1){//扫描按键如有按键按下退出闹钟if(up==0||down==0){delay2(1);if(up==0||down==0){break;}while(!up);while(!down);}t=tone[i];//读音调if(t==0xff)break;//0xff是结束符if(t!=0)//0是休止符{b=cyc[t%10—1];//根据基本音阶,求出半周期数if(t<10)b=b*2;//若是低八度音阶,半周期数加倍if(t>20)b=b/2;//若是高八度音阶,半周期数减半H0=(65536-b)/256;//根据半周期数,计算T0初值的高字节和低字节L0=(65536—b)%256;TR0=1;//启动定时器0发音}cnt=0;a=time[i];//读节拍while(a>cnt){//扫描按键如有按键按下退出闹钟if(up==0||down==0){delay2(1);if(up==0||down==0){break;}while(!up);while(!down);}}TR0=0;i++;for(b=0;b〈1000;b++);//稍加延时,增强节奏感}EA=0;}flag_alarm=0;alarm_out=1;//关闭喇叭lcd1602_init();}if(flag_alarm==0||alarm_out!=0){key_set_alarm();}}4。2.5按键处理子程序ucharkey_bcd(ucharkey_decimal)//转成ds1302所需的BCD码{uchartemp;temp=(((key_decimal/10)&0x0f)〈<4)|(key_decimal%10);returntemp;}voidkey_up_down()//加减键处理{if(up==0){delay(2);flag_up=1;//加更新标志while(!up);switch(count){case1:miao++;if(miao>59)miao=0;break;case2:fen++;if(fen〉59)fen=0;break;case3:shi++;if(shi〉23)shi=0;break;case4:week++;if(week>7)week=1;break;case5:ri++;if(ri>31)ri=1;break;case6:yue++;if(yue>12)yue=1;break;case7:nian++;if(nian>99)nian=0;break;}}if(down==0)//减键处理{delay(2);flag_down=1;//减更新标志while(!down);switch(count){case1:miao--;if(miao==255)miao=59;break;case2:fen-—;if(fen==255)fen=59;break;case3:shi——;if(shi==255)shi=23;break;case4:week——;if(week<1)week=7;break;case5:ri—-;if(ri〈1)ri=31;break;case6:yue——;if(yue<1)yue=12;break;case7:nian--;if(nian==255)nian=99;break;}}}4.2.6I2C总线接口器件AT24C02数据存储子程序voidstart()//开始信号{sda=1;c02_delay();scl=1;c02_delay();sda=0;c02_delay();}voidstop()//停止{sda=0;c02_delay();scl=1;c02_delay();sda=1;c02_delay();}voidrespons()//应答{uchari;scl=1;c02_delay();while((sda==1)&&(i<250))i++;//如sda=0或i>250,,跳出scl=0;c02_delay();}voidc_init(){sda=1;c02_delay();scl=1;c02_delay();}voidc02_write_byte(uchardate)//写一字节{uchari,temp;temp=date;for(i=0;i<8;i++){temp=temp〈〈1;scl=0;c02_delay();sda=CY;c02_delay();scl=1;c02_delay();}scl=0;c02_delay();sda=1;c02_delay();}ucharc02_read_byte()//读一字节{uchari,k;scl=0;c02_delay();sda=1;c02_delay();for(i=0;i〈8;i++){scl=1;c02_delay();k=(k〈<1)|sda;scl=0;c02_delay();}returnk;}voidc02_write_add(ucharaddress,uchardate)//写{start();c02_write_byte(0xa0);respons();c02_write_byte(address);respons();c02_write_byte(date);respons();stop();}ucharc02_read_add(ucharaddress)//读{uchardate;start();c02_write_byte(0xa0);respons();c02_write_byte(address);respons();start();c02_write_byte(0xa1);respons();date=c02_read_byte();stop();returndate;}4.2.7主程序main(){lcd1602_init();ds18b20_init();ds1302_init();c02_init();while(1){if(done==1){keyjpress();}if(done==0){//取得并显示日历和时间key_set_alarm();xianshi();alarm_ring();voice();}}}第五章硬件电路调试和使用说明5.1硬件电路调试实物仿真的硬件电路采用RZ-51/AVR2。0单片机开发板,在一块喷锡双层印刷电路板上集成了蜂鸣器、继电器、红外接收器、LCD1602液晶接口、I2CROM24C02、MAX232串口通信、时钟芯片DS1302、8位共阳极数码管、AT89S52单片机等电子元件,可以方便地完成实时时钟部分的设计与仿真,查找出软件编程和Proteus仿真中存在的诸如显示初始化、时序逻辑和真实硬件不同步上等错误进行校验。USBISP驱动软件采用USBASPDriver,烧写软件采用AVRfighter.由于在Keilμversion4编译器Proteus7。8仿真器中采用AT89C51作为单片机,实物仿真时为了便于程序的移植,用AT89S52作为微控制器。AT89S52与AT89C51的区别和联系如下:AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In—systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS—51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统供给高性价比的解决方案。AT89S51具有如下特点:40个引脚,8kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器.此外,AT89S52设计和配置了振荡频率可为0Hz并
本文档为【基于Proteus的单片机实时时钟仿真设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
千与千寻
十年从业经验,高级工程师
格式:doc
大小:12MB
软件:Word
页数:0
分类:工学
上传时间:2021-08-26
浏览量:17