标题:
刚刚学了一个月51单片机,做了个超声波小车(舵机控制)还望各位指点
[打印本页]
作者:
shuzhi990
时间:
2019-2-21 13:51
标题:
刚刚学了一个月51单片机,做了个超声波小车(舵机控制)还望各位指点
另含舵机测试程序,l298n驱动电机程序
程序写得不是很好,还希望各位高手多多指点
TIM图片20190221135428.jpg
(1.54 MB, 下载次数: 33)
下载附件
2019-2-21 13:54 上传
实在是没弄懂该怎么发程序。。。只好截图了。。。
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
sbit duojip=P1^2; //舵机输出接口
sbit trig=P1^0; //触发脚
sbit echo=P1^1; //接受脚
unsigned int dis; //测算出的距离
unsigned char duojiCNT;
unsigned char duojiJD;
void open(); //打开超声波函数
void jisuan(); //计算距离函数
void main()
{
unsigned int a = 20000;
TMOD=0X11;
TR0=1; //打开定时器0,1,打开中断,并定时0.5ms
EA=1;
ET0=1;
TH0=0XFE;
TL0=0X33;
while(1)
{
if(dis<=8)
{
duojiJD=1;
duojiCNT=0;
for(a=20000;a>0;a--);
for(a=20000;a>0;a--);
open();
jisuan();
//{如果距离大于8,前进,并每隔一个for循环开启一次超声波,
//如果距离小于8,舵机转到0度//{如果0度处距离大于8,舵机归中,并前进 {距离小于8,舵机归中,后退
if(dis>=8) //{如果0度处距离小于8,舵机转到180度,开启超声波{距离大于8,归中
{
duojiJD=3; //舵机归中
duojiCNT=0;
for(a=20000;a>0;a--);
for(a=20000;a>0;a--);
}
else
{
duojiJD=5; //舵机转到180度
duojiCNT=0;
for(a=20000;a>0;a--);
for(a=20000;a>0;a--);
for(a=20000;a>0;a--);
open();
jisuan();
if(dis>=8)
{
duojiJD=3;
duojiCNT=0;
}
else
{
duojiJD=5;
duojiCNT=0;
for(a=20000;a>0;a--);
for(a=20000;a>0;a--);
for(a=20000;a>0;a--);
}
}
}
else
{
duojiJD=3;
duojiCNT=0;
open();
jisuan();
for(a=20000;a>0;a--);
}
}
}
void open()
{
trig=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
trig=0;
}
void jisuan()
{
unsigned int t;
TH1=0;
TL1=0;
while(!echo);
TR1=1;
while(echo);
TR1=0;
t=TL1+TH1*255;
dis=(t*1.7)/100;
}
void timer() interrupt 1
{
TH0=0XFE;
TL0=0X33;
if(duojiCNT<duojiJD)
{
duojip=1;
}
else
{
duojip=0;
}
duojiCNT++;
duojiCNT=duojiCNT%40; //每20ms duojiCNT归零
}
复制代码
所有资料51hei提供下载:
舵机测试,电机测试,超声波小车程序.rar
(85.41 KB, 下载次数: 49)
2019-2-21 13:50 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1