数字式温度计的设计_第1页
数字式温度计的设计_第2页
数字式温度计的设计_第3页
数字式温度计的设计_第4页
数字式温度计的设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计单片机课程设计数字式温度计的设计数字式温度计的设计 答辩人: 同组人:主要内容: 设计意义与要求设计意义与要求 系统总体方案设计系统总体方案设计 硬件设计硬件设计 软件设计软件设计 程序调试与程序调试与Proteus仿真仿真 传统的单片机温度控制器用热敏电阻测量温度,须包含模拟测量电路及A/D转换器,且占用单片机的口线多,必要时须增加I/O扩展接口芯片,电路器件多,降低了可靠性。而采用新型的单线数字温度传感器DS18B20测量温度则克服了上述缺点。DS18B20是美国DALLAS半导体公司近年推出的一种改进型智能温度传感器,与传统的热敏电阻相比,它能够直接读出被测温度,并可根据实

2、际要求通过简单的编程实现9-12位的数字值读数方式,无需外加测量电路及A/D转换器,简化了电路;而且从DS18B20读出或写入信息仅需一根口线,大大降低了单片机的硬件资源占用。基于DS18B20的单片机温度控制器具有电路简单、可靠性高的优点。 本数字式温度计对温度进行实时测量并显示(华氏与摄氏温度都可显示,通过一按键显示),用户可设定最高限报警温度值和最低限报警温度值,有一定的温度控制功能。设计意义设计意义设计要求设计要求用DS18B20实时采集温度信号并显示能够通过切换按钮可以切换华氏度和摄氏度显示;单片机对温度信号能够实时监控能够设置报警温度上下限当温度到达设定值,蜂鸣器能够鸣叫报警,而且

3、发光二极管LED发光警报。系统总体方案设计系统总体方案设计 在通过对数字式温度计的特性的了解之后,我们采用模块设计的方法来设计本系统。数字式温度计系统主要由五部分组成:主控模块,采集模块,键盘模块,显示模块和报警模块。 其中,主控模块实现巡回监视温度信号的功能,采集模块实现温度信号的采集,键盘模块改变报警温度的上下限值以及来改变温度的显示方式,显示模块实现温度值和报警点的显示,报警模块实现报警的功能。系统框图如下所示:主 控 模 块显 示 模 块报 警 模 块采 集 模 块键盘模块硬件设计硬件设计 主控模块采用ATMEL公司生产的AT89C52,AT89C52是一个低电压,高性能CMOS 8位

4、单片机,片内含4K的可反复擦写的FLASH只读存储器和128 BYTES的随机存取数据存储器,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。AT89C52可以按照常规方法进行编程,也可以在线编程。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。 一、主控模块:一、主控模

5、块: 单片机AT89C52是该模块也是整个电路的核心器件。实现巡回监视温度信号。当温度超过给定的门限值时出现报警信号(液晶LCD显示器显示当前温度值和报警点,蜂鸣器和发光二极管发出报警信号)。 其中: P0口连显示模块,P3.7连蜂鸣器,P2.5、P2.6连二极管(P2.5接LED-BLUE、P2.6 LED-RED),P3.3连接DS18B20的DQ端。单片机采用12M的晶振,并由电解电容和电阻构成上电复位电路。其电路图如下:二、采集模块二、采集模块 采集模块采用DALLAS 半导体公司生产的数字化温度传感器DS18B20。DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总

6、线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。它具有以下8种特性:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;在使用中不需要任何外围元件;可用数据线供电,电压范围: +3.0V+5.5 V;测温范围: - 55+125。固有测温分辨率为0.5;。通过编程可实现912位的数字读数方式;用户可自设定非易失性的报警上下限值;支持多点组网功能, 多个DS18B20可以并联在惟一的;负压特性, 电源极性接反时, 温度计不会因发热而烧。 其管脚排列: 采集模块主要由温度传感器DS18B20实现温度信号的采集及A/D转换,可以将

