单片机
返回首页

51单片机-模拟倒车雷达报警

2021-08-31 来源:eefocus

1.题目要求


我们在第九章第3讲的例程基础上,实现用超声波模块模拟倒车雷达报警的功能,当障碍物距离超声波模块小于等于10cm左右我们就用蜂鸣器鸣叫产生报警,大于10cm就不报警。代码上添加的程序量比较少,我们只是把定时时间改为200微秒好使蜂鸣器鸣叫的比较尖锐。


2.main.c测试代码


#include  

#include //详见第六章第8讲

#include     //详见第八章第11讲

#include

 

sbit TRIG = P2^0; 

sbit ECHO = P2^1; 

u8 FLAG=0,BEEP_FLAG=0;

void delay_20us() 

{

    _nop_();_nop_();_nop_();_nop_();_nop_(); 

    _nop_();_nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();_nop_();

}

   

void main()

{  

    u16 time_data,CM_data;

    TRIG = 0; 

    ECHO = 0;

   

    LED_Init();        //初始化LED硬件模块

    EA = 1;            //闭合总中断开关

    TIM1_Init(100,34); //定时100us,这是为了使蜂鸣器鸣叫的比较尖锐,34是微调使定时精度更高,每次微调都由中断函数里的内容而决定

   

    TMOD &= 0xF0;

    TMOD |= 0x01; 

    ET0  = 1;

    while(1)

    {   

        TH0  = 0; 

        TL0  = 0; 

        FLAG = 0;      //上次如果是超出测量范围,FLAG被置1,这次再测就要清0

    

        //启动发射声波

        TRIG = 1;    

        delay_20us();

        TRIG = 0;

    

        while(!ECHO);  //声波开始发射,ECHO引脚拉高退出这个循环

        TR0 = 1;       //打开定时器进行计数 

        while(ECHO);   //收到声波返回来的信号引脚就拉低,退出这个循环,如果定时器溢出,就会进入中断函数执行“FLAG=1;”也就是距离太远,一直没有收到反射回来的信号

        TR0 = 0;       //关闭定时器结束计数

    

        time_data =TH0;

        time_data=(time_data<<8)|TL0;                //把两个八位的寄存器里的值组成一个16位变量的值,也就是定时器计数值

        CM_data = time_data/54;                      //得到厘米的表达式

    

        if(FLAG==1){ShowNumber(999); delay_ms(20);}  //超出测量范围显示999,延时为的是不让数码管频繁在两个数的偏差之间变化太频繁   

        else {ShowNumber(CM_data); delay_ms(20);}

    

        if(CM_data<=10)BEEP_FLAG=1;                  //测距小于等于10CM蜂鸣器鸣叫

        else BEEP_FLAG=0;

    }

}

  

void TIM1_IRQHandler() interrupt 3

{

    static u8 i=0;

    TH1 = T1RH;                //重新加载重载值

    TL1 = T1RL;

   

    i++;

    if(i>=5){i=0; SEG_Scan();} //间隔1ms刷新数码管

   

    if(BEEP_FLAG==1)BEEP=!BEEP;

}

   

void TIM0_IRQHandler()  interrupt 1   

{

    FLAG=1; 

}


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何构建一个触摸传感器电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章