基于单片机的室内电热水器控制系统设计说明_第1页
基于单片机的室内电热水器控制系统设计说明_第2页
基于单片机的室内电热水器控制系统设计说明_第3页
基于单片机的室内电热水器控制系统设计说明_第4页
基于单片机的室内电热水器控制系统设计说明_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、 PAGE53 / NUMPAGES58基于单片机的室电热水器控制系统设计 2B专业名称:测控技术与仪器指导教师:2B讲师摘要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计论述了一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C51单片机最小系统,测温电路、实时时钟电路、LED液晶显示电路以与通讯模块电路等。系统程序主要包括主程序,读出温度子程

2、序,计算温度子程序、按键处理程序、LED显示程序以与数据存储程序等。关键词:STC89C51,单片机, DS18B20, 显示电路AbstractAlong with the computer measurement and control technology of the rapid development and wide application, based on singlechip temperature gathering and control system development and application greatly improve the production o

3、f temperature in life level of control. This design STC89C51 describes a kind of mainly by MCU control unit, for temperature sensor DS18B20 temperature control system. The control system can real-time storage temperature data and record related to the current time. System design related hardware cir

4、cuit and related applications. STC89C51 microcontroller hardware circuit include temperature detection circuit smallest system, and real-time clock circuit, LED display circuit, communication module circuit, etc. System programming mainly include main program, read temperature subroutine, the calcul

5、ation of temperature subroutines, key processing procedures, LED display procedures and data storage procedures, etc. Keywords:STC89C51,icrocontroller,DS18B20,display circuit目录 TOC o 1-3 h z u HYPERLINK l _Toc325628671摘要 PAGEREF _Toc325628671 h IHYPERLINK l _Toc325628672Abstract PAGEREF _Toc32562867

6、2 h IIHYPERLINK l _Toc325628673目录 PAGEREF _Toc325628673 h IIIHYPERLINK l _Toc325628674前言 PAGEREF _Toc325628674 h 1HYPERLINK l _Toc3256286751片机与设计软件介绍 PAGEREF _Toc325628675 h 2HYPERLINK l _Toc3256286761.1单片机介绍 PAGEREF _Toc325628676 h 2HYPERLINK l _Toc3256286771.2 Proteus 软件介绍 PAGEREF _Toc325628677 h

7、8HYPERLINK l _Toc3256286781.3单片机编译软件Keil介绍 PAGEREF _Toc325628678 h 10HYPERLINK l _Toc3256286792 方案设计 PAGEREF _Toc325628679 h 12HYPERLINK l _Toc3256286802.1功能介绍 PAGEREF _Toc325628680 h 12HYPERLINK l _Toc3256286812.1.1 AT89C51 主要性能 PAGEREF _Toc325628681 h 12HYPERLINK l _Toc3256286822.1.2数字温度传感器 PAGERE

8、F _Toc325628682 h 12HYPERLINK l _Toc3256286832.2系统方案论证 PAGEREF _Toc325628683 h 16HYPERLINK l _Toc3256286842.2.1方案一 PAGEREF _Toc325628684 h 16HYPERLINK l _Toc3256286852.2.2方案二 PAGEREF _Toc325628685 h 18HYPERLINK l _Toc3256286863系统硬件设计 PAGEREF _Toc325628686 h 19HYPERLINK l _Toc3256286873.1设计要求 PAGEREF

9、 _Toc325628687 h 19HYPERLINK l _Toc3256286883.2系统整体硬件电路 PAGEREF _Toc325628688 h 19HYPERLINK l _Toc3256286893.2.1主板电路 PAGEREF _Toc325628689 h 20HYPERLINK l _Toc3256286903.2.2显示部分 PAGEREF _Toc325628690 h 20HYPERLINK l _Toc3256286913.2.3手动开关复位部分 PAGEREF _Toc325628691 h 21HYPERLINK l _Toc3256286923.2.4按

10、键部分 PAGEREF _Toc325628692 h 21HYPERLINK l _Toc3256286933.2.5加热部分 PAGEREF _Toc325628693 h 23HYPERLINK l _Toc3256286943.2.6温度传感电路设计 PAGEREF _Toc325628694 h 24HYPERLINK l _Toc3256286953.2.7温度控制电路的设计 PAGEREF _Toc325628695 h 26HYPERLINK l _Toc3256286963.2.8时钟电路 PAGEREF _Toc325628696 h 26HYPERLINK l _Toc3

