标题:
单片机+超声波控制舵机转动源程序
[打印本页]
作者:
wW123xz
时间:
2020-3-12 17:52
标题:
单片机+超声波控制舵机转动源程序
单片机源程序如下:
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Trig=P3^4; //控制端
sbit Echo=P3^5; //接收端
sbit led=P1^3;
sbit servorControl =P1^3; //舵机的控制引脚
uchar flag=0;
uchar control=5;
uchar servorTime=0;
unsigned char T0RH=0;
unsigned char T0RL=0;
void time_init()
{
EA=1;
TMOD=0x11;
TH0 = 0;
TL0 = 0;
}
///////////////////////////////////////
void delay(uchar time){ //延迟函数
uchar i;
for(;time>0;time--){
for(i=0;i<255;i++);
}
}
//初始化定时器
void Delay_us(unsigned char t)
{
while(--t);
} //大约延时t*2+5us 超声波模块用
//////////////////////////////////////
void timer0()interrupt 1
{
TH0 = 0;
TL0 = 0;
}
//中断程序 初始化赋值 重新计数 超声波模块用 计算时间
void main()
{
unsigned int time,distance;
EA=1;
ET0=1;
ET1=1;
TMOD=0x11;
TH1=0xff;
TL1=0x9c;
servorTime=0;
Trig=0;
Echo=0;
time_init();
while(1)
{
Trig=1;
Delay_us(5);
Trig=0;
while(Echo==0);
TR0=1;
while(Echo);
TR0=0;
time=TH0*256+TL0;
distance=(int)(time*0.017); //计算路程 单位为cm
TH0=0;
TL0=0;
if(distance<30) //如果距离小于30cm 蜂鸣器响
{
control=15; //使舵机向正摆动
servorTime=0;
TR1=1;
delay(200);
delay(200);
TR1=0;
}
else
{
control=5; //使舵机向右摆动
servorTime=0;
TR1=1;
delay(200);
delay(200);
TR1=0;
delay(200);
delay(200);
}
}
}
void T1_int(void) interrupt 3{ //产生舵机所需要的脉冲
TH1=0xff;
TL1= 0x9c;
servorTime++;
if(servorTime<=control)
servorControl=1;
else
servorControl=0;
if(servorTime>=200)
servorTime=0;
}
复制代码
所有资料51hei提供下载:
舵机转向与超声波.zip
(29.16 KB, 下载次数: 14)
2020-3-12 17:51 上传
点击文件名下载附件
整个压缩包
下载积分: 黑币 -5
作者:
admin
时间:
2020-3-12 22:18
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
于丽华
时间:
2020-4-1 15:40
admin 发表于 2020-3-12 22:18
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
没有编辑按钮啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1