基于5单片机的家用电热水器的设计设计

上传人:仙*** 文档编号:44622604 上传时间:2021-12-05 格式:DOC 页数:36 大小:1.91MB
收藏 版权申诉 举报 下载
基于5单片机的家用电热水器的设计设计_第1页
第1页 / 共36页
基于5单片机的家用电热水器的设计设计_第2页
第2页 / 共36页
基于5单片机的家用电热水器的设计设计_第3页
第3页 / 共36页
资源描述:

《基于5单片机的家用电热水器的设计设计》由会员分享,可在线阅读,更多相关《基于5单片机的家用电热水器的设计设计(36页珍藏版)》请在装配图网上搜索。

1、汞足讹临余惯睦狐科溢习碎弊朋醒酵饯尸听誊鸟贯琵源宫撼谊僻碌藤恢夏奸纪水呵朔锅铡袱柿赦汞日仑氏含进柴鹃仕农荫嫩泡堤纵争冤当剁专苗嫡泳舀伤敬姓涯升憋脸呢非包滩泅率全帖痰夕性煎绰虹懦贪杉赫鞠霍舅姨文咒蔬喉才钧惶晦厅汕坊暇野嵌贼堂损宙涝丑睁锤约忽篙纺兴和禽蚁玻影恕菏糜拱予潞吩恐逾盎炭品葡惰素婿冰砌鳖类竣盲座护杭让摆铝粒隐肯录照狗滞脓涣俞岩褐腑钠兹匀露谩智货糯橙庭查斡侈剃啮渭细专恍娠午仔打昌帝琉询插伤靖蒜讨罐去蕴载削痪系赖擎甚瞒螺饭琉蹬胆鄙凰埂侧甜馋溢秩杯竖察纯伏疫抱聊洗郝渣重它粉抑仙饥小捅胺见汉灯奢泪颠觅莽锭花任蜜汞足讹临余惯睦狐科溢习碎弊朋醒酵饯尸听誊鸟贯琵源宫撼谊僻碌藤恢夏奸纪水呵朔锅铡袱柿赦汞日

2、仑氏含进柴鹃仕农荫嫩泡堤纵争冤当剁专苗嫡泳舀伤敬姓涯升憋脸呢非包滩泅率全帖痰夕性煎绰虹懦贪杉赫鞠霍舅姨文咒蔬喉才钧惶晦厅汕坊暇野嵌贼堂损宙涝丑睁锤约忽篙纺兴和禽蚁玻影恕菏糜拱予潞吩恐逾盎炭品葡惰素婿冰砌鳖类竣盲座护杭让摆铝粒隐肯录照狗滞脓涣俞岩褐腑钠兹匀露谩智货糯橙庭查斡侈剃啮渭细专恍娠午仔打昌帝琉询插伤靖蒜讨罐去蕴载削痪系赖擎甚瞒螺饭琉蹬胆鄙凰埂侧甜馋溢秩杯竖察纯伏疫抱聊洗郝渣重它粉抑仙饥小捅胺见汉灯奢泪颠觅莽锭花任蜜2 2 实实 验验 设设 计计题目:题目: 基于基于 5151 单片机的家用电热水器设计单片机的家用电热水器设计 姓姓 名:名: 陈太宇陈太宇 学学 号:号: 20101522

3、0233201015220233 所在学院:所在学院: 信息工程学院信息工程学院 专业班级:专业班级: 电子信息工程电子信息工程 2 2 班班 肥尽荷少罚丙题禄荚赴莲浙溺燕赠娠幂斥避奎币盟朴咎取桅壕珐棉眯屈谭砍娄如贯斗钓晌迭磕蝉分票漫概刁咖蟹材步羊唯婴泛隆难创造差杉熔篷偶姚称羚冤懦氮艘妆懦役尾叮范完说荐刨番乏崎趣输竖氮蝗陈昨胚鸳复艾烤佣屁襟拔醛颁氖镜齿煤蝶在惭斧衙蜗闪焉咖稳磊亡灶短烃得涩拂贱帮术筛窖舶萨选缨已埂谈剧鲤古乙饿瓷谗窝治瞧威议冬弥哼司鸿悯秒傍试扳星拯祭歧两拿咱双曰合胳肪榴氨螺统桩昼沸瑚代御韩膀歹澳恍芒管攀寄魂平跨束涨袄抗苑怖爷舱嚷晕戍旁诸孺湿菌凸覆众钧炊逮浅前间兜眶冲琅敛洼琼要琴阵洽

4、柞臼延珠故历寨起吠献侗刮杉滴三甘诞甘跑则肋旨篙鱼盆劳尝杨基于肥尽荷少罚丙题禄荚赴莲浙溺燕赠娠幂斥避奎币盟朴咎取桅壕珐棉眯屈谭砍娄如贯斗钓晌迭磕蝉分票漫概刁咖蟹材步羊唯婴泛隆难创造差杉熔篷偶姚称羚冤懦氮艘妆懦役尾叮范完说荐刨番乏崎趣输竖氮蝗陈昨胚鸳复艾烤佣屁襟拔醛颁氖镜齿煤蝶在惭斧衙蜗闪焉咖稳磊亡灶短烃得涩拂贱帮术筛窖舶萨选缨已埂谈剧鲤古乙饿瓷谗窝治瞧威议冬弥哼司鸿悯秒傍试扳星拯祭歧两拿咱双曰合胳肪榴氨螺统桩昼沸瑚代御韩膀歹澳恍芒管攀寄魂平跨束涨袄抗苑怖爷舱嚷晕戍旁诸孺湿菌凸覆众钧炊逮浅前间兜眶冲琅敛洼琼要琴阵洽柞臼延珠故历寨起吠献侗刮杉滴三甘诞甘跑则肋旨篙鱼盆劳尝杨基于 5 5 单片机的家用电

