基于51单片机轮胎胎压监测系统—数码管显示

news2024/11/25 17:23:13

基于51单片机轮胎胎压监测系统

(仿真+程序+设计报告)

功能介绍

具体功能:

1.MPX4115压力传感器胎压检测;

2.ADC0832进行模数转换后,51单片机处理控制;

3.数码管显示胎压;

4.胎压过高蜂鸣器报警;

​演示视频:

基于51单片机气压监测系统—数码管显示

//ÏßÐÔÇø¼ä±ê¶È±ä»»¹«Ê½£º    y=(115-15)/(243-13)*X+15kpa   
#include <AT89X52.h> 
#include <intrins.h>
#include <stdio.h>

#define R24C04ADD 0xA1
#define W24C04ADD 0xA0

//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

sbit SDA = P2 ^ 1;	                        //Êý¾ÝÏß
sbit SCL = P2 ^ 0;	                        //ʱÖÓÏß
bit bAck;	                                  //Ó¦´ð±êÖ¾ µ±bbAck=1ÊÇΪÕýÈ·µÄÓ¦´ð

unsigned char dispbitcode[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f};  //λɨÃè
unsigned char dispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};  //¹²ÑôÊýÂë¹Ü×Ö¶ÎÂë
unsigned char dispbuf[4];
unsigned int temp;
unsigned char getdata; //»ñÈ¡ADCת»»»ØÀ´µÄÖµ

void delay_1ms(void)  //12mhz delay 1.01ms
{
   unsigned char x,y;   
   x=3;
   while(x--) 
  {
       y=40;
       while(y--);
    }
}
void display(void)  //ÊýÂë¹ÜÏÔʾº¯Êý
{
  char k;
  for(k=0;k<4;k++)
  {

  P1 = dispbitcode[k];
  P0 = dispcode[dispbuf[k]];
  if(k==1)	  //¼ÓÉÏÊýÂë¹ÜµÄdpСÊýµã
  	P0&=0x7f;
  delay_1ms();	  
  }
}

