智能机器人制作全过程Word文件下载.docx
- 文档编号:22154124
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:40
- 大小:1.67MB
智能机器人制作全过程Word文件下载.docx
《智能机器人制作全过程Word文件下载.docx》由会员分享,可在线阅读,更多相关《智能机器人制作全过程Word文件下载.docx(40页珍藏版)》请在冰豆网上搜索。
LN==1&
RW==1&
LW==1)
{ahead();
continue;
}
if((RN==0||LN==0)&
{right();
(RW==0||LW==0))
{left();
if(RN==0&
LN==0&
RW==0&
LW==0)
stop();
}
voidahead()
IN1=0;
IN2=1;
IN3=0;
IN4=1;
voidleft()
IN2=0;
voidright()
IN4=0;
voidstop()
5.功能模块介绍
5.1电源模块
供电系统的原理图如下
7805的5V输出给单片机以及各个功能模块供电,在实际应用过程中我们可能需要好几块7805,但是我们要注意的是:
各个7805之间的输出绝对不能够并联。
7806的6V输出给点击供电作为动力电源。
7805与7806要公地。
5.2电机驱动模块的原理及驱动程序
5.2.1电机驱动模块的原理
L298内部的原理图如下
OUT1与OUT2与小车的一个电机的正负极相连,OUT3与OUT4与小车的另一个电机的正负极相连,单片机通过控制IN1与IN2,IN3与IN4分别控制电机的正反转。
ENA与ENB分别控制两个电机的使能。
L298控制表
IN1
IN2
ENA
电机状态
x
停止
1
顺时针
逆时针
注意:
X表示状态不定
电机驱动模块原理图
L298有两路电源分别为逻辑电源和动力电源,上图中6V为逻辑电源,12V为动力电源。
J4接入逻辑电源,J6接入动力电源,J1与J2分别为单片机控制两个电机的输入端,J3与J5分别与两个电极的正负极相连。
ENA与ENB直接接入6V逻辑电源也就是说两个电机时刻都工作在使能状态,控制电机的运行状态只有通过J1与J2两个接口。
由于我们使用的电机是线圈式的,在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会形成很大的反向电流,在电路中加入二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。
L298的PCB安装图
5.2.2电机驱动模块测试程序
程序清单1
/*****************************************
实现电机的方向控制
******************************************/
#defineucharunsignedchar
#defineuintunsignedint
/***************************************
端口定义
****************************************/
//P10与电机驱动IN1相连
//P11与电机驱动IN2相连
//P12与电机驱动IN3相连
//P13与电机驱动IN4相连
各个子函数定义
voidTurn_left(void)
voidTurn_right(void)
IN1=1;
IN3=1;
voidGo(void)
voidBack(void)
voidDelay(uchardly)
uinti;
for(;
dly>
0;
dly--)
for(i=50000;
i>
i--);
/*************************************
主函数
**************************************/
Go();
Delay(20);
Back();
Turn_left();
Turn_right();
5.3红外循迹模块的原理及测试程序
5.3.1红外循迹模块的原理
在智能机器人小车的设计中我们使用的是一体反射式红外对管,所谓一体就是发射管和接受管固定在一起,反射式的工作原理就是接收管接收到的信号是发射管发出的红外光经过反射物的反射后得到的,所以使用红外对管进行循迹时必须是白色地板加黑色引导条。
下图为红外循迹电路的原理图。
上面电路由一组红外对管、电位器、运算放大器和电阻组成的,R1起到限流的作用,用来控制反光管发出红外信号的强弱。
接收管实际上是一个光敏三极管基极的光电流经过放大后流经电阻R2产生电压与电位器调节后得到的电压进行比较。
A1与电阻组成一个比较器。
在有红外信号返回时OUT端输出高电平,反之输出低电平。
红外循迹对管的安装图
5.3.2红外循迹的测试程序
程序清单
5.47279显示模块原理及测试程序
5.4.17279显示模块的原理
HD7279A是一片具有串行接口的,可以同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片还可同时连接多大64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。
HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有两种译码方式,此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
HD7279A典型应用
5.4.27279先是模块的测试程序
#include<
#defineulongunsignedlong
/**************子函数定义****************************/
voidlong_delay(void);
voidshort_delay(void);
voiddelay10ms(uchar);
voidwrite7279(uchar,uchar);
ucharread7279(uchar);
voidsend_byte(uchar);
ucharreceive_byte(void);
voidbegin_unit(void);
//开机测试
voidtest_key_unit(void);
//按键及显示测试
voidtest_number(void);
//计数测试
voidl_r_test(void);
//左右移测试
voidxiaoyin_test(void);
//消隐测试
voidduanxian_test(void);
//段显测试
/************程序变量定义***************************/
uchardigit[5];
ucharkey_number,j,k;
uinttmr;
ulongwait_cnter;
/**************端口初始化**************************/
sbitkey=P3^4;
sbitdat=P3^5;
sbitclk=P3^6;
sbitcs=P3^7;
/***********7279指令初始化*************************/
#defineDEC0DE00x80//采用译码方式0
#defineDEC0DE10xc8//采用译码方式1
#defineCMD_READ0x15//读键盘的数据指令
#defineUNDECODE0x90//不译码
#defineRTL_CYCLE0xa3//循环左移
#defineRTR_CYCLE0xa2//循环右移
#defineRTL_RESET0xa4//左移
#defineCMD_RESET0xa4//复位,所有的显示清除
#defineCMD_TEST0xbf//测试,将所有的LED点亮
#defineRTR_UNCYL0xa0//右移
#defineACTCTL0x98//消隐
#defineSEGON0xe0//段亮
#defineSEGOFF0xc0//断灭
#defineBLINKCTL0x88//闪烁
/****************************************************
主函数
主要功能:
测试、复位、不译码显示、译码【0】【1】
显示、按键值测试并显示、移位、消隐、段显等
***************************************************/
begin_unit();
test_key_unit();
test_number();
l_r_test();
xiaoyin_test();
duanxian_test();
/************************************************
7279写入函数
**********************************************/
voidwrite7279(ucharcmd,uchardta)
send_byte(cmd);
send_byte(dta);
/*************************************************
7279读取函数
**************************************************/
ucharread7279(ucharcommand)
send_byte(command);
return(receive_byte());
7279发送字节函数
voidsend_byte(ucharout_byte)
uchari;
cs=0;
long_delay();
for(i=0;
i<
8;
i++)
if(out_byte&
0x80)
dat=1;
Else
dat=0;
clk=1;
short_delay();
clk=0;
out_byte=out_byte*2;
/***************************************************
7279接受字节函数
******************************************************/
ucharreceive_byte(void)
uchari,in_byte;
in_byte=in_byte*2;
if(dat)
in_byte=in_byte|0x01;
return(in_byte);
7279长延迟函数
****************************************************/
voidlong_delay(void)
0x30;
i++);
7279短延迟函数
*****************************************************/
voidshort_delay(void)
10ms延迟函数
voiddelay10ms(uchartime)
uintj;
time;
for(j=0;
j<
0x390;
j++)
{
;
}
开机测试函数
voidbegin_unit(void)
for(tmr=0;
tmr<
0x1000;
tmr++)//开机初始化
send_byte(CMD_RESET);
//显示复位
write7279(DEC0DE1+5,0X0c);
write7279(DEC0DE1+4,0X0e);
write7279(DEC0DE0+3,0X0a);
write7279(DEC0DE0+2,0X05);
write7279(DEC0DE0+1,0X0c);
write7279(DEC0DE0,0X01);
delay10ms(1500);
write7279(DEC0DE0+5,0X0a);
write7279(DEC0DE1+4,0X08);
write7279(DEC0DE1+3,0X0e);
write7279(DEC0DE0+2,0X09);
write7279(DEC0DE0+1,0X01);
write7279(UNDECODE,0X76);
send_byte(CMD_TEST);
//显示测试
1;
delay10ms(100);
//延迟3秒钟
delay10ms(50);
//延迟0.5秒
/*****************************************************
按键及显示测试函数
voidtest_key_unit(void)
wait_cnter=0;
//用来指示显示按键的时间
key_number=0xff;
//按键初值
write7279(BLINKCTL,0xc0);
//一二位闪烁
write7279(UNDECODE,0x08);
//第一位显示“—”
write7279(UNDECODE+1,0x08);
//第二位显示“—”
write7279(UNDECODE+2,0x08);
//第三位显示“—”
write7279(UNDECODE+3,0x08);
//第四位显示“—”
write7279(UNDECODE+4,0x08);
//第五位显示“—”
write7279(UNDECODE+5,0x08);
//第六位显示“—”
do
if(!
key)//如果有键按下
{
key_number=read7279(CMD_READ);
//读键值
if(key_number==0x05)
{
write7279(UNDECODE+1,key_number/16);
//显示键值的高八位
write7279(DEC0DE1,key_number&
0x0f);
//显示键值的低八位
while(!
key);
//等待按键松开
}
if(key_number==0x04)
write7279(DEC0DE1+1,key_number&
if(key_number==0x03)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 机器人 制作 全过程