找传奇、传世资源到传世资源站!

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

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

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);
//}
//}
//}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复