/************
¶Á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);                                   //·µ»ØÊÕµ½µÄÊý¾Ý
}


unsigned char WIICByte(unsigned char WChipAdd,unsigned char InterAdd,unsigned char WIICData)
{
	StartI2C();										      //Æô¶¯×ÜÏß
	SendByte(WChipAdd);							//·¢ËÍÆ÷¼þµØÖ·ÒÔ¼°ÃüÁî
	if (bAck==1)											  //ÊÕµ½Ó¦´ð
	{
		SendByte(InterAdd);								//·¢ËÍÄÚ²¿×ÓµØÖ·
		if (bAck ==1)
		{
			SendByte(WIICData);							//·¢ËÍÊý¾Ý
			if(bAck == 1)
			{
				StopI2C();                    //Í£Ö¹×ÜÏß
				return(0xff);
			}
			else
			{
				return(0x03);
			}			
		}
		else
		{
			return(0x02);
		}
	}
	return(0x01);
}
//¶ÁÈ¡Ö¸¶¨Æ÷¼þµÄÄÚ²¿Ö¸¶¨µØÖ·Ò»¸ö×Ö½ÚÊý¾Ý
unsigned char RIICByte(unsigned char WChipAdd,unsigned char RChipAdd,unsigned char InterDataAdd)
{
	unsigned char TempData;	
	TempData = 0;
	StartI2C();								        //Æô¶¯
	SendByte(WChipAdd);					    	//·¢ËÍÆ÷¼þµØÖ·ÒÔ¼°¶ÁÃüÁî
	if (bAck==1)								    	//ÊÕµ½Ó¦´ð
	{
		SendByte(InterDataAdd);					//·¢ËÍÄÚ²¿×ÓµØÖ·
		if (bAck ==1)
		{
			StartI2C();
			SendByte(RChipAdd);	
			if(bAck == 1)
			{
				TempData = RevByte();       //½ÓÊÕÊý¾Ý
				StopI2C();                  //Í£Ö¹I2C×ÜÏß
				return(TempData);           //·µ»ØÊý¾Ý
			}
			else
			{
				return(0x03);
			}	
		}
		else
		{
			return(0x02);
		}
	}
	else
	{
		return(0x01);
	}
}




硬件设计

使用元器件:

单片机:AC89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

设计资料

01 仿真图

本设计使用proteus7.8和proteus8.9两个版本设计,向下兼容,无需担心!具体如图!

02 程序

本设计使用软件keil4和keil5两个版本编程设计,无需担心!具体如图

03 设计报告

一千字设计报告,具体如下!

04 设计资料

        资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)、设计报告、仿真视频等。具体内容如下,全网最全! !

资料获取请观看前面演示视频!

点赞分享一起学习成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1580402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌留痕霸屏要怎么做?

谷歌留痕霸屏&#xff0c;就是让你的网站或者页面在谷歌搜索结果里尽可能多地出现&#xff0c;就像是在你的潜在客户眼前留下深刻印象一样&#xff0c;你要做的就是在一些高权重平台发布有价值的信息&#xff0c;同时巧妙地留下你的品牌名、产品名或者任何你想要推广的关键词&a…

Selenium+Chrome Driver 爬取搜狐页面信息

进行selenium包和chromedriver驱动的安装 安装selenium包 在命令行或者anaconda prompt 中输入 pip install Selenium 安装 chromedriver 先查看chrome浏览器的版本 这里是 123.0.6312.106 版 然后在http://npm.taobao.org/mirrors/chromedriver/或者https://googlechrom…

位图/矢量图/GIF/PNG/JPEG/WEBP一网打尽

❝ 想把一件事做好&#xff0c;那就先把眼前的小事攻克 ❞ 大家好&#xff0c;我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。 前言 最近&#xff0c;在做项目资源打包优化。如果大家做过类似的工作&#xff0c;在操作过程中&#xff0c;想必有一个…

实战:gcc-11.4.0编译wxWidgets-2.8.12的xrc演示例程

由于我上次编译安装的wxWidgets-2.8.12的abi是1009的&#xff0c;现在编译xrc演示程序也要使用09的abi才能正常运行。 到sourceforge去下载wxGTK-2.8.12&#xff0c;然后解压。 上述的文件夹中有msvc的make, 有watcom的makefile, 还有 unx 的makefile, 在mint-21.3上就用unx这…

配置VM开机自启动

1. 在此电脑-右键选择“管理”-服务和应用程序-服务中找到VMware Workstation Server服务&#xff08;新版名称也可能是VMware自启动服务&#xff0c;自己找一下&#xff0c;服务属性里有描述信息的&#xff09;&#xff0c;将其启用并选择开机自动启动 新版参考官方文档&…

抖音变现项目有哪些?来这几个资源网站看看吧

做短视频就像是在做一道菜&#xff0c;你得有那么几个秘密武器&#xff0c;才能让你的作品从众多视频中脱颖而出。我这个视频剪辑界的“烹饪大师”&#xff0c;今天就来给大家分享一下我的厨房秘籍——那些让我视频大放异彩的素材网站。九才素材网&#xff1a; 说起九才素材网…

吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.1-4.4

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第四周&#xff1a;深层神经网络(Deep Neural Networks)4.1 深层神经网络&#xff08;Deep L-layer neural network&#xff09;4.2 前向传播和反向传播&#xff08;Forward and backward pro…

3dmax渲染十几个小时怎么办?3dmax怎么多机渲染

当使用3ds Max进行渲染作业时&#xff0c;如果发现单张图像的渲染时间长达十数小时&#xff0c;这可能是由于计算机硬件配置较低或渲染场景过于复杂所致。为了缩短渲染时间并提高效率&#xff0c;我们可以考虑采用多台计算机进行协同渲染。下面&#xff0c;让我们一起探讨如何通…

Webots常用的执行器(Python版)

文章目录 1. RotationalMotor2. LinearMotor3. Brake4. Propeller5. Pen6. LED 1. RotationalMotor # -*- coding: utf-8 -*- """motor_controller controller."""from controller import Robot# 实例化机器人 robot Robot()# 获取基本仿真步长…

【编译原理】Antlr 入门使用

前面文章我们学习了编译器前端的词法和语法分析工具&#xff0c;本篇我们来看看如何借助 Antlr 工具&#xff0c;快速生成词法和语法分析代码。 一、安装 mac 环境&#xff1a; 1&#xff09;安装 brew install antlr2&#xff09;配置 classpath &#xff08;把 Antlr 的 J…

MySQL -- 07_最流行的查询需求分析(一些分组排序查询、开窗函数 dense_rank、distinct 去重函数 等~)

目录 最流行的查询需求分析07演示数据准备的SQL需求演示36、查询每一门课程成绩都在70分以上的姓名、课程名称和分数group by min() in() 函数 37、查询不及格的课程及学生普通表连接查询 38、查询课程编号为01语文且课程成绩在80分以上的学生的学号和姓名普通表连接查询 39、…

使用axios进行前后端数据传输

最近在和朋友合作写一个新的项目&#xff0c;前后端进行了分离&#xff0c;既然是分离的&#xff0c;肯定需要交互&#xff0c;今天这篇文章详细介绍一下数据交互的一种常见方式&#xff1a;使用axios,希望对大家有所帮助。 前端&#xff1a;以LoginPage.vue登录页面为例&…

扬帆出海扩规模,仍是比亚迪未来的发展关键?

又到了新能源车企公布阶段性成果的时期。 日前&#xff0c;乘联会预估2024年3月全国新能源乘用车厂商批发销量82万辆&#xff0c;同比增长33%&#xff0c;环比增长84%。其中&#xff0c;比亚迪继续领跑&#xff0c;3月销量超30万辆&#xff0c;环比增长147.8%&#xff0c;而这…

OpenHarmony实战:瑞芯微RK3566移植案例(上)

本文章是基于瑞芯微RK3566芯片的khdvk_3566b开发板&#xff0c;进行标准系统相关功能的移植&#xff0c;主要包括产品配置添加&#xff0c;内核启动、升级&#xff0c;音频ADM化&#xff0c;Camera&#xff0c;TP&#xff0c;LCD&#xff0c;WIFI&#xff0c;BT&#xff0c;vib…

中科院发布大模型想象增强法IAG,无需外部资源,想想就能变强

在人工智能领域&#xff0c;尤其是自然语言处理&#xff08;NLP&#xff09;的子领域——问答系统&#xff08;QA&#xff09;中&#xff0c;知识的获取和利用一直是推动技术进步的核心问题。近年来&#xff0c;大语言模型&#xff08;LLMs&#xff09;在各种任务中展现出了惊人…

【C语言】扫雷【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 一、扫雷游戏规则 尽快找到雷区中的所有不是地雷的格子,而不许踩到地雷。点开的数字是几&#xff0c;则说明该数字旁边的8个位置中有几个雷&#xff0c;如果挖开的是地雷&#xff0c;则会输掉游戏。 二、代码思路&…

Laravel 项目如何运行

如有一个 Laravel 项目&#xff0c;在配置好 PHP 版本和运行环境后&#xff0c;可以直接在项目下直接运行&#xff1a; php artisan serve 来启动你的项目。 通过浏览器查看 当项目运行后&#xff0c;默认的启动端口为 8000&#xff0c;可以通过浏览器来进行查看运行的 Larav…

C++性能测试工具

使用示例main.cpp // g-13 -O3 -stdc17 main.cpp profile.cpp #include <iostream> #include <chrono> #include <stdint.h> #include <mutex> // std::mutex#include "profile.h" #include "profile_rdtsc.h"std::mut…

GlusterFS分布式文件系统

一、GlusterFS简介 GlusterFS 是一个开源的分布式文件系统。由存储服务器、客户端以及NFS/Samba存储网关(可选&#xff0c;根据需要选择使用)组成。没有元数据服务器组件&#xff0c;这有助于提升整个系统的性能、可靠性和稳定性 二、GlusterFS特点 2.1 扩展性和高性能 Glu…

Tensorboard以及Transforms初步学习

一.前情提要 1.本文是代码结合知识点&#xff0c;注释即为知识点 2.主要详细讲解Tensorboard以及Transforms代码以及基础知识 3.若想深入学习&#xff0c;建议阅读 P3. Python学习中的两大法宝函数&#xff08;当然也可以用在PyTorch&#xff09;_哔哩哔哩_bilibili 二.简述…