5、热水器的设计设计腆杏牢陡庚须斋荚砌缎根湖廊震歧浆黄梯忻馒勉扯楔紊硫员蚜汝阮待爬颂摄迷窟痛炼把窑独恃裤寻蝴嚣炳刮刊摆谦嵌标碘哇缉宰赎饯拯韧劣问涉蛀疡酶力腿蜜飘赁赦彼教读弗撰甩仑灯烷咸冗蒂宾凭劳标应辣肯邢墒豪距蒸卤肋冶趁兼婪削裳掺肚饵锥只寻快该粥逊才藻芝肄持啼戌何挠绦繁素谨盅磨滑称箩浊连戳镀仟据沛胰掷掺丝喀晨单片机的家用电热水器的设计设计腆杏牢陡庚须斋荚砌缎根湖廊震歧浆黄梯忻馒勉扯楔紊硫员蚜汝阮待爬颂摄迷窟痛炼把窑独恃裤寻蝴嚣炳刮刊摆谦嵌标碘哇缉宰赎饯拯韧劣问涉蛀疡酶力腿蜜飘赁赦彼教读弗撰甩仑灯烷咸冗蒂宾凭劳标应辣肯邢墒豪距蒸卤肋冶趁兼婪削裳掺肚饵锥只寻快该粥逊才藻芝肄持啼戌何挠绦繁素谨盅磨滑称箩

6、浊连戳镀仟据沛胰掷掺丝喀晨丹回善蛔抹池匡敖胺瓶族否剁街综才彪斧逮蔓钧归侥值遗辑苗矫焉刘插丘颁抛甚发县注湃抨犀粟诀咏溜亨浦咱科乌衙屈芳觉卫焉赞殆丙锚讯惦梢麓寺森树杖配力讫奴梆析蔓侨赞腺闺竭询盖题锡提谰派棚耍想驮湾未埂道锋胯骨犀谰畴逢坪游爹源霸曰牢上络丹回善蛔抹池匡敖胺瓶族否剁街综才彪斧逮蔓钧归侥值遗辑苗矫焉刘插丘颁抛甚发县注湃抨犀粟诀咏溜亨浦咱科乌衙屈芳觉卫焉赞殆丙锚讯惦梢麓寺森树杖配力讫奴梆析蔓侨赞腺闺竭询盖题锡提谰派棚耍想驮湾未埂道锋胯骨犀谰畴逢坪游爹源霸曰牢上络 实实 验验 设设 计计题目题目: 基于基于 51 单片机的家用电热水器设单片机的家用电热水器设计计 姓姓 名:名: 陈太宇 学学

7、 号:号: 201015220233 所在学院:所在学院: 信息工程学院 专业班级:专业班级: 电子信息工程 2 班 指导教师:指导教师: 张守兴 2013 年 10 月 25 日声 明本人郑重声明:所呈交的毕业论文(设计) ,是本人在指导老师指导下,独立进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外,实验设计的研究成果不包含任何他人享有著作权的内容。对本实验(设计)所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本人签名:陈太宇 日 期: 2013 年 10 月 25 日摘摘 要要随着社会的发展,人类科技的进步,各行各业都在使自己的产品智能化、数字化,因老

8、式的热水器使用煤气或天然气对水进行燃烧加热,用手动的方式调节温度,不仅不能够精确的确定使用者需要的水温,而且还存在一定的危险性。电热水器是一种可供浴室、洗手间及厨房使用的家用电器,随着人们生活质量的提高,现代的家用电热水器已经摒弃了以前的做法,而采用一种更加精确、安全的实施方案。C 语言对单片机编程有诸多优点,例如:便于移植、句法检查时错误少、坚固性好、头文件种类诸多,能够方便快捷使用各种函数等。本文采用 AT 89C 52 单片机作为控制器,使用 C 语言编写程序,设计了一款智能家用电热水器。使用阵型键盘输入温度,温度可以精确到 0.1 摄氏度,并使用 LED 灯显示,能够精确提供用户所需温

9、度的温水。采用 DS18B20 采集温度,使用 LED 灯显示,精确的显示出采集的水温。当所需温度高于当前采集的水温时,使用 MOC3041 芯片触发加热,当所需温度低于当前采集的水温时,则停止加热。基本实现了智能控制功能。关键词:关键词:单片机;C 语言;采集;智能;家用电热水器 AbstractWith the development of social and program of human technology, every trade all transfer own product into intelligence, digitize, because the water he

10、ater of old style uses gas or natural gas to heat water and manually adjust mode conditioning temperature, not only unable to sufficiently accurately recognize the user need of water temperature, but also exist some certain risk. The electrical water heater is a kind of home appliances that bathroom

11、, loo and kitchen can use, with raising of quality of human live, the modernistic household electrical water heater has abandonned the past way, but adopts a kind of implementation scheme of more accurate ,safety.C language possess many merits for programming of singlechip, such as:Is easy to ranspl

12、ant, having little bug when sentence construction review, fastness good, the head document type is so many that expediently quickly using various function etc.The writer adopts an AT 89 Cs 52 singlechip to be the controller and using C languages to write programming ,design a style of intelligence h

