数字温湿度计的设计(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 所示。
(完整版)多功能温湿度计设计毕业设计
多功能数字温湿度计设计【摘要】温度和湿度是两个最基本的环境参数,人们生活与温湿度息息相关。
在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量。
准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。
因此研究温湿度的测量方法具有重要的意义。
本论文讲述了一种以单片机AT89C52为主要控制器件,以DHT22为数字温湿度传感器的新型数字温湿度计,具有时间、温湿度显示,并且可以自行设置温度预警值,当温度超出预警值时报警,存储温湿度的功能。
【关键词】温度;湿度;DHT22;时间Multifunction digital hygrometer design [Abstract]Temperature and humidity are the two most basic environmental parameters, people's life is closely related to temperature and humidity. In industrial and agricultural production, meteorology, environmental protection, national defense, scientific research departments, often need to measure temperature and humidity to the environment. Accurate measurement of temperature and humidity in biological pharmaceutical, food processing, paper making industries is of vital importance. So the temperature and humidity measurement method has the vital significance.This paper tells the story of a single chip microcomputer AT89C52 as the main control device, a new type of digital temperature and humidity for DHT22 digital temperature and humidity meter, time, temperature and humidity display, and was able to set temperature warning value, when temperature exceeds the warning alarm, the function of storage temperature and humidity.[Keyword] Temperature; humidity; DHT22; time目录1.温湿度计发展史--------------------------------------- 1 1.1温度计的发展史------------------------------------------------- 11.2湿度计的发展史------------------------------------------------- 22. 设计任务分析及方案论证------------------------------- 4 2.1设计数字温湿度计的需求分析------------------------------------- 4 2.2设计任务及要求------------------------------------------------- 4 2.3 设计总体方案及方案论证----------------------------------------- 5 2.4器件的选择----------------------------------------------------- 5 2.4.1主控制器芯片------------------------------------------------- 5 2.4.2温湿度传感器------------------------------------------------- 9 2.4.3时钟芯片---------------------------------------------------- 10 2.4.4存储芯片---------------------------------------------------- 11 2.4.5 LCD12864 --------------------------------------------------- 122.5温湿度测量的方法及分析---------------------------------------- 143. 硬件电路的设计-------------------------------------- 14 3.1总体结构框图-------------------------------------------------- 14 3.2 主控制电路和测温湿电路---------------------------------------- 15 3.3 存储模块与时钟模块电路---------------------------------------- 163.4 显示模块电路 ------------------------------------------------- 174. 软件设计及分析-------------------------------------- 174.1程序流程图---------------------------------------------------- 17 4.2 DHT22工作原理------------------------------------------------ 18 4.3 DS1302工作原理----------------------------------------------- 25 4.4 AT24C02工作原理---------------------------------------------- 294.5 LCD12864的工作原理------------------------------------------- 365. 结论-------------------------------- 错误!未定义书签。
12864LCD上显示温湿度.
12864LCD显示温湿度第一种方式:/**********************DHT11与12864LCD************************/ #include <reg52.h>#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;//并行指令,数据选择信号sbit RW = P2^1;//读写信号sbit EN = P2^2;//并行使能信号sbit PSB = P2^3;//并串口选择信号sbit RST = P2^5;//复位信号sbit io = P1^0;//DHT11总线void read_io();//开始信号,读数据并校验void delay(uint a);//延时函数void LCD_init();//LCD初始化程序void write_cmd(uchar cmd);//写指令void write_data(uchar dat);//写数据bit check_busy();//检测LCD忙信号//void clear_gcrom();//清除GCROMvoid delay1();//10us延时void lcd_dis_code(uint cmd_addr,uchar num,uchar dis[]);//显示函数void lcd_pos(unsigned char X,unsigned char Y);//LCD显示位置计算uchar code lcd[]={"温湿度检测系统"};uchar code lcd1[]={" 温度:"};uchar code lcd2[]={" 湿度:"};uchar code lcd3[]={"℃"};uchar code lcd4[]={"%RH"};uchar str1[]={" "};uchar str2[]={" "};void main(){uchar k,j;LCD_init();lcd_dis_code(0x80,16,lcd);lcd_dis_code(0x88,9,lcd1);lcd_dis_code(0x98,9,lcd2);lcd_dis_code(0x8e,2,lcd3);lcd_dis_code(0x9e,5,lcd4);while(1){read_io();//读取温湿度数据//clear_gcrom();//湿度for(k=0; k<2; k++){lcd_pos(4,k+4);write_data(str1[k]);}//clear_gcrom();//温度for(j=0; j<2; j++){lcd_pos(3,j+4);write_data(str2[j]);}delay(500);}}void delay1()//延时10us{unsigned char i;for(i=0; i<3; i++);}void lcd_pos(unsigned char X,unsigned char Y){unsigned char pos;if ( X == 1 ){ pos = 0x80 ; }else if ( X == 2 ){ pos = 0x90 ; }else if ( X == 3 ){ pos = 0x88 ; }else{ pos = 0x98 ; }write_cmd(Y | pos);//数据指针=80+地址变量}/**********************DHT11模块**********************/ uchar receive_byte()//接收一个字节{uchar i,temp;for(i=0;i<8; i++){count = 2;while((!io) && count++)//等待50us低电平结束,并防止死循环temp = 0;delay1();delay1();delay1();if (io==1){temp = 1;count = 2;while(io && count++);}elsetemp = 0;data_byte<<=1;data_byte|=temp;}return (data_byte);}void read_io()//开始信号,读数据并校验{io = 0;delay(18);//主机拉低18msio = 1;//DATA总线由上拉电阻拉高主机延时20usdelay1();delay1();delay1();delay1();io = 1;//主机设置为输入高电平,判断从机响应信号if(!io){count = 2;while((!io)&&count++);//判断DHT11发出80us低电平响应信号是否结束count = 2;while(io && count++);//判断DHT11拉高总线80us高电平是否结束RH_temp = receive_byte();RL_temp = receive_byte();TH_temp = receive_byte();TL_temp = receive_byte();CK_temp = receive_byte();io = 1;num = (RH_temp + RL_temp + TH_temp + TL_temp);//数据校验if(num == CK_temp){RH_data = RH_temp;RL_data = RL_temp;TH_data = TH_temp;TL_data = TL_temp;CK_data = CK_temp;}}//湿度整数部分str1[0] = (char)(0x30 + RH_data/10);str1[1] = (char)(0x30 + RH_data%10);//温度整数部分str2[0] = (char)(0x30 + TH_data/10);str2[1] = (char)(0x30 + TH_data%10);}/**********************E N D**********************//**********************12864模块程序**********************/ /*void clear_gcrom(){uchar i,j,k;lcd_x = 0x80;lcd_y = 0x80;write_cmd(0x34);for(i = 0 ; i < 2 ; i++) //上下两屏幕{for(j = 0 ; j < 32 ; j++){write_cmd(lcd_y+j);write_cmd(lcd_x);for(k = 0 ; k < 16 ; k++){write_data(0x00);}}lcd_x = 0x88;}write_cmd(0x36);write_cmd(0x30);}*/void lcd_dis_code(uint cmd_addr,uchar num,uchar dis[]) {uint i;write_cmd(cmd_addr);for(i=0; i<num; i++)write_data(dis[i]);}void LCD_init(){PSB = 1;RST = 0;delay(5);RST = 1;delay(5);write_cmd(0x34);//扩充指令delay(5);write_cmd(0x30);//基本指令delay(5);write_cmd(0x0c);//显示开关光标delay(5);write_cmd(0x01);//清屏delay(5);}bit check_busy(){bit temp;RS = 0;RW = 1;EN = 1;delay(5);temp = (bit)(P0&0x80); //按位与操作EN = 0;return (temp);}void write_cmd(uchar cmd){while(check_busy());RS = 0;RW = 0;EN = 0;delay(5);P0 = cmd;delay(5);EN = 1;delay(5);EN = 0;}void write_data(uchar dat){while(check_busy());RS = 1;RW = 0;EN = 0;P0 = dat;delay(5);EN = 1;delay(5);EN = 0;}void delay(uint a){uchar i;while(a--){for(i=0; i<113; i++);}}/**********************E N D**********************/第二种编程方式,其实大体都差不了多少#include <reg52.h> #include <intrins.h>/******************************************************** 宏定义********************************************************/#define uint unsigned int#define uchar unsigned char#define noACK 0#define ACK 1#define STATUS_REG_W 0x06#define STATUS_REG_R 0x07#define MEASURE_TEMP 0x03#define MEASURE_HUMI 0x05#define RESET 0x1eenum {TEMP,HUMI};typedef union //定义共用同类型{unsigned int i;float f;}value;/********************************************************位定义********************************************************/sbit lcdrs=P2^0;sbit lcdrw=P2^1;sbit lcden=P2^2;sbit SCK = P1^0;sbit DA TA = P1^1;/********************************************************变量定义********************************************************/uchar table2[]="SHT11 温湿度检测";uchar table3[]="温度为:℃";uchar table4[]="湿度为:";uchar table5[]=".";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(uchar 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 DA TA=0;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;}DA TA=1; //释放数据线SCK=1;error=DATA; //检查应答信号,确认通讯正常_nop_();_nop_();_nop_();SCK=0;DA TA=1;return error; //error=1 通讯错误}/******************************************************** SHT11读字节程序********************************************************/char s_read_byte(unsigned char ack){unsigned char i,val=0;DA TA=1; //释放数据线for(i=0x80;i>0;i>>=1) //高位为1,循环右移{SCK=1;if(DATA)val=(val|i); //读一位数据线的值SCK=0; }DA TA=!ack; //如果是校验,读取完后结束通讯;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;_nop_();_nop_();_nop_();DA TA=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;DA TA=1;SCK=0; //准备for(i=0;i<9;i++) //DA TA保持高,SCK时钟触发9次,发送启动传输,通迅即复位{ SCK=1;SCK=0;}s_transstart(); //启动传输 }/********************************************************SHT11温湿度检测********************************************************/char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned 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(float *p_h umidity ,float *p_temperature){const float C1=-4.0; // 12位湿度精度修正公式const float C2=+0.0405; // 12位湿度精度修正公式const float C3=-0.0000028; // 12位湿度精度修正公式const float T1=+0.01; // 14位温度精度 5V条件修正公式const float T2=+0.00008; // 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*0.01 - 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<0.1)rh_true=0.1; //湿度最小修正*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*)&temp_val.i,&checksum,TEMP); //温度测量error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI); //湿度测量if(error!=0) s_connectionreset(); ////如果发生错误,系统复位else{humi_val.f=(float)humi_val.i; //转换为浮点数temp_val.f=(float)temp_val.i; //转换为浮点数calc_sth10(&humi_val.f,&temp_val.f); //修正相对湿度及温度 temp=temp_val.f*10;humi=humi_val.f*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);//等待足够长的时间,以现行下一次转换}}。
数字温度计设计毕业设计(两篇)2024
数字温度计设计毕业设计(二)引言概述数字温度计是一种用于测量温度的电子设备,它通过传感器将温度转换为数字信号,然后显示在数字屏幕上。
本文将针对数字温度计的设计进行详细讨论,包括硬件设计和软件设计两个主要方面。
硬件设计部分将包括传感器选择、信号调理电路设计和数字显示设计;软件设计部分将包括嵌入式程序设计和用户界面设计。
通过本文的详细介绍,读者将能够了解到数字温度计的设计原理、设计流程和关键技术。
正文内容1. 传感器选择1.1 温度传感器类型1.2 温度传感器比较与选择1.3 温度传感器参数测试与校准2. 信号调理电路设计2.1 信号条件2.2 放大和滤波电路设计2.3 ADC(模数转换器)选型和使用3. 数字显示设计3.1 显示芯片选型和使用3.2 显示屏尺寸和分辨率选择3.3 显示内容设计和显示方式选择4. 嵌入式程序设计4.1 控制器选型和使用4.2 温度数据采集与处理4.3 温度数据存储和传输5. 用户界面设计5.1 按键和控制部分设计5.2 显示界面设计与实现5.3 温度单位与切换设计正文详细阐述1. 传感器选择1.1 温度传感器类型在数字温度计的设计中,可以选择多种温度传感器,包括热电偶、热敏电阻和半导体温度传感器等。
本文将比较各种传感器的特点和适用范围,从而选择最合适的传感器。
1.2 温度传感器比较与选择通过比较热电偶、热敏电阻和半导体温度传感器的精度、响应时间和成本等特点,结合设计需求和成本预算,选择最佳的温度传感器。
1.3 温度传感器参数测试与校准为了确保传感器的准确性,需要对其参数进行测试和校准。
本文将介绍传感器参数测试的方法和仪器,以及校准的步骤和标准。
2. 信号调理电路设计2.1 信号条件传感器输出的信号需要进行电平调整和滤波等处理,以便进一步处理和显示。
本文将介绍信号调理的基本原理和设计方法。
2.2 放大和滤波电路设计为了放大和滤波传感器输出的微弱信号,本文将介绍放大和滤波电路的设计原理和实现方法,包括运放、滤波器和滤波器的选型和参数设置。
数字式温湿度传感器设计
数字式温湿度传感器设计目录一、设计背景 (2)二、设计方案 (2)(一)温度传感器 (2)(二)湿度传感器 (2)(三)分析比较 (3)三、系统总体设计 (3)四、硬件设计 (3)(一)温度传感器 (3)(二)湿度传感器 (5)(三)A/D转换设计 (5)五、软件设计 (7)(一)注意事项 (7)(二)标度转变 (7)(三)主程序流程图 (8)(四)TO中断流程图 (9)(五)温度采样子程序流程图 (10)(六)报警子程序流程图 (11)六、设计总结 (11)参考文献 (12)附录-程序清单 (13)一、设计背景防潮、防霉、防腐、防暴是仓库日常管理的重要工作,亦是衡量一个合格仓库管理的重要指标,它直接影响到存储物资的使用寿命和工作的可靠性。
为了确保日常工作的顺利进行,最首要解决的问题是加强仓库内部温度和适度的检测。
传统的检测方法是用与湿度表、毛发湿度表、双金属式测量计和湿度试纸等测量设备,通过人工进行检测仓,完成库内的各项温湿度测量工作。
这种人工测量方式即耗费人力物力又可能存在很多人为误差。
二、设计方案(一)温度传感器方案一:采用热电阻温度传感器。
热电阻是利用导体的电阻随温度变化的特性制成的测温元件。
现应用较多的有铂、铜、镍等热电阻。
主要的特点为精度高、测量范围大、便于远距离测量。
铂的物理、化学性能极稳定,耐氧化能力强,易提纯,复制性好,工业性好,电阻率较高,因此,铂电阻用于工业检测中高精密测温和温度标准。
缺点是价格贵,温度系数小,受到磁场影响大,在还原介质中易被玷污变。
按IEC 标准测温范围-200~650℃,百度电阻比W(100)=1.3850 时,R0 为100Ω和10Ω,允许的测量误差A 级为±(0.15℃+0.002 |t| ),B 级为±(0.3℃+0.005 |t| )。
铜电阻的温度系数比铂电阻大,价格低,也易于提纯和加工;但电阻率小,在腐蚀性介质中使用稳定性差。
SHT11温湿度测量仪12864显示
/********************************************************************** 头文件tou.h***********************************************************************/ #ifndef _tou_h_#define _tou_h_#define uchar unsigned char#define uint unsigned int#define LCD P2 //定义LCD数据口sbit fm=P3^4; //定义蜂鸣器/********************************************************************** SHT11定义***********************************************************************/ //接口、命令定义sbit SCK=P1^6; //定义串行时钟接口sbit DA TA=P1^7; //定义数据传输接口#define noACK 0 //继续传输数据,用于判断是否结束通讯#define ACK 1 //结束数据传输(ack=1表明结束数据传输)enum {TEMP,HUMI}; //定义枚举类型#define cwd 0x03 //测温度命令#define csd 0x05 //测湿度命令#define reset 0x1e //复位命令//函数定义void delayms(uint xms); //定义SHT11延时函数void start(); //SHT11启动函数char write_byte(uchar value); //写字节函数char read_byte(uchar ack); //读字节函数void connectionreset(); //通讯复位函数char softreset();celiang_sht11(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode); void jisuan_sht11(float *p_humidity,float *p_temperature);typedef union //定义共用同类型{unsigned int i;float f;} value;/********************************************************************** 12864定义***********************************************************************/ //引脚定义sbit rs=P1^0;sbit rw=P1^1;sbit e=P1^2;sbit psb=P1^3;//函数定义Void LCD_delayms(uint xms); //定义LCD延时函数Void check_busy(); //定义LCD查忙函数Void chushi(); //定义LCD初始函数Void xiezl(uchar zl); //定义LCD写命令函数void xiesj(uchar sj); //定义LCD写数据函数#endif/********************************************************************** 带字库LCD12864文件12864_ZK.c***********************************************************************/ #include<reg51.h>#include<tou.h> //将头文件包含uchar code table1[]=" 温湿度测量仪"; //LCD第一行uchar code table2[]="T - "; //LCD第二行uchar code table3[]="H - "; //LCD第三行uchar code table4[]="℃"; //LCD第四行uchar code table5[]="RH";/********************************************************************** LCD延时函数***********************************************************************/ void LCD_delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}/********************************************************************** 查询忙碌函数***********************************************************************/ void check_busy(){rw=1;rs=0;LCD=0xff;e=1;while(P2&0x80); //查询忙碌标志位BF e=0;}/********************************************************************** 写入指令函数***********************************************************************/ void xiezl(uchar zl){check_busy();rs=0;rw=0;LCD=zl;LCD_delayms(1);e=1;LCD_delayms(1);e=0;}/********************************************************************** 写入数据函数***********************************************************************/ void xiesj(uchar sj) //写数据{check_busy();rs=1;rw=0;LCD=sj;LCD_delayms(1);e=1;LCD_delayms(1);e=0;}/********************************************************************** LCD初始化函数***********************************************************************/ void chushi() //初始函数{psb=1; //并行模式LCD_delayms(50);xiezl(0x30); //功能设定(基本指令)xiezl(0x0c); //显示状态(整体显示、关游标、关游标位置)xiezl(0x01); //清除屏幕xiezl(0x06); //进入模式(地址递增)}/**********************************************************************主文件swdj.c***********************************************************************/#include<reg51.h>#include <intrins.h>#include<tou.h>uint temp_h,temp_l,humi_h,humi_l; //定义上下限温度、湿度值/**********************************************************************延时函数***********************************************************************/void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=0;j<110;j++);}/**********************************************************************启动函数第一个SCK时钟为高电平时,DA TA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;第二个SCK时钟为高电平时,DA TA再次翻转为高电平。
(完整word版)数字温湿度计的设计(12864)
目录摘要前言第一章总体结构及设计方案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, microcontroller technology 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 upquite 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前言温度与湿度与人们的生活息息相关。
基于128_64点阵液晶显示的智能温度控制器的设计与实现
ISSN1672-4305CN12-1352/N实 验 室 科 学LABORATORY SC I ENCE 第13卷 第3期 2010年6月Vol 113 No 13 J un 12010实验技术基于128@64点阵液晶显示的智能温度控制器的设计与实现李志广1,张 辉1,王永学1,张志东2(1.河北工业大学理学院,天津 300130;2.深圳市拓普微科技开发有限公司,广东深圳518057)摘 要:以智能温度控制器的设计实验为依托,文章给出了一套液晶显示模块驱动实验的设计方案,详细介绍了L M 3033液晶显示模块的功能特性、接口电路及应用程序。
实验中应用DS18B20温度传感器实现温度信号的采集,并把采集到的信号传送给单片机,单片机将信号进行处理完成相应的智能控制,同时将环境温度、系统状态等信息显示在L M 3033液晶显示模块上。
关键词:液晶显示;温度控制;LM 3033中图分类号:TN 141 文献标识码:B do :i 10.3969/.j issn .1672-4305.2010.03.018Desi gn a nd m i ple m entati on of the i ntelli gent te mperaturecontroll er based on 128@64dotmatri x li qu i d crystal displayLI Zh i-guang 1,Z HANG H ui 1,WANG Y ong-xue 1,Z HANG Zhi-dong2(1.Schoo l of Sciences ,H ebeiU niversity of Techno l o gy ,T ian ji n 300130,Ch i n a ;2.Shenzhen Top -w ay Technology Co .,Ltd .,Shenzhen 518057,China)A bstract :B ased on t h e i n te lli g ent te m perat u re contr o ller desi g n exper i m en,t a desi g n sche m e of the liqu i d crystal d isp lay m odu le (LC M )driv i n g experi m ent is g i v en in th is paper .The functi o na l pr oper -ties ,the interface circ u i,t and the app lication pr ogra m of the L M 3033LC M are i n troduced in detai.l I n th is experi m en,t t h e te m perature si g nal is co llected through the DS18B20dig ita l te m perature sensor ,and then trans m itted to theMCU.The te m perat u re signal processing and the intelligent control are per -for m ed by M C U.A t the sa m e ti m e ,i n for m ations ,such as a m bient te m perature and syste m status are d isp l a yed on the L M 3033LC M.K ey words :li q u i d crystal d isp lay ;te m perat u re con tro;l L M 3033基金项目:国家自然科学基金(项目编号:10704022);河北工业大学教学改革项目。
- 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。