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程序有点小错误,求指正。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)