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

(仿真+程序)

仿真原版本:proteus 7.8

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0018

目录标题

  • 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示
    • 功能描述
    • 仿真电路
      • 总体设计方案
      • 单片机最小系统
      • A/D转换模块
      • 传感器模块
    • 程序
      • 读ADC0832函数
      • 主函数
    • 设计介绍
    • 资料清单

功能描述

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

仿真电路

总体设计方案

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

单片机最小系统

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

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 之间。

传感器模块

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

程序

读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端,形成下降沿3ADDI=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单片机汽车胎压大气气压测量仪仿真设计_数码管显示相关推荐

  1. 基于51单片机汽车胎压温度监测报警系统(程序+仿真+原理图+元件清单)

    功能介绍: 采用51单片机作为主控单片机,通过采集传感器的胎压和DS18b20的温度,显示到LCD1602上面,并且可以通过按键设置温度和压力的阈值,超过此值蜂鸣器进行报警,可以及时的提醒驾驶员胎压或 ...

  2. 基于51单片机的简易电容值测量仪proteus仿真设计

    51单片机简易电感测量仪仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0039 51单片机简 ...

  3. 基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改

    基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改 仿真图proteus 8.9 程序编译器:keil 4/5 编程语言:C语言 设计编号:S0027 视频演示 基于51单片机的多层电梯 ...

  4. 【036】基于51单片机的电子时钟与秒表Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的电子时钟与秒表proteus仿真设计一份: (2).基于51单片机的电子时钟与秒表proteus仿真设计keli源代码一份: (3).基于51单片机的电子时 ...

  5. 【041】基于51单片机的自动音乐播放器Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的自动音乐播放器系统proteus仿真设计一份: (2).基于51单片机的自动音乐播放器系统proteus仿真设计keli源代码一份: (3).基于51单片机 ...

  6. 51单片机简易电阻电感电容RLC测量仪仿真设计

    51单片机简易电阻电感电容RLC测量仪仿真( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0040 5 ...

  7. 基于51单片机空气质量粉尘pm2.5检测仿真设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 一.硬件电路组成 二.功能 三.电脑开发环境 四.Protues仿真 五.程序 六.资料包括 一.硬件电路组成 51最小系统+51单片机+Lcd16 ...

  8. 基于51单片机心率计脉搏体温测量仪WIFI无线通信proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.系统实时监测当前佩戴者的心率和体温,通过LCD1602显示相关数据 2.定时通过WIFI串口发送佩戴者的心率和体温 3.系统预留出串口接口,需要注 ...

  9. 基于51单片机的心率脉搏计测量报警全套设计

    功能介绍: 本系统采用单片机+LCD1602液晶+光电传感器+蜂鸣器+运放+滤波电路+按键组合而成. 按键说明: 从左边第一个起,减键.加键.设置键. 1.单片机型号:STC89C52/51.AT89 ...

最新文章

  1. 最新阿里Java技术面试题,看这一文就够了!
  2. 阿里数学竞赛可以报名了!奖金增加到400万元,题目面向大众公开征集
  3. linux输出信息打开tomcat,Linux下查看Tomcat的控制台输出信息
  4. HDU 4638 Group(莫队)题解
  5. GIMP中的新建Layer与更改Layer大小
  6. mysql数据库杀掉堵塞_Mysql解决USE DB堵塞详解
  7. SSD300网络结构(pytorch)+多尺度训练与测试
  8. System.getProperty(user.dir) 获取jar包所在目录
  9. Halcon PDF文档(hdevelop_users_guide)学习总结之六——Halcon如何导出C++代码
  10. 算法笔记_什么是数据结构_向量vector
  11. 深入理解设计模式-设计模式分类与关系
  12. 【论文阅读·2】”Why Should I Trust You?” Explaining the predictions of Any Classifier
  13. 测试常见面试题,如何有效的做自我介绍
  14. toolbar遇到问题和解决方式
  15. 排列组合_均匀分组和部分均匀分组的计算与示例/二项式定理二项式系数/求和中的对称性/莱布尼兹公式与推广的求导法则
  16. Rocky Linux更换yum源为国内源
  17. 你手机里的“微信”,可能是假的!
  18. 下连队锻炼(5)----抗洪
  19. ios怎么引入masonry_iOS Masonry详解
  20. 【caffe】caffe结构解析(二)

热门文章

  1. linux操作系统ext4转换xfs
  2. JS打砖块小游戏 canvas绘制
  3. 教你如何使用铁威马NAS智能照片管理功能
  4. 高送转预测 -- 逻辑回归与支持向量机
  5. 考研英语 - word-list-13
  6. 金融安全算法介绍系列5——国密算法
  7. 池州计算机高中,池州称霸一方的3所高中,池州一中一路领跑,第二名很有争议...
  8. Java产品:IT设备固定资产管理系统
  9. spacy中的pipelines
  10. H5企业网站模板-蓝绿过渡色功能菜单齐全