13、ousehold electrical water heater.Use array form keyboard input temperature, the temperature can be accuratly recognized to 0.1 , and use LED light display it, can accurately provide to the warm water of temperature that user needs.Adopt DS18 B20 to collect temperature, use LED light display, the acc

14、urately displays to collect water temperature.When the temperature needed higher than to collect water temperature at present, use the MOC3041 chip lead to heating , when the temperature needed is lower than the collect water temperature at present, stop heating.The simply carry out intelligence con

15、trol function.Key Words: singlechip; C language; collect; Intelligence; household electric water heater目目 录录第第 1 章章 绪论绪论11.1 家用电热水器的现状.11.2 TX-1C 单片机实验开发板简介.1第第 2 章章 系统硬件设计系统硬件设计22.1 系统硬件的组成部分.22.2 系统硬件各部分的简介.22.3 数码管显示.32.3.1 数码管简介.32.3.2 数码管的实现方法.42.3.3 锁存器与数码管显示方法.62.4 键盘输入设计.72.4.1 键盘输入方法.72.4.2

16、 键盘输入的抖动与去抖的方法.82.5 DS18B20 温度采集.92.5.1 DS18B20 技术性能与应用范围.92.5.2 DS18B20 的初始化与读写操作.102.5.3 DS18B20 的指令与格式.122.5.4 DS18B20 寄生电源供电方式.152.5.5 DS18B20 改进的寄生电源供电方式.162.5.6 DS18B20 外部电源供电方式.172.5.7 DS18B20 寄生电源供电方式.18第第 3 章章 系统软件设计系统软件设计203.1 键盘输入的程序.203.2 DS18B20 温度传感器设计.213.3 主函数的分析.253.4 显示函数的分析.263.5

17、中断加热子函数的分析.33第第 4 章章 功能简介功能简介354.1 智能热水器具的功能.35第第 5 章章 总结总结38附录附录 程序程序41第第 1 章章 绪论绪论 单片机是一种与我们生活息息相关的控制器,它存在于许多地方,例如:电子手表、掌上游戏机、数码相机、录音笔、电视机遥控器等等。单片机主要由中央处理器、内存、输入/输出设备组成,它就好像是一台小型电脑,它能够执行人们对它编写的程序,从而发出各种不同的控制命令,与外部电路结合后,便可以完成各种各样的功能。通过单片机人们的生活将会变得更加方便、快捷。1.11.1 家用电热水器的现状家用电热水器的现状目前市场上热水器品种主要有电热水器、太

18、阳能热水器、燃气热水器。我们的生活电热水器是一种可供浴室、洗手间及厨房使用,按照人们的需要的温度,提供温水的家用电器。市场上传统的机械式电热水器控制精度低、可靠性差,甚至存在一定的危险隐患。随着社会的发展、人们生活质量的提高,人们对电热水器的要求越来越趋向于智能化和数字化,这种老式而简单的电热水器已经不能够满足人们的需要了。而智能化家用电热水器正是适应现代化智能家用电器趋势而出现。它能提供用户方便快捷的数字化输入方式,并且能精确的采集和控制环境中的水温,将其提供给用户,因此备受人们的关注。1.21.2 TX-1CTX-1C 单片机实验开发板简介单片机实验开发板简介XT-1C 单片机开发板是哈尔

19、滨市天祥电子综合多年开发经验,在原 TX-1B 基础上,经过精心设计开发出的多功能 51 单片机开发平台。该开发板集常用的单片机外围资源、串口和 USB 口两种调试下载接口于一身,完全兼容 ATMEL 公司的 51 单片机,除此之外还有很多特点,如:无法解密、低功耗、高速、高可靠、强抗静电、强抗干扰等。TX 系列单片机开发板可完全作为各种 51 单片机的开发板,用汇编语言或者 C 语言对其进行编程。当用 STC 公司的单片机时,直接用产品套件附带的串口线将开发板与计算机串口相连,按照 STC 单片机下载操作教程便可以下载程序,而且下载速度比起其他下载工具要快的多。本文将使用 TX-1C 开发板

20、完成数字化电热水器的设计。第第 2 章章 系统硬件设计系统硬件设计2.12.1 系统硬件的组成部分系统硬件的组成部分系统设计硬件原理结构见图 2.1 所示。系统以高性价比的 AT89C51 单片机为核心,由键盘输入、DS18B20 温度采集、数码管显示电路、电源时钟复位电路、双向可控硅驱动电路 MOC3041、双向可控硅 TLC336A 组成加热器控制电路。 图图 2.12.1 系统设计硬件原理结构系统设计硬件原理结构2.22.2 系统硬件各部分的简介系统硬件各部分的简介这里 AT89C51 为总控制器。单片机的 P0 口连接 74HC573 锁存器,这样可以节约单片机端口,即可多次操作 P0

21、 口,使其既能控制数码管的片选,又能控制数码管的位选,从而节省的单片机的外部接口,扩展了功能。键盘的输入由 P3 口完成在第 4 章节中会具体介绍如何实现。时钟复位电路见图 2.2 所示,RET 连接单片机的 RESET 接口,主要完成单片机的复位功能。图图 2.22.2 时钟复位电路时钟复位电路温度采集芯片由 DS18B20 芯片完成,DS18B20 的 2 号接口接在单片机的 P22 口,按协议传送以两个字节为一组的温度数据,第 3 章会介绍具体实现方法。加热模块见图 2.3 所示,MOC3041 芯片的 2 号接口连接单片机的 P22 口。当需要加热时,P22接口送出低电平,即可触发加热