7、检测到的温度直接显示在数码管上。其电路图如下:三、键盘模块三、键盘模块 键盘模块用于设置温度的报警上下限以及改变温度显示的方式(摄氏度以及华氏度)。键盘模块采用独立按键方式,分别由单片机的四个接口驱动,四个按键分别代表不同作用。按键K1用于温度状态切换,LCD显示的默认温度为摄氏度,当按一下K1键时,显示的温度为华氏度。按键K2用于显示报警上下限温度。当锁住K2键,按一下K键,再使用K3键来提高报警上限温度;当锁住K2键,锁住K键,再使用K3键来降低报警上限温度。当锁住K2键,按一下K键,再使用K4键来提高报警下限温度;当锁住K2键,锁住K键,再使用K4键来降低报警下限温度。考虑到系统要求并不

8、高,所以采用独立键盘,简单实用,降低了软件的要求,并且硬件电路复杂度也降低,安全可靠。其电路图如下:四、显示模块四、显示模块 显示模块采用液晶显示(LCD)块中的LCD1602模块,LCD1602模块为2*16字。LCD1602模块由控制器HD44780、驱动器HD44100和液晶板组成。HD44780是典型的液晶显示控制器,她是集控制和驱动于一体的。也就是说它是具有自己的驱动器的,不去外加驱动器。 LCD1602的主要管脚介绍: 引脚01:Vss,接地引脚。 引脚02:Vdd,接+5V电源 引脚04:RS,数据/命令寄存器选择端。高电平时选择数据寄存器,低电平时选择命令寄存器。 引脚05:R

9、W,读/写选择端。高电平时读操作,低电平时写操作。 引脚06:E,使能端。由高电平跳变成低电平时,液晶模块执行命令。 引脚0714:D0D7,8位双向数据总线。 显示模块直接采用AT89C52单片机P0口外接LCD1602模块,即LCD1602模块得D0D7端口连接到P0口上,而LCD1602模块的RS、RW和E端口则连接到AT89C52单片机的P2.0、P2.1和P2.2端口。由于P0口用作通用I/O口时,输出应外接上拉电阻,而为了方便连接,我们采用排阻RP1。 其电路图如下:五、报警模块五、报警模块 报警模块为单片机P3.7驱动蜂鸣器,用于温度到达上限温度或达到下限温度时,由单片机驱动,蜂

10、鸣器提供报警,同时单片机的端口P2.5以及P2.6分别连接LED-BLUE(蓝色发光二极管)和LED-RED(红色发光二级)。当当前温度超过上限温度时,LED-RED发出信号警报;当温度低于下限温度时,LED-BLUE发出信号警报(在该系统中我们设置的默认上限温度是 40, 下限温度是 10)。蜂鸣器和发光二极管的成本低,效率高,反映直观,易于工业级运用。其电路图如下: 设计完数字式温度计的硬件部分之后,紧接着要完成的便是它的软件设计。而通过分析数字式温度计的工作过程以及各组件的工作原理,它的的软件部分主要包括以下任务: 温度传感器DS18B20的驱动,读写及温度转换程序的编写。 LCD模块温

11、度显示程序 报警程序的编写。 更改温度报警上下限值的程序。 单片机主程序的编写(主要是调用以上编写的子程序)。 鉴于该系统的模块化较强,我们使用C语言来编程。软件设计软件设计 一、主程序流程图一、主程序流程图 程序流程图如下:二、温度传感器二、温度传感器DS18B20的软件设计的软件设计 DS18B20 的一线工作协议流程是: 初始化ROM操作指令存储器操作指令数据传输。其工作时序包括初始化时序、写时序和读时序。 故主机控制 DS18B20 完成温度转换必须经过三个步骤: 每一次读写之前都要对 DS18B20 进行复位, 复位成功后发送一条 ROM指令, 最后发送 RAM指令, 这样才能对 D

12、S18B20进行预定的操作。复位要求主 CPU将数据线下拉 500 微秒, 然后释放, DS18B20 收到信号后等待 16 60 微秒左右, 后发出 60 240微秒的存在低脉冲, 主 CPU收到此信号表示复位成功。程序主要函数部分如下:1、初始化程序设计初始化程序设计 初始化子程序Init_DS18B20的功能:对DSl8820进行一次复位,复位成功令X标志置0,不成功令X为1 子程序流程图如图:初始化程序初始化程序Init_DS18B20:/*ds18b20初始化函数*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 de

13、lay_18B20(8); /延时大约1us DQ = 0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay_18B20(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/2、DS18B20读写程序设计读写程序设计 (1)DS18B20读程序:使用FOR循环来实现8位数据的读取。/*ds18b20读一个字节*/ uchar ReadOneChar(void) uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ = 0; /

