51单片机 HC-SR04超声波测距 我写的C语言代码,请问

51单片机 HC-SR04超声波测距 我写的C语言代码,请问,第1张

1、HC-SR04使用方法:给触发端子trig一个10us以上的高电平即可触发,触发后echo端子将接受到高电平,高电平的持续时间就是测距的往返时间。

2、例程:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

/*位定义*/

sbit CHUFA=P0^1    //位定义超声波触发端(10us以上高电平触发)

sbit JIESHOU=P0^3    //接收端(接受高电平)

sbit BEEP=P2^0        //蜂鸣器

sbit OUT0=P3^2        //外部中断0

uchar JS_FLAG        //接收标志

uint CF_TIME,t0,t1,shu

/*函数声明*/

void timer0()        

void int0()

void display(uint)

main(){

    CHUFA=0        //初始化拉低触发端和接收端电平

    JIESHOU=0

    JS_FLAG=0        

    CF_TIME=15        //初始化触发时间(大于10us)

    TMOD=0x11        //定时器方式选择

    EA=1             //开总中断

    ET0=1            //开定时器0中断

    EX0=1  陆仔           //开外部中断0

    IT0=0             //外部中断选择下降沿触发

    //JIESHOU=1

    while(1){

        OUT0=JIESHOU      //外部中断0被赋值为接收端信号,当出现下降沿是触发外部中断0

  掘枯      if(JS_FLAG==0){        //如果没有接收到高电平则触发

            CHUFA=1

            while(CF_TIME--)    //10us以上高电平触发传感器

        }

        if(JIESHOU==1){        

            TR0=1            //如果接收端收到高电平则启动定时器

            JS_FLAG=1         //并且标志位置1

            BEEP=0            //蜂鸣器响    

        }

        display(t1)    //显示测量时间(秒)

    }

}

/*定时器0中断程序*/

void timer0() interrupt 1{    

    TH0=(65536-10000)/256    //装初值 10ms

    TL0=(65536-10000)%256

    t0++                    //每进入一次中断t0加1    

}

/*外部中断0中断程序*/

void int0() interrupt 0{

    TR0=0            //一旦早散汪进入外部中断0,说明接收端收到下降沿信号。关闭定时器0

    JS_FLAG=0        //接收标志位置0

    BEEP=1               //关闭蜂鸣器

    t1=t0*10/1000    //测量时间为 进入定时器中断次数t0乘以每次时间10ms,除以1000化为秒为单位

    t0=0            //t0清零

}

/*数码管显数函数*/

void display(uint shu){

    //数码管显示函数

}

1.检查电脑是否存在病毒,请使用百度卫士进行木马查杀。

2.系统文件损坏或丢失,盗版系统或Ghost版本系统,很容易出现该问题。建议:使用完整版或正版系统。

3.安装的软件与系统或其它软件发生冲突,找到发生冲突的软件,卸载它。如果更新下载补丁不是该软件的错误补丁,也会引起软件异常,解决办法:卸载该软件,重新下载重新安装试试。顺便检查开机启动项,把没必要启动的启动项禁止开机启动。

4.如果检查上面的都没问题,可以试试下面的方法。

打开开始菜单→运行卖烂→输入cmd→回车,在命令提示符下输入下面命令 for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。

完成后,在输入下祥神面

for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。

如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,谨配亏耐心等待,直到屏幕滚动停止为止。(重启电脑)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12449390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存