資源簡介
本設計基于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中文詳解
評論
共有 條評論