仿真原理圖如下(proteus8.10仿真工程文件可到本帖附件中下載)
51hei圖片_20220702140126.png (144.38 KB, 下載次數(shù): 68)
下載附件
仿真圖
2022-7-2 14:01 上傳
單片機(jī)源程序如下:
#include <reg52.h> //調(diào)用單片機(jī)頭文件
#define uchar unsigned char //無(wú)符號(hào)字符型 宏定義 變量范圍0~255
#define uint unsigned int //無(wú)符號(hào)整型 宏定義 變量范圍0~65535
sbit SCL=P1^4; //SCL定義為P1口的第3位腳,連接ADC0832SCL腳
sbit DO=P1^5; //DO定義為P1口的第4位腳,連接ADC0832DO腳
sbit CS=P1^3; //CS定義為P1口的第4位腳,連接ADC0832CS腳
sbit beep = P3^3; //蜂鳴器IO口定義
sbit key= P1^7; //開關(guān)
uchar shuiwei; //水位
uchar s_high = 90;//水位報(bào)警參數(shù)
uint flag_250ms ;
/********************************************************************
* 名稱 : delay_uint()
* 功能 : 小延時(shí)。
* 輸入 : 無(wú)
* 輸出 : 無(wú)
***********************************************************************/
void delay_uint(uint q)
{
while(q--);
}
/***********************1ms延時(shí)函數(shù)*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
/***********讀數(shù)模轉(zhuǎn)換數(shù)據(jù)********************************************************/
//請(qǐng)先了解ADC0832模數(shù)轉(zhuǎn)換的串行協(xié)議,再來(lái)讀本函數(shù),主要是對(duì)應(yīng)時(shí)序圖來(lái)理解,本函數(shù)是模擬0832的串行協(xié)議進(jìn)行的
// 1 0 0 通道
// 1 1 1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{
unsigned char i=0,value=0,value1=0;
SCL=0;
DO=1;
CS=0; //開始
SCL=1; //第一個(gè)上升沿
SCL=0;
DO=SGL;
SCL=1; //第二個(gè)上升沿
SCL=0;
DO=ODD;
SCL=1; //第三個(gè)上升沿
SCL=0; //第三個(gè)下降沿
DO=1;
for(i=0;i<8;i++)
{
SCL=1;
SCL=0; //開始從第四個(gè)下降沿接收數(shù)據(jù)
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++)
{ //接收校驗(yàn)數(shù)據(jù)
value1>>=1;
if(DO)
value1+=0x80;
SCL=1;
SCL=0;
}
CS=1;
SCL=1;
if(value==value1) //與校驗(yàn)數(shù)據(jù)比較,正確就返回?cái)?shù)據(jù),否則返回0
return value;
return 0;
}
/****************報(bào)警函數(shù)***************/
void clock_h_l()
{
if(shuiwei<s_high&&key==0)//水位小于設(shè)定值且紅外探測(cè)器觸發(fā)
{
beep = 0; //工作
}
else
{
beep = 1; //暫停工作
}
}
/***************主函數(shù)*****************/
void main()
{
while(1)
{
shuiwei = ad0832read(1,0); //讀出濕度
shuiwei = 99 - shuiwei * 99 / 255;
shuiwei *= 1.3;
if(shuiwei >= 99)
shuiwei = 99;
clock_h_l(); //報(bào)警函數(shù)
delay_1ms(1);
}
}
51hei.png (51.65 KB, 下載次數(shù): 57)
下載附件
2022-7-2 14:39 上傳
注意仿真必須要用Proteus8.10版本才行,如果沒(méi)有此版本的就不要下載了:
智能飲水機(jī).7z
(149.9 KB, 下載次數(shù): 60)
2022-7-2 14:39 上傳
點(diǎn)擊文件名下載附件
代碼+仿真 下載積分: 黑幣 -5
|