资讯详情

基于51单片机轮胎胎压监测系统-压力传感器proteus仿真

传感器模拟基于51单片机轮胎压监测系统 程序 报告 Proteus仿真版本:proteus7.8 程序编译器:keil 4 编程语言:C语言 编号C0018 下载链接

基于单片机的轮胎压力检测报警系统设计,51单片机控制,MPX4115压力传感器胎压检测,1602液晶显示电路,胎压过高蜂鸣器异常报警。

模拟图(提供源文件):

在这里插入图片描述

源程序:

/************ 读ADC0832函数 ************/  //收集并返回 unsigned int Adc0832(unsigned char channel)     //AD转换,返回结果 { 
            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;//控制命令结束 
    _nop_();
    _nop_();
    dat=0;
    for(i=0;i<8;i++)
    { 
       
        dat|=ADDO;//收数据
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//形成一次时钟脉冲
        _nop_();
        _nop_();
        dat<<=1;
        if(i==7)dat|=ADDO;
    }  
    for(i=0;i<8;i++)
    { 
       
        j=0;
        j=j|ADDO;//收数据
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//形成一次时钟脉冲
        _nop_();
        _nop_();
        j=j<<7;
        ndat=ndat|j;
        if(i<7)ndat>>=1;
    }
    ADCS=1;//拉低CS端
    ADCLK=0;//拉低CLK端
    ADDO=1;//拉高数据端,回到初始状态
    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;	    	//取压力值个位
			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');	

  }
} 

报告:

标签: 轮胎中的传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台