11、256286974系统软件设计 PAGEREF _Toc325628697 h 28HYPERLINK l _Toc3256286984.1主程序 PAGEREF _Toc325628698 h 28HYPERLINK l _Toc3256286994.2显示数据刷新子程序 PAGEREF _Toc325628699 h 28HYPERLINK l _Toc325628700图4.2 数据刷新子程序 PAGEREF _Toc325628700 h 29HYPERLINK l _Toc3256287014.3键盘扫描 PAGEREF _Toc325628701 h 29HYPERLINK l _

12、Toc3256287024.4定时器 PAGEREF _Toc325628702 h 30HYPERLINK l _Toc325628703总结 PAGEREF _Toc325628703 h 32HYPERLINK l _Toc325628704致 PAGEREF _Toc325628704 h 33HYPERLINK l _Toc325628705参考文献 PAGEREF _Toc325628705 h 34HYPERLINK l _Toc325628706附件1 系统电路原理图 PAGEREF _Toc325628706 h 36HYPERLINK l _Toc325628707附录2源

13、程序 PAGEREF _Toc325628707 h 37前言课题背景和意义:随着人们生活水平的提高,热水器越来越受到人们的青睐。由于燃气热水器易受水压限制,而且安全性较差。每年使用燃气热水器造成的爆炸、中毒等事故也屡有所闻。消费者对燃气热水器怀有一定的惧怕感。而电热水器越来越受到人们的认可。采用MCS-51单片机对热水器水温进行控制,具有控制方便、组态简单和灵活性大等优点。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,为自动化和各个测控领域中广泛应用的器件。国外研究现状:电热水器在中国的历史已经有10多年了,期间也经历了数次起落的过程,在上个世纪的最后几年,随着国外品牌的进入

14、和国一些大家电厂的目光转向电热水器,储水式电热水器能适应任何天气变化,普通家庭可直接安装使用,长时间通电可以大流量供热水。使用时不产生废气,既安全又卫生。目前市场上销售的电热水器多数还带有防触电装置。干净卫生,不必分室安装,调温方便。随着技术的成熟,今后将朝着保温层整体发泡技术、温控器置入胆、加热管下潜式设计、节能免更换几个方面发展。热水器是一种可供浴室,洗手间与厨房使用的家用电器。据国务院发展研究中心市场经济研究所统计数据表明:近年来我国热水器的销量每年以 25%的速度上升,在未来五年,销售额每年可达近500亿以上。众所周知,燃气热水器因其安全隐患与越来越高的使用成本正渐渐淡出热水器市场,而

15、太阳能热水器也因其严格受天气气候与安装条件影响而很难占据更大的市场份额,所以电热水器迅速崛起而不断壮大。为了满足人们对现代电器的智能化的要求,利用目前电子技术的最新成果改善电热水器的性能已经完全可能和必要。本课题将以单片机为控制核心,实现对热水器的自动控制,设计出一款具有自动化、智能化、易于操作、控制精度高、性价比高的电热水器控制系统。1片机与设计软件介绍1.1单片机介绍由于单片机在整个设计中占据着重要的地方,首先介绍一下单片机的相关知识。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要。MCS-51单片机部结构:8051是MCS-51系列单片机

16、的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元与数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM):8051部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,

17、所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。图1.1 8051 部结构程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。全双工串行口:8051置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051具备较完善的中断功能,

18、有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8051置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。下图是MCS-51系列单片机的部结构示意图图1.2 MCS-51

19、结构框图MCS-51的引脚说明:MCS-51系列单片机中的8031、8051与8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明.MCS-51的引脚说明:MCS-51系列单片机中的8031、8051与8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。图1.3 51单片机引脚图Pin9:RESET/Vpd

20、复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见下图。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机部RAM的数据不丢失。图1.4 复位电路图Pin30:ALE/当访问外部

21、程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。Pin31:EA/Vpp程序存储器的外部选通线,8051和8751单片机,置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB

22、时,读取部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对部无程序存储器的8031,EA端必须接地。输入/输出(I/O)引脚,P0口、P1口、P2口与P3口,P0口(39脚22脚)P0.0P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线。对于片含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。P1口(1脚8脚):P1.0P1.7统称为

23、P1口,可作为准双向I/O接口使用。对于MCS52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。P2口(21脚28脚):P2.0P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。P3口(10脚17脚):P3.0P3.7统称为P3口。它为双功能口,可以作为一般的准双向I

