资源简介
本设计基于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个文件信息
- 上一篇:SPSS其实很简单 全套数据文件
- 下一篇:USB 3.0中文详解
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
评论
共有 条评论