标题:
测距模块程序初级1——51单片机用2个计数器控制2个超声波测距模块
[打印本页]
作者:
nius
时间:
2015-4-10 02:56
标题:
测距模块程序初级1——51单片机用2个计数器控制2个超声波测距模块
本人认为该程序的处理速度即运行速度还有待增强!程序还有简化的余地
还有升级的必要:1、毕竟用了两个定时器!(这样一个51mcu只能处理两个模块工作,不能处理四个,
如此要使小车有避障或循迹功能至少需要三个51单片机!实在是浪费资源)
2、应该只用一个定时器(我理想的的方法是用一个单片机处理4个模块的数据一个单片机将处理后的数
据进行分析并作出响应,以控制电机转动,以控制小车)
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar num1,num2,num3,led0,led1,oo1,oo2,num11,num12,num13,led10,led11;
sbit tr=P1^0;
sbit ec=P1^1;
sbit lcd0=P2^0;
sbit lcd1=P2^1;
sbit tr1=P1^2;
sbit ec1=P1^3;
sbit lcd10=P2^2;
sbit lcd11=P2^3;
void timer(uint x)
{
uint q,w;
for(q=x;q>0;q--)
for(w=110;w>0;w--);
}
void init()
{
ec=0;
tr=0;
num1=0;
num2=0;
num3=0;
led0=1;
led1=1;
}
void trk()
{
tr=1;
timer(10);
tr=0;
num3=1;
}
void eck()
{
if(ec==1)
{
TR0=1;
num2=1;
}
if(ec==0&num2==1)
{
TR0=0;
if(num1<30)
{
led0=0;
num3=0;
}
if(num1>30)
{
led1=0;
num3=0;
}
}
}
void open_time()
{
TMOD=0x11;
TH0=(65536-1)/256;
TL0=(65536-1)%256;
EA=1;
ET0=1;
TR0=0;
}
void dongzuo()
{
if(led0==0)
{
lcd0=0;
lcd1=1;
oo2=1;
oo1=0;
}
if(led1==0)
{
lcd1=0;
lcd0=1;
oo2=1;
oo1=0;
}
}
void init1()
{
ec1=0;
tr1=0;
num11=0;
num12=0;
num13=0;
led10=1;
led11=1;
}
void tr1k()
{
tr1=1;
timer(10);
tr1=0;
num13=1;
}
void ec1k()
{
if(ec1==1)
{
TR1=1;
num12=1;
}
if(ec1==0&num12==1)
{
TR1=0;
if(num11<30)
{
led10=0;
num13=0;
}
if(num11>30)
{
led11=0;
num13=0;
}
}
}
void open_time1()
{
TMOD=0x01;
TH0=(65536-1)/256;
TL0=(65536-1)%256;
EA=1;
ET1=1;
TR1=0;
}
void dongzuo1()
{
if(led10==0)
{
lcd10=0;
lcd11=1;
oo1=1;
oo2=0;
}
if(led11==0)
{
lcd11=0;
lcd10=1;
oo1=1;
oo2=0;
}
}
void ff()
{
oo1=1;
oo2=0;
}
void main()
{
while(1)
{
ff();
while(oo1==1)
{
init();
open_time();
trk();
while(num3==1)
{
eck();
}
dongzuo();
}
while(oo2==1)
{
init1();
open_time1();
tr1k();
while(num13==1)
{
ec1k();
}
dongzuo1();
}
}
}
void time() interrupt 1
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
num1++;
if(num1==65536)
{
num1=0;
}
}
void time1() interrupt 3
{
TH1=(65536-1)/256;
TL1=(65536-1)%256;
num11++;
if(num11==65536)
{
num11=0;
}
}
此程序的设计者:薛羽豪
作者:
学习王
时间:
2017-8-11 10:12
有详细的注解吗,还有这个程序是用来做什么的,现在我想用两个超声波同时测距,一起工作是不是会有干扰。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1