有大神能给我详细的解读一下这个代码吗,这个程序数基于51单片机超声波自动驾驶小车设计里的程序,跪求。

有大神能给我详细的解读一下这个代码吗,这个程序数基于51单片机超声波自动驾驶小车设计里的程序,跪求。,第1张

S = time 2;//先算出一共的时间是多少微秒。 S = S 017;//此时计算到的结果为毫米,并且是精确到毫米的后两位了,有两个小数点

除了这两句为什么这样换算距离看不懂之外,下面的都能看懂,就是根据距离控制小车,然后显示距离

void main()

{

EA=1;

ET0=1;

TMOD=0x10;

TH1=(65536-12)/256;

TL1=(65536-12)%256;

TR1=1;

TF1=0;

while(1)

{

TH1=(65536-12)/256;

}

}

SINGNAL(INTERRUPT1)

{

while(TF1==0) ;

//TF1=0;

P1_0=~P1_0;

TL1=(65536-12)%256;

}

呵呵 我不是很懂 只是简单的改了一下 不知道对不对 也希望高手指教

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

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

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

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

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

完成后,在输入下面

for %i in (%windir%\system32\ocx) do regsvr32exe /s %i 回车。

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

bai_data = SEG7[bai_data];

shi_data = SEG7[shi_data]&0x7f;

ge_data = SEG7[ge_data];

这三条,在共阳极数码管上,可以实现的显示效果为:888。

即,两位整数、小数点、一位小数。

变量名称:bai、shi、ge,只不过是内部的名称而已,

它所代表的单位,也可能是 01 度、米、秒,等等。

那么,显示出来的时候,就要在十位、个位之间,显示出来小数点。

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

2、例程:

#include<reg52h>

#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=t010/1000;    //测量时间为 进入定时器中断次数t0乘以每次时间10ms,除以1000化为秒为单位

    t0=0;            //t0清零

}

/数码管显数函数/

void display(uint shu){

    //数码管显示函数

}

以上就是关于有大神能给我详细的解读一下这个代码吗,这个程序数基于51单片机超声波自动驾驶小车设计里的程序,跪求。全部的内容,包括:有大神能给我详细的解读一下这个代码吗,这个程序数基于51单片机超声波自动驾驶小车设计里的程序,跪求。、如果买超声波测距的模块没有晶振,40KHZ的方波需通过51单片机实现,要怎么写程序呀请高手指点、超声波hc-sr04的c51程序有点小错误,求指正。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9293876.html

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

发表评论

登录后才能评论

评论列表(0条)

保存