158文章网欢迎您
您的位置:158文章网 > 范文示例 > [51单片机] HC-SR04超声波测距仪

[51单片机] HC-SR04超声波测距仪

作者:158文章网日期:

返回目录:范文示例

今天小编给各位分享超声波测距仪的设计的知识,文中也会对其通过[51单片机] HC-SR04超声波测距仪和求用HC-SR04超声波测距仪来测距离,用51单片机控制,LCD1602显示距离的完整c程序。等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!

内容导航:
  • [51单片机] HC-SR04超声波测距仪
  • 求用HC-SR04超声波测距仪来测距离,用51单片机控制,LCD1602显示距离的完整c程序。
  • 运用HC-SR04超声波距模块做的51单片机超声波测距系统完成超声波测距(LED数码管显示)与报警
  • 51单片机超声波测距代码
  • 一、[51单片机] HC-SR04超声波测距仪

    1、HC-SR04超声波模块工作原理

    (1)采用IO口触发测距,给至少10us高电平脉冲;

    (2)模块自动发送八个40khz方波,并自主检测是否有电波返回;

    (3)当有信号返回时,通过IO口输出一个高电平,高电平的持续时间就是超声波从发送到返回的时间;

    (4)测距公式:距离=(高电平时间*声速)/2;

    超声波模块的时序图

    (5)工作原理分析

    英语啥的我也看不懂呐

    差不多就是这个意思

    2、使用元器件如下

    超声波模块和蓝牙模块

    加上51单片机后的连接图

    3、开始运行时的工作状态

    哇哦还是蛮准的嘛,允许一丢丢误差

    把障碍物放在距离超声波模块前方的14cm左右(当然放多远是无所谓的,这里就以14cm为例吧!),根据单片机计算出来的值,由蓝牙模块发送到手机上面。

    嘿嘿不晓得这样说有没有说清楚,这差不多就是我的理解吧!

    这时候要用个手机软件(当然用电脑也是ok的啦,也需要一个蓝牙串口的软件),俺用的是下面这个➡️

    偷偷告诉你豌豆荚可以下

    4、上主菜

    #include <AT89X51.H>

    #include <intrins.h>

    #include <STDIO.H> //c语言库

    #define uchar unsigned char

    #define uint unsigned int

    #define ECHO P1_1 //echo 接线:模块TRIG接 P1.2 ECH0 接P1.1

    #define TRIG P1_0 //trig

    unsigned int time=0;

    float S=0;

    bit flag =0;

    void Conut(void)

    {

    time=TH0*256+TL0;

    TH0=0;

    TL0=0;

    S=(time*1.87)/100; //算出来是CM

    if(flag==1) //超出测量

    {

    flag=0;

    printf("--------");

    }

    printf("S=%5.2fcm",S);

    }

    void delayms(unsigned int ms)

    {

    unsigned char i=100,j;

    for(;ms;ms--)

    {

    while(--i)

    {

    j=10;

    while(--j);

    }

    }

    }

    void zd0() interrupt 1 //T0中断计数器溢出

    {

    flag=1; //中断溢出标志

    }

    void StartModule() //T1中断用来扫描

    {

    int i;

    TRIG=1; //启动一次模块

    for(i=0;i<21;i++)

    {

    _nop_();

    }

    TRIG=0;

    }

    void main(void) //主工作区

    {

    TMOD=0x21; //T0为方式1 GATE=1;

    SCON=0x50; //SCON是单片机串行口控制寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态。

    TH1=0xFD;

    TL1=0xFD;

    TH0=0;

    TL0=0;

    TR0=1;

    ET0=1; //允许T0中断

    TR1=1; //开启定时器

    TI=1; //TI是串口送数据完成标志

    EA=1; //开启总中断

    while(1)

    {

    StartModule(); //启动模块

    while(!ECHO); //当ECHO为零时

    TR0=1; //开启计数

    while(ECHO);//当ECHO为1计数并等待

    TR0=0; //关闭计数

    Conut(); //计算

    delayms(50); //500ms = 0.5s

    }

    }

    下次见

    2020.05.16

    ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧··END·‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

    一、求用HC-SR04超声波测距仪来测距离,用51单片机控制,LCD1602显示距离的完整c程序。

    这也太好做了吧,我正好前两天给一个同学做过毕设,百度私信吧,

    二、运用HC-SR04超声波距模块做的51单片机超声波测距系统完成超声波测距(LED数码管显示)与报警

    P3^2数码管段选P0.0-P0.7位选P1.0-P1.3 除了你自己,没人能做。因为没有硬件逻辑图, 没有检测的接口, 没有显示的接口描述,什么都没

    三、51单片机超声波测距代码

    #include
    #defineucharunsignedchar
    #defineuintunsignedint
    #defineLCD_DATAP2
    sbitLCD_BL=P1^0;
    sbitLCD_RS=P1^1;
    sbitLCD_RW=P1^2;
    sbitLCD_EN=P1^3;
    sbitTRIG=P0^0;
    sbitECHO=P0^1;
    bitflag=0;
    uchartime,b,s,g;
    uintl;
    ucharcodenum_tab[]="0123456789";
    voiddelay1602(uintz);
    voiddelay10ms(uintx);
    voidwrite_com(ucharcom);
    voidwrite_dat(uchardat);
    voidinit_t0();
    voidinit_lcd1602();
    voidGet_L();
    voiddisplay();
    voidmain()
    {
    LCD_BL=0;
    TRIG=0;
    init_t0();
    init_lcd1602();
    delay10ms(50);
    while(1)
    {
    Get_L();
    display();
    delay10ms(6);
    }
    }
    voiddelay1602(uintz)
    {
    uintx,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
    }
    voiddelay10ms(uintx)
    {
    uinti,j;
    for(i=x;i>0;i--)
    for(j=1149;j>0;j--);
    }
    voidwrite_com(ucharcom)
    {
    LCD_RW=0;
    LCD_RS=0;
    LCD_DATA=com;
    LCD_EN=1;
    delay1602(5);
    LCD_EN=0;
    }
    voidwrite_dat(uchardat)
    {
    LCD_RW=0;
    LCD_RS=1;
    LCD_DATA=dat;
    LCD_EN=1;
    delay1602(5);
    LCD_EN=0;
    }
    voidinit_lcd1602()
    {
    write_com(0x38);
    write_com(0x38);
    write_com(0x38);//设置8位格式,2行5x7点阵
    write_com(0x0c);//开显示,关光标,不闪烁
    write_com(0x06);//文字不动,光标自动右移
    write_com(0x01);//清屏并光标复位
    }
    voidinit_t0()
    {
    TMOD=0x01;
    TH0=0x00;
    TL0=0x00;
    }
    voiddisplay()
    {
    if(l!=0)
    {
    b=l/100;
    s=l%100/10;
    g=l%10;
    write_com(0x00|0x80);
    write_dat(num_tab[b]);
    write_dat(num_tab[s]);
    write_dat(num_tab[g]);
    write_dat('c');
    write_dat('m');
    }
    }
    voidGet_L()
    {
    TRIG=1;
    delay10ms(1);
    TRIG=0;
    while(ECHO!=1);
    TR0=1;
    while((ECHO!=0)&(TH0<0x4f));
    TR0=0;
    l=TH0;
    l<<=8;
    l+=TL0;
    if((l<174)|(l>20300))
    {
    l=0;
    flag=1;
    }
    else
    l=(l*1.085)/58;
    TH0=0x00;
    TL0=0x00;
    }

    关于超声波测距仪的设计的问题,通过《运用HC-SR04超声波距模块做的51单片机超声波测距系统完成超声波测距(LED数码管显示)与报警》、《51单片机超声波测距代码》等文章的解答希望已经帮助到您了!如您想了解更多关于超声波测距仪的设计的相关信息,请到本站进行查找!

    相关阅读

    • [51单片机] HC-SR04超声波测距仪

    • 158文章网范文示例
    • 今天小编给各位分享超声波测距仪的设计的知识,文中也会对其通过[51单片机] HC-SR04超声波测距仪和求用HC-SR04超声波测距仪来测距离,用51单片机控制,LCD1602显示距离的完整c程序。等
    关键词不能为空

    范文示例_作文写作_作文欣赏_故事分享_158文章网