远程温度监控系统(无线)(程序已附).docVIP

  • 2
  • 0
  • 约2.89千字
  • 约 6页
  • 2017-09-03 发布于湖北
  • 举报

远程温度监控系统(无线)(程序已附).doc

远程温度监控系统(无线的)(程序已附) 2007年06月25日 星期一 13:15 ?????? 搞了一个星期终于在最后时刻搞出来了,这其中我可是熬了两个通宵,不容易啊,不过搞出来还是很欣慰的。不说废话了,介绍下我做的东西吧。 ?????? DS18B20测量多路温度(我做了两路,两个18B20在一条总线上,占了1个IO口),然后温度被单片机读取出来,经过处理,再编码,通过DF无线发射模块发射出去,这是下位机系统。上位机系统:DF无线接受模块把接受到的信号传给单片机,单片机对信号进行解码,然后通过LED显示出来,两个按键用来选择显示第几路温度。 ?????? 系统就是这样了,感觉很简单,做的时候可没少费功夫啊,光那个无线发射接受的解码就搞了好几天才搞出来,18B20的多路数据读取也郁闷了一小下,呵呵。本来是湿度也要做的,可是没买到湿度传感器也就算了。 ?????? 18B20的程序网上多的是,我就不发了。 ????????????????? 发射模块 ????????????????? 接受模块 ????????????????????????????????????????? 编码格式 码组格式: 前导码+同步码+ 数据帧 编码程序 includereg51.h sbit send=P1^1; void delay(int cnt) { ??? int i; ??? for(i=0;icnt;i++); } /*发送同步信号*/ void send_tong(void) { ??? send=1; ??? delay(624); ??? send=0; ??? delay(10); } /*发送一位数据*/ void send_bit(unsigned char cet) { ??? if(cet) ???? { ?????? send=1; ?????? delay(49); ?????? send=0; ?????? delay(24); ????? } ???? else ???? { ?????? send=1; ?????? delay(24); ?????? send=0; ?????? delay(49); ???? } } /*发送一字节数据*/ void send_byte( unsigned char dat) { ???? unsigned char i; unsigned char t; ????? for(i=0;i8;i++) { ??????? t=dati; ???? t=t0x01; ???? send_bit(t); ?????? } ??? } /*send_dats*/ void main(void) { ??? send_byte(0xfe); ??? send_byte(0xfe);/*发前导码*/ while(1) { ??????? send_tong();/*发同步码*/ ??????? send_byte(0xaa); ??????? send_byte(0x56); ???? } } 接受解码程序 #includereg51.h sbit rec=P1^0; bit flag; unsigned char??? get[2]={0x11,0x12}; unsigned int N; /*定时中断*/ void time(void)interrupt 1 using 1 {??? N=N+1; ??? } /*************接受同步码****************/ unsigned char rec_tong(void) { ??? unsigned char a; ???? N=0; ????? while(!rec); ???? while(rec); ???? TR0=1; ???? while(!rec); ?????? TR0=0; ??? if(N180N220)a=1; ??? else a=0; ??? return a; } /*接受1位数据*/ unsigned char rec_bit(void) { ??? unsigned char a[6],b; ??? N=0; ??? while(rec); ??? TR0=1; ??? while(TR0) ??? { ????? if(N==2){a[0]=rec;} ???????? else if(N==6)a[1]=rec; ????????? else if(N==10)a[2]=rec; ??????????? else if(N==14)a[3]=rec; ???????????? else if(N==18)a[4]=rec; ?????????????? else if

文档评论(0)

1亿VIP精品文档

相关文档