在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → 基于51单片机超声波避障小车程序

基于51单片机超声波避障小车程序

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.09M
  • 下载次数:14
  • 浏览次数:582
  • 发布时间:2021-03-07
  • 实例类别:嵌入式开发
  • 发 布 人:张凝雨
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 51单片机 超声波 避障 51 程序

实例介绍

【实例简介】

1、黑白线识别模块调试(注意可调电阻调试不能用力过度,否则损

坏W1\W2 可调电阻) 由W2 W5 W4 电位器,D4 D5 D2 信号指示灯
以及三路循迹探头组成。D4 D5 D2 信号灯没有接接收到红外信号
时会不亮(也就是检测到黑线输出高电平1 ), 当接到到红外反
馈信号后,指示灯亮起(也就是检测到地面没有黑线输出低电平
0)。红外光线有一个反射特性。但对于不同的物体反射特性是不
一样的, 特别是对白色反光的物体,红外光线的反射量将会多一
点。而对黑色不反光的物体,红外反射量将会大量的减少。那么
我们就可利用这个特性来完成黑与白的判断。
1)W2 左循迹信号灵敏度调节----逆时针调节电位器是增加循迹灵敏度,
当小车摆在地面上面时,D4 指示灯不亮,说明左边的循迹探头没有检测
到地面,此时就需要调节电位器(前提是焊接没有问题的情况下),顺时
针调节电位器时降低循迹灵敏度。
2)W5 中间循迹信号灵敏度调节----逆时针调节电位器是增加循迹灵敏
度,当小车摆在地面上面时,D5 指示灯不亮,说明中间的循迹探头没有
检测到地面,此时就需要调节电位器(前提是焊接没有问题的情况下),
顺时针调节电位器时降低循迹灵敏度。
3)W4 右边循迹信号灵敏度调节----逆时针调节电位器是增加循迹灵敏
度,当小车摆在地面上面时,D2 指示灯不亮,说明右边的循迹探头没有
检测到地面,此时就需要调节电位器(前提是焊接没有问题的情况下),
顺时针调节电位器时降低循迹灵敏度。
(注意事项,调试时不要对着强光,建议在室内调试,环境光线对
检测距离有比较大的影响,这是红外线本身原因,同板子功能无
关)。黑白线合理参数调试---调节电位器W2,在反馈距离与小
车车轮底部一个平面上,操作员注意要认真,细致调动W1 电位
器,切忌着急(其他几路调试方法一样)。
提示说明:有可能会出现黑线传感器感应不到黑线的情况是因为黑线传感器的灵敏度
调得太高了应该调低灵敏度这样才能检测到黑线因为灵敏度太高黑色反射的红外光都
能被传感器识别,导致检测失败应该把黑线传感器上的可调电阻参考上面调节说明调
试。
2、避障模块调试由W1(W3)电位器,D3 D1 信号指示灯左(右)光电
传感器组成。当D3 信号灯没有接收到红外信号时不亮(也就是说前
面没有障碍物输出高电平1),当接受到红外反馈信号后,指示灯亮
起(也就是说前面有障碍物输出低电平0)。
1)W1 左避障信号强度调节----逆时针调节电位器是增加检测距离,顺时
针调节电位器时减少检测距离。
2)W3 右避障信号强度调节----逆时针调节电位器是增加检测距离,顺时
针调节电位器时减少检测距离。
(注意事项,调试时不要对着强光,建议在室内调试,环境光线对检
测距离有比较大的影响,这是红外线本身原因,同板子功能无关)。
3、电机模块调试:测试条件,按照安装视频接好线,烧录我们的
单独避障程序,看电机有没有正常转,如果正常转说明电机驱

动电路焊接正常。

【实例截图】

【源码目录】

超声波避障程序无key功能

└── 9、ZY10A超声波避障程序无key功能
    ├── 12864.LST
    ├── 12864.OBJ
    ├── 12864.c
    ├── 12864.h
    ├── C51FPS
    │   └── C51FPS.LIB
    ├── C51FPS.rar
    ├── STARTUP.A51
    ├── STARTUP.LST
    ├── STARTUP.OBJ
    ├── ZY08-C超声波避障程序.plg
    ├── ZYWIFI0939C超声波避障程序(不带1602显示)
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).LST
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).M51
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).OBJ
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).build_log.htm
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).c
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).hex
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).lnp
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).plg
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).uvgui.Administrator
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).uvgui.张晓明
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).uvopt
    ├── ZYWIFI0939C超声波避障程序(不带1602显示).uvproj
    ├── ZYWIFI0939C超声波避障程序(不带1602显示)_uvopt.bak
    ├── ZYWIFI0939C超声波避障程序(不带1602显示)_uvproj.bak
    └── 关于超声波测距程序编译不成功的说明.txt

