基于51單片機(jī)輪胎胎壓監(jiān)測(cè)系統(tǒng)-壓力傳感器仿真+程序+報(bào)告
Proteus仿真版本:proteus7.8
程序編譯器:keil 4
編程語(yǔ)言:C語(yǔ)言
編號(hào)C0018
百度云網(wǎng)盤下載鏈接
基于單片機(jī)的輪胎壓力檢測(cè)報(bào)警系統(tǒng)設(shè)計(jì),51單片機(jī)控制,MPX4115壓力傳感器胎壓檢測(cè),1602液晶顯示電路,胎壓過(guò)高蜂鳴器異常報(bào)警。
仿真圖(提供源文件):
源程序:
/************
讀ADC0832函數(shù)
************/
//采集并返回
unsigned int Adc0832(unsigned char channel) //AD轉(zhuǎn)換,返回結(jié)果
{
unsigned char i=0;
unsigned char j;
unsigned int dat=0;
unsigned char ndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿3
ADDI=1;//控制命令結(jié)束
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;//收數(shù)據(jù)
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次時(shí)鐘脈沖
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;//收數(shù)據(jù)
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次時(shí)鐘脈沖
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高數(shù)據(jù)端,回到初始狀態(tài)
dat<<=8;
dat|=ndat;
return(dat); //return ad k
}
void main(void)
{
unsigned int temp,ppress = 0;
float press;
chushihua(); //LCD1602初始化
while(1)
{
getdata=Adc0832(0);
if(0<getdata<243)
{
int vary=getdata;
press=((10.0/23.0)*vary)+9.3;
temp=(int)(press*10);
dispbuf[3]=temp/1000; //取壓力值百位
dispbuf[2]=(temp%1000)/100; //取壓力值十位
dispbuf[1]=((temp%1000)%100)/10; //取壓力值個(gè)位
dispbuf[0]=((temp%1000)%100)%10; //取壓力值十分位
if(temp>300)
{
beep=~beep;
delay(100);
}
else {beep=1;}
}
xiemingling(0x80+0);
xieshuju('M');
xieshuju('e');
xieshuju('a');
xieshuju('s');
xieshuju(':');
xieshuju(dispbuf[3]+0x30);
xieshuju(dispbuf[2]+0x30);
xieshuju(dispbuf[1]+0x30);
xieshuju('.');
xieshuju(dispbuf[0]+0x30);
xieshuju('K');
xieshuju('p');
xieshuju('a');
}
}
報(bào)告: