温度湿度无线监测系统设计 毕设.docx_第1页
温度湿度无线监测系统设计 毕设.docx_第2页
温度湿度无线监测系统设计 毕设.docx_第3页
温度湿度无线监测系统设计 毕设.docx_第4页
温度湿度无线监测系统设计 毕设.docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

温度湿度无线监测系统一、总述本系统由一个监测终端和多个监测点组成,可实现远程监测,传输距离可达2000米,支持最多225路多地同时监测。监测点具有测量温度湿度以及发送信息的功能,监测终端能够接收各监测点的序号温度湿度信息,并通过液晶屏显示。 无线收发使用315m天线,主芯片为stc89c52,温度湿度传感器为dht11,使用lcd1602显示接收到的监测点序号温度值和湿度值。二、硬件电路设计、监测点电路设计监测点电路方框图电源温度湿度传感器单片机315m发射天线、监测终端电路设计监测终端电路方框图电源单片机液晶显示315m接收天线3、仿真图检测端每次信号发送4遍。数据由引导码加24位数据码组成,0码由01表示,1码由011表示。上图中发送的数据为0x01(固定地址位),0x00(模拟温度值),0x00(模拟湿度值)。程序中将p1.1和p1.0赋相同电平,在p1.1上接led,可以检查信号发送情况。三、软件程序设计1、程序流程图开 始液晶显示初始化显示接收数据接收是否正确数据解码处理开 始延时1s编码值发送4遍读取温度湿度数据编码n y 监测点程序流程图 监测终端程序流程图2、程序源代码(1)dht11读温湿度程序 /*dht11读温*/#includedht11.hunsigned char wendu,shidu; void delay_us() unsigned char i; i-; i-; i-; i-; i-; i-;void delay_ms(unsigned char x)unsigned char n;while(x-)!=0)for(n=0;n115;n+);char receive()unsigned int i;unsigned char temp,respond;unsigned char com_data=0;for(i=0;i=7;i+)respond=2;while(!trh)&respond+);delay_us();delay_us();delay_us(); if(trh) temp=1; respond=2; while(trh)&respond+); else temp=0; com_data=1; com_data|=temp;return(com_data);/湿度读取子程序 /温度高8位= tl_data/温度低8位= th_data/湿度高8位= rh_data/湿度低8位= rh_data/校验 8位 = ck_data void read()unsigned int respond;unsigned int rh_temp,rl_temp,th_temp,tl_temp,ck_temp,untemp, rh_data,rl_data,th_data,tl_data,ck_data;/主机拉低18mstrh=0;delay_ms(18);trh=1;/data总线由上拉电阻拉高 主机延时20usdelay_us();delay_us();delay_us();delay_us();trh=1;/判断dht11是否有低电平响应信号 如不响应则跳出,响应则向下运行if(!trh) respond=2; /判断dht11发出 80us 的低电平响应信号是否结束 while(!trh)&respond+); respond=2; /判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while(trh)&respond+); /数据接收 rh_temp=receive(); rl_temp=receive(); th_temp=receive(); tl_temp=receive(); ck_temp=receive(); trh=1; untemp=(rh_temp+rl_temp+th_temp+tl_temp); /数据校验if(ck_temp=untemp)rh_data=rh_temp;rl_data=rl_temp;th_data=th_temp;tl_data=tl_temp;ck_data=ck_temp;/ 温度值 湿度值wendu=(unsigned char)(th_data );shidu=(unsigned char)(rh_data );(2)监测点发送数据程序/*发送8位地址和温度湿度地址位定为0x01 */#include#include#includesbit send0=p10;sbit send1=p11;/接led用于显示p1.0,p1.1的电位unsigned char temp,n;unsigned char adress=0x01;/定义地址 void send(unsigned char x)/ 发送数据函数 unsigned char i; temp=0x80; /temp用于取位 for(i=0;i=1; /将对应位右移,取下一位 void main()while(1)read();/读取温度湿度函数 n=4; while(n) /头码发送send0=1; send1=1; delayms(20);/间隔 send(adress);/发送地址 send(wendu);/发送数据1 send(shidu);/发送数据2 send0=0; send1=0; delayms(20); -n; /循环4次 delay1s();(3)接收终端数据处理程序/*- 接收1个头码 8位地址码 2个8位数据 25位液晶分别显示 地址数,数据1,数据2 -*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#includesbit ir=p32; /无线接口标志 /*- 全局变量声明-*/ unsigned char irtime;/红外用全局变量bit irpro_ok,irok;unsigned char adres1,adres2,dat1,dat2,dat3,dat4;/显示变量,地址,数据1,数据2 的个位十位unsigned char irdata25;/存储变量unsigned char display10=0,1,2,3,4,5,6,7,8,9;/显示字符数组unsigned char recv_data3;/*- 函数声明-*/void ir_work(void);void ircordpro(void);/*- 定时器0中断处理-*/void tim0_isr (void) interrupt 1 using 1 irtime+; /用于计数2个下降沿之间的时间/*- 外部中断0中断处理-*/void ex0_isr (void) interrupt 0 /外部中断0服务函数 static unsigned char i; /接收无线信号处理 static bit startflag; /是否开始处理标志位 if(startflag) if(irtime=140)/引导码 tc9012的头码,2*19ms/0.256ms i=0; irdatai=irtime;/存储每个电平的持续时间,用于以后判断是0还是1 irtime=0; i+; if(i=25) /接收完头码和24位数据,数据自加到25 irok=1; i=0; elseirtime=0;startflag=1;/*- 定时器0初始化-*/void tim0init(void)/定时器0初始化 tmod=0x02;/定时器0工作方式2,th0是重装值,tl0是初值 th0=0x00; /重载值 tl0=0x00; /初始化值 et0=1; /开中断 tr0=1; /*- 外部中断0初始化-*/void ex0init(void) it0 = 1; /指定外部中断0下降沿触发,int0 (p3.2) ex0 = 1; /使能外部中断 ea = 1; /开总中断 /*- 无线码值处理-*/void ircordpro(void)/无线码值处理函数 unsigned char i, j, k ; unsigned char cord,value; if(irdata0140&irdata0160) k=1; for(i=0;i=2;i+) for(j=1;j10) /大于某值为1,这个和晶振有绝对关系,这里使用12m计算,此值可以有一定误差 3ms-/0.256 value|=0x01; if(j8) value=1; k+; recv_datai=value;value=0; adres1=recv_data0/10;/地址个位十位 adres2=recv_data0%10; dat1=recv_data1/10;/数据1个位十位 dat2=recv_data1%10; dat3=recv_data2/10;/数据2个位十位 dat4=recv_data2%10; irpro_ok=1;/处理完毕标志位置1 /*- 主函数-*/void main(void) ex0init(); /初始化外部中断 tim0init();/初始化定时器 lcd_init(); /初始化液晶 delayms(20); /延时有助于稳定 lcd_clear(); /清屏 lcd_write_string(5,0,receive); lcd_write_char(9,1,0xdf);/右上角点 lcd_write_char(10,1,c);/ lcd_write_char(15,1,%);/用于显示温度湿度单位 while(1)/主循环 if(irok) /如果接收好了进行数据处理 ircordpro(); irok=0; if(irpro_ok) /如果处理好后进行工作处理 lcd_write_char(1,1,displayadres1); /写地址位 lcd_write_char(2,1,displayadres2); lcd_write_char(7,1,displaydat1); /写数据1 lcd_write_char(8,1,displaydat2); lcd_write_char(13,1,displaydat3); /写数据2 lcd_write_char(14,1,displaydat4);irpro_ok=0; /处理完成标志 delay500ms(); delay500ms(); (4)监测终端液晶显示程序#include 1602.h#include delay.hsbit rs = p24; /定义端口 sbit rw = p25;sbit en = p26;#define rs_clr rs=0 #define rs_set rs=1#define rw_clr rw=0 #define rw_set rw=1 #define en_clr en=0#define en_set en=1#define dataport p0/*- 判忙函数-*/ bit lcd_check_busy(void) dataport= 0xff; rs_clr; rw_set; en_clr; _nop_(); en_set; return (bit)(dataport & 0x80); /*- 写入命令函数-*/ void lcd_write_com(unsigned char com) while(lcd_check_busy(); /忙则等待 rs_clr; rw_clr; en_set; dataport= com; _nop_(); en_clr; /*- 写入数据函数-*/ void lcd_write_data(unsigned char data) while(lcd_check_busy(); /忙则等待 rs_set; rw_clr; en_set; dataport= data; _nop_(); en_clr; /*- 清屏函数-*/ void lcd_clear(void) lcd_write_com(0x01); delayms(5); /*- 写入字符串函数-*/ void lcd_write_string(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) lcd_write_com(0x80 + x); /表示第一行 else lcd_write_com(0xc0 + x); /表示第二行 while (*s) lcd_write_data( *s); s +; /*- 写入字符函数-*/ void lcd_write_char(unsigned char x,unsigned char y,unsigned char data) if (y = 0) lcd_write_com(0x80 + x); else lcd_write_com(0xc0 + x); lcd_write_data( data); /*- 初始化函数-*/ void lcd_init(void) lcd_write_com(0x38); /*显示模式设置*/ delayms(5); lcd_write_com(0x38); delayms(5); lcd_write_com(0x38); delayms(5); lcd_write_com(0x38); lcd_write_com(

温馨提示

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

评论

0/150

提交评论