24、/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见下表表1.1 单片机P3.0管脚含义引脚第2功能P3.0RXD(串行口输入端0)P3.1TXD(串行口输出端)P3.2INT0(部中断0请求输入端,低电平有效)P3.3INT1(中断1请求输入端,低电平有效)P3.4T0(时器/计数器0计数脉冲端)P3.5T1(时器/计数器1数脉冲端)P3.6WR(部数据存储器写选通信号输出端,低电平有效)P3.7RD(部数据存储器读选通信号输出端,低电平有效)综上所述,MCS51系列单片机的引脚作用可归纳为以下两点:单片机功能多,引脚数少

25、,因而许多引脚具有第2功能;单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线。温度传感器电路,采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:系统的特性:测温围为-55+125 ,测温精度为

26、士0.5;温度转换精度912位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。系统的调试和维护

27、:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。在本设计中采用外部供电方式实现DS18B20传感器

28、与单片机的连接,其接口电路如图1.5所示。图1.5温度传感器接口1.2 Proteus 软件介绍Proteus是目前最好的模拟单片机外围器件的工具,真的很不错。可以仿真51系列、AVR,PIC等常用的MCU与其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件,.)其实proteus与multisim比较类似,只不过它可以仿真MCU!当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是估计初学者有的可能性比较小吧?如果你在学51单片机,如果你想自己动手做做LCD,LED,AD/DA,直流马达,S

29、PI,IIC,键盘,.的小实验的话,试一下吧,不会让你失望的!用51不管你是用汇编或是C编程当然要用keil啦,uvisoin3有不少新特性呢!使用keilc51v7.50+proteus6.7可以像使用仿真器一样调试程序,一般而言,微机实验中用万利仿真器+电工系自己做的实验板的实验都可以做得到吧!当然,硬件实践还是必不可少的!本方案只是在没有硬件的情况下让你能像pspice仿真模拟/数字电路那样仿真MCU与外围电路。另外,即使有硬件,在程序编写早期用软件仿真一下也不错的!Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其

30、它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。proteus的工作过程运行proteus的ISIS程序后,进入该仿真软件的主界面。在工作前,要设置view菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pickdevices窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source菜单的Definecodege

31、nerationtools菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source菜单的Add/removesourcefiles命令下,加入单片机硬件电路的对应程序;通过debug菜单的相应命令仿真程序和电路的运行情况。Proteus软件所提供的元件资源Proteus软件所提供了30多个元件库,数千种元件。元件涉与到数字和模拟、交流和直流等。软件所提供的仪表资源,对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。在Proteus软件包中,不存在同类仪表使用数量的问题。Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形

32、的方式实时地显示出来,其作用与示波器相似但功能更多。软件所提供的调试手段Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,Proteus提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。对于总体执行效果的调试方法,只需要执行debug菜单下的execute菜单项或F12快捷键启动执行,用debug菜单下的pause animation菜单项或pause键暂停系统的运行;或用debug菜单下的stopanimation菜单项或shift-break组合键停止系统的运行。其运行方式也可以选择工具

33、栏中的相应工具进行。对于软件的分步调试,应先执行debug菜单下的start/restartdebugging菜单项命令,此时可以选择stepover、stepinto和stepout命令执行程序(可以用快捷键F10、F11和ctrl+F11),执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了start/restartdebuging命令后,在debug菜单的下面要出现仿真中所涉与到的软件列表和单片机的系统资源等,可供调试时分析和查看。Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为风标电子技术)。它不仅具有其它EDA

34、工具软件的仿真功能,还能仿真单片机与外围器件。它是目前最好的仿真单片机与外围器件的工具。虽然目前国推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex

35、和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。1.3单片机编译软件Keil介绍编写完程序后即可使用汇编软件对程序进行编译了,本设计所使用的编译软件是Keil51,其步骤如下:源文件的建立:使用菜单“File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入要调试的汇编语言源程序,保存该文件,注意必须加上扩展名.c。建立工程文件:点击“Project-New Project”菜单,在出现一个对话框中,输入一个工程文件名,不需要扩展名。点击“保存”按钮。工程的详细设置:工程建立好以后

36、,还要对工程进行进一步的设置,以满足要求。首先点击左边Project 窗口的Target 1,然后使用菜单“Project-Option for target target1”即出现对工程设置的对话框,对部分容进行必要的设置改即可,不过大部份设置项都是取默认值。编译、连接:在设置好工程后,即可进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Tra