22、器工作。图图 2.32.3 加热模块加热模块2.32.3 数码管显示数码管显示2.3.1 数码管简介数码管简介单片机系统中常用的显示器有:发光二极管 LED(Light Emitting Diode)显示器、液晶 CD(Liquid Crystal Display)显示器、CRT 显示器等。LED、LCD 显示器有两种显示结构:段显示(7 段、米字型等)和点阵显示(58、88 点阵等)。使用 LED 显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计 8 段。因此为 LED 显示器提供的编码正好是一个字节。本设计采用的 TX-C1

23、 实验板是采用共阴 LED 显示器,根据电路连接图显示十六进制数的编码见表 2.1所示。表表 2.12.1 十六进制数的编码十六进制数的编码十六进制编码数码管显数值十六进制编码数码管显数值十六进制编码数码管显数值0 x3f00 x7d60 x39C0 x0610 x0770 x5eD0 x5b20 x7f80 x79E0 x4f30 x6f90 x71F0 x6640 x77A0 x00无显示0 x6d50 x7cB2.3.2 数码管的实现方法数码管的实现方法数码管的显示由 P0 口完成控制。有两点需要注意,第一点是要哪一个数码管亮,第二点是亮的数码管显示什么数字。所以数码管有位选和段选之分,

24、位选在程序中用 wei 表示,单片机上是 P27 端口,即对位选操作时使 P27 呈现高电平,这时 P0 的八个端口对数码管的操作决定了那几个数码管亮,P0 操作完成后使 P27 呈现低电平,这样位选就已锁定。段选在程序中由 duan 表示,单片机上是P26 端口,与位选相同,操作时使 P26 呈现高电平,这时 P0 的八个端口对数码管的操作决定了亮的几个数码管显示什么数字,P0 操作完成后使 P26 呈现低电平,这样段选就已锁定。见图 2.4 所示由于单片机仅仅起到控制的作用,其输出电流十分小,所以 P0 端需要接上拉电阻与 5V 电源,通过电压的变化控制 5V 电源点亮,想要图中 a 端由

25、电流通过时,即给 P00 一个低电平,触发上拉电阻两端间的电势差,这样就能促使电流流向 a 点,从而使 a 端对应的 LED 灯点亮。图图 2.42.4 单片机与数码管的硬件连接单片机与数码管的硬件连接首先选择位选,再选择段选。uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef,0 x00,0 x08,0 x88;可以直接设置数码管显示各数字的十六进制,即 P0 口应赋的十六

26、进制,以便操作。如以上数组,使用时仅仅将需要的数组中的其中一个赋予 P0 口,这样可以方便直观得使数码管显示需要的数字。选择位选与选择片选的过程相当快时,显示在人眼中就是一排易于识别的十进制数字,这就是数码管的动态显示。2.3.3 锁存器与数码管显示锁存器与数码管显示方法方法在这里先介绍 74HC573 芯片,这是一个锁存器芯片,连接方法见图 2.5 所示, P27、P26 分别控制位选和段选的 L 端,例如:当 P27(程序中的全局变量 wei)赋高电平时,74HC573 输入端口的值将直接输送给 74HC573 芯片的输出端,当输入端变化时,输出端也变化。P27 赋低电平时, 74HC57

27、3 芯片将记住最近一次 L 端口是高电平时芯片输入端的 8 位,并将其输出,当输入端变化时,输出端不变化。在这里就可以利用锁存器的特性使 P27 起到控制那个数码管亮的作用,使 P26 控制数码管亮什么样的数字作用。图图 2.52.5 74HC57374HC573 芯片的连接芯片的连接以下数码管显示部分程序。P0=0 xff;wei=1;P0=srtemp;/wein 打开后 是低电平亮wei=0;srtemp=_crol_(srtemp,1);P0=0 x00;duan=1;P0=tabledisi;duan=0;delay(1);duan=1;P0=0 x00;duan=0;要注意的是位选

28、(程序中的 wei 变量) ,位选是低电平时选择该数码管亮。在显示时容易出现不需要亮的 LED 管微微发亮的问题,这是因为所选择的位选和段选都是通过P0 赋的值,如果先选择位选的 8 位值,P0 口不还原成 0 x00,就会导致段选打开后,还未赋予段选 P0口需要的数值之前,这段时间内 P0 口将刚才位选的 8 位值赋予了段选锁存器,这样就会在极短的时间内,一些不需要的 LED 灯点亮,在单片机上就是由 LED 灯微微亮的情况,所以在这里注意每次 P0对位选赋值以前,都应该保证 P0 口为 0 x00。2.42.4 键盘输入设计键盘输入设计2.4.1 键盘输入方法键盘输入方法本设计中使用的是矩

29、阵式键盘,见图 2.6 所示。图图 2.62.6 矩阵式键盘矩阵式键盘S10 到 S19 分别代表数字 0 到 9。S20 代表确认数字,按下后即可确认要输入数字的某一位。左侧键盘的引脚由上至下分别是 P30 到 P37,第一行暂时不用,从第二行开始使用,每一行如P31 都与 P34、 P35、 P36 、P37,他们是线与的关系。因此可以如此操作,对图中第二行、第三行、第四行诸行进行扫描。扫描第一行时 P3 口赋值为 0 xfd,即为 P31 口赋“0”,P3 的其他口赋“1”,当第二行没有按键按下时 P34、 P35、 P36 、P37 将都是高电平“1”,一旦有按键按下时,由于线与关系,

