• 基于51单片机的倒车雷达设计


    主要功能:

    本系统可具备以下几个功能:

    (1)倒车时,可显示车辆与后障碍物之间的距离;

    (2)可自由设定报警距离;

    (3)当车辆与障碍物之间的距离小于等于设定的距离时,可发出声光报警;

    (4)可根据环境温度的不同对声速的计算进行自动修正。

    主要参数

    (1)测量距离:20 cm ~ 450 cm;

    (2)显示精度:1 cm

    (3)测量精度:小于1%;

    (4)电源:5 V直流

    d05529d6cefe4bfabcfd9817344dcca9.png

    # include

    # include

    /*********************************************************/

    // 宏定义

    /*********************************************************/       

    #define uchar unsigned char

    #define uint  unsigned int

    /*********************************************************/

    // 管脚定义区

    /*********************************************************/       

    sbit Lcd_E      = P1^0; // LCD_E管脚

    sbit Lcd_Rw     = P1^1; // LCD_RW管脚

    sbit Lcd_Rs     = P1^2; // LCD_RS管脚

    sbit Key_Astern = P1^3; // 倒车开关的管脚

    sbit Key_Set    = P1^4; // “设置”键的管脚

    sbit Key_Down   = P1^5; // “-”键的管脚

    sbit Key_Up     = P1^6; // “+”键的管脚

    sbit Alarm      = P1^7; // 声光报警管脚

    sbit Trig_1     = P2^0; // 第1个探头TRIG管脚

    sbit Echo_1     = P2^1; // 第1个探头ECHO管脚

    sbit Trig_2     = P2^2; // 第2个探头TRIG管脚

    sbit Echo_2     = P2^3; // 第2个探头ECHO管脚

    sbit Trig_3     = P2^4; // 第3个探头TRIG管脚

    sbit Echo_3     = P2^5; // 第3个探头ECHO管脚

    sbit Trig_4     = P2^6; // 第4个探头TRIG管脚

    sbit Echo_4     = P2^7; // 第4个探头ECHO管脚

    sbit DHT_Data   = P3^2; // DHT11传输总线管脚

    /*********************************************************/

    // 特殊功能寄存器定义区

    /*********************************************************/

    sfr ISP_DATA    = 0xe2; // 定义数据寄存器

    sfr ISP_ADDRH   = 0xe3; // 定义地址寄存器高八位

    sfr ISP_ADDRL   = 0xe4; // 定义地址寄存器低八位

    sfr ISP_CMD     = 0xe5; // 定义命令寄存器

    sfr ISP_TRIG    = 0xe6; // 定义命令触发寄存器

    sfr ISP_CONTR   = 0xe7; // 定义命令寄存器

    /*********************************************************/

    // 全局标量定义区

    /*********************************************************/

    uint Alarm_Distance;

    bit Is_Not_Show = 1;

    bit Is_Long_Bright = 0;

    /*********************************************************/

    // 各种延时函数定义区

    /*********************************************************/

    void Delay30us() // 精确延时30us

    {

             unsigned char i;

             _nop_();

             i = 12;

             while (--i);

    }

    void Delay40us() // 精确延时40us

    {

             unsigned char i;

             _nop_();

             i = 17;

             while (--i);

    }

    void Delay80us() // 精确延时80us

    {

             unsigned char i;

             _nop_();

             i = 37;

             while (--i);

    }

    void Delay1ms() // 精确延时1ms

    {

             unsigned char i, j;

             i = 2;

             j = 239;

             do

             {

                      while (--j);

             } while (--i);

    }

    void Delay5ms() // 精确延时5ms

    {

             unsigned char i, j;

             i = 10;

             j = 183;

             do

             {

                      while (--j);

             } while (--i);

    }

    void Delay10ms() // 精确延时10ms

    {

             unsigned char i, j;

             i = 20;

             j = 113;

             do

             {

                      while (--j);

             } while (--i);

    }

    void Delay15ms() // 精确延时15ms

    {

             unsigned char i, j;

             i = 30;

             j = 43;

             do

             {

                      while (--j);

             } while (--i);

    }

    void Delay20ms() // 精确延时20ms

    {

             unsigned char i, j;

             i = 39;

             j = 230;

             do

             {

                      while (--j);

             } while (--i);

    }

    void Delay70ms() // 精确延时70ms

    {

             unsigned char i, j;

             i = 137;

             j = 44;

             do

             {

                      while (--j);

             } while (--i);

    }

    void Delay500ms() // 精确延时500ms

    {

             unsigned char i, j, k;

             _nop_();

             i = 4;

             j = 205;

             k = 187;

             do

             {

                      do

                      {

                              while (--k);

                      } while (--j);

             } while (--i);

    }

    void Delay_Ms(uint time) // 自定义延时函数_不精确

    {

             uint i, j;

             for(i=0; i

             {

                      for(j=0; j<112; j++);

             }

    }

    /*********************************************************/

    // 禁止EEPROM读、写、擦除操作

    /*********************************************************/

    void ISP_Disable()

    {

             ISP_CONTR = 0;

             ISP_ADDRH = 0;

             ISP_ADDRL = 0;

    }

  • 相关阅读:
    外卖点餐小程序源码 扫码点餐小程序源码
    前端学习案例-路由懒加载的工作原理
    三防加固平板在房地产行业的应用|亿道三防onerugged
    软件设计模式
    DBCO-PEG-Arginine|二苯并环辛炔-聚乙二醇-精氨酸|DBCO-PEG-精氨酸
    设计模式学习笔记 - 开源实战四(中):剖析Spring框架中用来支持扩展的设计模式
    信息系统项目管理师必背核心考点(三十)成本的类型
    java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建
    python绘图小dome
    安卓金钱过滤器(保留两位小数,保证小数点前面保留几位数)
  • 原文地址:https://blog.csdn.net/qq_63964231/article/details/127895956