数字温湿度计的设计(12864)
使用无字库12864液晶模块制作温湿度计

使用无字库12864液晶模块制作温湿度计日历钟就摇身一变成为一个小小温湿度计啦。
虽然气象要素很多,不过我们最常用的就是气温和湿度。
一个是冷热程度,一个是环境空气中含水蒸气的多少。
一般家用温度计很常见,湿度计就比较少,以前有一种干湿球温度计,但是用起来比较麻烦,准确度也不高。
现在应用电子技术我们就可以做一个可以同时显示温度、湿度、时间的小仪器,放在家里以便随时监测我们的小环境。
它的特点如下:1.在单片机ATMega8L-8PU(以下简称M8)和日历钟电路DS1302的基础上,使用一个在工厂经过精密校准的数字式温度、湿度传感器AM2301作为探头;2.当24小时连续工作时,纵然工作电流仅为几毫安,也不宜使用纽扣电池供电。
这次选用可充电的3.6V聚合物锂电池,使它的放置地点可以不受电源限制,可以在室内,也可以在不受阳光直射和雨水接触的室外;3.具有文字和图形界面,可以显示温度和湿度数值,以及12小时内的湿度变化记录曲线,为什么是湿度曲线呢?因为气温的变化规律一般比较稳定,湿度就不一样了,我们可以从湿度变化趋势估计一下未来的晴雨可能,这比看燕子飞高飞低要靠谱些吧?两个界面用按键切换;4.具备锂电池线性充电电路,通过USB接口从外部取得5V电源,一边供给充电,一边维持电路继续工作;全部元器件安装在一块70mm×90mm的小万用板上,正面、背面外形见图1、图2。
正面左边那个黑色小乌龟壳就是温湿度探头。
图2 电路板背面元器件分布和连线电路原理电路见图3。
图形点阵液晶、单片机M8、时钟电路DS1302和上次小小日历钟基本相同,不再重复。
有两点稍稍不同:1.液晶的控制虽然还是通过M8的PD口,但具体接线有所改变,不再占用两根串口线PD0和PD1,目的是为今后可能和外部通信预留接口。
这好办,编程时重新定义即可;。
数字温湿度计设计

电子系统综合设计与仿真题目:数字温湿度计的设计1 课程设计目的通过数字温湿度计的设计,使对温湿度测量仪的应用有更深的理解,熟练protuse仿真软件的使用,加深对单片机系统应用的理解。
对仿真电路与实际电路的差距有更深的理解。
2 课程设计的内容及要求(1)使用热敏电阻和湿敏电阻,不允许使用集成的温度传感器和湿度传感器。
(2)温度测量范围0℃-100℃,测量误差1℃;湿度测量范围20%-100%,测量误差5%以内。
(3)能进行摄氏度和华氏度的转换。
(4)有设置的报警的门限,有报警的声音。
(5)自己设计测试方案,并论证方案的合理性。
3 元器件的选择本设计以检测温度和湿度并较为精确的显示为目的,按照系统设计要求功能的要求,确定由四个模块组成:主控器,测温电路,测湿电路,显示电路。
系统以热敏电阻作为温度敏感器件,以湿敏电阻作为湿度敏感器件,经过分压电路和模数转换芯片,将温度模拟量转化为电压数字量以总线传入单片机。
以AT89C52为主芯片,在主芯片对A/D转换芯片传入的电压值进行处理,由单片机程序控制,将处理后的温度和湿度由显示屏进行显示。
3.1 热敏电阻的选择市场上常用的热敏电阻有PT100,MF58-NTC-10K,NTC 10D-9等。
我们选择了NTC 10D-9这一个负温度系数的热敏电阻。
PT100的测温范围为-200~650℃,特点是精度高,但是价格较贵。
MF58-NTC的测温范围为-45~+300℃。
其特点是稳定性好,可靠性高。
阻值范围宽:0.1~5000K欧。
阻值及B值精度高。
玻璃封装,可在高温和高湿等恶劣环境下使用。
体积小,结构坚固,便于自动化安装。
热感应快,灵敏度高等。
负温度系数的热敏电阻NTC10D-9特点是过流控制范围宽,材料常数(B值)大,残余电阻小,功率大,抑制浪涌电流能力强等。
在选择的过程中,我们初步选择了性能优良,价格便宜的MF58型热敏电阻,在购买中,未买到,就选择了依然可以满足要求的NTC 10D-9。
12864LCD上显示温湿度