2 directories, 26 files



【核心代码】


#include "reg52.h"
#include <12864.h>
#define uchar unsigned char
#define uint unsigned int

void RDBF(void)
{
Uchar temp;
RS=0; // RS=0
RW=1; // RW=1
while(1)
{
P0=0xFF; //数据线为输入
E=1;
temp=P0;
E=0; // E=0
if ((temp&0x80)==0) break;
}
}


//写数据到指令寄存器
void WRCommand(Uchar comm)
{
RDBF();
RW=0;
P0=comm;
E=1;
E=0;
}

//写数据到数据寄存器
void WRData(Uchar TEMP)
{
RDBF();
RS=1;
RW=0;
P0=TEMP;
E=1;
E=0;
//stopint();
}

//初始化 LCD-8 位接口
void LCDInit(void)
{ // PSB=0; //串口
PSB=1;//并口时选这个,上一行取消
REST=1;
REST=0;
REST=1;
WRCommand(0x30); //基本指令集,8 位并行
WRCommand(0x06); //启始点设定:光标右移
WRCommand(0x01); //清除显示 DDRAM
WRCommand(0x0C); //显示状态开关:整体显示开,光标显示关,光标显示反白关
WRCommand(0x02); //地址归零
}

//显示数组字符串(显示半宽字型 16*8 点阵)
void ShowQQChar(Uchar addr,Uchar *english,Uchar count)
{
Uchar i;
WRCommand(addr);//设定 DDRAM 地址
for(i=0;i<count;)
{
WRData(english[i*2]);
WRData(english[i*2 1]);
i ;
}
}

//显示连续字串(半宽字符)
void ShowNUMChar(Uchar addr,Uchar i)
{
Uchar k;

WRCommand(addr);//设定 DDRAM 地址

k=i&0xf0;
k>>=4;
if(k<10)
{    
 k=k 0x30;
 WRData(k);
 k=k-0x30;
}
if(k>=10)
{
    k=k-10;
    k=k 0x41;
     WRData(k);
}
addr ;
k=i&0x0f;
if(k<10)
{    
 k=k 0x30;
 WRData(k);
 k=k-0x30;    
}
if(k>=10)
{
    k=k-10;
    k=k 0x41;
     WRData(k);
}

}
/**************12864程序******************************************/
void LCD_show1(void)
{
    WRCommand(0x01); //清除显示 DDRAM
    WRCommand(0x30);
    ShowQQChar(0x80,"单片机智能电梯",7);
    ShowQQChar(0x90,"班级: 二班",6);
    ShowQQChar(0x88,"姓名:张三",5);
    ShowQQChar(0x98,"学号:123456",7);
}



//    ShowQQChar(0x88,"电梯状态: 停止",7);
//    ShowQQChar(0x98,"当前人数: 00人",7);
//自定义字符写入 CGRAM
//void WRCGRAM(Uchar data1,Uchar data2,Uchar addr)
//{
//Uchar i;
//for(i=0;i<16;)
//{
//WRCommand(addr i); //设定 CGRAM 地址
//WRData(data1);
//WRData(data1);
//i ;
//WRCommand(addr i); //设定 CGRAM 地址
//WRData(data2);
//WRData(data2);
//i ;
//}
//}
//显示自定义的字符,并把这个字符填满全屏 16*16
//void ShowCGChar(Uchar addr,Uchar i)
//{
//Uchar j;
//for(j=0;j<0x20;)
//{
//WRCommand(addr j); //设定 DDRAM 地址
//WRData(0x00);
//WRData(i);
//j ;
//}
//}
//void CLEARGDRAM(void)
//{
//Uchar j;
//Uchar i;
//WRCommand(0x34);
//WRCommand(0x36);
//for(j=0;j<32;j )
//{
//WRCommand(0x80 j);
//WRCommand(0x80);//X 坐标
//for(i=0;i<32;i )//
//    {
//WRData(0x00);
//}
//}
//}

实例下载地址

基于51单片机超声波避障小车程序

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警