14、 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0 x80; delay_18B20(4); return(dat);(2)DS18B20写程序:使用FOR循环来实现8位数据的写入。/*ds18b20写一个字节*/ void WriteOneChar(uchar dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0 x01; delay_18B20(5);DQ = 1; dat=1; 3、DS18B20温度转换程序温度转换程序 ReadTemp函数其实是读取ds18b20当前温度的一个程序,

15、其中引用了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(0 xCC); / 跳过读序号列号的操

16、作WriteOneChar(0 x44); / 启动温度转换delay_18B20(100); / this message is wery importantInit_DS18B20();WriteOneChar(0 xCC); /跳过读序号列号的操作WriteOneChar(0 xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18B20(100);a=ReadOneChar(); /读取温度值低aaaaaaaaaaaaaaaaaaaab=ReadOneChar(); /读取温度值高位 bbbbbbbbbb b.a temp_value= b4; /temp_v

17、alue 就是所要的值 DS18B20完成温度转换后, 就把测得的温度值与上限报警温度gw, 下限温度报警温度dw作比较, 若Tgw或Tdw, 则将该器件内的告警标志置位, 并对主机发出的告警搜索命令作出响应。三、三、LCD模块温度显示程序设计模块温度显示程序设计 LCD1602模块为一个216字的液晶显示屏,它是由控制器HD44780、驱动器HD44100和液晶板组成。其中包含在HD44100中的CGRAM为一个可由用户定义的8个57个字形的自定义字符发生器。DDRAM有80个单位,其中第一行用00H0FH,第二行则使用40H4FH单位,DDRAM单位存放的是要显示字符的编码,控制器以该编码

18、为索引,到CGROM或CGRAM中取点阵字形送液晶板显示。 在使用LCD时,要首先对LCD模块进行初始化。又由于我们设计的数字式温度计是一个动态的系统,所以每次显示一次温度时都需要初始化。四、报警程序的编写四、报警程序的编写 本温度计使用的温度报警系统包含两的LED灯和一个蜂鸣器。当温度超过上限温度dw时,LED-RED和蜂鸣器同时发出信号警报,;当温度低于下限温度dw时,LED-BLUE和蜂鸣器同时发出信号警报。五、更改温度报警上下限值的程序五、更改温度报警上下限值的程序 通过按键K、K2、K3、K4可以改变温度报警上下限值(gw以及dw),具体方法见硬件设计,其程序包含在主函数中其程序包含

19、在主函数中。六、单片机主程序的编写六、单片机主程序的编写 在几个主要的程序中,主函数是最重要的一个程序,它包含的对所有子程序的的调用,通过对子程序的调用来实现数字式温度计的功能。除了调用子程序外,我们还要编写更改温度报警上下限值的程序,以及报警程序等等。程序调试与程序调试与Proteus仿真仿真 数字式温度计的源程序编写完之后,我们需要使用KEIL软件和Proteus共同来调试调试源程序的争取与否。首先,我们先使用KEIL软件来验证源程序是否含有逻辑和语法上的错误,如图4-1。点击菜单栏中的Proget来建立名为wendu的Proget。一、程序调试一、程序调试 在刚调试时,发现一些语法上的错

20、误,进过几次改正再调试后,终于正确了。以下几幅图分别为最后编译、连接正确时的截图。二、二、Proteus仿真仿真 硬件设计的内容使用Proteus软件,来画出主控模块,采集模块,键盘模块,显示模块和报警模块五个模块来组成完整的Proteus的仿真图。如下图所示:1、显示摄氏温度、显示摄氏温度 如图所示,点击仿真按键,LCD显示DS18B20的当前温度16。 2、显示华氏温度、显示华氏温度 点击K1键,LCD显示60F(华氏度与摄氏度转换关系:F=9/5+32),如下图所示。经验证,60.8 F=9/516+32,较精确。3、显示报警温度上下限值、显示报警温度上下限值 当点击K2键时,LCD显示显示报警温度上下限值,其中报警上限值

温馨提示

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

评论

0/150

提交评论