毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 计算机安全 >> 正文

语音报警温湿度监控仪系统原理设计 第10页

更新时间:2014-6-29:  来源:毕业论文

语音报警温湿度监控仪系统原理设计 第10页
 {
   //主机拉低18ms
       dht21data=0;
    Delaydht(5);
    dht21data=1;
  //总线由上拉电阻拉高 主机延时20us
    Delaydht_10us();
    Delaydht_10us();
    Delaydht_10us();
    Delaydht_10us();
  //主机设为输入 判断从机响应信号
    dht21data=1;
  //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行  
    if(!dht21data)   //T !  
    {
    U8FLAG=2;
  //判断从机是否发出 80us 的低电平响应信号是否结束 
    while((!dht21data)&&U8FLAG++);
    U8FLAG=2;
  //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
    while((dht21data)&&U8FLAG++);
  //数据接收状态  
    COM();
    U8RH_data_H_temp=U8comdata;
    COM();
    U8RH_data_L_temp=U8comdata;
    COM();
    U8T_data_H_temp=U8comdata;
    COM();
    U8T_data_L_temp=U8comdata;
    COM();
    U8checkdata_temp=U8comdata;
    dht21data=1;
          //数据校验
    U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
    if(U8temp==U8checkdata_temp)

    {
       U8RH_data_H=U8RH_data_H_temp;
       U8RH_data_L=U8RH_data_L_temp;
       U8T_data_H=U8T_data_H_temp;
       U8T_data_L=U8T_data_L_temp;
       U8checkdata=U8checkdata_temp;
    }

 }
}
double cal(unsigned char h,unsigned char l)
{
 double result;
 result=h*0x100+l;
 result/=10.0;
 return result;  
}
  
void main()
{

  unsigned i;//lcd1602
 char dis1[12];
 double humidity,temperature;
 TMOD=0x21;
 SCON=0x40;
 TH1=0x0F3;  //设置速率4800,(12M晶体)
 PCON=0x80;
 IT0=1;
  EA=1;
  EX0=1;
  IT1=1;
  EX1=1;

 TR1 = 1;          // 开始计时

 P1=0xff;
 while(1)
 { 
  
    //------------------------
    //调用温湿度读取子程序
    RH();
    //串口显示程序
    //--------------------------
  str[0]='D';
  str[1]='H';
  str[2]='T';
  str[3]=9;
    str[4]=U8RH_data_H;
    str[5]=U8RH_data_L;
    str[6]=U8T_data_H;
    str[7]=U8T_data_L;
    str[8]=0x0d;

    SendData(str,9) ;  //发送到串口 
    //读取模块数据周期不易小于 2S
    Delaydht(20000);

  lcd_init();    // 初始化LCD   
  delay(10);
  lcd_pos(0);    // 设置显示位置为第一行的第1个字符,0
  
  humidity=cal(U8RH_data_H,U8RH_data_L);
  temperature=cal(U8T_data_H,U8T_data_L);
  
  if(temperature>23)
  {
   lightTemp=LIGHTON;
  }
  else
  {
   lightTemp=LIGHTOFF;
  }
  
  if(humidity>50)
  {
   lightHumi=LIGHTON;
  }
  else
  {
   lightHumi=LIGHTOFF;
  }
  
  if(temperature>23||humidity>50)
  {
   beep=~beep;
  }
  else
  {
   beep=1;
  }
  sprintf(dis1,"humi: %.1fp    \0",humidity);
  
  i = 0;
  while(dis1[i] != '\0')
  {      
   lcd_wdat(dis1[i]);   //显示字符"humi: 20 %"
   i++;
  }
  lcd_pos(0x40);   // 设置显示位置为第二行第1个字符
  i = 0;
  sprintf(dis1,"temp: %.1fC    \0",temperature);
  while(dis1[i] != '\0')
  {
   lcd_wdat(dis1[i]); // 显示字符"temp: 20 C"
   i++;
  }

   }
 
}// main

void int_0() interrupt 0
{
     x++;

}
void int_1() interrupt 2
{
    y++;

}

附录5
#ifndef _1602LCD_H
#define _1602LCD_H
#include <intrins.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL ;
sbit rs = P2^7;  
sbit rw = P2^6;
sbit ep = P2^5;
delay(BYTE ms)
{       // 延时子程序
 BYTE i;
 while(ms--)
 {
  for(i = 0; i< 250; i++)
  {
   _nop_();
   _nop_();
   _nop_();
   _nop_();
  }
 }
}

BOOL lcd_bz()
{       // 测试LCD忙碌状态
 BOOL result;
 rs = 0;
 rw = 1;
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 result = (BOOL)(P0 & 0x80);
 ep = 0;
 return result; 
}

lcd_wcmd(BYTE cmd)
{       // 写入指令数据到LCD
 while(lcd_bz());
 rs = 0;
 rw = 0;
 ep = 0;
 _nop_();
 _nop_(); 
 P0 = cmd;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 0;  

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

语音报警温湿度监控仪系统原理设计 第10页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。