ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:526.64KB ,
资源ID:18530072      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18530072.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机水温检测控制系统设计Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机水温检测控制系统设计Word文档格式.docx

1、参考文献: 251 引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中数字温度计就是一个典型的例子。 数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52RC单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用 LCD实现温度值显示。2 设计要求2.1 基本要求 实现实时温度显示,测温范围0

2、1200C,误差50C以内。2.2 扩展功能 温度报警,能任意设定温度范围实现温度的报警。温度控制,利用继电器控制热得快,当设置好温度上下限后,当没有超过温度上限时,继电器吸合,热得快通电,加热水温。当超过设置的温度上限时,继电器断开,热得快断开。3 总体方案设计3.1 方案论证3.1.1 方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。3.1.2 方案二 考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用

3、DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。另外DS18B20具有3引脚的小体积封装,测温范围为-55+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。 以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。4 硬件设计4.1 单片机系统1.本设计采用STC89C52RC单片机作为控制器,完成所有功能的控制,包括:DS18B20数字温度传感器的初始化和读取温度值LED

4、数码管显示驱动与控制按键识别和响应控制温度设置和报警温度值的存储和读取2.单片机系统电路原理图:图2 单片机系统原理图4.2 数字温度传感器模块4.2.1 DS18B20性能独特的单线接口仅需一个端口引脚进行通信简单的多点分布应用无需外部器件可通过数据线供电零待机功耗测温范围-55+125,以0.5递增可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字应用包括温度控制、工业系统、消费品、温度计和任何热感测系统负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作4.2

5、.2 DS18B20防水型外形及引脚说明图3 防水型DS18B20外形及引脚黑色GND:电源负极黄色DQ:单线运用的数据输入/输出引脚红色VCC:电源正极4.2.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。图4 DS18B20接线原理图4.2.4 DS18B20时序图 主机使用时间隙来读写DS18B20的数据位和写命令字的位。1.初始化时序如下图:图5 DS18B20初始化时序2.DS18B20读写时序:图6 DS18B20读写时序4.2.5 数据处理 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换

6、所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。图7 字节分配下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125的数字输出为07D0H,实际温度=07D0H*0.0625=2000*0.0625=125。例如-55的数字输出为FC90H,则应先将11位数据位取反加1得370H(

7、符号位不变,也不作运算), 实际温度=370H*0.0625=880*0.0625=55。可见其中低四位为小数位。 图8 DS18B20温度数据表4.3 显示电路1602液晶也叫做1602字符型液晶,它是一种被用来显示数字、字母、符号等等的点阵型液晶字符模块。每一个点阵字符位都能显示出一个字符,且每位之间有一个点的间隔距离,每一行之间也有一定的间隔距离,具有间隔文字、规范条理有序的作用。这样一来他也具有一个弊端,就是不能很好的显示图片。 LCD1602引脚结构如图3-6。LCD1602的意思是显屏可以显示两行字符,每一行具有十六个字符液晶。图9 LCD1602显示电路4.4 报警电路 当温度超

8、过设定温度值时,实现声光报警,蜂鸣器鸣叫。蜂鸣器由单片机P17口控制,用三极管驱动。图10 报警电路4.5 键盘输入电路 四个键分别连接单片机P32、P33、P34、P35构成独立式键盘,分别实现加、减、报警温度设定功能键。图11 键盘输入电路5 软件设计5.1 主程序模块 主程序需要调用3个子程序,分别为:实时温度显示子程序温度设定、报警子程序LCD显示子程序5.2 读温度值模块 读温度值模块需要调用4个子程序,分别为:DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作DS18B20写字节子程序:对DS18B20发出命令DS18B20读字节子程序:读取DS18B20

9、存储器的数据延时子程序:对DS18B20操作时的时序控制5.3 中断模块 中断采用T0方式1,初始值定时为50ms。中断模块需调用两个子程序:读温度值子程序:定时读取温度值,实时更新温度值记录温度值子程序:定时记录温度值,供查询使用把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。中断模块流程图:5.4 温度设定、报警模块 此模块跟温度查询模块类似,需要接受按键输入,进入模块界面后,按加减键分别上调和下调设定报警温度值,当实时温度值超过设定值时驱动蜂鸣器发声,报警。6 源程序#include#include LCD_drive.h DS18B20

10、_drive.h sbit BEEP=P17; sbit RELAY=P36;sbit K1=P32; sbit K2=P33;sbit K3=P34;sbit K4=P35;bit temp_flag ;bit K1_flag=0 ;unsigned char count_50ms=0;bit key_up;unsigned char disp_buf8=0;unsigned char TH_buf=0;unsigned char TL_buf=0;unsigned char temp_comp;unsigned char temp_data2 = 0x00,0x00;unsigned ch

11、ar temp_TH=30;unsigned char temp_TL=15;unsigned char code line1_data = DS18B20 OK ;unsigned char code line2_data = TEMP: unsigned char code menu1_error = DS18B20 ERR unsigned char code menu2_error = TEMP:- unsigned char code menu1_set =High Tem:unsigned char code menu2_set =Low Tem:unsigned char cod

12、e menu2_H = Gaounsigned char code menu2_L =4)|(temp_data1&0x0f)120)| (temp_TH120)| (temp_TL=temp_TH) beep(); RELAY=0; lcdwrite_cmd(0x4c|0x80); while(menu2_Hi ! lcdwrite_dat(menu2_Hi); else if(temp_comp =temp_TL&temp_comp lcdwrite_cmd(0x4d|0x80); while(menu2_Ji ! lcdwrite_dat(menu2_Ji); else lcdwrite_cmd(0x0f|0x80); lcdwrite_cmd(0x4e|0x80); lcdwrite_dat(0x20);/*以下是定时器T0初始化函数*/void timer0_init() TMOD=0x01; TH0=0x4c; TL0=0x00; ET0=1; TR0=1;/*以下

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1