资源描述:
《数字温度显示监控设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、题目(一):温度数字显示监控装置(第1周)第一部分:设计题目:温度数字显示监控装置第二部分:主要技术指标(1)温度测量范围-55——100C,测量精度0.5(2)温度上下限报警,初步设定报警温度为30-70C(3)上下限监控由发光二极管显示,温度显示由LCD液晶显示(4)整个电路由单片机实现第三部分:方案论证及选择由于资料的限制,我们没有查出整个电路图,最终只查出两个功能的分电路,分别用温度传感器AD590构成的温度检测电路,以及反向施密特构成的上下限设置电路。电路图如下:7但是由于学校里没有提供温度检测中的集成运放OP07,而且温度上下限设置电路中的反向施密特也没有提供,再加上仿真软件中
2、也找不着传感器AD590,所以电路没法仿真,我们无法确定简单地把两个电路合起来能不能实现所要求的功能,所以最终我们还是放弃了这个方案,决定用单片机来实现。7该设计的主要设计思路是将温度和日期同时显示在LCD显示屏上。温度测量利用了DS18B20芯片,时钟显示利用了DS1302,而LCD液晶显示器则是利用了1602芯片。温度存储和温度传输则是分别利用了芯片24LC02B和芯片MAX232。最终的电路图如下:但是该电路只实现了温度显示功能,为此,我们在原有电路的基础上加了一个发光二极管和一个电阻,把它们接到了IO口上,从而实现了温度上下限设置电路。第四部分:调试过程及测试结果电路焊完之后,我们
3、在原有的程序基础之上进行了调试,尤其是在DS18B20读取温度的函数中我们添加了两个if语句7,使温度的上下限设置在30和70摄氏度。为了进一步改善电路,我们又精确了温度显示的精度,但是由于还没有系统的学过单片机编程,我们只能将精度提高到0.5摄氏度。程序编完之后,我们利用下载口将程序下载到芯片上,按下开关,电路功能都实现了。第五部分:主要元件清单温度传感器DS18B20,时钟显示芯片DS1302,LCD液晶显示器1602单片机AT89S52电阻、电容若干第六部分:部分程序/**************读取ds18b20当前温度************/ReadTemperature(){
4、//unsignedchartt[2];,ttuchara=0,b=0;uintt=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x4E);////写入"写暂存器"命令,修改TH和TL和分辩率配置寄存器//先写TH,再写TL,最后写配置寄存器WriteOneChar(70);//写入想设定的温度报警上限WriteOneChar(30);//写入想设定的温度报警下限//WriteOneChar(RS);//写配置寄存器,格式为0R1R01,1111//R1R0=00分辨率娄9位,R1R0=11分辨率为12位dela
5、y_18B20(80);//thismessageisweryimportantInit_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换delay_18B20(80);//thismessageisweryimportant7Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(80);a=ReadOneChar();b=ReadOneChar();
6、t=b;t<<=8;t
7、=a;t=t*6.25;//计算温度值,控制精度return(t);//返回温度值}/************************************************************************************//************************************************************************************/ucharx,y;voidtemp_to_str()//温度数据处理{temp_value=ReadTemperature();if((temp
8、_value>=7000)
9、
10、(temp_value<=3000))S=0;elseS=1;delay_ms(2);LCD_write_char(9,1,temp_value/1000+0x30);LCD_write_char(10,1,(temp_value%1000)/100+0x30);LCD_write_char(11,1,'.');LCD_write_char(12,1,(temp_value%100)/10+