欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于51單片機的水位測量儀仿真與源碼
[打印本頁]
作者:
880312
時間:
2018-4-15 01:19
標題:
基于51單片機的水位測量儀仿真與源碼
不是特別完美,大家可以參考下。具體見附件
單片機的水位測量儀仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(19.02 KB, 下載次數: 73)
下載附件
2018-4-15 05:07 上傳
0.jpg
(41.23 KB, 下載次數: 62)
下載附件
2018-4-15 05:06 上傳
單片機的水位測量儀源程序如下:
#include<reg52.h>
#include<intrins.h>
#include<math.h> //頭文件
#define uchar unsigned char //宏定義
#define uint unsigned int
sbit beep=P1^4;
sbit Relay=P2^0;
sbit LED_H=P1^6;
sbit LED_L=P1^7;
sbit LED_IN=P1^5;
sbit LED_OK=P1^6;
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
uchar H_lim=11,L_lim=7;
uchar ad_dat1=0; //讀取濾波后的AD值
uchar Water_dat=0;
uchar set_flag=0;
/***************************************************
函數名稱:延時子函數
函數功能:按鍵消抖
***************************************************/
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
//******************adc0832****************************//
sbit Clk= P1^1;
sbit DATI=P1^0;
sbit DATO= P1^0;
sbit CS= P1^2;
uint dat = 0x00; //AD值
//AD轉換子程序
uint adc0832(unsigned char CH)
{
uchar i,test,adval;
adval = 0x00;
test = 0x00;
//初始化
Clk = 0;
DATI = 1;
_nop_(); _nop_();
CS = 0;
_nop_();
Clk = 1;
_nop_(); _nop_();
//通道選擇
if(CH == 0x00)
{
Clk = 0;
DATI = 1; //通道0的第一位
_nop_();
Clk = 1;
_nop_(); _nop_();
Clk = 0;
DATI = 0; //通道0的第二位
_nop_(); _nop_();
Clk = 1;
_nop_();
}
else
{
Clk = 0;
DATI = 1; //通道1的第一位
_nop_(); _nop_();
Clk = 1;
_nop_(); _nop_();
Clk = 0;
DATI = 1; //通道1的第二位
_nop_();
Clk = 1;
_nop_();
}
Clk = 0; _nop_();
DATI = 1;
for( i = 0;i < 8;i++ ) //讀取前8位的值
{
_nop_();
adval <<= 1;
Clk = 1;
_nop_(); _nop_();
Clk = 0; _nop_();
if (DATO)
adval |= 0x01;
else
adval |= 0x00;
}
for (i = 0; i < 8; i++) //讀取后8位的值
{
test >>= 1;
if (DATO)
test |= 0x80;
else
test |= 0x00;
_nop_();
Clk = 1;
_nop_(); _nop_();
Clk = 0; _nop_();
}
//比較前8位與后8位的值,如果不相同舍去。若一直出現顯示為零,請將該行去掉
if (adval == test)
dat = test;
_nop_(); _nop_();
CS = 1; //釋放ADC0832
DATO = 1;
Clk = 1;
return dat;
}
/*液晶顯示程序*/
sbit EN=P2^7;
sbit RS=P2^5;
sbit RW=P2^6;
unsigned char LCD1602_Table[]="0123456789:-";
// 0123456789abcdef
unsigned char DIS1_TAB[]={"Water level: cm"};
unsigned char DIS2_TAB[]={" H: cm L: cm "};
void write_date(uchar date)
{
EN=0;
RS=1;
P0=date;
EN=0;
delayms(5);
EN=1;
}
void write_com(uchar date)
{
EN=0;
RS=0;
P0=date;
EN=0;
delayms(5);
EN=1;
}
void init_1602()
{
unsigned char i;
RW=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(i=0;i<16;i++)
write_date(DIS1_TAB[i]);
write_com(0x80+0x40);
for(i=0;i<16;i++)
write_date(DIS2_TAB[i]);
}
void display()
{
static uchar i=0;
if(set_flag>0)
{
if(i<20)
i++;
else
i=0;
}
write_com(0x80+12);
write_date(LCD1602_Table[Water_dat%100/10]);
write_date(LCD1602_Table[Water_dat%10]);
write_com(0x80+0x40+4);
if((set_flag==1)&&(i<10))
{
write_date(' ');
write_date(' ');
}
else
{
write_date(LCD1602_Table[H_lim/10]);
write_date(LCD1602_Table[H_lim%10]);
}
write_com(0x80+0x40+11);
if((set_flag==2)&&(i<10))
{
write_date(' ');
write_date(' ');
}
else
{
write_date(LCD1602_Table[L_lim/10]);
write_date(LCD1602_Table[L_lim%10]);
}
}
//水位計算
void Water_Calculate()
{
if(ad_dat1<33)
{
Water_dat=10-((33-ad_dat1)/3);
}
else
{
Water_dat=10+((ad_dat1-33)/3);
}
}
void key()
{
if(K1==0)
{
delayms(10);
if(K1==0)
{
set_flag++;
if(set_flag>2)
set_flag=0;
while(!K1);
}
}
switch(set_flag)
{
case 1:
if(K2==0)
{
delayms(10);
if(K2==0)
{
if(H_lim<99)
H_lim++;
while(!K2);
}
}
else if(K3==0)
{
delayms(10);
if(K3==0)
{
if(H_lim>0)
H_lim--;
while(!K3);
}
}
break;
case 2:
if(K2==0)
{
delayms(10);
if(K2==0)
{
if(L_lim<99)
L_lim++;
while(!K2);
}
}
else if(K3==0)
{
delayms(10);
if(K3==0)
{
if(L_lim>0)
L_lim--;
while(!K3);
}
}
break;
default: break;
}
}
/*主函數*/
void main()
{
uint AD_DAT=0;
float ad_buf=0;
uchar i=0;
LED_OK=0;
init_1602();
while(1)
{
if(i<10) // 濾
{
i++;
AD_DAT+=adc0832(0); // 波
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
水位檢測.zip
(72.08 KB, 下載次數: 110)
2018-4-15 01:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
十字路812
時間:
2018-5-21 13:54
很實用,給力
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1