12864LCD显示温湿度第一种方式:/**********************DHT11与12864LCD************************/ #include <>#define uchar unsigned char#define uint unsigned intuchar lcd_x,lcd_y,data_byte=0,count;uint TH_data,TL_data,RH_data,RL_data,CK_data;uint TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;uchar num;sbit RS = P2^0;;uchar wendu[6];uchar shidu[6];/********************************************************1ms延时函数********************************************************/void delay(int z){ int x,y;for(x=z;x>0;x--)for(y=125;y>0;y--); }/********************************************************50us延时函数********************************************************/void delay_50us(uint t){uint j;for(;t>0;t--)for(j=19;j>0;j--);}/********************************************************50ms延时函数********************************************************/ void delay_50ms(uint t){uint j;for(;t>0;t--)for(j=6245;j>0;j--);}/********************************************************12864液晶写指令********************************************************/ void write_12864com(uchar com){ lcdrs=0;lcdrw=0;delay_50us(1);P0=com;lcden=1;delay_50us(10);lcden=0;delay_50us(2);}/********************************************************12864液晶写数据********************************************************/ void write_dat(ucha r dat) { lcdrs=1;lcdrw=0;delay_50us(1);P0=dat;lcden=1;delay_50us(10);lcden=0;delay_50us(2); }/********************************************************12864液晶初始化********************************************************/void init12864lcd(void) {delay_50ms(2);write_12864com(0x30);delay_50us(4);write_12864com(0x30);delay_50us(4);write_12864com(0x0f);delay_50us(4);write_12864com(0x01);delay_50us(240);write_12864com(0x06);delay_50us(10);write_12864com(0x0c);delay_50us(10); }/********************************************************12864液晶显示函数********************************************************/ void display1(void){uchar i;write_12864com(0x80);for(i=0;i<18;i++){write_dat(table2[i]);delay_50us(1); } }/********************************************************12864液晶显示函数********************************************************/ void display2(void){uchar i;write_12864com(0x90);for(i=0;i<18;i++){write_dat(table3[i]);delay_50us(1); } }/********************************************************12864液晶显示函数********************************************************/ void display3(void){ uchar i;write_12864com(0x88);for(i=0;i<8;i++){ write_dat(table4[i]);delay_50us(1); }}/********************************************************12864液晶显示函数********************************************************/ void displaywendu(void){ uchar i;write_12864com(0x94);for(i=0;i<3;i++){ write_dat(wendu[i]);delay_50us(1);}for(i=0;i<1;i++){write_dat(table5[i]);delay_50us(1);}for(i=4;i<5;i++){write_dat(wendu[i]);delay_50us(1); } }/********************************************************12864液晶显示函数********************************************************/ void displayshidu(void) {uchar i;write_12864com(0x8C);for(i=0;i<3;i++) {write_dat(shidu[i]);delay_50us(1); }for(i=0;i<1;i++){ write_dat(table5[i]);delay_50us(1);}for(i=4;i<5;i++){write_dat(shidu[i]);delay_50us(1);} }/********************************************************SHT11写字节程序********************************************************/char s_write_byte(unsigned char value){unsigned char i,error=0;for (i=0x80;i>0;i>>=1) //高位为1,循环右移{ if (i&value) DATA=1; //和要发送的数相与,结果为发送的位else DATA=0;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;}DATA=1; //释放数据线SCK=1;error=DATA; //检查应答信号,确认通讯正常_nop_();_nop_();_nop_();SCK=0;DATA=1;return error; //error=1 通讯错误}/********************************************************SHT11读字节程序********************************************************/char s_read_byte(unsigned char ack){unsigned char i,val=0;DATA=1; //释放数据线for(i=0x80;i>0;i>>=1) //高位为1,循环右移{SCK=1;if(DATA)val=(val|i); //读一位数据线的值SCK=0; }DATA=!ack; //如果是校验,读取完后结束通讯;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;_nop_();_nop_();_nop_();DATA=1; //释放数据线return val; }/********************************************************SHT11启动传输********************************************************/void s_transstart(void){DATA=1;SCK=0; //准备_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0; }/********************************************************SHT11连接复位********************************************************/void s_connectionreset(void){ unsigned char i;DATA=1;SCK=0; //准备for(i=0;i<9;i++) //DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位{ SCK=1;SCK=0;}s_transstart(); //启动传输}/********************************************************SHT11温湿度检测********************************************************/char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsign ed char mode){unsigned error=0;unsigned int i;s_transstart(); //启动传输switch(mode) //选择发送命令{ case TEMP : error+=s_write_byte(MEASURE_TEMP);break; //测量温度case HUMI : error+=s_write_byte(MEASURE_HUMI);break; //测量湿度default : break;}for (i=0;i<65535;i++)if(DATA==0) break; //等待测量结束if(DATA) error+=1;// 如果长时间数据线没有拉低,说明测量错误*(p_value) =s_read_byte(ACK); //读第一个字节,高字节(MSB)*(p_value+1)=s_read_byte(ACK); //读第二个字节,低字节(LSB)*p_checksum =s_read_byte(noACK); //read CRC校验码return error; // error=1 通讯错误}/********************************************************SHT11温湿度值标度变换及温度补偿********************************************************/ void calc_sth10(flo at *p_humidity ,float *p_temperature){const float C1=; // 12位湿度精度修正公式const float C2=+; // 12位湿度精度修正公式const float C3=; // 12位湿度精度修正公式const float T1=+; // 14位温度精度5V条件修正公式const float T2=+; // 14位温度精度5V条件修正公式float rh=*p_humidity; // rh: 12位湿度float t=*p_temperature; // t: 14位温度float rh_lin; // rh_lin: 湿度linear值float rh_true; // rh_true: 湿度ture 值float t_C; // t_C : 温度℃t_C=t* - 40; //补偿温度rh_lin=C3*rh*rh + C2*rh + C1; //相对湿度非线性补偿rh_true=(t_C-25)*(T1+T2*rh)+rh_lin; //相对湿度对于温度依赖性补偿if(rh_true>100)rh_true=100; //湿度最大修正if(rh_true<rh_true=; //湿度最小修正*p_temperature=t_C; //返回温度结果*p_humidity=rh_true; //返回湿度结果}/********************************************************主函数********************************************************/void main(void){unsigned int temp,humi;value humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度unsigned char error; //用于检验是否出现错误unsigned char checksum; //CRCinit12864lcd();display1();display2();display3();s_connectionreset(); //启动连接复位while(1){error=0; //初始化error=0,即没有错误error+=s_measure((unsigned char*)&,&checksum,TEMP); //温度测量error+=s_measure((unsigned char*)&,&checksum,HUMI); //湿度测量if(error!=0) s_connectionreset(); ////如果发生错误,系统复位else{=(float); //转换为浮点数=(float); //转换为浮点数calc_sth10(&,&; //修正相对湿度及温度temp=*10;humi=*10;wendu[0]=temp/1000+'0'; //温度百位wendu[1]=temp%1000/100+'0'; //温度十位wendu[2]=temp%100/10+'0'; //温度个位wendu[3]=0x2E; //小数点wendu[4]=temp%10+'0'; //温度小数点后第一位displaywendu();shidu[0]=humi/1000+'0'; //湿度百位shidu[1]=humi%1000/100+'0'; //湿度十位shidu[2]=humi%100/10+'0'; //湿度个位shidu[3]=0x2E; //小数点shidu[4]=humi%10+'0'; //湿度小数点后第一位displayshidu(); }Delay(800);//等待足够长的时间,以现行下一次转换}}。
毕业设计(论文)--数字温湿度计的设计

