数字式温度计的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计要求
①用DS18B20实时采集温度信号并显示 ②能够通过切换按钮可以切换华氏度和摄氏 度显示; ③单片机对温度信号能够实时监控 ④能够设置报警温度上下限 ⑤当温度到达设定值,蜂鸣器能够鸣叫报警, 而且发光二极管LED发光警报。
系统总体方案设计
在通过对数字式温度计的特性的了解之后,我们 采用模块设计的方法来设计本系统。数字式温度计系 统主要由五部分组成:主控模块,采集模块,键盘模 块,显示模块和报警模块。 其中,主控模块实现巡回监视温度信号的功能, 采集模块实现温度信号的采集,键盘模块改变报警温 度的上下限值以及来改变温度的显示方式,显示模块 实现温度值和报警点的显示,报警模块实现报警的功 能。系统框图如下所示:
四、显示模块
显示模块采用液晶显示(LCD)块中的LCD1602模块, LCD1602模块为2*16字。LCD1602模块由控制器HD44780、驱动器 HD44100和液晶板组成。HD44780是典型的液晶显示控制器,她是 集控制和驱动于一体的。也就是说它是具有自己的驱动器的,不去外 加驱动器。 LCD1602的主要管脚介绍: 引脚01:Vss,接地引脚。 引脚02:Vdd,接+5V电源 引脚04:RS,数据/命令寄存器选择端。高电平时选择数据寄存器,低 电平时选择命令寄存器。 引脚05:RW,读/写选择端。高电平时读操作,低电平时写操作。 引脚06:E,使能端。由高电平跳变成低电平时,液晶模块执行命令。 引脚07~14:D0~D7,8位双向数据总线。 显示模块直接采用AT89C52单片机P0口外接LCD1602模块,即 LCD1602模块得D0~D7端口连接到P0口上,而LCD1602模块的RS、 RW和E端口则连接到AT89C52单片机的P2.0、P2.1和P2.2端口。由 于P0口用作通用I/O口时,输出应外接上拉电阻,而为了方便连接, 我们采用排阻RP1。 其电路图如下:
2、DS18B20读写程序设计
(1)DS18B20读程序: 使用FOR循环来实现8位数据的读取。 /***********ds18b20读一个字节 **************/ uchar ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); } return(dat); } (2)DS18B20写程序: 使用FOR循环来实现8位数据的写 入。 /*************ds18b20写一个字节 ****************/ void WriteOneChar(uchar dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; } }
采集模块 显示模块 主控模块
键盘模块
报警模块
硬件设计
一、主控模块:
主控模块采用ATMEL公司生产的 AT89C52,AT89C52是一个低电压,高性能 CMOS 8位单片机,片内含4K的可反复擦写 的FLASH只读存储器和128 BYTES的随机存 取数据存储器,40个引脚,32个外部双向输 入/输出(I/O)端口,同时内含2个外中断口, 2个16位可编程定时计数器,2个全双工串行通 信口。AT89C52可以按照常规方法进行编程, 也可以在线编程。器件采用ATMEL公司的高 密度、非易失性存储技术生产,兼容标准 MCS-51指令系统,片内置通用8位中央处理 器和Flash存储单元,其将通用的微处理器和 Flash存储器结合在一起,特别是可反复擦写 的Flash存储器可有效地降低开发成本。内置 功能强大的微型计算机的AT89C51提供了高 性价比的解决方案。
3、DS18B20温度转换程序 ReadTemp函数其实是读取ds18b20当前温度的一个 程序,其中引用了DS18B20读程序ReadOneChar和 DS18B20写程序 WriteOneChar,但主要是为了温度的转 换。使用DS18B20来检测温度的优点之一就是因为它能 够通过编程自动的进行温度转换而无需再连接一个A/D转 换器来实现温度的转换。 因为本数字温度计的分辨率设置为0℃,所以转换的 数值少、转换时间小。 DS18B20温度转换程序: void ReadTemp(void) { unsigned char a=0; unsigned char b=0; unsigned char t=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换
单片机课程设计
——数字式温度计的设计
答辩人: 同组人:
主要内容:
• • • • • 设计意义与要求 系统总体方案设计 硬件设计 软件设计 程序调试与Proteus仿真
设计意义
传统的单片机温度控制器用热敏电阻测量温度,须包含 模拟测量电路及A/D转换器,且占用单片机的口线多,必要时 须增加I/O扩展接口芯片,电路器件多,降低了可靠性。而采 用新型的单线数字温度传感器DS18B20测量温度则克服 了上述缺点。DS18B20是美国DALLAS半导体公司近年推 出的一种改进型智能温度传感器,与传统的热敏电阻相比, 它能够直接读出被测温度,并可根据实际要求通过简单的 编程实现9-12位的数字值读数方式,无需外加测量电路及 A/D转换器,简化了电路;而且从DS18B20读出或写入信息 仅需一根口线,大大降低了单片机的硬件资源占用。基于 DS18B20的单片机温度控制器具有电路简单、可靠性高 的优点。 本数字式温度计对温度进行实时测量并显示(华氏与摄 氏温度都可显示,通过一按键显示),用户可设定最高限报 警温度值和最低限报警温度值,有一定的温度控制功能。
delay_18B20(100); important
// this message is wery
来自百度文库
Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个 寄存器) 前两个就是温度 delay_18B20(100); a=ReadOneChar(); //读取温度值低 aaaaaaaaaaaaaaaaaaaa b=ReadOneChar(); //读取温度值高位 bbbbbbbbbb b.a temp_value= b<<4; temp_value+=(a&0xf0)>>4; //temp_value 就是所要的值 } DS18B20完成温度转换后, 就把测得的温度值与上限报警 温度gw, 下限温度报警温度dw作比较, 若T>gw或T<dw, 则将该器件内的告警标志置位, 并对主机发出的告警搜 索命令作出响应。
1、初始化程序设计 初始化子程序Init_DS18B20的功能:对DSl8820进行一 次复位,复位成功令X标志置0,不成功令X为1. 子程序流程图如图: 初始化程序Init_DS18B20:
/**********ds18b20初始化函数 **********************/ void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(8); //延时大约1us DQ = 0; //单片机将DQ拉低 delay_18B20(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay_18B20(14); x=DQ; //稍做延时后 如果 x=0则初始化成功 x=1则初始化失败 delay_18B20(20); /}
二、采集模块
采集模块采用DALLAS 半导体公司生产的数字化温度 传感器DS18B20。DS1820是世界上第一片支持 “一线总 线”接口的温度传感器。一线总线独特而且经济的特点, 使用户可轻松地组建传感器网络,为测量系统的构建引入 全新概念。它具有以下8种特性:DS18B20与微处理器连接 时仅需要一条口线即可实现微处理器与DS18B20的双向 通讯;在使用中不需要任何外围元件;可用数据线供电,电压 范围: +3.0V~+5.5 V;测温范围: - 55℃~+125℃。固有测温 分辨率为0.5℃;。通过编程可实现9~12位的数字读数方式; 用户可自设定非易失性的报警上下限值;支持多点组网功 能, 多个DS18B20可以并联在惟一的;负压特性, 电源极 性接反时, 温度计不会因发热而烧。 其管脚排列:
五、报警模块
报警模块为单片机P3.7驱动蜂鸣器,用于温度到达上 限温度或达到下限温度时,由单片机驱动,蜂鸣器提供报 警,同时单片机的端口P2.5以及P2.6分别连接LED-BLUE (蓝色发光二极管)和LED-RED(红色发光二级)。当 当前温度超过上限温度时,LED-RED发出信号警报;当 温度低于下限温度时,LED-BLUE发出信号警报(在该系 统中我们设置的默认上限温度是 40℃, 下限温度是 10℃)。 蜂鸣器和发光二极管的成本低,效率高,反映直观,易于 工业级运用。其电路图如下:
一、主程序流程图
程序流程图如下:
二、温度传感器DS18B20的软件设计 DS18B20 的一线工作协议流程是: 初始化 →ROM操作指令→存储器操作指令→数据传输。 其工作时序包括初始化时序、写时序和读时序。 故主机控制 DS18B20 完成温度转换必须经过三 个步骤: 每一次读写之前都要对 DS18B20 进行复 位, 复位成功后发送一条 ROM指令, 最后发送 RAM指令, 这样才能对 DS18B20进行预定的操作。 复位要求主 CPU将数据线下拉 500 微秒, 然后释 放, DS18B20 收到信号后等待 16~ 60 微秒左右, 后发出 60~ 240微秒的存在低脉冲, 主 CPU收到 此信号表示复位成功。程序主要函数部分如下:
单片机AT89C52是该模块也是整个电路的核心器件。实现巡回 监视温度信号。当温度超过给定的门限值时出现报警信号(液晶 LCD显示器显示当前温度值和报警点,蜂鸣器和发光二极管发出 报警信号)。 其中: P0口连显示模块,P3.7连蜂鸣器,P2.5、P2.6连二极管 (P2.5接LED-BLUE、P2.6 LED-RED),P3.3连接DS18B20的DQ 端。单片机采用12M的晶振,并由电解电容和电阻构成上电复位 电路。其电路图如下:
采集模块主要由温度传感器DS18B20实现温度信号的 采集及A/D转换,可以将检测到的温度直接显示在数码管 上。其电路图如下:
三、键盘模块
键盘模块用于设置温度的报警上下限以及改变温度显 示的方式(摄氏度以及华氏度)。键盘模块采用独立按键 方式,分别由单片机的四个接口驱动,四个按键分别代表 不同作用。①按键K1用于温度状态切换,LCD显示的默认 温度为摄氏度,当按一下K1键时,显示的温度为华氏度。 ②按键K2用于显示报警上下限温度。③当锁住K2键,按 一下K键,再使用K3键来提高报警上限温度;当锁住K2键, 锁住K键,再使用K3键来降低报警上限温度。④当锁住K2 键,按一下K键,再使用K4键来提高报警下限温度;当锁 住K2键,锁住K键,再使用K4键来降低报警下限温度。考 虑到系统要求并不高,所以采用独立键盘,简单实用,降 低了软件的要求,并且硬件电路复杂度也降低,安全可靠。 其电路图如下:
软件设计
设计完数字式温度计的硬件部分之后,紧接着要完 成的便是它的软件设计。而通过分析数字式温度计的工 作过程以及各组件的工作原理,它的的软件部分主要包 括以下任务: ①温度传感器DS18B20的驱动,读写及温度转换程序的 编写。 ②LCD模块温度显示程序 ③报警程序的编写。 ④更改温度报警上下限值的程序。 ⑤单片机主程序的编写(主要是调用以上编写的子程 序)。 鉴于该系统的模块化较强,我们使用C语言来编程。