/*****************HJ-2WD舵机控制*****************
* 平台:慧净飞卡51小车 + Keil U4 + STC89C52RC
* 程序名称:智能小车巡黑线源程序(舵机转弯)
* 公司:慧净电子
* 淘宝:https://shop37031453.taobao.com/
* 网站:www.hjmcu.com
* 晶振:11.0592MHZ
* 售后技术说明:免费开源,不支持客户自己修改程序分析与改正
* 视频教程:本小车配套学习C语言详细视频教程,资料统一网盘下载
******************************************************************/
//按下S4按键,1秒左右启电小车(注意不要接入测速模块)
//按下复位健可以停止小车
//注意程序只做参考之用,要达到最理想的寻迹效果,还需要同学们细心调试。
//注意:电机是走不了直线的,需要同学位细心调试PWM 使两边电机转速达到平衡。
#include<AT89X52.H> //包含51单片机头文件,内部有各种寄存器定义
#include<HJ-2WD_PWM_FK.H> //飞卡小车专用头文件
#define uchar unsigned char
#define uint unsigned int
unsigned char n,count,angle;//距离标志位,0.5ms次数,角度标识
uchar i;
void DelayUs2x(uchar t)
{
while(--t);
}
void DelayMs(uchar t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us
{
i=i/10;
while(--i);
}
void delay_nms(unsigned int n) //延时n ms
{
n=n+1;
while(--n)
delay_nus(900); //延时 1ms,同时进行补偿
}
/*------------------------------------------------
定时器01初始化
//定时器1工作方式1 (舵机 ),定时器0 电机PWM调速控制信号
------------------------------------------------*/
void Time1_Int() interrupt 3//舵机
{
TH1=0xff;
TL1=0xa3;
if(count<angle)//判断0.5ms次数是否小于角度标识
pwm=1;//确实小于,pwm输出高电平
else
pwm=0;//大于则输出低电平
count=(count+1);//0.5ms次数加1
count=count%40;//次数始终保持为40即保持周期为20ms
}
//主函数
void main(void)
{
P0=0X00; //关数码管
P1=0XF0; //关电机
//本实验学习的按键启动知识
B: for(i=0;i<50;i++) //判断K4(S4)是否按下
{
delay(1); //1ms内判断50次,如果其中有一次被判断到k4(S4)没按下,便重新检测
if(P3_7!=0)//当k4(S4)按下时,启动小车前进.
goto B; //跳转到标号B,重新检测
}
//本实验学习的知识蜂鸣器,注意要在HJ-2WD_FK头文件里定义IO口
BUZZ=0; //50次检测S4确认是按下之后,蜂鸣器发出“滴”声响,然后启动小车。
delay(50);
BUZZ=1;//响50ms后关闭蜂鸣器
TMOD=0X11;
TH0= 0XFc; //1ms定时
TL0= 0X18;
TR0= 1;
ET0= 1;
EA = 1; //开总中断
TH1=0xff;
TL1=0xa3;
ET1=1;
TR1= 1;
while(1) //无限循环
{
//有信号为0 没有信号为1
if(Left_1_led==1&&Right_1_led==1) // 前面 没有障碍物 前速前进
{
run(); //调用前进函数
}
if(Right_1_led==0&&Left_1_led==0) //左右两边同时检测到障碍物
{
// Stoptrun(); //停止800MS
// delay(800);
//
Rearrun (); //后退 1600MS
delay_nms(500);
leftrun(); //调用小车左转 函数
delay_nms(200);
}
// else
if(Left_1_led==0&&Right_1_led==1) //左边检测到障碍物
{
rightrun(); //调用小车右转 函数
}
if(Right_1_led==0&&Left_1_led==1) //右边检测到障碍物
{
leftrun(); //调用小车左转 函数
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于51单片机的智能小车循迹(寻迹)避障的源代码
共66个文件
h:12个
bak:11个
uvproj:4个
5星 · 超过95%的资源 需积分: 35 215 下载量 186 浏览量
2016-07-24
08:55:28
上传
评论 46
收藏 161KB ZIP 举报
温馨提示
基于51单片机的智能小车循迹(循迹)避障的源代码,代码已经经过验证,请放心下载
资源推荐
资源详情
资源评论
收起资源包目录
智能小车循迹+避障代码.zip (66个子文件)
智能小车循迹避障
循迹避障小车
HJ-2WD.hex 2KB
HJ-2WD.lnp 42B
HJ-2WD_PWM_FK.H 4KB
HJ-2WD.uvgui.MCU 70KB
HJ-2WD_uvopt.bak 6KB
HJ-2WD 10KB
HJ-4WD_PWM.h 6KB
HJ-4WD.h 4KB
HJ-2WD_PWM.h 4KB
main.LST 6KB
HJ-2WD_uvproj.bak 13KB
HJ-2WD.uvgui_MCU.bak 70KB
HJ-2WD.uvopt 6KB
HJ-2WD.uvproj 13KB
HJ-2WD.plg 13KB
main.OBJ 11KB
HJ-2WD.M51 12KB
main.c 3KB
2驱小车2路避障程序-PWM加强版
HJ-4WD.hex 1KB
HJ-4WD_uvopt.bak 55KB
HJ-4WD_PWM.h 5KB
HJ-4WD.h 4KB
HJ-4WD.M51 10KB
HJ-4WD.plg 693B
HJ-4WD.uvopt 55KB
main.LST 4KB
HJ-4WD.lnp 42B
HJ-4WD.uvproj 13KB
HJ-4WD_uvproj.bak 0B
HJ-4WD 8KB
main.OBJ 9KB
main.c 2KB
避障小车
HJ-2WD.hex 2KB
HJ-2WD.lnp 42B
HJ-2WD_PWM_FK.H 4KB
HJ-2WD.uvgui.MCU 70KB
HJ-2WD_uvopt.bak 6KB
HJ-2WD 11KB
HJ-2WD_PWM.h 4KB
main.LST 6KB
HJ-2WD_uvproj.bak 13KB
HJ-2WD.uvgui_MCU.bak 70KB
HJ-2WD.uvopt 6KB
HJ-2WD.uvproj 13KB
HJ-2WD.plg 13KB
main.OBJ 12KB
HJ-2WD.M51 13KB
main.c 3KB
循迹小车
HJ-2WD.hex 1KB
HJ-2WD.lnp 42B
HJ-2WD_PWM_FK.H 4KB
HJ-2WD.uvgui.MCU 70KB
HJ-2WD_uvopt.bak 6KB
HJ-2WD 10KB
HJ-4WD_PWM.h 6KB
HJ-4WD.h 4KB
HJ-2WD_PWM.h 4KB
main.LST 5KB
HJ-2WD_uvproj.bak 13KB
HJ-2WD.uvgui_MCU.bak 70KB
HJ-2WD.uvopt 6KB
HJ-2WD.uvproj 13KB
HJ-2WD.plg 13KB
main.OBJ 11KB
HJ-2WD.M51 11KB
main.c 3KB
共 66 条
- 1
qq_27841743
- 粉丝: 5
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页