数字温湿度计的设计摘要温度和湿度是两个最基本的环境参数,人们生活与温湿度息息相关。
在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量和控制。
准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。
因此研究温湿度的测量方法和控制具有重要的意义。
本论文介绍了一种以单片机AT89C52为主要控制器件,以DHT91为数字温湿度传感器的新型数字温湿度计。
本设计主要包括硬件电路的设计和系统软件的设计。
硬件电路主要包括主控制器,测温湿控制电路和显示电路等。
主控制器采用单片机AT89C52,温湿度传感器采用盛世瑞恩半导体公司生产的DHT91,显示电路采用8位共阳极LED数码管,驱动电路用八个PNP型的小电压大电流三极管(S9012)。
测温湿控制电路由温湿度传感器和预置温湿度值比较报警电路组成,当实际测量温湿度值大于预置温湿度值时,发出报警信号(发光二极管点亮)。
软件部分主要包括主程序,测温湿度子程序,显示子程序和按键子程序等。
本次设计采用的DHT91数字温湿度传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D器以及串行接口电路在同一芯片上实现无缝链接,从而具有超快响应,抗干扰能力强,性价比高等优点。
用DHT91与AT89C52做的数字温湿度计不仅外围电路简单,而且测量精度比较高。
关键词:温度测量, 湿度测量,AT89C52,DHT91THE DESIGN OF DIGITALTHERMOMETERS AND HYGROMETERABSTRACTTemperature and humidity are two basic environmental parameters. people's lives are closely related to temperature and humidity. In the industrial and agricultural production, meteorology, environmental protection, national defense, scientific research, and other departments, we often need to ambient temperature and humidity measurements and control. Accurate measurement of temperature and humidity in the pharmaceutical, food processing, paper making and other sectors is essential. So the temperature and humidity control and measurement method is of great significance.This paper presents a new design of digital thermometers and hygrometer. It includes a main control device-microcontroller AT89C52 and a digital temperature and humidity sensor. This design includes hardware and system software .The hardware design includes a main controller circuit, Temperature and Humidity measurement and control circuits and show circuit. Main controller uses SCM AT89C52.temperature and humidity sensor uses DHT91 which is yielded by Sensirion (a Semiconductor Corp). Show circuit is a total of eight circuits using digital LED of the anode. Driver show circuit uses eight of the PNP small voltage high current transistor (S9012). Temperature and Humidity control circuit includes the temperature and humidity sensor and preset temperature and humidity values compared alarm circuit. When the actual measurement of temperature or humidity values is greater than the preset temperature or humidity values, the alarm signal (Light emitting diode is lit) is sent. The major software includes the main routines, temperature and humidity routines, show routines and keys routines.The digital temperature and humidity sensor (DHT91) in this designincludes a capacitive polymer sensing element for power consumption makes it the ultimate choice for even relative humidity and a band gap temperature sensor. Both the most demanding applications are seamlessly coupled to a 14bit analog to digital converter with a 14 and the A / D, as well as serial interface circuits in the same chip on the realization of a Gap link to a super-fast response, anti-interference capability and cost-effective advantages. The design of digital thermometers and hygrometer with AT89C52 and DHT91 not only has a simple external circuit, but also has a high-precision measurement.KEY WORDS: temperature measurement, humidity measurements, AT89C52, DHT91目录前言 (1)第一章设计任务要求和温湿度计的发展史 (2)§1.1设计任务及要求 (2)§1.2设计数字温湿度计的依据和意义 (2)§1.3温度计的发展史 (3)§1.4湿度计的由来 (4)§1.5露点意义 (4)第二章设计任务分析及方案论证 (5)§2.1设计总体方案及方案论证 (5)§2.2元器件的选择 (6)§2.2.1 主控制器芯片 (6)§2.2.2 数字温湿度传感器 (7)§2.2.3 驱动显示电路 (8)§2.3温湿度测量的方法及分析 (9)第三章硬件电路的设计 (10)§3.1主控制电路和测温湿控制电路 (10)§3.2驱动显示电路 (11)第四章软件设计及分析 (13)§4.1DHT91传输时序和指令集]7[ (13)§4.1.1 通讯复位时序 (13)§4.1.2 启动传输时序 (13)§4.1.3 数据传输和指令集 (14)§4.1.4 湿度的测量时序 (15)§4.1.5 输出转换为物理量 (15)§4.1.6 DHT91的DC特性。
数字温湿度计设计毕业设计(论文)

