关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > MD600G的Internet无线传感器网络设计

MD600G的Internet无线传感器网络设计

作者:时间:2010-11-25来源:网络收藏

2.3 节点温度软件设计

  以下为温度节点的温度部分代码:

#include Mini51B.h//Mini51板头文件
#include LCD1602.h//液晶模块头文件
#include ds18b20.h//温度头文件
#include stdio.h//C标准函数库,系统集成
#include DS1302.h
#define uchar unsigned char
uchar n,temp;
uchar a[6]=000000; //串口字符串
SYSTEMTIME RTC;
void main(void) {
  float V; //记录温度浮点型
  uchar str_buff[20];//字符缓冲区
  SCON=0x50;//串口工作在方式1,波特率9600,//晶振为22.1184 MHz
  PCON=0;
  TMOD=0x20;//定时器1工作在方式2
  TH1=0xfa;
  TL1=0xfa;
  IE=0x91;//1001 0001,EA=1,ES=1,EX0=1
  IT0=1;//外部中断0为低电平触发方式
  TR1=1;//定时器T1开始计数
  ds18b20_init();//初始化温度时钟测试
  Initial_DS1302();//初始化时钟时间设定,执行一次后删除该部分
  Write1302(DS1302_MINUTE, 0x11);
  Write1302(DS1302_HOUR,0x08);
  Write1302(DS1302_DAY,0x15);
  Write1302(DS1302_MONTH,0x04);
  Write1302(DS1302_YEAR,0x08);
  lcd1602_init();
  lcd_put_xyns(2,1,14,www.stuelab.cn);
  delay_ms(1000);
  while(1) {
    for(n=0;n10;n++) { //10*0.5 s=5 s数据发送周期
      V=ReadTemperature()/100.0; //温度部分
      sprintf(str_buff,%2.2f,V); //格式转换
      lcd_put_xyns(1,1,11,Temperatur=);
      lcd_put_xyns(12,1,5,str_buff);
      seg7_disp(V*100);
      sprintf(a,%2.2f,V);//送串口字符串
      DS1302_GetTime(RTC);//时间部分
      DateToStr(RTC);
      TimeToStr(RTC);
      lcd_put_xyns(1,2,8,RTC.DateString);
      lcd_put_xyns(9,2,8,RTC.TimeString);
      delay_ms(500);
    }
    for(n=0;n6;n++) {
      SBUF=a[n];
      while(!TI);
      TI=0;
    }
  }
}
void external0() interrupt 0{//外部中断0发送数据
  for(n=0;n6;n++) {
    SBUF=a[n];
    while(!TI);
    TI=0;
  }
  delay_ms(1100);
}
void receving() interrupt 4 {//串口中断程序接收数据
  temp=SBUF;
  RI=0;
}

结语

  经过实际运行和测试证明,系统稳定可靠,系统误差达到了规定的要求。本系统虽然是以无线温度传感器节点为例,但同样也适合其他各种类型的节点,因此可以推广到的其他应用领域或行业,如电力抄表、配电自动化、路灯监控、道路交通等。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