#include <reg52.h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围 0~255
#define uint unsigned int //无符号整型 宏定义 变量范围 0~65535
#include <intrins.h>
sbit SCL=P1^4; //SCL 定义为 P1 口的第 3 位脚,连接 ADC0832SCL 脚
sbit DO=P1^5; //DO 定义为 P1 口的第 4 位脚,连接 ADC0832DO 脚
sbit CS=P1^3; //CS 定义为 P1 口的第 4 位脚,连接 ADC0832CS 脚
sbit beep = P3^3; //蜂鸣器 IO 口定义
uint temperature,s_temp ; //温度的变量
uchar shidu; //湿度等级
uchar s_high = 70,s_low = 25;//湿度报警参数
sbit dianji = P1^6; //电机 IO 定义
bit flag_300ms ;
uchar key_can; //按键值的变量
uchar menu_1; //菜单设计的变量
sbit rs=P1^0; //1602 数据/命令选择引脚 H:数据 L:命令
sbit rw=P1^1; //1602 读写引脚 H:数据寄存器 L:指令寄存器
sbit e =P1^2; //1602 使能引脚 下降沿触发
uchar code table_num[]="0123456789abcdefg";
void write_com(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
void write_data(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
void key_with()
{
if(key_can==1)
{
menu_1++;
if(menu_1>=3)
{
menu_1=0;
int_1602();
}
}
if(menu_1==1)
{
if(key_can==2)
{
s_high++;
if(s_high>99)
s_high=99;
}
}
if(key_can==3)
{
s_high--;
if(s_high<=s_iow)
s_high=s_low+1;
}
write_sfm2(2,4,s_high);
write_sfm2(2,12,s_low);
write_com(0x80+0x40+4);
write_com(0x0f);
}
if(menu_1==2)
{
if(key_can==2)
{
s_low++;
if(s_low>=s-high)
s_low==s_high-1;
}
if(key_can==3)
{
s_low--;
if(s_low<=1)
s_low=1;
}
write_sfm2(2,4,s_high);
write_sfm2(2,12,s_low);
write_com(0x80+0x40+4);
write_com(0x0f);
}
void clok_h_1()
{
static uchar value,value1;
if(shidu<=s_low)
{
value++;
if(value>=2)
{
value=10;
beep=-beep;
dianji=0;
}
}else
beep=1;
if(shidu>=s-high)
{
value1++;
if(value>=2)
{
value1=10;
beep=1;
dianji=1;
}
}else
value1=0;
}
void main()
{
int_1602();
time_int();
while(1)
{
key();
if (key_can<10)
{
key_with();
}
if(flag_300ms==1)
{
flag_300ms==0;
clock_h_1();
if(beep==1)
{
shidu=ad0823read(1,0);
shid=99-shidu*99/255;
}
if(menu_1==0)
{
write_sfm2(1,9,shidu);
}
}
delay_1ms(1);
}
}
|