资源简介

本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机 • 1.LCD1602液晶显示、水位监测传感器、按键、蜂鸣器组成 • 2.实时显示当前水量信息 • 3.可设置水量报警阈值 • 4.当水量高于最高阈值或低于最低阈值时报警

资源截图

代码片段和文件信息

//水量检测程序
//2019.5.20

#include 
//显示函数
#include 

//宏定义
#define uint unsigned int 
#define uchar unsigned char
#define Data_ADC0809 P1
 
//管脚声明
sbit LED_water= P2^1;
sbit baojing= P2^5;
sbit DQ = P2^0;
sbit fs=P3^4;
//ADC0809
sbit ST=P3^3;
sbit EOC=P3^6;
sbit OE=P3^2;
//按键
sbit Key1=P2^6;
sbit Key2=P2^7;
sbit Key3=P3^7;

signed char w;      //温度值全局变量
uint c;  //温度值全局变量
bit bdata flag=0;
//水量变量
uchar temp;
uchar yushe_wendu=50;
uchar yushe_water=100;
//按钮模式|  
uchar Mode=0;

//函数声明
extern uchar ADC0809();
extern void Key();

void delay(uint z)
{
uint ij;
for(i=0;i for(j=0;j<121;j++);
}
/*****延时子程序*****/
void Delay_DS18B20(int num)
{
  while(num--) ;
}

/*****读一个字节*****/
unsigned char ReadOneChar(void)
{
  unsigned char i=0;
  unsigned char dat = 0;
  for (i=8;i>0;i--)
  {
    DQ = 0;     // 给脉冲信号
    dat>>=1;
    DQ = 1;     // 给脉冲信号
    if(DQ)
    dat|=0x80;
    Delay_DS18B20(4);
  }
  return(dat);
}
/*****写一个字节*****/
void WriteOneChar(unsigned char dat)
{
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
    DQ = 0;
    DQ = dat&0x01;
    Delay_DS18B20(5);
    DQ = 1;
    dat>>=1;
  }
}


//ADC0809读取信息
uchar ADC0809()
{
uchar temp_=0x00;
//初始化高阻太

OE=0;
//转化初始化
ST=0;
//开始转换
ST=1;
ST=0;
//外部中断等待AD转换结束
while(EOC==0)
//读取转换的AD值
OE=1;
temp_=Data_ADC0809;
OE=0;
return temp_;
}

void Key()
{
//模式选择
if(Key1==0)
{
while(Key1==0);
if(Mode>=2) Mode=0;
else
{
    write_com(0x38);//屏幕初始化
    write_com(0x0d);//打开显示 无光标 光标闪烁
    write_com(0x06);//当读或写一个字符是指针后一一位
Mode++;
switch(Mode)
{
case 1:
{
write_com(0x80+12);//位置
break;
}
case 2:
{
write_com(0x38);//屏幕初始化
write_com(0x0c);//打开显示 无光标 无光标闪烁
Mode=0;
break;
}

}
}
}
if(Key2==0&&Mode!=0)
{
while(Key2==0);
switch(Mode)
{

case 1:
{
yushe_water++;
if(yushe_water>=255)
yushe_water=255;
write_com(0x80+13);
write_data(0x30+yushe_water/100);
write_data(0x30+yushe_water%100/10);
write_data(0x30+yushe_water%10);
break;
}
}
}
if(Key3==0&&Mode!=0)
{
while(Key3==0);
switch(Mode)
{
case 1:
{
yushe_water--;
if(yushe_water<=0)
yushe_water=0;
write_com(0x80+13);
write_data(0x30+yushe_water/100);
write_data(0x30+yushe_water%100/10);
write_data(0x30+yushe_water%10);
break;
}
}
}
delay(200);
write_com(0x38);//屏幕初始化
write_com(0x0c);//打开显示 无光标 无光标闪烁
}

void main()
{
Init1602();           //1602屏幕初始化函数
fs=0;   //水阀开启
while(1)
{
temp=ADC0809();   //读取水量
Key();   //按键扫描

if(Mode==0)   //判断是否为检测模式
{
Display_1602(yushe_wenduyushe_waterctemp);  //屏幕显示
if(temp>=yushe_water)   //判断是否超出阈值
{
LED_water=0; //指示灯亮,蜂鸣器报警
baojing=0;
fs=1;    //水阀关闭

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     150981  2013-12-22 21:11  水量检测protus仿真+程序\Backup Of LCDShow.DBK

     文件      42725  2013-12-22 21:11  水量检测protus仿真+程序\ISIS.dmp

     文件     179884  2019-05-20 11:57  水量检测protus仿真+程序\Last Loaded LCDShow.DBK

     文件     179882  2019-05-21 09:34  水量检测protus仿真+程序\LCDShow.DSN

     文件       1507  2019-05-22 16:50  水量检测protus仿真+程序\LCDShow.PWI

     文件       6168  2019-04-20 11:40  水量检测protus仿真+程序\yanwu.hex

     文件       6168  2014-03-26 16:15  水量检测protus仿真+程序\yanwu1.hex

     文件       1538  2013-12-26 22:45  水量检测protus仿真+程序\水量检测程序5.21\display.bak

     文件       1308  2019-05-21 09:31  水量检测protus仿真+程序\水量检测程序5.21\display.h

     文件       4006  2019-05-21 10:13  水量检测protus仿真+程序\水量检测程序5.21\yanwu

     文件       5052  2013-12-26 22:50  水量检测protus仿真+程序\水量检测程序5.21\yanwu.bak

     文件       3381  2019-05-21 10:16  水量检测protus仿真+程序\水量检测程序5.21\yanwu.c

     文件       2969  2019-05-21 10:13  水量检测protus仿真+程序\水量检测程序5.21\yanwu.hex

     文件         27  2019-05-21 10:13  水量检测protus仿真+程序\水量检测程序5.21\yanwu.lnp

     文件       9281  2019-05-21 10:13  水量检测protus仿真+程序\水量检测程序5.21\yanwu.LST

     文件      16298  2019-05-21 10:13  水量检测protus仿真+程序\水量检测程序5.21\yanwu.M51

     文件       5599  2019-05-21 10:13  水量检测protus仿真+程序\水量检测程序5.21\yanwu.OBJ

     文件       1143  2013-12-26 23:02  水量检测protus仿真+程序\水量检测程序5.21\yanwu.opt.bak

     文件        190  2019-05-22 16:50  水量检测protus仿真+程序\水量检测程序5.21\yanwu.plg

     文件       1653  2013-12-26 22:36  水量检测protus仿真+程序\水量检测程序5.21\yanwu.Uv2.bak

     文件      57709  2019-05-22 16:50  水量检测protus仿真+程序\水量检测程序5.21\yanwu.uvopt

     文件      13183  2013-12-27 00:22  水量检测protus仿真+程序\水量检测程序5.21\yanwu.uvproj

     文件       1144  2013-12-26 23:02  水量检测protus仿真+程序\水量检测程序5.21\yanwu_Opt.Bak

     文件       1653  2013-12-26 22:22  水量检测protus仿真+程序\水量检测程序5.21\yanwu_Uv2.Bak

     文件      57715  2019-05-22 16:43  水量检测protus仿真+程序\水量检测程序5.21\yanwu_uvopt.bak

     目录          0  2020-05-12 17:44  水量检测protus仿真+程序\水量检测程序5.21

     目录          0  2020-05-12 17:44  水量检测protus仿真+程序

----------- ---------  ---------- -----  ----

               751164                    27



............此处省略0个文件信息

评论

共有 条评论