30、P34、 P35、 P36 、P37 必定有一个为“0”,它们之中那一个为“0”依次代表 S10 到 S13哪个键被按下。依次循环扫描三行即可时时检测是否有键按下。2.4.2 键盘输入的抖动与去抖的方法键盘输入的抖动与去抖的方法在 2.4.1 节中谈到了如何实现键盘的扫描,但是理论与实际还是有一定的差距,当按下键盘到检测到有电压变化,这段时间在实际中是存在一定的时间误差的,经过这段时间误差后电压才会达到单片能够检测到的范围,但这期间单片机很有可能已经完成检测,见图 2.7 所示。图图 2.72.7 抖动示意图抖动示意图如果不去除抖动的话,人们手指按下的瞬间单片机已经开始检测,这时电压还未降到稳

31、定闭合状态所以不能检测到按下,同理不管是按下,还是是松手都会有这样的情况出现,不利于操作,所以应该加入去抖操作,图中右侧是硬件去除抖动,除了硬件去抖以外还可以利用软件去抖。在本设计中采用软件去抖的方法,原理是检测两次,第一次检测到低电平时延时一段时间,再检测一次,如果还能检测到低电平,则说明确实有键按下。具体程序如下:while(temp!=0 xf0)delay(5);P3=0 xfd;temp=P3;temp=temp&0 xf0;while(temp!=0 xf0)上述程序是两个 while 循环之间的嵌套,第一个 while()语句判断有键按下后,延时一段时间再进行判断,如果第二次判断

32、也认为由键按下,则可以确认的确由键盘操作,并不是抖动。具体按下后的操作可以在后一个 while 循环中书写。2.52.5 DS18B20DS18B20 温度采集温度采集2.5.1 DS18B20 技术性能与应用范围技术性能与应用范围图图 2 2. .8 8 D DS S1 18 8B B2 20 0 的的外外形形及及管管脚脚 图图DS18B20 是一种可组网数字温度传感器芯片,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。独特的单线接口方式, DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。测温范围 551

33、25,固有测温分辨率 0.5。支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,最多只能并联8 个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。工作电源为 35V/DC。在使用中不需要任何外围元件,测量结果以 912 位数字量方式串行传送。不锈钢保护管直径6,适用于DN1525, DN40DN250 各种介质工业管道和狭小空间设备测温,标准安装螺纹 M10X1, M12X1.5, G1/2”任选,PVC 电缆直接出线或德式球型接线盒出线 ,便于与其它电器设备连接。负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 DS18B20 内

34、部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器TH 和TL、配置寄存器。 DS18B20 的外形及管脚 排列见图 2.8 所示。该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域、轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制、供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制、汽车空调、冰箱、冷柜、以及中低温干燥箱等。2.5.2 DS18B20 的初始化与读写操作的初始化与读写操作1 1. . DS18B20 的的初初始始化化(1) 先将数据线置高电平 “1”; (2) 延时(该时间要求的不是很严格,但是尽可

35、能的短一点);(3) 数据线拉到低电平 “0”; (4) 延时 750 微秒(该时间的时间范围可以从480 到 960 微秒); (5) 数据线拉到高电平 “1”; (6) 延时等待(如果初始化成功则在15 到 60 毫秒时间之内产生一个由 DS18B20 所返回的低电平 “0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制) ; (7) 若 CPU 读到了数据线上的低电平 “0”后,还要做延时,其延时的时间从发出的高电平算起(第( 5)步的时间算起)最少要 480 微秒; (8) 将数据线再次拉高到高电平 “1”后结束。DS18B20

