1、 目 录1引言11.1温度传感器的发展21.2温度数据采集与监测22系统任务与总体方案论证42.1设计任务42.2方案设计42.3 方案选择63硬件电路设计73.1 STC单片机简介103.1.1复位电路103.1.2晶振电路113.2 LED显示与单片机接口113.3按键123.4 DS18B20数字温度计133.4.1 DS18B20的新性能133.4.2DS18B20的外形和内部结构143.4.3高速暂存存储器163.4.4 DS18B20的使用方法183.4.5 DS18B20工作原理194 软件设计204.1系统软件介绍204.2总程序流程图215 设计调试225.1应用ISIS软件
2、仿真电路225.2应用KEIL软件进行程序调试235.3实物调试23结 论24参考文献25附录一:源程序26附录二:电路原理图36附录三:资料37I四川职业技术学院毕业设计(论文)摘 要近年来随着科技的飞速发展,“定时器”总的来说有两种类型。一种是基于模拟技术的传统产品,这种定时器功能简单,尽管曾被广泛用过,但已进入淘汰之列。另一种是基于数字技术的新一代产品,这种产品功能强,是前者的替代之物。本设计开发了一种基于单片机的多用途定时器。它造价低,功能全,整体功能性价比高,可适应各种场合的定时预警之用。本设计是经典的单片机定时功能应用设计。设计中应用了单片机定时器的设计功能、单片机的中断使用方法及
3、LED显示等技术。可以实现任意时间和日期的显示,而且每个时间的初值可以改变,并且可以有闹铃定时的功能和加之数码管的闪烁的提示功能。本设计的硬件电路主要包括:STC89S52单片机、DS18B20温度传感器。在硬件的设计的基础上,通过软件进行发光二极管指示程序、键扫描程序和数码管的显示程序的设计,最终完成本设计。关键词:定时器;STC89S52单片机;DS18B20温度传感器;1引言含有微处理器、存储器、输入/输出电路及一些诸如中断控制器、定时器/计数器等资源的集成电路芯片,它包含了作为一个计算机所必需的基本部件,在外部只需添加少许的外围器件就可以组成完整的计算机实现控制目的,这样的器件通常称为
4、单片机或微型控制器。单片机是通过内部总线把计算机的各主要部件接为一体,其内部总线包括地址总线、数据总线和控制总线。其中,地址总线的作用是在进行数据交换时提供地址,CPU通过它们将地址输出到存储器或I/O接口;/数据总线的作用是在CPU与存储器或I/O接口之间,或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU的应答信号线等。单片机诞生于20世纪70年代末,经历了单片微型计算(SCM)、微控制器(MCU)、单片应用系统(SOC)三大阶段。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费
5、类产品和玩具等。单片机由于其体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,普遍运用在智能仪器仪表上,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大,例如精密的测量设备(功率计,示波器,各种分析仪);在工业控制中的应用上,用单片机可以构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等;在计算机网络和通信领域中,现代的单片机普遍具备通信接口,可以
6、很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等,特别在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。在日新月异的21世纪里,家用电子产品得到了迅速发展。现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。单片机在工商,金融,科研、教育,国防航空航天等领域
7、都有着十分广泛的用途。许多家电设备都趋于人性化、智能化,正是因为这些电器设备大部分都含有CPU控制器或者是单片机。用单片机来控制的小型家电产品具有便携实用,操作简单的特点。本文设计了一种基于单片机的多用途定时器。它造价低,功能全,整体功能价格比高,可适应各种场合的定时预警之用。因而,此设计具有相当重要的现实意义和实用价值。1.1温度传感器的发展温度传感器是最早开发,应用最广的一类传感器。根据美国仪器学会的调查,1990年,温度传感器的市场份额大大超过了其他的传感器。从17世纪初伽利略发明温度计开始,人们开始利用温度进行测量。真正把温度变成电信号的传感器是1821年由德国物理学家赛贝发明的,这就
8、是后来的热电偶传感器。五十年以后,另一位德国人西门子发明了铂电阻温度计。在半导体技术的支持下,本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。与之相应,根据波与物质的相互作用规律,相继开发了声学温度传感器、红外传感器和微波传感器。温度传感器使用范围广、数量多,居各种传感器之首。温度传感器的发展大致经历了以下3个阶段:传统的分立式温度传感器(含敏感元件)、模拟集成温度传感器/控制器、智能温度传感器。温度传感器按传感器与被测介质的接触方式可分为两大类:一类是接触式温度传感器,一类是非接触式温度传感器。接触式温度传感器的测温元件与被测对象要有良好的热接触,通过热传导及对流原理达
9、到热平衡。这种测温方法精度比较高,并可测量物体内部的温度分布。但对于运动的、热容量比较小的及对感温元件有腐蚀作用的对象,这种方法将会产生很大的误差。最新推出一种型号是TS-18B20的数字温度传感器,采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。1.2温度数据采集与监测最早的也是最简单的实现对温度的监测是采用人工的方式,这种方式不仅效率低,劳动时间长,而且会由于抽样的不具代表性使得监测结果失去其原有的意义。该方式还有一个弊端就是其应用场所有很大的局限性。后来随着电子技术的出现
10、与进步,科研人员开始采用温度传感器代替原始的温度计,开发了以单片机为核心的监测系统,并佐以接口芯片将结果显示在LED数码显示管上,单片机可直接控制打印监测数据。这种方式在很大程度上提高了工作效率,并扩展了应用范围。但其中所采用的温度传感器直接输出为模拟电压信号,该信号在传输过程中易损耗,影响系统精度,且传输距离较近,需要经过A/D转换芯片才能被单片机接收。每个测试点都需要各自独立的信号线,为了实现多点监测不仅需要成百上千条信号线,还需要多路模拟转换开关电路轮流对多个测试点进行连续监测,从而增加了整个系统的环节,使其难于维护,价格昂贵。近年来,伴随微处理器芯片和网络通信技术的发展,为了简化系统设
11、计并降低成本,各公司及科研机构开始致力于相关领域的探索,使得温度数据监测数字化、网络化的实现成为可能。其中美国DALLAS半导体公司推出了1-Wire(单总线)接口协议,单总线技术与其它总线不同,它采用单根信号线,既可传输时钟又能传输数据,而且数据传输是双向的。因此单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。该公司所提供的适用于单总线微网技术的单总线器件具有无需另附电源、在测试点直接将模拟信号数字化等特点,一方面减少了系统环节,另一方面保证了系统的精度。同时各软件公司开发的可视化软件开发工具,更是向着效率高、功能强大的方向努力,从而为获得良好的用户界面奠定了基础。不
12、仅如此,为了使温度值的采集的精度更加准确,许多公司制造出了输出频率信号的温度传感器。例如:美国DALLAS公司生产的DS18B20温度传感器。本设计主要用温度传感器DS18B20来显示温度。第 40 页共 39页2系统任务与总体方案论证2.1设计任务按照系统设计功能的要求,初步确定设计系统由主控模块、存储模块、键盘接口模块、显示模块、报时和闹铃模块共6个模块组成。可以实现时间的显示,而且每个时间的初值可以改变,独立完成系统的分析、设计和程序编写,记录开发过程中的问题及解决办法,有原理图。设计主要技术指标参数:1.主控模块:以AT89S52单片机为核心。2.存储模块:采用 AT24C02。 AT
13、24C02是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含2568位存储空间,具有工作电压宽(2.55.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。3键盘接口模块:本设计共采用按键16个,分别与单片机的三个I/O管脚相连,分别对应复位、可以任意时间的调整和退出,任意设定一个时间,到闹铃开关键的功能。4.显示模块:显示器部分是六段数码管组成。5.闹铃模:用蜂鸣器代替闹铃。基于单片机系统的定时器电路包含了如下的功能模块:(1) 基本的单片机系统(2) 单片机的定时中断(3) 单片机的外围电路(4) 外部按键输入装置(5) 数码管LED显示装置2.2方案论
14、证方案一:利用单片机的定时器完成定时要求。利用单片机定时输出Y1、Y2、Y3,定时时间分别为T1、T2、T3,并用发光二极管表示其时间长短,用LED显示定时的剩余时间。时间长短通过按键调节。继电器是定时后的具体应用器件。串口用来对单片机在线编程。方案一的原理框图如下:单片机驱动六位数码管显示电路按 键位选报 警语 音图2.1 方案一原理框图方案二:高频脉冲信号作为定时器的时间基准,计数器实现定时。该系统的工作原理是:振荡器产生的稳定的高频脉冲信号,作为定时器的时间基准,经分频器输出标准脉冲。T1减计数器计时时通过T1预置数显示T1的剩余时间,同时使T1的时间和指示灯工作,当T1计数满之后T2计
15、数器开始工作,并对T2 预置数。T2减计数器工作方式同T1。当T2计数满之后T3减计数器开始工作。工作方式同T1、T2,如此循环,便能实现该设计功能。方案二原理框图如下:图2.2 方案二原理框图2.3方案选择对以上两个方案进行论证,并加以选择,确定该设计的总体方案框图以便进一步设计。方案一:优点是利用单片机的定时器定时,时间精确、稳定、可靠,并可以利用单片机的功能很好地进行时间的显示、指示,输出。原理简单,使用的元器件少,相对来说在实物调试时出现的问题就少。该方案还有一个好处就是成本低。此外,经过无数人的证明,用单片机完全可以实现定时功能,失败的风险小。缺点是使用单片机要求写程序。对于不熟悉软
16、件的人来说要单独完成该设计有一定的难度。方案二:优点是该方案应用稳定的高频脉冲信号作为定时器的时间基准,可以说也有同单片机一样的精确、稳定、可靠的输出时间,且对软件编写要求不高,能很好地实现设计要求的功能。缺点是该方案复杂,一般不容易弄明白它的原理,而且应用的元器件较多,在实物调试时出现的问题可能比较多。由于元器件比较多,所以相对来说实物的成本也比较高。由于原理复杂,所以成功完成该设计的概率较低。通过对以上设计方案比较,该设计选用方案一进行设计。3硬件电路设计该设计选用STC单片机,STC单片机的内部框图如下示。看门狗专用复位电路集成MAX810可擦除存储器DataFlashURT(串口)3个
17、定时器STC89S52微处理器低功耗,高速(090MHZ), 高可靠掉电模式:0.1UA,空闲模式:2mA1280B SRAM双数据指针8163264KB内存TAPA/D内置系统ISP监控系统A/D(高速)可做按键扫描电池电压检测掉电检测音量和频谱检测等P0口地址0E8HINT2/P4.3INT3/P4.2P4口均可位寻址四个8位并行端口和P4.0P4.3四个附属IO端口P2P3P111111111111P00000图3.1 STC单片机的内部框图STC89S52系列单片机是兼容8051内核的单片机,是高速、低功耗的新一代8051单片机,12时钟/机器周期可反复设置,最新的D版本内部集成MAX
18、810专用复位电路。用STC提供的STC-ISP.exe工具将原有的代码下载进STC相关的单片机即可,或用通用编程器编程。RC/RD+系列为真正的看门狗,默认为关闭(冷启动),启动后无法关闭,可放心省去外部看门狗。内部Flash擦写次数为100000次以上,STC89S52RC/RD+系列单片机出厂时就已完全加密,无法解密。用户程序是用ISA/IAP机制写入,一边校验一边写,无读出命令,彻底无法解密。选用STC89S52单片机的理由:加密性强,无法解密;超强抗干扰,轻松过 4KV快速脉冲干扰(EFT):高抗静电(ESD),6KV静电可直接承受在芯片管脚上:超低功耗,PowerDown0.1uA
19、,可外部中断唤醒;中断优先级可设置成4级;PLCC-44、PQFP-44封装,有P4口(可位寻址)。P4.2;6时钟/机器周期或12时钟/机器周期可任意设置;在系统可编程,无需编程器,可远程升级;可供应内部集成MAX810专用复位电路,原复位电路可以保留,也可以不用,不用时RESET引脚直接短接到地。STC89系列单片机大部分具有在系统可编程(ISP)特性,ISP的好处是省去了购买通用编程器的开销,单片机在用户系统上即可下载/烧录用户程序,无须将单片机从生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。由于可以将程序直接下载进单片机查看运行结果,故也可以不用仿真器。STC89S52
20、的引脚图如下示: 图3.2 STC89S52的引脚图1. 外接晶体引脚XTAL1和XTAL2XTAL1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。2. 控制或与其它电源复用引脚RESET、ALE/PROG、/PSEN和/EA/VPPRESET复位输入端。当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。ALE/PROG 当访问外部存储器时
21、,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。 如果需要的话,通过对专用寄存(SFR)区中8EH单元的D0位置数,可禁止ALE操作。该位置数后,只有在执行一条MOVX或MOVC指令期间,ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,该设定禁止ALE位无效。/PSEN 程序存储允许(/PSEN)
22、输出是外部程序存储器的读选通信号。当AT89S51/LV51由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/Vpp 外部访问允许端。要使CPU只访问外部程序存储器(地址为0000HFFFFH),则/EA端必须保持低电平(接到GND端)。然而要注意的是,如果保密位LB1被编程,复位时在内部会锁存/EA端的状态。当/EA端保持高电平(接Vcc端)时,CPU则执行内部程序存储器中的程序。 在Flash存储器编程期间,该引脚也用于施加12V的编程允许电源Vpp(如果选用12V编程)
23、。P0端口(P0.0 P0.7)P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。 在Flash编程时,P0端口接收指令字节;而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。3输入/输出引脚 (P0.0 P0.7、P1.0P1.7、P2.0 P2.7 和P3.0P3.7)P1端口(P1.0 P1.7)P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个T
24、TL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在对Flash编程和程序验证时,P1接收低8位地址。P2端口(P2.0P2.7)P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVX DPIR指令)时,P2送出高8位地址在访问
25、8位地址的外部数据存储器(如执行MOVX RI指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。在对Flash编程和程序验证期间,P2也接收高位地址和一些控制信号。P3端口(P3.0P3.7)P3 是一个带有内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。作为第一功能使用时,就作为普通I/O口使用,功能和操作方法与P1口相同。3.1 STC单片机简介3
26、.1.1复位电路从原理上,一般采用上电复位电路。这种复位电路的工作原理是:通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降到一定程度,即为低电平,单片机开始正常工作。该设计中复位电路选用由10uF的电容和10k的电阻及IN4148二极管组成。在满足单片机可靠复位的前提下该复位电路的优点在于降低复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。二极管可以实现快速释放电容电量功能,满足短时间复位要求。具体如下所示:图3.3复位电路3.1.2晶振电路单片机的晶振电路是一种典型的电路,分为内部时钟和外部时钟两种方式。内部时钟方式如下示:内
27、部时钟电路的晶振频率一般选择在4MHZ12MHZ之间(该设计选用12MHZ),外接两个谐振电容。该电容的典型值为30Pf,该设计选用22PF.图3.4 晶振电路3.2 LED显示与单片机接口常用的LED显示器有七段(或8段,8段比7段多了一个小数点“dp”段)。这种显示器有共阳极和共阴极两种。该设计中选用的是共阴极。 共阴极LED显示器的发光二极管的阴极连接在一起,通常该共阴极接地。当某个发光二极管的阳极为高点平时,发光二极管点亮,相应的段被显示。图3.5 共阴极LED的内部结构使用LED显示器时,为了显示数字或符号,要为LED显示器提供代码,因为这些代码是通过段的亮与灭来显示不同字形的,因此
28、称之为段码。7段发光二极管,再加上一个小数点位,共计8段,因此提供给LED显示器的段码正好一个字节。3.3按键按键使用上拉电阻方式接入单片机。未按下时对单片机输入一个高电平, 按下后输入一个低电平。它在这个设计中的作用是调节作用。键的闭合与否,反映在行线输出电压上就是呈现出高电平或低电平,如果高电平表示断开的话,那么低电平则表示闭合,所以通过对行线电平的高低状态的检测,便可以确认按键按下与否。为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。前十个按键分别表示0-9,第十一个按键为确定键,第十二个按键为左移键可以用来调时间,第十三个按键为调时,第十四个按键为调闹铃键,第十五个按键
29、为闹铃开,第十六个按键为调温度键。图3.6 键盘与单片机的连接3.4 DS18B20温度传感器DS1820是世界上第一片支持 一线总线接口的温度传感器。一线总线特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 一线总线数字化温度传感器 同DS1820一样,DS18B20也 支持一线总线接口,测量温度范围为 -55C+125C,在-10+85C范围内,精度为0.5C。DS1822的精度较差为 2C 。现场温度直接以一线总线的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子
30、产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为2C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继一线总
31、线的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 3.4.1 DS18B20的新性能 (1)可用数据线供电,电压范围:3.05.5V; (2)测温范围:-55+125,在-10+85时精度为0.5; (3)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625; (4)负压特性:电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 3.4.2DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发
32、的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下: 图3.7 DS18B20外形图 引脚定义: (1) DQ为数字信号输入/输出端; (2 GND为电源地; (3) VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 内部结构 图3.8 DS18B20内部结构图 DS18B20有4个主要的数据部件: (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻
33、ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 (2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达。 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H
34、,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。 表3-1 DS18B20温度数据表 TEMPERATUREDIGITALOUTPUT(binary) DIGITALOUTPUT(hex)+1250000 0111 1101 000007D0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.125 0000 0000 1010 001000a2h+0.5 0000 0000 0000 10000008h00000 0000 0000 00000000h-0.5 1111 1111 1111 1
35、000 FFF8h-25.06251111 1110 0110 1111FE6Fh-55 1111 1110 1001 0000 FC90h(3)DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 (4)配置寄存器 该字节各位的意义如下: 表3-2 配置寄存器结构TMR1R011111低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(
36、DS18B20出厂时被设置为12位)分辨率设置表: 表3-3 温度值分辨率设置表R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms3.4.3高速暂存存储器高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表2是对应的一部分温度值。第九个字节是冗余检验字节
37、。 表3-4 DS18B20暂存寄存器分布寄存器内容字节地址温度值低位0温度值高位1高温限值TH2低温限值TL3配置寄存器4保留5保留6保留7CRC检验8根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 表3-5 ROM指令表指 令约定代码功 能读ROM33H读DS18
38、20ROM中的编码(即64位地址)符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。搜索ROM0F0H用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备。跳过ROM0CCH忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。表3-6 RAM指令表指 令约定代码功 能温度变换44H启动DS1820进行温度转换,转换时最长为500ms(典型为200ms)。结果存入内部9字节
39、RAM中。读暂存器0BEH内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器48H将RAM中第3、4字节的内容复制到EEPROM中。重调EEPROM0B8H将EEPROM中内容恢复到RAM中的第3、4字节。读供电方式0B4H读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。3.4.4 DS18B20的使用方法由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用
40、软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15
41、秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。3.4.5 DS18B20工作原理DS18B20是直接数字式高精度温度传感器,其内部含有两个温度系数不同的温敏振荡器,其中低温度系数振荡器相当于标尺,高温度系数振荡器相当于测
42、温元件,通过不断比较两个温敏振荡器的振荡周期得到两个温敏振荡器在测量温度下的振荡频率比值。根据频率比值和温度的对应曲线得到相应的温度值。这种方式避免了测温过程中的A/D转换,提高了温度测量的精度。DS18B20测温原理如图所示。图中低温度系数晶振的振荡频率受温度影响很小,用来向计数器1提供固定频率的脉冲信号。高温度系数晶振的振荡频率受温度影响较大,随温度的变化而明显改变,其产生的信号作为计数器 2的脉冲输入,用于控制闸门的关 闭时间。初态时,计数器1和温度寄存器被预置在与-55 相对应的一个基值 上。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,在计数器2控制的闸门时间到达之前,如果计数
43、器1的预置值减到0,则温度寄存器的值将作加1运算,与此同时,用于补偿和修正测温过程中非线性的斜率累加器将输出一个与温度变化相对应的计数值,作为计数器1的新预置值,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环,直到计数器2控制的闸门时间到达亦即计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。在默认的配置中,DS18B20的测温分辨率为00625 ,以12位有效数据表示,其中,高位的 s表示符号位,其数据格式如表1所示。如:0000 0001 1001 0001表示 +250625 4 软件设计对于一个电子控制系统来说,程序开始的初始化,控制信号的输入输
44、出及其时序的先后,以及系统逻辑功能在程序中体现,都必须经过非常严密思考,才能在程序上微妙不差的表现出来。下面简单介绍一下本课题程序的设计思想和功能。4.1系统软件介绍对于一个控制系统来说,软件部分就是其“思维”过程,就是其工作时序关系的体现,并且规定该系统的功能实现,而本设计的软件部分主要用来实现的功能如下:1、能够显示当天的温度; 2、六位数码管显示24h内任意想要得到的时间; 3、闹铃由蜂鸣器代替,并且有发光二极管伴随闪烁;4、能够现实正确的年历日期;4.2总程序流程图开始开定时器中断初始化键盘处理调时函数时间处理函数判断闹铃是否开启闹铃响中断控制加1秒闹钟调时函数是否响铃显示 图4.1
45、总程序流程图5 设计调试调试内容包括应用ISIS软件仿真电路和应用KEIL软件进行程序调试。5.1应用ISIS软件仿真电路在ISIS软件中画出原理图,向单片机中加入需要调试的程序的HEX文件,便可以进行调试了。首先向单片机中加发光二极管指示灯程序。电路中的发光二极管指示灯便根据设计设定的方式进行指示: 图5.1 发光二极管的电路仿真图5.2 总体电路仿真图5.2应用KEIL软件进行程序调试软件的调试必须在开发系统的支持下进行。先分别调试通过各个模块程序,然后调试中断服务程序,最后调试主程序,将各部分连接进行调试。调试的范围可以由小到大、逐步增加,必要的中间信号可以先作设定。通常交叉使用单步运行
46、、断点运行、连续运行等多种方式,每一次执行完毕后,检查CPU执行现场、RAM的有关内容、IO接口的状态等。发现一个问题,解决一个问题,直至全部通过。5.3实物调试首先,用逻辑笔、万用表等工具对硬件电路作脱机检查,看连线是否与逻辑图一致,有无短路、虚焊等现象。器件的型号、规格、极性是否有误,插接方向是否正确。检查完毕,用万用表测量一下电路板正负电源端之间的电阻,排除电源短路的可能性。然后,向硬件中写入程序并调试硬件,解决问题。可以对各个子程序分别写入,分别解决硬件的每个部分的程序和硬件问题。结 论本设计硬件电路模块清晰,整个电路中使用了AT89S52单片机、74HC573等主要芯片。在对芯片的管脚功能和用法有充分的了解后,根据设计要求设计硬件电路,包