资源简介
本设计基于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中文详解
相关资源
- 51单片机密码锁PROTEUS仿真
- 基于51单片机的电子密码锁设计
- 基于51单片机的心率脉搏计源码+电路
- 基于51单片机的温度警报器的设计
- 单总线温度采集与显示
- 基于C51单片机计时器
- 51单片机控制的GSM报警程序
- MQ-2烟雾传感器51单片机代码
- 基于51单片机12864显示的指纹锁
- 027 简易电子秤 LCD1602显示 超重报警
- 基于51单片机的1602万年历设计_温度
- 51单片机温度报警器设计程序及prote
- 51单片机 啤酒生产线计数器
- 基于51和hx711的电子秤
- 51单片机和1602显示18b20温度报警系统
- 51单片机 CH452驱动数码管,按键,按键
- 51单片机多任务的切换和堆栈的保护
- 基于51单片机的的电子密码锁设计.r
- 51单片机实现温度检测数码管显示,控
- 51单片机蜂鸣器音乐盒程序代码
- 基于51开发板的温度报警闹钟按键控制
- 51单片机8位抢答器源程序
- 基于51单片机指纹解锁设计程序
- 基于51单片机的智能小车循迹寻迹避障
- 51单片机例程1602显示秒表
- 基于51单片机的俄罗斯方块
- 基于STC89C52单片机的宿舍智能防火报警
- 基于51单片机音乐彩灯
- 51单片机测距报警.rar
- 单片机实现密码锁(1602显示)_带设置
评论
共有 条评论