基于51单片机轮胎胎压监测系统
(仿真+程序+设计报告)
功能介绍
具体功能:
1.MPX4115压力传感器胎压检测;
2.51单片机处理控制;
3.LCD1602液晶显示胎压;
4.胎压过高蜂鸣器报警;
演示视频:
基于51单片机轮胎胎压监测系统
#include <AT89X52.h>
/*********΢ÐŹ«ÖںţºÄ¾×Óµ¥Æ¬»ú*******/
#include <intrins.h>
#include <stdio.h>
//ADC0832µÄÒý½Å
sbit ADCS =P2^2; //ADC0832 chip seclect
sbit ADDI =P2^4; //ADC0832 k in
sbit ADDO =P2^4; //ADC0832 k out
sbit ADCLK =P2^3; //ADC0832 clock signal
#define uint unsigned int //ºê¶¨Òå
#define uchar unsigned char//ºê¶¨Òå
unsigned char dispbuf[8];
unsigned int temp;
unsigned int rx_buff[4];
unsigned char getdata,getdata1; //»ñÈ¡ADCת»»»ØÀ´µÄÖµ
sbit en = P2^5; //Òº¾§Ê¹ÄÜ¶Ë 6
sbit rw = P2^1; //Òº¾§¶ÁдѡÔñ¶Ë 5
sbit rs = P2^0; //Òº¾§Êý¾ÝÃüÁîÑ¡Ôñ¶Ë 4
sbit beep=P3^7;
//**************ºÁÃë*******************
void delayxms(uint ms) //ÑÓʱ x ms
{
uint a,j;
for(a=0;a<ms;a++)
for(j=0;j<110;j++);
}
/*******************************************************************
дÃüÁî
************************************************************************/
void xiemingling(unsigned char mingling)
{
en=0;
rs=0;
rw=0;
P0=mingling;
delayxms(5);
en=1;
delayxms(10);
en=0;
}
/*******************************************************************
дÊý¾Ý
************************************************************************/
void xieshuju(unsigned char shuju)
{
en=0;
rs=1;
rw=0;
P0=shuju;
delayxms(5);
en=1;
delayxms(10);
en=0;
}
/*******************************************************************
Òº¾§³õʼ»¯
************************************************************************/
void chushihua()
{
delayxms(20); //¸øÒº¾§Ò»¶Îʱ¼ä
en=0;
xiemingling(0x38);//ÉèÖÃ16*2ÏÔʾ£¬5*7µãÕó£¬8λÊý¾Ý½Ó¿Ú
delayxms(20);
xiemingling(0x38);//
delayxms(20);
xiemingling(0x0c);//ÉèÖÿªÏÔʾ£¬²»ÏÔʾ¹â±ê
delayxms(20);
xiemingling(0x06);//дһ¸ö×Ö·ûºóµØÖ·Ö¸Õë¼Ó1
delayxms(20);
xiemingling(0x01);//ÏÔʾÇåÁ㣬Êý¾ÝÖ¸ÕëÇåÁã
delayxms(20);
xiemingling(0x80);//Ö¸¶¨×Ö·ûÏÔʾµÄʵ¼ÊµØÖ·£¬£¬£¬ÏÔʾλÖõÄÈ·¶¨·½·¨¹æ¶¨Îª"80H+µØÖ·Âëx"
delayxms(20);
}
void delay(uint xms) //ÑÓʱ
{
uint xx,yy;
for (xx=xms;xx>0;xx--)
for(yy=110;yy>0;yy--);
}
/************
¶Á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
}
硬件设计
使用元器件:
单片机:AC89C52;
(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)
设计资料
01 仿真图
本设计使用proteus7.8和proteus8.9两个版本设计,向下兼容,无需担心!具体如图!
02 程序
本设计使用软件keil4和keil5两个版本编程设计,无需担心!具体如图
03 设计报告
一千字设计报告,具体如下!
04 设计资料
资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)、设计报告等。具体内容如下,全网最全! !
资料获取请观看前面演示视频!
点赞分享一起学习成长。