本科毕业设计(论文)数字温湿度计设计The Design Of Digital ThermometersAnd Hygrometer毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
数字温度计的设计

数字温度计的设计一、课程设计目的:通过《电子系统设计》课程设计,使掌握现代电子系统设计的方法和计原则以及使用Protel软件进行原理图和PCB板图设计的方法。
进一步加深对电子系统设计和应用的理解。
二、课程设计的内容及要求1)数字温度计的设计内容:①数字式温度计测温范围在-55~125℃,误差在±0.5℃以内。
②显示部分可以采用LED数码管直读显示(四连排LED数码管)。
③可以用键盘(至少4个)设置温度的上/下限,当温度不在范围内时,启动报警装置。
④发声器件为8Ω、0.25W动圈式扬声器;2)课程设计要求:1)独立设计原理图及相应的硬件电路。
2)独立焊接电路板并对电路板调试。
3)针对选择的设计题目,设计系统软件。
软件要做到:操作方便,实用性强,稳定可靠。
4)设计说明书格式规范,层次合理,重点突出。
并附上设计原理图、电路板图及相应的源程序。
三、总体设计方案本设计以检测温度并显示温度提供上下限报警为目的,按照系统设计功能的要求,确定系统由5个模块组成:主控器[4]、测温电路,报警电路,按键电路及显示电路。
系统以DS18B20为传感器用以将温度模拟量转化为电压数字量以总线传入单片机,以AT89S52为主芯片,在主芯片对DS18B20传入的温度值进行处理,由单片机程序控制,将经处理后的温度由LED数码管显示出来。
本系统具有电路简洁,性能可靠等特点,易于实现。
图3-1 数字温度计设计总体的原理图3.1 温度的检测每次测温由单片机向测温传感器发出特定脉冲,测温传感器能够检测到脉冲并做相应的工作。
传感器将模拟温度信号经过采集,数字处理,放大后输出。
DS18B20使用一个单线接口发送或接受信息,因此在单片机和DS18B20之间只需要一条线链接,用于读写和温度转换的电源可以从数据线获得,无需外接电源。
3.2 数字信号的处理送入单片机内部的数字信号经过单片机的处理,将数据用LED 数码管显示出来。
其处理过程主要由单片机能存储的程序进行控制。
数字式温湿度测量仪设计..

