{
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] ... 下一页 >>