51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解)

这篇具有很好参考价值的文章主要介绍了51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示

(代码+仿真+设计报告+讲解)

仿真原版本:proteus 7.8

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0018

功能描述

本课程设计用MPX4115传感器来检测压力参数,ADC0832进行模数转换后,利用单片机AT89C52进行数据处理后,用四个八段数码管显示压力值。压力测量的量程在15.3KPA~114.9KPA,分度值位0.1kpa。

讲解视频

51单片机胎压气压监测

仿真电路

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件

总体设计方案

本次设计是基于8051单片机的测量与显示。利用传感器将压力转换为电信号后,在经过ADC0832的模数转换器经A/D转换后由单片机进行有效处理,然后用数码管进行显示。

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件

单片机最小系统

由AT89C52单片机、时钟电路、复位 电路组成AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C52是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的于将多功能MCS-518指令集和输出管脚相兼容。位CPU和闪烁存储器组合在由单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C52是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件

A/D转换模块

ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用 ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。8位分辨率双通道A/D转换输入输出电平与TTL/CMOS 相兼容5V电源供电时输入电压在0~5V之间工作频率为250KHZ,转换时间为32μS。 ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 0~5V 之间。

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件

传感器模块

MPX4115系列压电电阻传感器是一个硅压力传感器。这个传感器结合了高级微电机技术,薄膜镀金属。还能为高水准模拟输出信号提供一个均衡压力。在0℃-85℃的温度下误差不超过1.5%,温度补偿是-40℃-125℃。为了克服干扰,在MPX4115输出电路中增加了RC滤波电路。如下图所示:

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件

程序

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件

读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
}

//启动I2C总线,即发送起始条件
void StartI2C()
{
	SDA = 1;	                      //发送起始条件数据信号
	_nop_();
	SCL = 1;
	_nop_();		                    //起始建立时间大于4.7us
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA = 0;	                      //发送起始信号
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SCL = 0;	                        //时钟操作
	_nop_();
	_nop_();
}
//结束I2C总线,即发送I2C结束条件
void StopI2C()
{
	SDA = 0;	                        //发送结束条件的数据信号
	_nop_();		                      //发送结束条件的时钟信号
	SCL = 1;	                        //结束条件建立时间大于4us
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA = 1;	                        //发送I2C总线结束命令
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();	
}
//发送一个字节的数据
void	SendByte(unsigned char c)
{
	unsigned char BitCnt;
	for(BitCnt = 0;BitCnt < 8;BitCnt++)			          //一个字节
		{
			if((c << BitCnt)& 0x80) SDA = 1;	           //判断发送位
			else	SDA = 0;
			_nop_();
			SCL = 1;	                      //时钟线为高,通知从机开始接收数据
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			SCL = 0;
		}
	_nop_();
	_nop_();
	SDA = 1;	                                        //释放数据线,准备接受应答位
	_nop_();
	_nop_();
	SCL = 1;
	_nop_();
	_nop_();
	_nop_();
	if(SDA == 1) bAck =0;
	else bAck = 1;		                                //判断是否收到应答信号
	SCL = 0;
	_nop_();
	_nop_();
}
//接收一个字节的数据
unsigned char RevByte()
{
	unsigned char retc;
	unsigned char BitCnt;
	retc = 0;
	SDA = 1;
	for(BitCnt=0;BitCnt<8;BitCnt++)
	{
		_nop_();
		SCL = 0;	                                    //置时钟线为低,准备接收
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		SCL = 1;	                                    //置时钟线为高使得数据有效
		_nop_();
		_nop_();
		retc = retc << 1;	                            //左移补零
		if (SDA == 1)
		retc = retc + 1;                             	//当数据为1则收到的数据+1
		_nop_();
		_nop_();
	}
	SCL = 0;
	_nop_();
	_nop_();
	return(retc);                                   //返回收到的数据
}

主函数

void main(void) 
{ 
  unsigned int OverCounter = 0; 
  unsigned char ptemp;
  bit OverFlg = 0;
  unsigned int temp,ppress = 0;
  float  press;	
  while(1)
  {	  
   		  
	  getdata=Adc0832(0);
	  if(14<getdata<243)		 //当压力值介于15kpa到115kpa之间时,遵循线性变换
	 	{			    
		  int vary=getdata;		//yq=  (  get_AD_result()*5.0/255.0/5.1-0.04  )/0.00369-3.45;		
			

			press = (vary*5.0/255.0/5.1+0.04)/0.004-3.45;	//细调0.004数值
			temp=(int)(press*10);	          //放大10倍,便于后面的计算
      if(temp != ppress)
      {
        ppress = temp;
        OverFlg = 1;
      }    											
			dispbuf[3]=temp/1000;			     	//取压力值百位
			dispbuf[2]=(temp%1000)/100;		    	//取压力值十位
			dispbuf[1]=((temp%1000)%100)/10;	    	//取压力值个位
			dispbuf[0]=((temp%1000)%100)%10;			//取压力值十分位
			display();
      if (temp > 100)
      {
          if(OverFlg == 1)   
          {
            OverCounter++;
            WIICByte(W24C04ADD,0x01,(OverCounter/0xff));    //低位
            WIICByte(W24C04ADD,0x02,(OverCounter%0xff));    //高位
            OverFlg = 0;    //清除标志
          }
      }

	   }	    
  }
}