长沙学院《单片机原理及应用》课程设计说明书题目数字式温湿度测量仪设计系(部)专业(班级)姓名学号指导教师起止日期《单片机原理及应用》课程设计任务书8 系(部):电信系专业:2011级电子信息工程目录一、概述 .................................................................................................................................... 错误!未定义书签。
二、设计内容及要求 ................................................................................................................ 错误!未定义书签。
1、课题内容 ...................................................................................................................... 错误!未定义书签。
2、要求 .............................................................................................................................. 错误!未定义书签。
三、设计原理ﻩ错误!未定义书签。
1、温度传感器的选择 ..................................................................................................... 错误!未定义书签。
2、湿度传感器的选择ﻩ错误!未定义书签。
数字湿度计的设计

· 45 · 电子世界 2 0 0 5 年 4 期
输出的信号进行处理,HF3223 的输出频 率与相对湿度的关系如图 4 所示。
该模块的方案选定将由以下几个方 面来考虑:将频率信号直接通过计数器 处理,然后再显示计数结果。这种方案优 点是对信号处理过程短,可以提高系统 的精度;缺点是从传感器输出的频率信 号与相对湿度已经经过处理成了线性比 例关系,但不是简单的正比例关系,这样 在后续电路中就要对频率信号进行处理, 电路会复杂化,而且传感器的输出频率 范围为 8 ̄9.8kHz,对这样的频率进行采 样,其电路的设计要求较高,所以此方案 一般不宜采用。而是采用将频率转换成 电压或电流信号。在实际的电路设计中, 电压信号的处理更容易实现,因此信号 处理部分采用频率转换为电压信号的电 路模块。
实用电路
数字湿度计的设计
·潘 凯 何道清 钟声峙·
摘 要 本文阐述的是一种数字湿度计的设计原理,在该设计中采用的传感器是 HF3223 湿度传感器,这种传感器是将相对湿 度转换为频率信号的传感器,信号处理部分采用的是 LM331 组成的 F/V 电路,数字显示方式是 ICL7107 驱动的 LED 显示。
设 V 1 为最佳%R H 对应的设定值,
了 HF3223 湿度传感器,它具有体积小、 响应速度快、可靠性高等特点;信号处理 部分采用的是 L M 3 3 1 组成 的 F/V 电路;数字显示部分 采用 L E D 显示湿度。
电路模块设计
湿度采集模块 根据 系统设计组成框图,信号处 理部分是将传感器 HF3223
频率/电压转换器模块 信号的处理 采用频率 / 电压转换器,这类转换器有很 多,在该设计中采用 LM331 集成芯片构 成的频率 / 电压转换器。LM331 构成的频 率 / 电压双向转换器具有精度高、线性度 高、温度系数低、功耗低以及动态范围宽 等特点,目前已经广泛用于数据采集、自 动控制和数字化及智能化测量仪器中。 利用 LM331 组成的电路如图 5 所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要前言第一章总体结构及设计方案1.1 设计任务要求和温湿度计的用途1.2 设计数字温湿度计的依据和意义第二章电路设计2.1 主控制模块电路2.1.1 STC89C52主要功能及引脚介绍2.1.2 STC89C52最小系统的基本电路2.1.3 STC89C52与各部分功能模块电路的连接2.2 显示电路模块2.2.1 12864的功能和引脚介绍2.2.2 12864与单片机的连接电路2.3 DS18B20温度传感器2.3.1 DS18B20的功能和引脚介绍2.3.2 DS18B20的测温原理2.3.3 DS18B20与单片机的接口电路2.4 HS1100湿度传感器2.4.1湿度传感器的主要特性2.4.2湿度测试电路2.5 按键以及报警2.6 总硬件设计图总结参考文献数字温湿度计的设计摘要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。
对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
关键词:单片机;DS18B20;温度传感器;数字温度计;STC89C52ABSTRACTWith the progress of The Times and development, microcontrollertechnology has spread to our life, work, scientific research, each domain, has become a more mature technology, this paper mainly introduces a STC89C52 based on single chip microcomputer temperature measurement system, a detailed description of the use of digital temperature sensor DS18B20 temperature measurement system development process, focusing on sensors in the single chip microcomputer hardware connection, software programming and the module system flow for a detailed analysis, especially digital temperature sensor DS18B20 data acquisition process. On the part of the circuit are introduced one by one, the system can realize realize temperature acquisition and display, and can according to need any set upper limit alarm temperature, it USES up quite convenient, has high precision, wide range, high sensitivity, small volume, low power consumption, suitable for our daily life and work, the agricultural production of temperature measurement, also can be used as temperature processing module embedded other system, as the other main system auxiliary extension. DS18B20 and STC89C52 combined to realize the most Jane temperature detection system, the system structure is simple, strong anti-jamming ability, suitable for bad environment field temperature measurement, a broad prospect of application.Keywords: SCM;DS18B20;temperature sensor;digital thermometer;STC89C52前言温度与湿度与人们的生活息息相关。
在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。
准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。
传统的温度计是用水银柱来显示的,虽然结构简单、价格便宜,但是它的精确度不高,不易读数。
传统湿度计采用干湿球显示法,不仅复杂而且测量精度不高。
而采用单片机对温湿度进行测量控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。
对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
用12864数码管来显示温湿度的数值,看起来更加直观。
测量温湿度的关键是温湿度传感器。
采用18B20温度传感器以及HS1100湿度传感器与单片机AT89C52相连外围电路比较简单。
所以,本次设计以18B20温度传感器以及HS1100湿度传感器为例,介绍基于单片机的数字温湿度计的设计。
第一章设计任务要求和温湿度计的用途1.1 设计任务及要求设计一个以单片机为核心的温湿度测量系统,可实现的功能为:(1)测量温度值精度为±1℃,测量湿度值精确 1%;(2)系统允许的误差范围为1℃和1%以内;(3)系统可由用户预设温度值和湿度值,测温范围-40℃~+125℃,测湿范围0~100%;(4)超出预设值时系统会自动报警,即发光二极管亮;(5)系统采用数码管显示,能显示设定温湿度值和测得的实际温湿度值。
1.2 设计数字温湿度计的依据和意义温度与湿度与人们的生活息息相关。
在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。
准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。
传统的温度计是用水银柱来显示的,虽然结构简单、价格便宜,但是它的精确度不高,不易读数。
传统的湿度计采用干湿球显示法,不仅复杂而且测量精度不高。
而采用单片机对温湿度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。
用12864来显示温湿度的数字看起来更加直观。
总之,无论在日常生活中还是在工业、农业方面都离不开对周围环境进行温湿度的测量。
因此,研究温湿度的控制和测量具有非常重要的意义。
第二章电路设计2.1主控制器模块电路2.1.1 STC89C52主要功能及引脚介绍单片机STC89C52具有低电压供电高性能COMS8位单片机,片内含有8K bytes 的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器,在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程 Flash。
图2.1 STC89C52引脚图2.1.2 STC89C52最小系统的基本电路最小系统是指能进行正常工作的最简单电路。
STC89C52最小应用系统它包含五个电路部分:电源电路、时钟电路、复位电路、片内外程序存储器选择电路、输入输出接口电路。
其中电源电路、时钟电路、复位电路是保证单片机系统能够正常工作的最基本的三部分电路,缺一不可。
(1)电源电路芯片引脚VCC一般接上直流稳压电源+5V,引脚GND接电源+5V的负极,电源电压范围在3.3~5V之间,可保证单片机系统能正常工作。
图2.2 电源电路(2)晶振电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD 分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
在本设计中时钟采用内部方式产生,晶振振荡频率使用12MHZ。