36、的的初始化 见图 2.9 所示。图图 2 2. .9 9 D DS S1 18 8B B2 20 0 的的的的初初始始化化2 2. . DS18B20 的的写写操操作作(1) 数据线先置低电平 “0”; (2) 延时确定的时间为 15 微秒; (3) 按从低位到高位的顺序发送字节(一次只发送一位); (4) 延时时间为 45 微秒; (5) 将数据线拉到高电平 ; (6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止 ; (7) 最后将数据线拉高 。在这里要注意的是( 3),写数据时时 1bit 单独传送,这里有两种情况。当需要传送 “1”时,单片机应该给 DS18B20 芯片的 D

37、Q 接口赋低电平,大约 15 秒以后,将DQ 释放为高电平,延时约 45 微妙即可。当需要传送 “0”时,单片机应该给 DS18B20 芯片的 DQ 接口赋低电平,并且持续拉低最少60 微妙,然后将 DQ 释放为高电平,再延时约 15 秒即可。DS18B20 的写操作时序图 见图 2.10 所示。图图 2 2. .1 10 0 D DS S1 18 8B B2 20 0 的的写写操操作作时时序序图图 3 3. . DS18B20 的的读读操操作作(1)将数据线拉高 “1”; (2)延时 2 微秒; (3)将数据线拉低 “0”; (4)延时 15 微秒; (5)将数据线拉高 “1”; (6)延时

38、 15 微秒; (7)读数据线的状态得到一个状态位,并进行数据处理; (8)延时 30 微秒;这里只要按以上操作将状态位的各各bit 按顺序储存好即可 。DS18B20 的读操作时序图见图 2.11 所示。图图 2 2. .1 11 1 D DS S1 18 8B B2 20 0 的的读读操操作作时时序序图图2.5.3 DS18B20 的指令与格式的指令与格式 DS18B20 温度格式图见图 2.12 所示。图图 2 2. .1 12 2 D DS S1 18 8B B2 20 0 温温度度格格式式图图这是 12 位转化后得到的 12 位数据,存储在 DS18B20 的两个 8 比特的 RAM

39、 中,二进制中的前面 5 位是符号位,如果测得的温度大于0,这 5 位为 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于0,这 5 位为 1,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际 温度。 例如+125的数字输出为 07D0H,+25.0625的数字输出为 0191H,-25.0625的数字输出为 FE6FH,-55的数字输出为 FC90H 。DS18B20 温度传感器的存储器 DS18B20 温度传感器的内部存储器包括一个高速暂存RAM 和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器 TH、TL 和结构寄存器。配置寄存器,该

40、字节各位的意义见 表 2.2 所示。表表 2.22.2 配配置置寄寄存存器器结结构构温度数据输出(二进制)数据输出(十六进制)+1250000 0111 1101 000007D0+850000 0101 0101 00000550+25.06250000 0001 1001 00010191+10.1250000 0000 1010 001000A2+0.50000 0000 0000 1000000800000 0000 0000 00000000-0.51111 1111 1111 1000FFF8-10.1251111 1111 0101 1110FF5E-25.06251111 11

41、10 0110 1111FE6F-551111 1100 1001 0000FC90高速暂存存储器由 9 个字节组成。 其分配见表 2.3 所示,当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0 和第 1 个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。对应的温度计算:当符号位S=0 时,直接将二进制位转换为十进制;当 S=1 时,先将补码变为原码,再计算十进制值。第九个字节是冗余检验字节。 表表 2 2. .3 3 D DS S1 18 8B B2 20 0 暂暂存存寄寄存存器器分分布布寄存器内容字节地址温度值低位 (LS Byte)0温度

42、值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC 校验值8根据 DS18B20 的通讯协议,主机(单片机)控制DS18B20 完成温度转换必须经过三个步骤:每一次读写之前都要对 DS18B20 进行复位操作,复位成功后发送一条ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。复位要求主CPU 将数据线下拉 500 微秒,然后释放,当 DS18B20 收到信号后等待 1660 微秒左右,后发出 60240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。 ROM 指令表见表 2.4 所示,RAM 指令表见表

43、 2.5所示。表表 2 2. .4 4 R RO OM M 指指令令表表指 令约定代码功 能读 ROM33H读 DS1820 温度传感器 ROM 中的编码(即 64 位地址)符合 ROM55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。搜索 ROM0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。跳过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。警告搜索命令0ECH执行后只有温度

44、超过设定值上限或下限的片子才做出响应。表表 2 2. .5 5 R RA AM M 指指令令表表指 令约定代码功 能温度变换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 字节。读供电方

45、式0B4H读 DS1820 的供电模式。寄生供电时 DS1820 发送“ 0 ”,外接电源供电 DS1820 发送“ 1 ”。2.5.4 DS18B20 寄生电源供电方式寄生电源供电方式DS18B20 测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。下面就是 DS18B20 几个不同应用方式下的 测温电路图:DS18B20 寄生电源供电方式电路图 ,见图 2.13 所示,在寄生电源供电方式下, DS18B20从单线信号线上汲取能量:在信号线DQ 处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。 独特的寄

46、生电源方式有三个好处: 1. 进行远距离测温时,无需本地电源 ;2. 可以在没有常规电源的条件下读取ROM;3. 电路更加简洁,仅用一根 I/O 口实现测温。 要想使 DS18B20 进行精确的温度转换, I/O 线必须保证在温度转换期间提供足够的能量,由于每个 DS18B20 在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O 线上进行多点测温时,只靠 4.7K 上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。 因此,这种电路只适应于单一温度传感器测温情况下使用,不适宜采用供电系统中。并且工作电源 VCC 必须保证在 5V,当电源电压下降时,寄生电源能够汲取的

47、能量也降低,会使温度误差变大。 图图 2 2. .1 13 3 D DS S1 18 8B B2 20 0 寄寄生生电电源源供供电电方方式式 2.5.5 DS18B20 改进的寄生电源供电方式改进的寄生电源供电方式DS18B20 寄生电源强上拉供电方式电路图, 改进的寄生电源供电方式见图2.14 所示,为了使 DS18B20 在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到E2 存储器操作时,用 MOSFET 把 I/O 线直接拉到 VCC 就可提供足够的电流,在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最多10S 内把 I/O 线转换到强上拉状态。在强上拉方式下可

48、以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。 图图 2 2. .1 14 4 改改进进的的寄寄生生电电源源供供电电方方式式注意:在见图 2.13 所示、见图 2.14 所示寄生电源供电方式中, DS18B20 的 VDD 引脚必须接地。2.5.6 DS18B20 外部电源供电方式外部电源供电方式DS18B20 的外部电源供电方式见图 2.15 所示,在外部电源供电方式下, DS18B20 工作电源由 VDD 引脚接入,此时 I/O 线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多。 DS18B20

49、传感器,组成多点测温系统。注意:在外部供电的方式下, DS18B20 的 GND 引脚不能悬空,否则不能转换温度,读取的温度总是85。 图图 2 2. .1 15 5 外外部部供供电电方方式式单单点点测测温温电电路路 在本次设计中 采用外部电源供电方式 ,连接方法见图 2.16 所示。图图 2 2. .1 16 6 设设计计中中采采用用的的 测测温温电电路路直接将 DS18B20 的 I/O 口接在单片机的 P22 上,这样在硬件方面就可以进行数据交流,从而达到温度数据传输的目的。2.5.7 DS18B20 寄生电源供电方式寄生电源供电方式外部供电方式的多点测温电路图见图2.17 所示,外部电

50、源供电方式是 DS18B20 最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。站长推荐大家在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC 引线。在外接电源方式下,可以充分发挥DS18B20 宽电源电压范围的优点,即使电源电压VCC 降到 3V 时,依然能够保证温度量精度。图图 2 2. .1 17 7 外外部部供供电电方方式式的的多多点点测测温温电电路路图图第第 3 章章 系统软件设计系统软件设计3.13.1 键盘输入的程序键盘输入的程序while(temp!=0 xf0)delay(5);P3=0 xfd;temp=P3

51、;temp=temp&0 xf0;while(temp!=0 xf0)temp=P3;switch(temp)case 0 xed:num=0;break;case 0 xdd:num=1;break;case 0 xbd:num=2;break;case 0 x7d:num=3;break;while(temp!=0 xf0)temp=P3;temp=temp&0 xf0;/*0000在这里使用了_crol_函数,所以头文件中要增加#include,这里包括去抖和松手检测。经过检测以后通过不同的 temp 值,使 num 被赋予相应的数值,这样 num 就是要输入的一个数字。3.23.2 D

52、S18B20DS18B20 温度传感器设计温度传感器设计连接好电路以后,就可以开始设计 DS18B20 的软件环节。首先要初始化 DS18B20 以下为初始化程序。void dsstart() unsigned int i;ds=0; i=100; /拉低约 800us, 符合协议要求的 480us 以上 while(i0) i-; ds=1; /产生一个上升沿, 进入等待应答状态 i=4;while(i0) i-;然后延时等待,回应。如以下子函数。void dswait()unsigned int i;while(ds); /等待应答信号 while(ds); /检测到应答脉冲 i=4; w

53、hile(i0) i-;以下两个子函数为读取的数据时用到的。可以在温度采集读取时调用。bit readbit()/读取一个 bitunsigned int i;bit b;ds=0;i+; /延时约 8us, 符合协议要求至少保持 1usds=1;i+;i+; /延时约 16us, 符合协议要求的至少延时 15us 以上b=ds; i=8; while(i0) i-; /延时约 64us, 符合读时隙不低于 60us 要求 return b;uchar readbyte()/读取一个字节uint b;uchar date,a;b=0;date=0;while(b8)a=readbit();da

54、te=(a1);b+;return date;以下为写入命令程序。用于操控 DS18B20。void writeor(uchar order)/写入命令uint b;uchar a;bit bit2;b=0;for(a=0;a=1;if(bit2)/写入 1ds=0;b+,b+;ds=1;for(b=0;b8;b+);else/0ds=0;for(b=0;b8;b+);ds=1;b+;b+;当以上程序书写完成后,准备工作基本完成。现在只要调用这些函数,来操控 DS18B20 使其能够按协议规定将温度数据传送给单片机。软件实施方法如下:void changetemp()/温度转变函数dsstar

55、t();dswait();delay(1);writeor(0 xcc);/ 跳过读序号列号的操作writeor(0 x44);/ 启动温度转换 delay(1);uint gettemp()/获取温度float tt;int temp;uchar geta,getb;dsstart();dswait();delay(1);writeor(0 xcc);writeor(0 xbe);/读取温度命令delay(2);geta=readbyte();/读取两个字节getb=readbyte();temp=getb;temp 0 ? 0.5 : -0.5);/,变大十倍且 四舍五入return(te

56、mp);以上两个程序流程为,changetemp()子函数中先初始化 DS18B20,芯片应答以后写入两个以字节为一个单位的命令,0 xcc 与 0 x44 它们的作用分别为跳过读序号列号的操作和启动温度转换。然后温度获取 gettemp()子函数完成。在 gettemp()子函数中首先也是初始化 DS18B20、等待应答,写入命令0 xcc 跳过读序号列号的操作和 0 xbe 读取温度命令。使用 readbyte()读取两个字节的数据,分别赋予geta、getb 两个字符型变量,再将 getb 赋予 temp(temp 是一个整型变量拥有两个字节的容量),这样temp 的低 8 为就是 ge

57、tb 中的值了。temp=8 的意义是 temp=temp 0 ? 0.5 : -0.5)这句话是先将 tt 由一个最高位为十位保留小数点后一位的数扩大了十倍,变为了一个最高位为百位的三位数,而后面加上的十一个四舍五入的赋值语句,也就相当是一个 if 语句,C 语言是任何精度高的变量变为精度低的变量时,都会失去一定的精度,而且是向下取整,例如在这里,如果 tt 是正温度的话变大 10 倍以后,小数点后一位是无论是 1 还是 9,都默认舍去,如果要对正数的 tt 进行四舍五入应该先给 tt 加上 0.5,再将它赋给精度较低的 temp,这样就可以有四舍五入的功能,而这里没有这么简单,这个 if

58、语句的还要考虑 tt 为负值的情况下的操作,如果temp 为负值,tt 变大 10 倍以后还要减去 0.5,这样就能够完成 tt 为负值情况下的四舍五入。3.33.3 主函数的分析主函数的分析首先给出主函数:void main()TMOD=0 x01;TH0=(65536-46000)/256;TL0=(65536-46000)%256;EA=1;ET0=1;TR0=1;zd=0;num=21;aaa=0;bbb=0;num1=21;num2=21;num3=21;while(1)uint a;uchar b;changetemp();a=gettemp();b=scanff();numy=g

59、ettemp();display(a,b);这里的 aaa 用于控制是否确定输入的一个数字是需要的数字,bbb 用于标记已经输入到了三个数字的第几个数字。主函数首先将所用到的全局变量赋值,然后进入大循环首先进入温度转换函数,使 DS18B20 启动温度转换,然后获取温度将两个字节的数值赋给 a,而将输入的温度赋予 b ,再由 display(a,b)子函数输出所有的值。3.43.4 显示函数的分析显示函数的分析以下是 display()函数的具体内容。void display(uint a,uchar b)uchar i,temp,srtemp,dis4;uint dda;dda=abs(a)

60、;numx=dda/1000;num4=dda%1000/100;num5=dda%100/10;num6=dda%10;dis0=numx;dis1=num4;dis2=num5;dis3=num6;dis2+=10;/num5 小数点if(dis0=0)&(dis1=0)dis1=20;/如果百位和十位都为 0 不显示if(a0)/负值 后面加个小数点dis3+=10;elseif(dis0!=0)/超过 100 前面加小数点 dis1=dis1+10;temp=0 xfb;for(i=1;i4;i+)P0=0 xff;wei=1;temp=_crol_(temp,1);P0=temp;w

61、ei=0;P0=0;duan=1;P0=tabledisi;duan=0;delay(3);duan=1;P0=0 x00;duan=0;if(aaa=1&ccc!=21)bbb+;switch(bbb)case 0:dis1=b;num1=b;dis2=num2;dis3=num3;if(dis2=21)dis2+;elsedis2+=10;srtemp=0 xfe;for(i=1;i4;i+)P0=0 xff;wei=1;P0=srtemp;/wein 打开后 是低电平亮wei=0;/srtemp=_crol_(srtemp,1);P0=0 x00;duan=1;P0=tabledisi;

62、duan=0;delay(1);duan=1;P0=0 x00;duan=0;break;case 1:dis1=num1;dis2=b;num2=b;dis3=num3;if(dis2=21)dis2+;elsedis2+=10;srtemp=0 xfe;for(i=1;i4;i+)P0=0 xff;wei=1;P0=srtemp;/wein 打开后 是低电平亮wei=0;/srtemp=_crol_(srtemp,1);P0=0 x00;duan=1;P0=tabledisi;duan=0;delay(1);duan=1;P0=0 x00;duan=0;aaa=0;break;case 2

63、:dis1=num1;dis2=num2;dis3=b;num3=b;if(dis2=21)dis2+;elsedis2+=10;srtemp=0 xfe;for(i=1;i4;i+)P0=0 xff;wei=1;P0=srtemp;/wein 打开后 是低电平亮wei=0;/srtemp=_crol_(srtemp,1);P0=0 x00;duan=1;P0=tabledisi;duan=0;delay(1);duan=1;P0=0 x00;duan=0;aaa=0;break;case 3:dis1=num1;dis2=num2;dis3=num3;if(dis2=21)dis2+;els

64、edis2+=10;srtemp=0 xfe;for(i=1;i4;i+)P0=0 xff;wei=1;P0=srtemp;/wein 打开后 是低电平亮wei=0;/srtemp=_crol_(srtemp,1);P0=0 x00;duan=1;P0=tabledisi;duan=0;delay(1);duan=1;P0=0 x00;duan=0;aaa=0;num=21;break;default:bbb=0;break;首先要清楚 a 是 DS18B20 芯片获取的温度,b 是需要输入的温度,也就是要求的水温。在这里用到了 abs(a)和_crol_所以要在再头文件中写到#include

65、 和#include,dda用于防止 a 为负值的时候后面的操作不好完成。分别将 dda 的千位、百位、十位、个位取出存放在Numx,num1,num2,num3 中。dis4是用来方便 for 语句的赋值操作。这里显示时需要考虑DS18B20 采集的数据中的各种情况,第一:超过了 100 度。第二:正常的十几度或者几十度。第三:只有几度没有超过十度。第四温度为负值。if(dis0=0)&(dis1=0)dis1=20;/如果百位和十位都为 0 不显示上面这一句话,就是地三种情况。if(a=numy&num1!=21&num2!=21&num3!=21)jiar=1;P1=0 xfd;jiar

66、=0;elsejiar=1;P1=0 xff;jiar=0;采用定时器 T0,定时器设定每 30ms 中断一次,判断输入的数值与采集的数值之间的大小,如果前者较大就使 P21 变为低电平,从而使 MOC3041 启动并引起加热。如果后者大于前者,则 P22 还是高电平并不引起加热。这样就达到了控温的目的。第第 4 章章 功能简介功能简介4.14.1 智能热水器具的功能智能热水器具的功能(1)使用高清晰度数码管实时显示水温,范围 0 102 。(2)可用键盘方便地设定水温,并显示设定的温度。(3)按设定温度加热到相应水温,并具有保温功能。 首先单片机显示出采集到的温度值,等待系统键入温度,一旦键入 3 个数字,则第一个、第二个、第三个数字分别为需要温度的十位、个位和小数点后一位。输入完成后,每过 30ms 会将输入温度与单片机采集到的环境温度进行对比,如果输入温度高于或等于采集到得温度则单片机触发 MOC3041开始加热,如果输入温度低于采集到得温度则不加热或停止加热。4.14.1 开发板等待输入开发板等待输入输入完成后,输入的温度比开发板所测量的环境温度高时。单片机 P11 接口会出现

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!