欢迎来到天天文库
浏览记录
ID:31661886
大小:369.00 KB
页数:6页
时间:2019-01-16
《远程温度监控系统(无线)(程序已附)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、远程温度监控系统(无线的)(程序已附)2007年06月25日星期一13:15 搞了一个星期终于在最后时刻搞出来了,这其中我可是熬了两个通宵,不容易啊,不过搞出来还是很欣慰的。不说废话了,介绍下我做的东西吧。 DS18B20测量多路温度(我做了两路,两个18B20在一条总线上,占了1个IO口),然后温度被单片机读取出来,经过处理,再编码,通过DF无线发射模块发射出去,这是下位机系统。上位机系统:DF无线接受模块把接受到的信号传给单片机,单片机对信号进行解码,然后通过LED显示出来,两个按键用来选择显示第几路温度。 系统就是这样了
2、,感觉很简单,做的时候可没少费功夫啊,光那个无线发射接受的解码就搞了好几天才搞出来,18B20的多路数据读取也郁闷了一小下,呵呵。本来是湿度也要做的,可是没买到湿度传感器也就算了。 18B20的程序网上多的是,我就不发了。 发射模块 接受模块 编码格式码组格式:前导码+同步码+数据帧编码程序includesbitsend=P1^1;voiddelay(intcnt){ inti;
3、 for(i=0;i4、lay(49); }}/*发送一字节数据*/voidsend_byte(unsignedchardat){ unsignedchari;unsignedchart; for(i=0;i<8;i++){ t=dat>>i; t=t&0x01; send_bit(t); } }/*send_dats*/voidmain(void){ send_byte(0xfe); send_byte(0xfe);/*发前导码*/while(1){ send_tong();/*发同步码*/ 5、 send_byte(0xaa); send_byte(0x56); }}接受解码程序#includesbitrec=P1^0;bitflag;unsignedchar get[2]={0x11,0x12};unsignedintN;/*定时中断*/voidtime(void)interrupt1using1{ N=N+1; }/*************接受同步码****************/unsignedcharrec_tong(void){ unsignedchara; N=0; 6、 while(!rec); while(rec); TR0=1; while(!rec); TR0=0; if(N>180&&N<220)a=1; elsea=0; returna;}/*接受1位数据*/unsignedcharrec_bit(void){ unsignedchara[6],b; N=0; while(rec); TR0=1; while(TR0) { if(N==2){a[0]=rec;} elseif(N==6)a[1]=rec; e7、lseif(N==10)a[2]=rec; elseif(N==14)a[3]=rec; elseif(N==18)a[4]=rec; elseif(N==22){a[5]=rec; TR0=0;} else; } if(!(a[0]==0&&a[1]==0)){flag=1;} elseif(!(a[4]==1&&a[5]==1)){flag=1;} elseif(!(8、a[3]==a[2])){flag=1;} el
4、lay(49); }}/*发送一字节数据*/voidsend_byte(unsignedchardat){ unsignedchari;unsignedchart; for(i=0;i<8;i++){ t=dat>>i; t=t&0x01; send_bit(t); } }/*send_dats*/voidmain(void){ send_byte(0xfe); send_byte(0xfe);/*发前导码*/while(1){ send_tong();/*发同步码*/
5、 send_byte(0xaa); send_byte(0x56); }}接受解码程序#includesbitrec=P1^0;bitflag;unsignedchar get[2]={0x11,0x12};unsignedintN;/*定时中断*/voidtime(void)interrupt1using1{ N=N+1; }/*************接受同步码****************/unsignedcharrec_tong(void){ unsignedchara; N=0;
6、 while(!rec); while(rec); TR0=1; while(!rec); TR0=0; if(N>180&&N<220)a=1; elsea=0; returna;}/*接受1位数据*/unsignedcharrec_bit(void){ unsignedchara[6],b; N=0; while(rec); TR0=1; while(TR0) { if(N==2){a[0]=rec;} elseif(N==6)a[1]=rec; e
7、lseif(N==10)a[2]=rec; elseif(N==14)a[3]=rec; elseif(N==18)a[4]=rec; elseif(N==22){a[5]=rec; TR0=0;} else; } if(!(a[0]==0&&a[1]==0)){flag=1;} elseif(!(a[4]==1&&a[5]==1)){flag=1;} elseif(!(
8、a[3]==a[2])){flag=1;} el
此文档下载收益归作者所有