基于AT89S52单片机的万年历设计_第1页
基于AT89S52单片机的万年历设计_第2页
基于AT89S52单片机的万年历设计_第3页
基于AT89S52单片机的万年历设计_第4页
基于AT89S52单片机的万年历设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

洛阳师范学院单片机原理及应用课程设计报告基于AT89S52单片机万年历的设计院系信息技术学院专业计算机科学与技术学生姓名杨烁琪班级11级计科班学号111114013指导教师赵秀英完成日期2015年1月 20日摘 要电子万年历是一种非常广泛日常计时工具。它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3-5V电压供电。此次是基于52系列的单片机进行的电子万年历设计,相比传统的万年历来说,精确度更高。可以显示温度、年、月、日、时、分、秒及周信息,具有可调整日期和时间功能。对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件方面进行同步设计。硬件部分主要由单片机,LED显示电路,以及调时按键电路等组成。在单片机的选择上使用了AT89S52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用共阴极的数码管。使用MAX7219来驱动显示,然后并行输出。软件方面主要包括日历程序、时间调整程序、温度程序、显示程序等。程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在keil软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。关键词:时钟芯片、MAX7219、DS18B20、动态扫描、单片机。目 录摘 要11 绪论41.1设计背景41.2设计思想41.3设计框图52 系统硬件设计62.1最小化电路设计62.1.1 主控芯片简介62.1.2 复位电路、晶振电路设计72.2显示电路设计92.2.1 显示器简介92.2.2 驱动芯片简介112.2.3 显示电路162.3温度采集电路设计172.3.1 温度采集芯片简介172.3.2 温度采集电路212.4实时时钟电路设计212.4.1时钟芯片简介222.4.2时钟电路223 系统软件设计253.1主程序流程图263.2系统子程序的设计273.2.1送显示流程图273.2.2 时钟流程图283.2.3 温度采集流程图294 系统仿真304.1仿真软件简介304.2 软件仿真过程344.3仿真结果36致谢37参考文献37附 录 一38附 录 二391 绪论1.1设计背景随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,一个时间跨度较大的日历程序是很有参考价值的,本程序在这种背景下开始编辑,其中集成了国际通用日历和中国农历,此外还可以显示星期和加载了部分节日,显示本机准确日期等功能。 1.2设计思想众所周知,地球绕太阳公转,公转一周历时365天5小时48分46秒。现代国际上普遍采用罗马历法,在罗马历法中人为地规定一年365天,也就是我们所说的平年,为了弥补每一年多出的5小时48分46秒,同时又规定4年中有一年是闰年,闰年为366天(平年的2月份为28天,而闰年的2月份为29天),这样4年有365*3+366=1461天,而地球绕太阳公转4周历时1460天23小时15分4秒,这样,每4年又产生了44分56秒的误差,为了减小影响,历法上又规定,每400年中只存在97个闰年,这样400年中共有365*400+97=146097天,而地球绕太阳公转400周历时146096天21小时6分40秒,较好的弥补了这一缺陷,这样几乎3300年才产生一天的误差。1.3设计框图复位电路晶振电路电源电路主控模块ATS8952按键扫描模块驱动电路LED显示模块18B20温度检测模块1302时钟芯片模块本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。晶振电路是给主控模块提供脉冲信号;温度的采集由DS18B20构成;显示部分由8个数码管,MAX7219译码器构成。使用动态扫描显示方式对数字的显示。本设计系统框图如图1.1所示。图1.1 基于AT89S52单片机的电子万年历系统框图2 系统硬件设计2.1 最小化电路设计在单片机使用中有必须的最小化电路,它是单片机工作的前提。其中包括电源电路、晶振电路、复位电路。下面就简单介绍最小化电路。2.1.1 主控芯片简介(1)主要功能的简介l 拥有灵巧的8位CPU和在系统可编程Flashl 晶片内部具有时钟振荡器(传统最高工作频率可至 12MHz)l 内部 (ROM)程序存储)为 8KBl 内部(RAM)数据存储器为 256字节l 32 个可编程I/O 口线l 8 个中断向量源l 三个 16 位定时器/计数器l 三级加密程序存储器l 全双工UART串行通道(2)引脚功能简介图2.1 AT89S52单片机的引脚图VCC:电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:重置引脚,高电平动作。EA/Vpp:EA表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。ALE/PROG:ALE是表示地址锁存器启用信号。PSEN:此为Program Store Enable的缩写,其意为程序储存启用。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR,外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。/EA/VPP:当/EA保持低电平时,在此期间外部程序存器(0000H-FFFFH),不管是否有内部程序存储器。.2.1.2 复位电路、晶振电路的设计单片机工作需要3个基本条件:接电源、接石英晶体振荡器和复位电路。如图2.2所示。图2.2 单片机的基本电路(1)接电源 将单片机第40脚Vcc接电源+5V,第20脚Vss接地(电源负极),为单片机工作提供电源。由于AT89S52片内带有程序存储器,当使用片内程序存储器时要将EA(31脚)接高电平,即接到电源+5V。 (2)接石英晶体振荡器 将单片机第19脚(XTAL1)与18脚(XTAL2)分别接外部晶体的两个引脚,由石英晶体组成振荡器,保证单片机内部各部分有序工作。 图2.3 晶振电路 单片机运行程序的速度与振荡器的频率有关。单片机在读、写操作时都需要消耗一定的时间。机器周期是指单片机完成一个基本操作所用的时间,当外接石英晶体为12MHz时,1个机器周期为1ms;当外接石英晶体为6MHz时,1个机器周期为1ms。(3)复位电路 在实际应用中,复位电路有两种基本形式:一种是上电复位,另一种是上电与按键均有效的复位如图2.4所示。上电复位要求接通电源后,单片机自动实现复位操作。常用的上电复位电路如图2-4(a)所示。上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。该电路典型的电阻和电容参数为:晶振为12MHz时,C1为10uF,R1为8.2K;晶振为6MHz时,电容C1为22uF,R1为1K。上电与按键均有效的复位电路如图2.4(b)所示。上电与按键均有效的复位电路原理与上电复位原理相同,不同的是上电与按键均有效的复位电路在单片机运行期间,能用按键来控制复位操作晶振为6MHz时,电容C1为22uF,R2为200图 2.4(a)上电复位电路 图2.4(b)上电与按键均有效复位电路本设计中使用后者电路复位,就是可以在单片机运行期间可以人工的复位。这样是比较方便。2.2 显示电路设计.2.2.1 显示器的简介发光二极管LED是简单常用的输出设备,通常用来指示机器的状态或其它信息。它的优点是价格低,寿命长,对电压电流的要求低及容易实现多路等,因而在测量控制仪器中获得了广泛的应用。LED是近似于恒压的元器件,到导电时(发光)的正向压降一般约为1.6V或2.4V,反向击穿电压一般5V。工作电流通常在10-20mA,故电路中需要串联适当的限流电阻。发光强度基本上与正向电流成正比。发光效率和颜色取决于制造的材料,一般常用红色,偶尔也用于黄色或绿色。多个LED可接成共阴或共阳极形式。通过驱动器接到系统的并行输出口上,由CPU输出适当的代码来点亮或熄灭相应的LED。发光二级管显示驱动(点亮)的方法有如下2种:l 静态驱动方法:即给欲点亮的LED通过恒定的定流。这种驱动方法需要显示的位数增加时,所需的逻辑部件及连线也相应增加,成本也增加。l 动态驱动方法:是给欲点亮的LED通过脉冲电流,此时LED的脉冲电流倍数于其额定电流值。利用动态驱动方法可以减少需要的逻辑部件和连线。7段LED数码显示器最常用的一种数码显示器是由7段条形的LED组成,如图2.5所示。 图2.5(a)共阴极接法 图2.5(b)共阳极接法点亮适当的字段,就可以出不同的数字。此外不少于7段数码管显示器在右下角带有一个圆形的LED作小数点用,这样一共有8段,恰好适用于8位的并行系统。 图2.5(a)为共阴极接法,公共阴极接地。当各段阳极上的电平为“1”时,该段点亮;电平为“0”时,段就熄灭。图2.5(b)为共阳极接法+5V电源。当各段阴极上的电平为“0”时,该段就点亮;电平为“1”时,段就熄灭。图中的电阻是限流电阻。图2.6 7段LED数码管显示器内部段的排列为了在7段(图2.6)LED上显示不同的数字或字符,首先要把数字或字符转换成相应的段码(又称字型码),由于电路接法不同,形成的段码也不相同,如表2-1所示。表2-1 7段数码显示器的段位码存储器地址显示数字共阴极接法的7段状态g f e d c b a共阴极接法段码(十六进制数)共阳极接法段码(十六进制数)SEG00 1 1 1 1 1 13F40SEG+110 0 0 0 1 1 00679SEG+221 0 1 1 0 1 15B24SEG+331 0 0 1 1 1 14F30SEG+441 1 0 0 1 1 06619SEG+551 1 0 1 1 0 16D12SEG+661 1 1 1 1 0 17D02SEG+770 0 0 0 1 1 10778SEG+881 1 1 1 1 1 17F00SEG+991 1 0 0 1 1 16718SEG+10A1 1 1 0 1 1 17708SEG+11B1 1 1 1 1 0 07C03SEG+12C0 1 1 1 0 0 13946SEG+13D1 0 1 1 1 1 05E21SEG+14E1 1 1 1 0 0 17906SEG+15F1 1 1 0 0 0 1710E注:由于用MAX7219驱动译码,所以,本文选用共阴极数码管,只显示0-9,如果要用7段数码显示器显示多位数字,就用MAX7219来驱动,下一节MAX7219的驱动。详情请参考上一节。2.2.2 驱动芯片的简介 MAX7219是MAXMI公司生产的一种串行接口方式7段共阴极LED显示驱动器。其片内包含有一个BCD码到B码的译码器、多路复用扫描电路、字段和字位驱动器,以及存储每个数字的8X8RAM。每位数字都可以被寻址和更新,允许对每一位数字选择B码译码或不译码。采用三线串行方式与单片机接口。电路十分简单,只需要一个10K左右的外接电阻来设置所有LED的段电流。MAX7219的引脚排列如图2.7所示。 图2.7 MAX7219的引脚排列(1)引脚功能简介DIN:串行数据输入。在CLK时钟的上升沿,串行数据被移入内部移位寄存器。移入时最高位(MSB)在前。DIG0-7:8根字位驱动引脚,它从LED显示器吸入电流。GND:接地,两根GND引脚必须相连。LOAD:装载数据输入。在LOAD的上升沿,串行输入数据的最后16位被锁存。CLK:时钟输入。它是串行数据输入时所需的移位脉冲。最高时钟频率为10MHz,在CLK地上升沿串行数据被移入内部移位寄存器,在CLK的下降沿数据从DOUT移出。SEGA-SEGG,DP:七段和小数点驱动输出,它提供LED显示器源电流。ISET:通过一个10K电阻Rset接到V+以设置峰值段电流。V+:+5V电源电压。DOUT:串行数据输出。输入到DIN的数据经过16.5个时钟周期后,在DOUT端有效。(2) MAX7219的传输方式:采用串行数据传输方式,由16位数据包发送到DIN引脚的串行数据在每个CLK的上升沿被移入的内部16位移位寄存器,然后在LOAD的上升沿将数据所存到数字或控制寄存器中。LOAD信号必须在第16个时钟上升沿同时或之后,但在下一个时钟上升沿之前变高;否则将会丢失数据。DIN端的数据通过移位寄存器传送,并在16.5个时钟周期之后出现在DOUT端。DOUT端的数据在CLK的下降沿输出。串行数据以16位为一帧,其中,D11-D8为内部寄存器地址,D7-D0为寄存器数据,格式如表2-2所示。表2-2 MAX7219的串行数据格式D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0XXXX地址MSN 数据 LSB(3) MAX7219的内部寄存器:MAX7219具有14个可寻址的内部数字和控制寄存器。8个数字寄存器由一个片内8X8双端口SRAM实现,它们可以直接寻址;因此,可以对单个数字进行更新;并且只要V+超过2V,数据就可以保留下去。控制寄存器有5个,分别为译码方式、显示亮度、扫描界限(扫描数位的个数)、停机和显示测试。另外还有一个空操作寄存器(NO-OP),在不改变显示或影响任一控制寄存器的条件下器件级联时,它允许数据从DIN传到DOUT。表2.3所列为MAX7219的内部寄存器及其地址。表2-3 MAX7219的内部寄存器及其地址寄存器地址D15-D12D11 D10 D9 D8十六进制代码NO OPX0 0 0 0X0H数字0X0 0 0 1X1H数字1X0 0 1 0X2H数字2X0 0 1 1X3H数字3X0 1 0 0X4H数字4X0 1 0 1X5H数字5X0 1 1 0X6H数字6X0 1 1 1X7H数字7X1 0 0 0X8H译码方式X1 0 0 1X9H亮度X1 0 1 0XAH扫描界限X1 0 1 1XBH停机X1 1 0 0XCH显示测试X1 1 1 1XFH下面以表格形式对MAX7219内部寄存器中不同数据所表示的含义进行说明。表2-4为译码方式寄存器中数据的含义。从表中可见,寄存器中的每一位与一个数字位相对应,逻辑高电平选择B译码,而逻辑低电平则选择旁路译码器。表2-4 译码方式寄存器(地址 = X9H)含义D7 D6 D5 D4 D3 D2 D1 D0十六进制代码7 0位均不译码0 0 0 0 0 0 0 000H0位译成B码,7 1均不译码0 0 0 0 0 0 0 101H3 0译成B码,7 4均不译0 0 0 0 1 1 1 10FH7 0位译成B码1 1 1 1 1 1 1 1FFHMAX7219可用V+和ISET之间所接外部电阻Rset来控制显示亮度。来自段驱动器的峰值电流通常为进入ISET电流的100倍。Rset既可以为固定电阻,也可以为可变电阻,以提供来自面板的亮度调节,其最小值为9.52K。段电流的数字控制由内部脉宽调制DAC控制。该DAC通过亮度寄存器向低4位加载,将平均峰值电流按16级比例设计,从Rset设置峰值电流的31/32的最大值到1/32的最小值,如表2-5所列,最大亮度出现在占空比为31/32时。表2-5 亮度寄存器(地址 = XAH)占空比(亮度)D7 D6 D5 D4 D3 D2 D1 D0十六进制代码1/32(最小亮度)X X X X 0 0 0 0X0H3/32X X X X 0 0 0 1X1H5/32X X X X 0 0 1 0X2H29/32X X X X 1 1 1 0XEH31/32(最大亮度)X X X X 1 1 1 1XFH扫描界限寄存器用于设置所显示的数字位,可以为1-8。通常以扫描频率为1300Hz、8位数字、多路方式显示。因为所扫描数字的多少会影响显示亮度,所以要注意调整。如果扫描界限寄存器被设置为3个数字或更少,各数值驱动器将消耗过量的功率。因此,Rset电阻的值必须按所显示数字的位数多少适当调整,以限制各个数字驱动器的功耗。表2-6为扫描界限寄存器中数据的含义。表2-6 扫描界限寄存器(地址=XBH)显示数字位D7 D6 D5 D4 D3 D2 D1 D0十六进制代码只显示第0位X X X X X 0 0 0X0H显示第0位-第1位数字X X X X 0 0 0 1X1H显示第0位-第2位数字X X X X 0 0 1 0X2H显示第0位-第6位数字X X X X X 0 1 1X6H显示第0位-第7位数字X X X X X 1 1 1X7H当MAX7219处于停机方式时,扫描振荡器停止工作,所有的段电流源被拉到地,而所有的位驱动器被拉到V+,此时LED将不显示。在数字和控制寄存器中的数据保持不变。停机方式可用于节省功耗或使LED处于闪烁。MAX7219退出停机方式的时间不到250uS,在停机方式下显示驱动器还可以进行编程。停机方式可以被显示测试功能取消。表2-7为停机寄存器中数据的含义。表2-7 停机寄存器(地址 = XCH)工作方式D7 D6 D5 D4 D3 D2 D1 D0十六进制代码停机X X X X X X X 0X0H正常X X X X X X X 1X1H显示测试寄存器有两种工作方式:正常和显示测试。在显示测试方式下8位数字被扫描,占空比为31/32。通常不考虑(但不改变)所有控制寄存器和数据寄存器(包括停机寄存器)内的控制器来接通所有的LED显示器。表2-8为显示测试寄存器中数据的含义。表 2-8 显示测试寄存器(地址 = XFH)工作方式D7 D6 D5 D4 D3 D2 D1 D0十六进制代码停机X X X X X X X 0X0H显示设置X X X X X X X 1X1H数字0-7寄存器受译码器寄存器的控制:译码或不译码。数据将寄存器可将BCD码译成B码(0-9、-、E、L、P),如表2-9所列。如果不译码,则数字寄存器中数据的D6-D0为=位分别对应7段LED显示器的A-G段,D7位对应LED的小数点DP。某一位数据为1,则点亮与该位对应的LED段;数据为0,则熄灭该段。表 2-9 数字0-7寄存器(地址 = X1H X8H)7段字形寄存器数据点亮段D7 D6-D4 D3 D2 D1 D0DP A B C D E F G0X 0 0 0 01 1 1 1 1 1 01X 0 0 0 10 1 1 0 0 0 02X 0 0 1 01 1 0 1 1 0 13X 0 0 1 11 1 1 1 0 0 14X 0 1 0 00 1 1 0 0 1 15X 0 1 0 11 0 1 1 0 1 16X 0 1 1 01 0 1 1 1 1 17X 0 1 1 11 1 1 0 0 0 08X 1 0 0 01 1 1 1 1 1 19X 1 0 0 11 1 1 1 0 1 1-X 1 0 1 00 0 0 0 0 0 1EX 1 0 1 11 0 0 1 1 1 1HX 1 1 0 00 1 1 0 1 1 1LX 1 1 0 10 0 0 1 1 1 0PX 1 1 1 01 1 0 0 1 1 1暗X 1 1 1 10 0 0 0 0 0 0 注:小数点DP由D7位控制,D7=1点亮小数点.2.2.3 显示电路图2.8为89S52单片机与MAX7219的一种接口。89S52的P1.0口连接到图2.8 MAX7219与89S52单片机接口MAX7219的DIN端,P1.1口连到LOAD端,P1.2连到CLK端。采用软件模拟方式产生MAX7219所需的工作时序。图2.8为数据传输时序设计的MAX7219显示驱动程序例子,程序执行后在LED上显示8051字样。2.3温度采集电路设计2.3.1 温度采集芯片简介1. DS18B20引脚结构如图2.10所示。图2.10 引脚结构 DS1820通过一个单线接口发送或接收信息,因此在中央微处理器和DS1820之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。因为每个DS1820都有一个独特的片序列号,所以多只DS1820可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。引脚说明GND:接地。NC :接空。DQ :数据输入/输出脚。VDD:外接供电电源输入端(在寄生电源接线方式时接地)。2. 技术性能描述 (1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (2)测温范围 55125,固有测温分辨率0.5。 (3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温 。(4)工作电源: 35V/DC 。(5)在使用中不需要任何外围元件 。(6)测量结果以912位数字量方式串行传送。 (7)不锈钢保护管直径 6。 (8)适用于DN1525, DN40DN250各种介质工业管道和狭小空间设备测温。 (9)标准安装螺纹 M10X1, M12X1.5, G1/2任选。 (10)PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。 3. 应用范围 (1)该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域 。(2)轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。 (3)汽车空调、冰箱、冷柜、以及中低温干燥箱等。 (4)热制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制 。4. DS18B20测温原理如图2.11所示。 图2.11 测温原理表2-10 温度/数据关系温度数据输出(二进制)数据输出(十六进制)+1250 0 0 0 0 0 0 0 1 1 1 1 1 0 1 000FA+250 0 0 0 0 0 0 0 0 0 1 1 0 0 1 00032+0.50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000-0.51 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFF-251 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0FFCE-551 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0FF92DS18B20是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束之前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力,这是通过改变计数器对温度每增加一度所需计数的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。DS18B20内部对此计算的结果提供0.5的分辨力。温度以16bit带符号位扩展的二进制补码形式读出,表给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。DS18B20测温范围-55- +125,以0.5递增。如果于华氏温度,必须要用一个转换因子查找。5) 时序主机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位。(1)初始化时序见图2.12主机总线to时刻发送一复位脉冲(最短为480us的低电平信号)接着在tl时刻释放总线并进入接收状态DSl820在检测到总线的上升沿之后等待15-60us接着DS1820在t2时刻发出存在脉冲(低电平持续60-240 us)如图中虚线所示。 图2.12 初始化时序图(2). 写时间隙当主机总线to时刻从高拉至低电平时就产生写时间隙见图2.13(a)图1.13(b)从to时刻开始15us之内应将所需写的位送到总线上DSl820在t0后15-60us间对总线采样若低电平写入的位是0见图2.13(a),若高电平写入的位是1,见图2.13(b),连续写2位间的间隙应大于1us。 图2.13(a)写0时序 图2.13(b) 写1时序 (3). 读时间隙见图2.14主机总线to时刻从高拉至低电平时总线只须保持低电平l7us之后,在t1时刻将总线拉高产生读时间隙,读时间隙在t1时刻后t2时刻前有效t2距t0为15us也就是说t2时刻前主机必须完成读位并在t0后的60us-120us内释放总线。读位子程序(读得的位到C中)。图2.14 读时序.2.3.2温度采集电路 此电路图是以DS18B20温度采集芯片为主,以单片机为辅。通过温度采集芯片采集到外部温度转化之后,再通过单片机芯片的转化然后输出显示。如图2.15所示。 图2.15 温度采集电路2.4 实时时钟电路设计DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。2.4.1时钟芯片简介Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器。其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK为时钟输入端。 如图(2.16)为DS1302的引脚功能图。 2 图2.16 DS1302的引脚图分布1) DS1302的控制字节DS1302 的控制字如表2-11所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 表2-11 DS1302的控制字节2)数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 3)DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。DS1302内部寄存器的列表如图2-12所示。表2-12 DS1302内部寄存器列表寄存器名称 命令字 取值范围 各位内容 写 读 7 6 5 4 3 2 1 0秒寄存器 80H 81H 00-59 CH 10SEC SE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论