自学内容网 自学内容网

基于51单片机的方向盘模拟系统

在现代汽车中,方向盘不仅是控制方向的装置,还集成了多种功能,如音响控制、定速巡航等。为了研究和测试这些功能,可以设计一个基于51单片机的方向盘模拟系统。该系统可以模拟方向盘的转动和相关功能的操作。

一、系统功能

方向盘模拟系统主要包括以下功能:

  1. 模拟方向盘转动:通过电机驱动方向盘转动。
  2. 检测压力传感器:使用压力传感器模拟驾驶员对方向盘的握持力度。
  3. 重力加速度模拟:通过滑动变阻器和模数转换器模拟重力加速度传感器。
  4. 按键控制:通过按键控制LED灯的点亮与熄灭。
  5. 数据显示:通过LCD1602显示屏显示压力值和加速度值。
  6. 报警和电机控制:当加速度值在3秒内没有变化,或者两个压力传感器的差值大于50时,蜂鸣器报警,继电器控制的电机停止转动。

二、硬件资源

系统基于STC89C52单片机,采用两个MPX4115压力传感器作为两路压力到位开关电路,采用滑动变阻器连接数模转换器模拟重力加速度传感器电路。一个按键控制LED灯的点亮与熄灭。两路压力值与加速度值通过LCD1602显示屏显示。

三、程序编程

以下是方向盘模拟系统的C语言代码示例:

#include <REGX52.H>
#include <intrins.h>
#include <stdio.h>
#include "Delay.h"
#include "LCD1602.h"

#define uchar unsigned char
#define uint unsigned int

sbit beep = P2^5;
sbit CS=P1^0;
sbit CLK=P1^1;
sbit DIO=P1^2;
sbit CS1=P1^3;
sbit CLK1=P1^4;
sbit DIO1=P1^5;
sbit CS2   =  P1^6;
sbit CLK2  =  P1^7;
sbit DIO2  =  P2^6;
sbit motor =  P2^7;
sbit key = P3^1;
sbit led = P3^0;
sbit key1 = P3^2;

static int timerCount;
typedef unsigned char u8;
typedef unsigned int  u16;

static uchar u,U,R,u1,U1,R1,u2,U2,R2,lastResistance;
static int number;
static int resistanceChanged;
static int flag = 0;

void beep_warning();
void Time0_Init()
{
    TMOD = 0x01;
    TH0 = 0xfa >> 8;
    TL0 = 0xfa & 0xFF;
    ET0 = 1;
    TR0 = 1;
    EA = 0;
}

void Time0_Int() interrupt 1
{
    static unsigned int timerCount = 0;
    TH0 = 0xfa >> 8;
    TL0 = 0xfa & 0xFF;
    timerCount++;
    if (timerCount >= 27)
    {
        timerCount = 0;
        if (R != lastResistance)
        {
            resistanceChanged = 0;
        }
        else
        {
            resistanceChanged = 1;
        }
        lastResistance = R;
    }
}

uchar get_AD_Res()
{
    uchar i, data1=0, data2=0;
    CS=0;
    CLK=0;DIO=1;_nop_();
    CLK=1;_nop_();
    CLK=0;DIO=1;_nop_();
    CLK=1;_nop_();
    CLK=0;DIO=0;_nop_();
    CLK=1;_nop_();
    CLK=0;DIO=1;_nop_();
    for(i=0; i<8; i++)
    {
        CLK=1;_nop_();
        CLK=0;_nop_();
        data1=(data1<<1)|(uchar)DIO;
    }
    for(i=0; i<8; i++)
    {
        data2=data2|(uchar)DIO<<i;
        CLK=1;_nop_();
        CLK=0;_nop_();
    }
    CS=1;
    return(data1 == data2)?data1:0;
}

void beep_warning()
{
    number = R1-R2;
    if(number<=0)
    {
        number = ~(number-1);
    }
    if(flag==0)
    {
        EA = 0;
        if(number>50)
        {
            beep = 1;
            motor = 1;
        }
        else
        {
            beep = 0;
            motor = 0;
        }
    }
    if(flag==1)
    {
        if(resistanceChanged==1)
        {
            beep = 1;
            motor = 1;
        }
        else
        {
            beep = 0;
            motor = 0;
        }
    }
    LCD_ShowNum(2,10,resistanceChanged,3);
}

void main()
{
    beep=0;
    motor=0;
    led = 0;
    LCD_Init();
    Time0_Init();
    LCD_ShowString(1,1,"zuo:");
    LCD_ShowString(1,10,"you:");
    LCD_ShowString(2,1,"Vt:");
    while(1)
    {
        u=get_AD_Res();
        U=(250*u)/128;
        R=200*U/250;
        u1=get_AD_Res1();
        U1=(250*u1)/128;
        R1=200*U1/250;
        u2=get_AD_Res2();
        U2=(250*u2)/128;
        R2=200*U2/250;
        LCD_ShowNum(1,5,R2,3);
        LCD_ShowNum(1,14,R1,3);
        LCD_ShowNum(2,4,R,3);
        beep_warning();
        if(!key)
        {
            led=~led;
            while(!key);
        }
        if(~key1)
        {
            EA=1;
            flag++;
            {
                if(flag>1)
                {
                    flag = 0;
                }
            }
            while(~key1);
        }
    }
}

四、实现现象

通过Proteus仿真和实际硬件测试,系统能够实现以下功能:

  1. 方向盘转动:电机根据模拟信号转动方向盘。
  2. 压力显示:LCD1602显示屏显示左右压力传感器的值。
  3. 重力加速度显示:LCD1602显示屏显示重力加速度值。
  4. 报警功能:当压力传感器的差值大于50或加速度值3秒内无变化时,蜂鸣器报警,电机停止转动。
  5. LED控制:按键控制LED灯的点亮与熄灭。

具体动态效果可以参考B站演示视频 。

五、总结

基于51单片机的方向盘模拟系统能够模拟汽车方向盘的各种操作,为汽车电子系统的研究和测试提供了一个实用的平台。通过扩展硬件和软件,该系统还可以增加更多功能,如语音提示、数据记录等。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料


原文地址:https://blog.csdn.net/weixin_66608063/article/details/142581246

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!