37、nslate .项则仅对该文件进行编译,不进行连接。2 方案设计2.1功能介绍2.1.1 AT89C51主要性能与MCS-51 单片机产品兼容 ;8K 字节在系统可编程Flash 存储器;1000 次擦写周期;全静态操作:0Hz33Hz ;三级加密程序存储器;32 个可编程I/O 口线;三个16 位定时器/计数器;八个中断源;全双工UART 串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;看门狗定时器;双数据指针;掉电标识符。2.1.2数字温度传感器DS18B20数字温度传感器概述;DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它

38、来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点如下所示:只要求一个端口即可实现通信。在DS18B20中的每个器件上都有独一无二的序列号。实际应用中不需要外部任何元器件即可实现测温。测量温度围在55.C到125.C之间。数字温度计的分辨率用户可以从9位到12位选择。部有温度上、下限告警设置。TO92封装的DS18B20的引脚排列见图2.4,其引脚功能描述见表2.1。表2.1DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VD

39、D引脚,当工作于寄生电源时,该引脚必须接地DS18B20的部结构:DS18B20的部框图如图2.2所示。64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件部保留使用。第八字节含有循环冗余码(CRC )。图2.1DS18B20的部框图DS18B20加电后,处在空闲状态。要启动温度测量和模拟到数字的转换,处理器须向其发出Convert T 44h 命令

40、;转换完后,DS18B20回到空闲状态。温度数据是以带符号位的16-bit补码存储在温度寄存器中的,如图2.2所示:图2.2温度寄存器格式符号位说明温度是正值还是负值,正值时S=0,负值时S=1。表2.8给出了一些数字输出数据与对应的温度值的例子。温度输出(2进制)输出(16进制)+1250000 0111 1101 0000 07D0H+850000 0101 0101 00000550H+20.0620000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 00

41、00 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-251110 1110 0110 1111EE6FH-551111 1110 1001 0000FE90H表2.2温度/数据的关系访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了Search ROM 和Alarm Search这两个命令,在这两个命令后,主机都必须返回到第一步)。初始化:DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答

42、脉冲构成。当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。ROM命令:ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表2.9所示,每个ROM命令都是8 bit长。表2.3 DS18B20的ROM指令协议功能读ROM33H读DS18B20中的编码(即64位地址)符合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识

43、别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20V 温度转换命令,适用于单个DS18B20工作告警搜索命令0ECH执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44H启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入部9字节RAM中读暂存器BEH读部RAM中9字节的容写暂存器4EH发出向部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据复制暂存器48H将RAM中第3、4字容复制到E2PROM中重调E2PROM0B8H将E2PROM中容恢复到RAM中的第3、4字节读供

44、电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”功能命令:主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度转换。数码管工作原理:LED的发光原理,稍有电子技术基础的人士都很清楚,我们不想作过多的介绍,7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。图2.3 数码管引脚LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异

45、外,编程方法也是不同的。上图是共阴和共阳极数码管的部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将b和c段接上正电源,其它端接地或悬空,那么b和c段发光,此时,数码管显示将显示数字“1”。而将a、b、d、e和g段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同。2.2系统方案论证2.2.1方案一由于本设计的温度测温电路,可以使用热敏电阻Pt100

46、其感温效应,Pt100温度传感器为正温度系数热敏电阻传感器,主要技术参数如下:测量围:-200+850;允许偏差值:A级(0.150.002t), B级(0.300.005t);热响应时间 0;i-); void modify(void) EA=0; if(thour=0) if(flag=0) dat16+;delay(180); if(dat169) dat16=0;dat17+;if(dat172) dat17=0; if(flag=1) alarms6+;delay(200); if(alarms69) alarms6=0;alarms7+; if(alarms72) alarms7=

47、0; dat6=alarms6; dat7=alarms7; if(tminute=0) if(flag=0) dat13+;delay(180); if(dat3=10) dat14+;dat13=0;if(dat145) dat14=0; if(flag=1) alarms3+;delay(200); if(alarms39) alarms4+;alarms3=0; if(alarms45) alarms4=0; dat3=alarms3; dat4=alarms4; if(miaobiao1=0) TR0=0;ET0=0;TR1=1;ET1=1; if(miaobiao2=0) TR0=