设计报告

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件

资料清单&&下载链接

资料下载链接

  1. 常见使用问题及解决方法–必读!!!!
  2. 源程序
  3. proteus仿真
  4. 开题报告
  5. 讲解视频
  6. 设计报告
    Altium Designer 安装破解
    KEIL+proteus 单片机仿真设计教程
    KEIL安装破解
    Proteus元器件查找
    Proteus安装
    Proteus简易使用教程
    单片机学习资料
    相关数据手册
    答辩技巧
    设计报告常用描述
    鼠标双击打开嘉盛单片机51 STM32单片机课程毕业设计.url

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解),51单片机,汽车,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-715926.html

到了这里,关于51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机的数字电容容值测量仪proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统支持15pF~450uF电容测量 2.按键可更改测量量程 3.除了采用LCD1602可以实时显示测量参数,同时具有LED可以显示各个档位 4.该方案电容容值测量原理是基于NE555振荡电路来设计的 原理图: PCB: 主程序: 仿真演示视频: https://www.b

    2024年02月12日
    浏览(44)
  • 【资料分享】基于单片机大气压监测报警系统电路方案设计、基于飞思卡尔的无人坚守点滴监控自动控制系统设计(程序,原理图,pcb,文档)

    功能:实现的是大气压检测报警系统,可以通过传感器实时检测当前大气压值,可以设定大气压正常范围,当超过设定范围进行报警提示。 资料:protues仿真,程序,原理图,元器件清单,软件资料等 本设计是一种显示输液流速、停滴提醒、药液恒温控制、GSM无线实时消息提

    2024年02月21日
    浏览(57)
  • STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波

        //气压模块为红色模块,传感器型号未知,其信号放大器型号为HX710B // STC15W408AS 11.0592MHz 波特率9600,串口输出大气压强值 // STC15W408AS没有定时器1,所以用定时器2做波特率发生器 // 采用电脑USB供电会有很大的干扰,建议采用电池或者充电宝 #include \\\"reg52.h\\\" #define Download_co

    2024年02月05日
    浏览(42)
  • 基于51单片机汽车智能灯光控制系统设计

    (protues仿真+程序+原理图+PCB+设计说明书) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0049 硬件构成: 51单片机 LCD1602液晶 光敏电阻 超声波 ADC0832 LED灯 1.按键说明:从左边第一个起,减键、加键、设置键。单独一个控制为复位按键。 2.LCD1602液晶第一行

    2024年02月08日
    浏览(54)
  • 毕业设计 基于51单片机的汽车倒车防撞报警系统 (源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月09日
    浏览(75)
  • 基于单片机的胎压监测系统的设计

    收藏和点赞,您的关注是我创作的动力   本文以STC89C52单片机为控制核心,通过气压传感器模块对汽车各轮胎的胎压进行实时数据的采集与处理,利用2.4G ZigBee无线模块反馈给单片机进行数据处理和判断,当汽车胎压高于和低于系统设定的阙值时,时钟DS1302进行时间记录,

    2024年02月05日
    浏览(43)
  • 基于单片机的一种风速测量仪的设计与制作

    收藏和点赞,您的关注是我创作的动力     风速、风向的测量在气象预报、环境监测、风力发电、航空航天等领域中有着重要意义。随着传感器技术、微处理器技术和网络通信技术的发展,相比传统的人工观测,数字化、智能化的气象仪器在观测精度、速度和稳定性等方

    2024年01月17日
    浏览(48)
  • 单片机 | 51单片机原理

    【金善愚】 单片机应用原理篇 笔记整理 课程视频 :https://space.bilibili.com/483942191/channel/collectiondetail?sid=51090 三类 电源及晶振引脚(共4只) 控制引脚(共4只) 端口引脚(共32只) Vcc(40脚):电源端,接+5V电源。 Vss(20脚):接地端。 XTAL1(19脚):接外部晶振和微调电容的一端。 XTAL2(18脚):

    2024年02月02日
    浏览(58)
  • 51单片机项目(9)——基于51单片机的电子琴设计

    简易电子琴设计设计内容: 1.用矩阵键盘代表琴键,至少能弹出8个音符,分别是:音符1.23.4.,5,6,  2.键按下的时间长短表征节拍的长短,用蜂鸣器发出声音 3.数码管显示出当前音符 4.音量可调 (代码及其工程文件放在最后) 电路图如下: 51单片机电子琴是一种基于51单片机(

    2024年02月09日
    浏览(49)
  • 51单片机项目(7)——基于51单片机的温湿度测量仿真

    本次做的设计,是利用DHT11传感器,测量环境的温度以及湿度,同时具备温度报警的功能:利用两个按键,设置温度阈值的加和减,当所测温度大于温度阈值的时候,蜂鸣器就会响起,进行报警提示。 同时系统还有一个LCD1602屏幕,用于显示实时的温度湿度,还可以显示温度阈

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包