久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機+ADC0832智能澆花系統Proteus仿真程序
[打印本頁]
作者:
未來可期鴨
時間:
2021-6-3 08:49
標題:
51單片機+ADC0832智能澆花系統Proteus仿真程序
功能描述:
(1)本系統采用單片機STC89C52+ADC0832+LCD1602液晶+土壤濕度傳感器+抽水電機+ 按鍵+蜂鳴器設計而成。
(2)能夠檢測土壤的濕度,實時顯示到LCD1602液晶屏上。其中,液晶第一行顯示實際的濕度。液晶第二行顯示濕度上限值和濕度下限值。
(3)根據不同的土壤,能夠合理的調整澆水要求。通過按鍵設置上下限值。濕度低于下限報警,開始澆水直到上限停止報警及澆水。隨后濕度下降到下限開始報警并啟動澆水。
(4)按鍵分為,減鍵、加鍵、設置鍵。潛水泵通過繼電器控制通斷。
(5)可通過藍牙模塊對應的手機端讀取實時濕度數據,并控制單片機端繼電器和蜂鳴器功能的有無。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(20.53 KB, 下載次數: 51)
下載附件
2021-6-3 15:33 上傳
51hei.png
(22.11 KB, 下載次數: 65)
下載附件
2021-6-3 15:33 上傳
單片機源程序如下:
#include <reg52.H>
#include "intrins.h"
#include "uart.h"
#include "stdio.h"
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define LCDIO P0 //液晶屏數據口
//ADC0832的引腳
sbit ADCLK =P3^6; //ADC0832 clock signal
sbit ADDIO =P3^7; //ADC0832 k in
sbit ADCS =P3^4; //ADC0832 chip seclect
sbit rs=P2^5; //定義1602 RS
sbit rw=P2^6; //定義1602 Rw
sbit lcden=P2^7; //定義1602 EN
sbit key1=P1^7; //設定
sbit key2=P1^6; //加
sbit key3=P1^5; //減
sbit motor=P2^1; //繼電器接口
sbit speak=P2^0; //蜂鳴器接口
uchar key; //設定指針
uint RH=500,RL=10;//水位上下限
float temp_f;
ulong temp;
uchar v;
uchar count,s1num;
uchar code table[]= "shi du: ";
uchar code table1[]="RH: % ";
uchar getdata; //獲取ADC轉換回來的值
unsigned char init_flag=1;
/*********************************************/
void delay(uint z) //延時
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void long_alarm(void) //延時
{
speak=0;
delay(800);
speak=1;
delay(800);
}
void alarm(void) //延時
{
speak=0;
delay(50);
speak=1;
delay(50);
}
/**********************************************/
void write_com(uchar com)
{
rs=0;
// rd=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/*********************************************/
void write_date(uchar date)
{
rs=1;
// rd=0;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/***********************************************/
void init()
{
uchar num;
Uart_Init();
lcden=0;
rw=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<15;num++)
{
write_date(table1[num]);
delay(5);
}
}
//****************************************************************************/
/************
讀ADC0832函數
************/
//采集并返回
/****************************************************************************
函數功能:AD轉換子程序
入口參數:CH(如果讀取CH0,channel的值為0x01,如果讀取CH1則channel的值為0x03)
出口參數:adval
****************************************************************************/
uchar Adc0832() //AD轉換,返回結果
{
uchar i;
uchar dat=0;
ADCLK=0;
ADDIO=1;
ADCS=0; //拉低CS端
ADCLK=1;
ADCLK=0; //拉低CLK端,形成下降沿1
ADDIO=1;//指定轉換通道是CH1還是CH2,指定值位與0x1,取最后一位的值
ADCLK=1;
ADCLK=0; //拉低CLK端,形成下降沿2
ADDIO=0;//指定值右移一位,再取最后一位的值
ADCLK=1;
ADCLK=0; //拉低CLK端,形成下降沿3
ADDIO=1;
for(i=0;i<8;i++)
{
ADCLK=1;
ADCLK=0; //形成一次時鐘脈沖
if(ADDIO)
dat|= 0x80>>i; //收數據
}
ADCS=1; //拉低CS端
ADCLK=1;
ADDIO=1; //拉高數據端,回到初始狀態
return(dat); //return dat
}
/***************************************************************************/
/********************************************************/
void displayRH() //下限顯示
{write_com(0xc0+3);
write_date(RH/100%10+0x30);//上限百位
write_date(RH/10%10+0x30);//上限十位
//write_date('.');
//write_date(RH%10+0x30);
}
void displayRL() //下限顯示
{write_com(0xca);
write_date('R');
write_date('L');
write_date(':');
write_date(RL/100%10+0x30);//下限百位
write_date(RL/10%10+0x30);//下限十位
write_date('%');
}
/**************************************************/
/********************************************************/
void keyscan() //按鍵處理
{
bit kk1=0,kk2=0;
if(key1==0)
{
delay(10);
while(key1==0);
alarm();
key=1;
switch(key)
{
// speak=1;kk2=motor;motor=1;
case 1: //RL下線報警值設置
{
write_com(0x0f);write_com(0xce); //光標閃爍
while(key1!=0) //等待按鍵松開
{
if(key2==0) //key2按鍵下
{
delay(10); //按鍵延時消抖
if(key2==0) //確定key2按下
{
while(key2==0); //等待松開
alarm();
if(RL>=998)
{RL=999; //RL下限最大設置為99
}
else
{RL+=10; //RL加1
}
}
displayRL(); //調用RL下限顯示函數
write_com(0xce);
}
if(key3==0) //key3按下
{
delay(10); //按鍵延時消抖
if(key3==0) //確定key3按下
{
while(key3==0); //等待key3按鍵松開
alarm();
if(RL<=1) //RL最小設置為1
{RL=0;
}
else
{RL-=10; //RL下限減1
}
}
displayRL(); //調用RL下限顯示函數
write_com(0xce);
}
}
while(key1==0);
alarm();
}
case 2: //RL上線報警值設置
{
write_com(0x0f);write_com(0xc4); //RH設置數據,光標閃爍
while(key1==1)
{
if(key2==0) //key2按下
{
delay(30); //按鍵延時消抖
if(key2==0) //確定key2按下
{
while(key2==0); //等待松開
alarm();
if(RH>=998) //RH最大設置為99
{RH=999;
}
else
{RH+=10; //RH加1
}
}
displayRH(); //RH上限顯示函數
write_com(0xc4);
}
if(key3==0) //key3按下
{
delay(30); //按鍵延時消抖
if(key3==0) //確定按下
{
while(key3==0);//等待松開
alarm();
if(RH<=1) //RH最小設置為1
{RH=0;
}
else
{RH-=10; //RH減1
}
}
displayRH(); //調用RH顯示函數
write_com(0xc4);
}
}
while(key1==0);
alarm();
}
case 0:
{
write_com(0x0c);
break;
}
}
}
}
/**************************************************/
void Conut(void) //土壤檢測數據轉換
{
v=Adc0832();
temp=v;
// temp_f=temp*10/2.55;
temp_f=(temp-173.4)*12.25;
temp=temp_f;
temp=1000-temp;
write_com(0x80+10);
write_date(temp/100%10+0x30);//千位
write_date(temp/10%10+0x30);//百位
write_date('.');
write_date(temp%10+0x30);
write_date('%');//顯示符號位
}
/********************************************************/
void main(void)
{
char alarm_flag=0;
char alarm_forbidden_flag=0;
unsigned char shidu_string[20];
init();
displayRH(); //顯示上限
displayRL(); //顯示下限
delay(50); //啟動等待,等LCD講入工作狀態
delay(50); //延時片刻(可不要)
delay(50); //延時
delay(50);
Conut(); //顯示函數
delay(150);
while(1)
{
// printf("%d",1);
Conut(); //顯示當前濕度
keyscan();
sprintf(shidu_string, "shi du: %2d.%d \r\n",(int)(temp/10),(int)(temp%10));
Send_Word(shidu_string); //通過藍牙將數據上報出去,給你的手機藍牙助手。
if(init_flag!=0)
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
基于51單片機智能澆花系統.7z
(231.39 KB, 下載次數: 164)
2021-6-3 15:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
qxuem
時間:
2021-6-24 17:36
請問如果需要多個土壤檢測點和多個水泵.應該怎么弄呢
作者:
heikeji2021
時間:
2021-6-24 18:04
不錯,照著做一個試試
作者:
newforce
時間:
2021-7-16 16:46
不錯,照著做一個試試
作者:
huang.xizhi
時間:
2021-7-20 18:01
看了您的作品,感覺慢有意思的,我是做科研的 想做一個多通道的噴霧單片機。不知道有沒有興趣,項目開發
作者:
kamiyali
時間:
2021-9-13 16:06
感謝分享,下載下來學習一下
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
在线一区二区三区
|
精品国产91乱码一区二区三区
|
成年人黄色一级毛片
|
91久久精品一区二区二区
|
成人在线免费电影
|
国产十日韩十欧美
|
欧美激情a∨在线视频播放 成人免费共享视频
|
精品日韩
|
欧美一二区
|
在线国产视频
|
成人在线观看网址
|
色狠狠一区
|
在线不卡视频
|
国产精品久久久
|
亚洲一区二区三区在线视频
|
精品久久久久一区
|
成人国产在线视频
|
亚洲精品久久久久久久久久久久久
|
免费观看一区二区三区毛片
|
激情毛片
|
亚洲国产精品久久久
|
国产精品亚洲视频
|
欧美一区二区三区一在线观看
|
av网站免费
|
www.性色
|
欧美不卡
|
久久精品播放
|
精品一区在线免费观看
|
亚洲成人精品在线观看
|
91精品91久久久
|
国产在线视频一区二区董小宛性色
|
成人午夜黄色
|
久久成人免费视频
|
精品国产91乱码一区二区三区
|
亚洲视频国产
|
免费在线观看av网站
|
精品亚洲91
|
成人深夜福利网站
|
国产精品一区二区三区在线
|
黄色一级毛片免费看
|
成人综合久久
|