48、1;ET0=1;TR1=0;ET1=0; dat20=0; dat21=0; dat23=0; dat24=0; dat26=0; dat27=0; ms=0; sec=0; minit=0; if(P1_5=0) TR0=0;ET0=0;TR1=0;ET1=0; if(alarm=0) TR0=0;ET0=0;TR1=0;ET1=0;flag=1; dat0=0; dat1=0;dat2=10; dat3=0;dat4=0;dat5=10;dat6=0;dat7=0; EA=1; void init(void)TMOD = 0 x11; TH0 = 0 xDB;TL0 =0 xFF;TH1=

49、0 xDB;TL1=0 xFF; ET0 = 1; /10msET1=1;TR1=1; TR0=1; tcount=0;ms=0;sec=0;minit=0;EA = 1; void test(void) for(k=0;k23) time1.hour=0; dat5=10; dat2=10; dat0=dat10; dat1=dat11; dat3=dat13; dat4=dat14; dat6=dat16; dat7=dat17; flag=0; P0=0 x00; if(alarms7=dat17)&(alarms6=dat16)&(alarms4=dat14)&(alarms3=dat

50、13) P0=0 x01; ET0=1;void time_2(void)interrupt 3 EA=0; TR0=0; TH1=0 xDB; TL1=0 xFF; TR1=1; ms+; dat20=ms%10; dat21=ms/10; if(ms=100) ms=0; sec+; dat23=sec%10; dat24=sec/10; if(sec=60) sec=0; minit+; dat26=minit%10; dat27=minit/10; dat5=10; dat2=10; dat0=dat20; dat1=dat21; dat3=dat23; dat4=dat24; dat

51、6=dat26; dat7=dat27;return;显示程序:/*模块名:LED数据显示、设定描述:4位LED显示,-9999到+9999,有单独负号位(利用LED0的小数点位)LED4(单位显示),LED3-LED0(千,百,十,个)KEY_RIGHT键移动位选,KEY_UP键修改数值KEY_SET键取消修改, KEY_ENT确认修改修改记录:增加了DispString()函数,SetValueStr()函数.*/#include includes.h*函数名:DisplayInt参数:ucNum = 数值ucPoint = 0-3,大于3或等于0时不显示小数点ucWidth = 1-4,

52、当显示数值大于设定位数时,以显示数值为准返回值:描述:LED数值显示,4位,-9999到+9999*/void DisplayInt(int ucNum, unsigned char ucPoint, unsigned char ucWidth)unsigned char data ucLedBuffer4;/显示缓冲unsigned char data ucNegative;/负数标志/入口参数检查if (ucNum 9999)ucNum = 9999;if (ucNum 3)ucPoint = 0;if (ucWidth 4)ucWidth = 4;/取正负号if (ucNum 0)/-u

53、cNegative = 1;ucNum *= (-1);else/+ucNegative = 0;ucLedBuffer3 = GetLedMold(0 + (ucNum / 1000);/千位ucNum %= 1000;ucLedBuffer2 = GetLedMold(0 + (ucNum / 100);/百位ucNum %= 100;ucLedBuffer1 = GetLedMold(0 + (ucNum / 10);/十位ucNum %= 10;ucLedBuffer0 = GetLedMold(0 + (ucNum);/个位/隐藏不显示位,当要显示的数据超过宽度时,应显示9999。i

54、f (ucWidth 4)if(ucLedBuffer3!= GetLedMold(0)ucLedBuffer2 = GetLedMold(9);ucLedBuffer1 = GetLedMold(9);ucLedBuffer0 = GetLedMold(9);ucLedBuffer3 = 0 x00;if (ucWidth 3)if(ucLedBuffer2 != GetLedMold(0)ucLedBuffer1 = GetLedMold(9);ucLedBuffer0 = GetLedMold(9);ucLedBuffer2 = 0 x00;if (ucWidth 2)if(ucLedBuffer1 != GetLedMold(0)ucLedBuffer0 = GetLedMold(9);ucLedBuffer1 = 0 x00;if (ucPoint != 0)ucLedBufferucPoint |= 0 x01;/小数点位if (ucNegative != 0)ucLedBuffer0 |= 0 x01;/负号位/LED数据更新SetLed(3, ucLedBuffer3);SetLed(2, ucLedBuffer2);SetLed(1, ucLedBuffer1);SetLed(0, ucLedBuffer0);return;/*函数名:

温馨提示

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

最新文档

评论

0/150

提交评论