基于单片机控制的温度检
测与报警系统
设计与总结报告
姓名:
***
指导老师:刘晓明 专业:电子信息工程 班级:08电子信息工程2班 时间:2010-11-5
摘要
本文主要通过温度传感(DS18B20)采集温度信号然后在液晶显示屏上显示,首先根据DS18B20的内部结构来设计硬件电路和软件电路的,本次设计采用了3个按键来控制,通过按键之间的协调来温度设定值,由于温度的不同,我们采用不同的信息来作为信号处理,所以硬件电路中用蜂鸣器来报警提醒。本系统包括温度传感器,数据传输模块,温度显示模块和断电自动保存模块。其中温度传感器为数字温度传感器DS18B20。显示模块为液晶显示128文中对每个部分功能、实现过程作了详细介绍。
关键词:单片机STCC52RC 温度传感(DS18B20) 液晶显示128, 按键设定控制
Abstract
This paper DS18B20 done mainly through sensors to measure temperature and throught it to set the temperature.DS18B20 is the frist in_depth understanding of and in accordance with the internal strucrure of DS18B20 to design hardware and software.by taking into account the temperature settings TH and TL so this design uses four buttons to control,through the coordinating role
between
information
to
different
as
signal,processing.hardware Circu it used as a warning to reind the buzzer
This system include temperature sensor and data transmission, the module displays module and thermoregulation driven circuit from the sensors into figures of the temperature sensors ds18b20, including a list of the data output circuit. the text of every part of the functions and procedure at present.
Keyword:TDP stcc52rc the controller DS18B20 schematics and procedures
目录
摘要 关键词
第一章 绪论 第二章 系统方案设计
1、方案设计
2、系统总体框图结构
第三章 方案论证
1、单片机方案的比较 2、温度检测模块论证
3、显示模块论证 第四章 电路与程序控制系统设计
(一)、电源模块 (二)温度检测模块 (三)单片机最小系统模拟电路 (四)程序设计 第五章 理论分析与测试
1、理论分析 2、结果测试 第六章 设计总结 第七章 参考文献 第八章 附录图7
附录图(一)电源模块 附录图(二)温度检测 附录图(三)模拟测试的电路 附录图(四)主要程序
Abstract
第一章 绪论
温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。
温度控制系统广泛应用于社会生活的各个领域,在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
第二章 方案设计
1, 方案设计:此次课程设计的任务是设计一个温度检测及报警的
系统,主要完成温度检测、高低温报警、报警温度锁存及调整。整个系统由STC单片机、128显示屏、DS18B20温度传感器、24C02外闪存、蜂鸣器及按键等器件组成。 2, 系统总体框图:
稳压电源模块 键盘模块 STC单片机 断电锁存模块 温度报警模块 温度检测模块 LCD显示模块
3,系统流程图:
第三章 方案论证与比较
1、单片机方案的比较
方案一:采用MCS-51系列单片机。传统的51 单片机具有价格低廉,使用简单等特点,但其运算速度低,功能单一,RAM、ROM空间小等缺点。
方案二:采用STC C52单片机单片机作为控制模块。具有丰富的资源:RAM,ROM空间大、超强抗干扰、超低功耗、可送 STC-ISP 下载编程器、指令周期短、低电压、易于编写和调试等优点。这些特点极大地提高了开发效率。 方案选择:
鉴于STC R52以上优点,故采用方案二。 2,、温度传感器的方案比较:
方案一:PT100温度传感器采用铂金属,它的阻值随温度上升而匀速增长,但是外接硬件电路复杂,需AD转换,测量范围小,精度一般。 方案二:采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。
鉴于DS18B20以上优点,故采用方案二。 3、显示模块的方案比较: 方案一:采用数码管显示
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。 但其只能显示数字及简单字母,无法清晰表示所显示的内容。
方案二:采用1602液晶显示,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,但其也只能显示字母和数字,不能显示汉字,
方案三:采用128液晶显示,能清楚的显示出所表达的内容,包括数字字母和汉字,带中文字库的128X是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。用它作为显示屏,更加人性化。
鉴于128以上优点,故采用方案三。
第四章 电路与程序控制系统设计
(一)电源模块
电路将12V直流电源输入集成电压稳压器7809,先输出+9V±5%直流电压,再将+9V±5%电压输入集成电压稳压器7805,输出+5V±5%直流电压,提供给单片机应用系统。该电路经实验证明,具有结构简单、经济、实用等特点。 见附图(一) (二)温度检测模块
由于DS18b20是高集成度的芯片,只需要简单的硬件电路即可,但相应的软件会比较复杂,需要严格的时序控制,单片机通过对DS18b20的控制,把DS18b20采集到的数据不断地送入单片机进行处理,
1全数字温度转换及输出。 2 先进的单总线数据通信。
3 最高12位分辨率,精度可达土0.5摄氏度。 4 12位分辨率时的最大工作周期为750毫秒。 5测温度范围为–55°C ~+125°C (–67°F ~+257°F) 6内置EEPROM,限温报警功能。
该电路经实验证明,具有简单,精确等的特点,见附图及程序 (三)单片机最小系统模拟电路
单片机最小系统模拟电路,采用STCC52做控制器,其处理速度快,性能稳定,附图三
(四)程序设计 见附录
第五章 理论分析与测试
1、理论分析
整个系统由STC51单片机、18b20温度传感器、128液晶显示屏、按键、24C02外部闪存芯片及蜂鸣器等器件组成。利用18b20进行温度检测,将测试结果送到128中显示,利用三个按键调节上、下限温度值,第一键为控制键,按一次调节上限温度,按两次调节下限温度;第二键为减少键,根据控制键减少上下限温度值;第三键为增加键,道理如上;将调节的结果显示在液晶屏上并写进EEPROM,当温度高于或低于报警温度时,蜂鸣器进行报警,当断电在通电时,单片机读取EEPROM中的数据实现断电保持功能。 2、结果测试
表1 温度检测测试(上限:38 下限: 15) 测试温度/是否报警 测试温度/(摄氏度) 报警 39 报警 40 报警 38.5 报警 8 报警 10 不报警 20 通过按键改变上下限温度值断电后保持。 通过几天测试完成设计要求
第六章 设计总结
经过两周的努力,我们终于完成了设计要求,实现了所有功能,并在
次基础上进行了创新,我们都感觉收获很多。特别是在调试程序和焊接电路时增长了许多经验,同时也感受到了团队的力量。面对诸多困难我们都能通过互助、协同一一克服。比如温度检测精度不高,软硬件调试不协调,我们都通过查阅资料,进行商讨将其解决。通过此次设计过程不仅增长了知识还增加了我们解决问题的能力,为以后在电子方面的发展奠定的基础。在次,衷心感谢老师的细心指导。
第八章 附录图
附录图1: 电源模块
附录图二: 温度检测 附录图三:报警及断电保持电路
附录图(四):模拟测试的电路
附录图(五):PCB图
附录程序:
#include #define uchar unsigned char #define uint unsigned int uchar code biaoyu[16]={\"温度报警系统\uchar code shangxian[16]={\"上限:\uchar code xiaxian[16]={\"下限:\uchar code shiwen[16]={\"实际温度:\uchar tab[16]={\"\ bit beep_st; //蜂鸣器间隔标志 uchar x=0; //计数器 signed char m; //温度值全局变量 uchar n; //温度值全局变量 uchar set_st=0; //状态标志 signed char HT=38; //上限报警温度,默认值为38 signed char LT=5; //下限报警温度,默认值为5 sbit RS = P2^4; sbit RW = P2^5; sbit EN = P2^6; sbit SET=P3^1; sbit DEC=P3^2; sbit ADD=P3^3; sbit BEEP=P3^7; uint wendu; /*****外部中断0服务程序*****/ void int0(void) interrupt 0 /*****外部中断1服务程序*****/ void int1(void) interrupt 2 /*****往lcd内写数据*****/ void LCD_write_str(uchar x,uchar y,uchar *s) /*****LCD初始化*****/ void LCD_init(void) /*****温度变换*****/ void change(void) /*****读取温度*****/ void check_wendu(void) /*****报警子程序*****/ void Alarm() /*****调节上下限温度*****/ void panduan() void main() { LCD_init(); EA=1; TR0=1; IT0=1; IT1=1; RdFromROM(tab,4,4); 据 HT=(tab[0]-0x30)*10+(tab[1]-0x30); LT=(tab[2]-0x30)*10+(tab[3]-0x30); while (1) { check_wendu(); change(); panduan(); LCD_write_str(0,0,biaoyu); LCD_write_str(0,1,shangxian); LCD_write_str(0,2,xiaxian); LCD_write_str(0,3,shiwen); WP=0; WrToROM(tab,4,4); //主函数 //调用存储数 //写入24c02 void main() { LCD_init(); EA=1; TR0=1; IT0=1; IT1=1; RdFromROM(tab,4,4); 据 HT=(tab[0]-0x30)*10+(tab[1]-0x30); LT=(tab[2]-0x30)*10+(tab[3]-0x30); while (1) { check_wendu(); change(); panduan(); LCD_write_str(0,0,biaoyu); LCD_write_str(0,1,shangxian); LCD_write_str(0,2,xiaxian); LCD_write_str(0,3,shiwen); WP=0; 掉 WrToROM(tab,4,4); } } //调用存储数 //写保护关//写入24c02 DS18B20部分源程序: #define DQ P3_2 //定义DS18B20总线I/O sbit P3_2=P3^2; /*****延时子程序*****/ void Delay_DS18B20(int num) { while(num--) ; } /*****初始化DS18B20*****/ void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 Delay_DS18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 Delay_DS18B20(80); //精确延时,大于480us DQ = 1; //拉高总线 Delay_DS18B20(14); x = DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay_DS18B20(20); } /*****读一个字节*****/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) 外EEPROM部分原程序 #include #include #define AddWr 0xae //写数据地址,需要参考24c02芯片文档 #define AddRd 0xaf //读数据地址 sbit Sda=P1^2; //定义总线连接端口 sbit Scl=P1^1; sbit WP=P1^0; //写保护,这里不使用 void mDelay(unsigned char j) { unsigned int i; for(;j>0;j--) { for(i=0;i<125;i++) {;} } } void Start(void) { Sda=1; _nop_();_nop_(); Scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); Sda=0; _nop_();_nop_();_nop_();_nop_();_nop_(); Scl=0; } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务