智能小车资料及源程序

智能小车资料及源程序
智能小车资料及源程序

智能小车主要部件及模块和源程序

一、直流电机驱动模块

所需元件及程序

1、L298N、二极管、直流电机、PWM方波程序

二、电源模块

可充电电池、稳压芯片、大功率接线器、排针、稳压二极管

三、寻迹模块

红外探测模块、AD转换芯片、单片机

四、小车测速模块

编码盘、红外对接模块

五、超声波测距模块

超声波测距模块

六、信息显示模块

Lcd显示模块--诺基亚5110

红外避障传感器

一、实验原理:

红外避障传感器基本原理,和循迹传感器工作原理基本相同,利用物体的反射性质。在一定范围内,如果没有障碍物,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。如果有障碍物,红外线遇到障碍物,被反射到达传感器接收头。传感器检测到这一信号,就可以确认正前方有障碍物,并送给单片机,单片机进行一系列的处理分析,协调小车两轮工作,完成一个漂亮的躲避障碍物动作,传感器原理图如图6。

图6 红外避障传感器原理图

二、实验接线:

实验时只需把信号输出端(signal)与单片机的P1^0口相连。VCC端接5V电源,GND接电源负极或单片机上的逻辑地。注意:如果对红外避障传感器的使能感兴趣,可以把传感器的TC端接单片机的I/O口,通过控制TC实现是否开启红外避障传感器,当TC 为高电平时传感器工作,为低电平时,传感器关闭,参照图7。

三、实验任务:

1、把红外避障传感器固定在小车的正前方,接好线。注意:红外传感器的避障距离也是可调,调节滑动变阻器可以调节避障距离。

2、编制程序,实现小车检测到前方有障碍物时,向左转弯,再检测,没有障碍物,继续前进,有障碍物,继续左转弯。

诺基亚5110液晶显示屏模块

该模块具有以下特点:

●84x48 的点阵LCD,可以显示4 行汉字,

●采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。

●可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印

制板上,因而非常便于安装和更换。

●LCD 控制器/驱动器芯片已绑定到LCD 晶片上,模块的体积很小。

●采用低电压供电,正常显示时的工作电流在200μA 以下,且具有掉电模式。

LPH7366 的这些特点非常适合于电池供电的便携式通信设备和测试设备中

Nokia 5110驱动

Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示,取代LCD1602。

使用Nokia5110液晶的四大理由

1)性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉

字,30个字符。Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD 12864一般50~70元。

2)接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864

需12根。

3)速度快,是LCD12864的20倍,是LCD1602的40倍。

4)Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模

式,适合电池供电的便携式移动设备。

Nokia5110原理图:

商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。

Nokia5110和Nokia3110是兼容的,用的都是同一款驱动芯片PHILIPS P CD8544。

(1)SPI接口时序写数据/命令

Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。

智能避障小车原理图

一下是小车各个模块原理图逐一展示1.12v及5v直流稳压电源

2.L298电机驱动模块

3.51单片机控制模块

4.。声光信号产生模块

以下是

二、电机驱动模块,超声波测距避障,声光信号产生,PWM调速源程序

/*

用T0计时器中断进行对小车方向的调节

用INT0外部中断进行声光报警

用INT1外部中断进行超声避障

用T1计时器进行对时间的测量

*/

#include

#include

sbit P00=P1^0; //循迹口

sbit P01=P1^1;

sbit P02=P1^2;

sbit P03=P0^3; //声光信号P03接蜂鸣器,P04接LED

sbit P04=P0^4;

sbit P20=P2^0; //电机1 左轮

sbit P21=P2^1;

sbit P22=P2^2; //电机2

sbit P23=P2^3;

void zhuanxiang(char,char,char);

void delay1ms(void);

void delaynms(int);

unsigned int i=0,j=0; //特殊情况旗标

void kongzhi(void) interrupt 1 //PWM信号进行电机控制

{

if(P00==0&&P01==1&&P02==0) //小车直线快走定时0.02ms

{

TH0=0X1F;

TL0=0XEC;

P20=0; //电机1 左轮

P21=1;

P22=1; //电机2 右转

P23=0;

}

if(P00==0&&P01==0&&P02==1) //小车右转定时0.05ms {

TH0=0X1F;

TL0=0XCE;

P20=1; //电机1 左轮

P21=1;

P22=1; //电机2

P23=0;

i=1;

}

if(P00==0&&P01==0&&P02==0&&i==1) // 特别

{

TH0=0X1F;

TL0=0XCE;

P20=1;

P21=1;

P22=1;

P23=0;

j=0;

}

if(P00==1&&P01==0&&P02==0) //小车左转定时0.05ms {

TH0=0X1F;

TL0=0XCE;

P20=0; //电机1

P21=1;

P22=1; //电机2

P23=1;

j=1;

}

if(P00==0&&P01==0&&P02==0&&j==1) // 特别

{

TH0=0X1F;

TL0=0XCE;

P20=0;

P21=1;

P22=1;

P23=1;

i=0;

}

if(P00==1&&P01==1&&P02==1)

{ //全部检测到黑线时车停TH0=0X1F;

TL0=0XCE;

P20=1;

P21=1;

P22=1;

P23=1;

}

}

void shengguang(void) interrupt 0 //停车并产生声光2s {

unsigned int i,j;

P20=1;

P21=1;

P22=1;

P23=1;

delaynms(500);

for(i=0;i<20;i++)

{

P04=0;

for(j=0;j<100;j++)

{

P03=0;

delay1ms();

P03=~P03;

}

}

P03=1; //关闭声光

P04=1;

delaynms(500);

P20=0;//继续行车

P21=1;

P22=1;

P23=0;

}

void chaoshengbo(void) interrupt 2 //超声波测距避障程序{

}

void main()

{

while(1)

{

P20=1;P21=1;P22=1;P23=1;//小车停

P03=1;P04=1;

PX0=1;

TMOD=0X10;//T0用方式0,T1用方式1

EA=1; //开启中断总开关

EX0=1;//T0中断

EX1=1; //T1中断

ET0=1;//INT0中断

ET1=1; //INT1中断

TR1=1; //开启T1计时器

zhuanxiang(P00,P01,P02);

}

}

void zhuanxiang(char P00,char P01,char P02)

{

if(P00==0&&P01==1&&P02==0) // 小车直走

{ //0.01ms

TH0=0X1F;

TL0=0XF6;;

TR0=1;

}

if(P00==0&&P01==0&&P02==1) //小车右转定时0.05ms

{

TH0=0X1F;

TL0=0XCE;

TR0=1;

}

if(P00==1&&P01==0&&P02==0) //小车左转定时0.05ms {

TH0=0X1F;

TL0=0XCE;

TR0=1;

}

if(P00==1&&P01==1&&P02==1) //全部检测到黑线时车停

{

TH0=0X1F;

TL0=0XCE;

TR0=1;

}

}

void delay1ms(void)

{

int i;

for(i=0;i<120;i++);

}

void delaynms(int n)

{

int i,j;

for(i=0;i

for(j=0;j<120;j++);

}

三、诺基亚5110液晶显示时间路程源程序

/*

Nokia5110 LCD test

芯片型号: AT89S52

by: ysit1990@https://www.360docs.net/doc/de14904744.html,

data: 2012.06.20

描述: 基于网上参考例子修改测试于杭州电子科技大学集训期间

*/

/***********************************************************************

pin description i/o

; VCC(3.3V) +3.3v 供电电源

; CLK : LCD_CLK P2.0 时钟

; DA : SDIN P2.1 数据输入

; D/C : LCD_DC P2.2 1写数据0写命令

; SCE : LCD_SCE P2.3 片选信号

; RSET: LCD_REST P2.4 复位信号

; GND -- 接地

; LED +5v 背光

***********************************************************************/

#include

#include //包含_nop_();一机器周期延时空指令

#define uchar unsigned char

#define uint unsigned int

sbit LCD_CLK = P1^5; //时钟

sbit SDIN = P1^4; //数据

sbit LCD_DC = P1^3; //1写数据,0写指令

sbit LCD_SCE = P1^2; //片选

sbit LCD_REST = P1^1; //复位,0复位

/*function

************************/

///////////SPI写操作

void LCD_write_byte(unsigned char dat, unsigned char command);

///////////5110初始化

void LCD_init(void);

///////////清屏

void LCD_clear(void);

//////////显示一个字符

void LCD_write_char(unsigned char c);

//////////显示字符串

void LCD_write_String(unsigned char X,unsigned char Y,unsigned char *s);

//////////显示一个汉字

void LCD_WRITE_ZH(unsigned char X, unsigned char Y,unsigned char ZH[][32],unsigned char index);

///////////显示汉字串

void LCD_WRITE_ZH_STRING(uchar X,uchar Y, // 起始坐标

uchar ZHS[][32], // 汉字字符串

uchar width, // 每个字符边长

uchar index, // 起始索引号

uchar num, // 显示个数

uchar space); // 间距

/////////////////////////画图

void LCD_draw_bmp_pixel(uchar X,uchar Y,uchar *map, uchar width,uchar height);

//ASCII码的字库

uchar code ASCII_6_8[][6] =

{

{0x00, 0x3e, 0x51, 0x49, 0x45, 0x3e} // 0

,{0x00, 0x00, 0x42, 0x7f, 0x40, 0x00} // 1

,{0x00, 0x42, 0x61, 0x51, 0x49, 0x46} // 2

,{0x00, 0x21, 0x41, 0x45, 0x4b, 0x31} // 3

,{0x00, 0x18, 0x14, 0x12, 0x7f, 0x10} // 4

,{0x00, 0x27, 0x45, 0x45, 0x45, 0x39} // 5

,{0x00, 0x3c, 0x4a, 0x49, 0x49, 0x30} // 6

,{0x00, 0x01, 0x71, 0x09, 0x05, 0x03} // 7

,{0x00, 0x36, 0x49, 0x49, 0x49, 0x36} // 8

,{0x00, 0x06, 0x49, 0x49, 0x29, 0x1e} // 9

,{0x00, 0x00, 0x36, 0x36, 0x00, 0x00} // :

,{0x00, 0x38, 0x44, 0x44, 0x44, 0x20} // c

,{0x00, 0x7c, 0x04, 0x18, 0x04, 0x78} // m

,{0x00, 0x48, 0x54, 0x54, 0x54, 0x20} // s

};

/*/////////////////////////////////////////////////////////// 汉字字模参考*/

static const char Hanzi[][24] = {

/*-- 文字: 支--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16*/

{0xFE,0x22,0x22,0xFE,0x00,0x08,0x48,0x88,0x08,0xFF,0x08,0x00,

0x07,0x02,0x02,0x07,0x00,0x00,0x00,0x09,0x08,0x0F,0x00,0x00},//时0 {0x00,0xF9,0x02,0xF8,0x49,0x49,0x49,0x49,0xF9,0x01,0xFF,0x00,

0x00,0x0F,0x00,0x03,0x02,0x02,0x02,0x02,0x0B,0x08,0x0F,0x00},//间1 {0x9E,0x12,0xF2,0x9E,0x48,0xC4,0xAB,0x92,0xAA,0xC6,0x40,0x00,

0x0F,0x08,0x07,0x04,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00},//路0 {0x12,0xD2,0xFE,0x51,0x80,0x2F,0x29,0xE9,0x29,0x2F,0x00,0x00,

0x01,0x00,0x0F,0x00,0x08,0x09,0x09,0x0F,0x09,0x09,0x08,0x00},//程1 };

/*-- 文字: 持--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --

/*********************************************************** 函数名称:LCD_write_byte

函数功能:模拟SPI接口时序写数据/命令LCD

入口参数:data :写入的数据;

command :写数据/命令选择;

出口参数:无

备注:

***********************************************************/ void LCD_write_byte(unsigned char dat, unsigned char command)

{

unsigned char i;

LCD_SCE = 0; //5110片选有效,允许输入数据if (command == 0) //写命令

LCD_DC = 0;

else LCD_DC = 1; //写数据

for(i=0;i<8;i++) //传送8bit数据

{

if(dat&0x80)

SDIN = 1;

else

SDIN = 0;

dat = dat << 1;

LCD_CLK = 0;

LCD_CLK = 1; //时钟上升沿写

}

LCD_SCE = 1; //禁止5110

}

/***********************************************************

函数名称:LCD_init

函数功能:5110初始化

入口参数:无

出口参数:无

备注:

***********************************************************/

void LCD_init(void)

{

LCD_SCE = 0; // 片选LCD

LCD_REST = 0; // 产生一个让LCD复位的低电平脉冲

_nop_();

LCD_REST = 1;

LCD_write_byte(0x21, 0); // LCD模式设置:芯片活动,水平寻址,使用扩展指令LCD_write_byte(0xc8, 0); // 设置液晶偏置电压

LCD_write_byte(0x06, 0); // 温度校正

LCD_write_byte(0x13, 0); // 1:48

LCD_write_byte(0x20, 0); // 使用基本命令,V=0,水平寻址

LCD_clear(); // 清屏

LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示

LCD_SCE = 1; //禁止LCD

}

/***********************************************************

函数名称:LCD_set_XY

函数功能:设置LCD坐标函数

入口参数:X :0-83 横坐标

Y :0-5 纵坐标

出口参数:无

备注:

***********************************************************/

void LCD_set_XY(unsigned char X, unsigned char Y)

{

LCD_write_byte(0x80 | X, 0); // X 行(横坐标)

LCD_write_byte(0x40 | Y, 0); // column 列(纵坐标)

}

/*------------------------------------------

LCD_clear: LCD清屏函数

--------------------------------------------*/

void LCD_clear(void)

{

unsigned char t;

unsigned char k;

LCD_set_XY(0,0);

for(t=0;t<6;t++)

{

for(k=0;k<84;k++)

{

LCD_write_byte(0x00,1);

}

}

}

/*********************************************************** 函数名称:LCD_write_char

函数功能:显示英文字符

入口参数:c : 显示的字符

出口参数:无

备注:

***********************************************************/ void LCD_write_char(unsigned char c)

{

unsigned char i;

c-=0x20; //ASCII码减去0x20

for (i=0; i<6; i++)

LCD_write_byte(ASCII_6_8[c][i], 1);

}

/*-------------------------------------------

;名称: 英文字符串显示函数

;参数:*s:英文字符串指针

---------------------------------------------*/

void LCD_write_String(unsigned char X,unsigned char Y,unsigned char *s) {

LCD_set_XY(X,Y);

while (*s) //等效*s!='\0'

{

LCD_write_char(*s);

s++;

}

}

/*----------------------------------------------------

LCD_WRITE_ZH: 显示16(宽)*16(高)点阵列汉字等半角类

输入参数:zh:显示的汉字数组;index 汉字对应序号

---------------------------------------------------*/

void LCD_WRITE_ZH(unsigned char X, unsigned char Y,unsigned char ZH[][32],unsigned char index)

{

unsigned char i;

LCD_set_XY(X,Y); // 汉字上部分

for(i=0; i<16;i++)

{

LCD_write_byte(ZH[index][i],1);

}

LCD_set_XY(X, Y+1); // 汉字下半部分

for(i=16; i<32;i++)

{

LCD_write_byte(ZH[index][i],1);

}

}

/*-----------------------------------------------------------------------

LCD_WRITE_ZH_STRING: 在LCD上显示一串汉字

输入参数:X、Y :显示汉字的起始X、Y坐标;

width :汉字点阵的边长

index :汉字点阵数组中开始字符的索引号

num :从index开始要显示汉字的个数;

space :汉字显示的行间距

测试:X坐标Y坐标汉字串汉字边宽首字索引字数行间距

LCD_WRITE_ZH_STRING(0, 0, hangzi, 16, 0, 5, 0);

-----------------------------------------------------------------------*/

void LCD_WRITE_ZH_STRING(uchar X,uchar Y, // 起始坐标

uchar ZHS[][24], // 汉字字符串

uchar width, // 每个字符边长

uchar index, // 起始索引号

uchar num, // 显示个数

uchar space) // 行间距

{

unsigned char i,n;

LCD_set_XY(X,Y); //设置初始位置

for (i=0; i

{

for (n=0; n

{

LCD_write_byte(ZHS[index+i][n],1);

}

LCD_set_XY((X+(width+space)*i),Y+1); //写汉字的下半部分

for (n=width; n

{

LCD_write_byte(ZHS[index+i][n],1);

}

LCD_set_XY((X+(width+space)*(i+1)),Y); //下一个汉字位置

}

}

/***********************************************************

函数名称:LCD_draw_bmp_pixel

函数功能:位图绘制函数

入口参数:X、Y :位图绘制的起始X、Y坐标;

*map :位图点阵数据;

width :位图像素(长)

height :位图像素(宽)

出口参数:无

备注:

***********************************************************/

void LCD_draw_bmp_pixel(uchar X,uchar Y,uchar *map, uchar width,uchar height) {

unsigned int i,n;

//unsigned char X;

//计算位图所占行数

if (height%8==0) //如果为位图所占行数为整数

X=height/8;

else

X=height/8+1; //如果为位图所占行数不是整数

LCD_set_XY(X,Y);

for (n=0;n

{

for(i=0;i

{

LCD_set_XY(X+i,Y+n);

LCD_write_byte(map[i+n*width], 1);

}

}

}

/*/////////////////////////////////////////////////////////////// 调用参考*/ main()

{

LCD_init(); //初始化LCD模块

LCD_clear(); //清屏幕

// 写单个字符

// LCD_set_XY(0,0);

//LCD_write_char('Y');

// LCD_write_char('S');

// LCD_write_char('T');

//写字符串

LCD_write_String(0,0,"0");

//LCD_write_String(0,2,"I am fine!");

//写汉字

LCD_WRITE_ZH(0,3,ASCII_6_8,0);

//写汉字串

LCD_WRITE_ZH_STRING(0,2,Hanzi,12,0,2,0);

LCD_WRITE_ZH_STRING(0,4,Hanzi,12,2,2,0);

while(1);

}

智能小车单片机课程设计报告

题目: 智能小车设计 打开命令行终端的快捷方式: ctr+al+t:默认的路径在家目录 ctr+shift+n:默认的路径为上一次终端所处在的路径. linux@ubuntu:~$ linux:当前登录用户名. ubuntu:主机名 :和$之间:当前用户所处在的工作路径. windows下的工作路径如C:\Intel\Logs linux下的工作路径是:/.../..../ ~:代表的是/home/linux这个路径.(家目录). ls(list):列出当前路径下的文件名和目录名. ls -a(all):列出当前路径下的所有文件和目录名,包括了隐藏文件. .:当前路径 ..:上一级路径 ls -l:以横排的方式列出文件的详细信息 total 269464(当前这个路径总计所占空间的大小,单位是K) drwxr-xr-x 3 linux linux 4096 Dec 4 19:16 Desktop 第一个位置:代表的是文件的类型. linux系统下的文件类型有以下几种. b:块设备文件 c:字符设备文件 d:directory,目录 -:普通文件. l:连接文件. s:套接字文件. p:管道文件. rwxr-xr-x:权限 r:读权限-:没有相对应的权限 w:写权限

x:可执行权限 修改权限: chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名 第一组:用户权限 第二组:用户组的权限 第三组:其他用户的权限. chmod 三个数(权限) 文件名 首先根据你想要的权限生成二进制数,再根据二进制数转换成十进制的三位数 rwxr-x-wx 111101011 7 5 3 chmod 753 文件名 rwx--xr-x 第二个位置上的数字:对应目录下的子文件个数,如果是非目录,则数字是1 第三个位置:用户名(文件创造者). 第四个位置:用户组的名字(前边的用户所处在的用户组的名字). 第五个位置:对应文件所占的空间大小(单位为b) 第六~八个位置:Dec 4 19:16时间戳(最后一次修改文件的时间) 最后一个位置:文件名 操作文件: 1.创建一个普通文件:touch 文件名 2.删除一个文件:rm(remove) 文件名 3.新建一个目录:mkdir(make directory) 目录名 递归创建目录:mkdir -p 目录1/目录2/目录3 4.删除一个目录:rmdir 目录名.//仅删除一个空目录 rm -rf 目录名//删除一个非空目录 5.切换目录(change directory):cd 路径 linux下的路径分两种 相对路径:以.(当前路径)为起点. 绝对路径:以/(根目录)为起点, 用相对路径的方式进入Music:cd ./Music 用绝对路径的方式进入Desktop:cd /home/linux/Desktop 返回上一级:cd ..

智能小车完整材料

莱芜职业技术学院鲁战磊吴丛善魏玉良 目录 摘要: (2) 关键词: (3) 一、设计任务概述 (3) 1.1设计任务概述 (3) 1.2基本任务 (3) 1.3发挥部分 (3) 二、系统方案论证与选择 (4) 2.1车体方案论证与选择 (5) 2.2控制模块论证与选择 (5) 2.3电源模块论证与选择 (6) 2.4电机模块选择与论证 (6) 2.5电机驱动模块选择与论证 (6) 2.6避障模块的选择与论证 (7) 2.7循迹模块选择与论证 (7) 2.8金属传感器模块论证与选择 (7) 2.9铁片转移模块论证与选择 (8) 2.10报警和语音提示模块选择与论证 (8) 2.11显示模块论证与选择 (8) 2.12智能救援小车最终方案 (8) 三、硬件系统的设计与功能实现 (9) 3.1救援小车主线路板制作 (9) 3.2微控制器电路的设计与原理 (9) 3.3电源电路原理与设计 (10) 3.4电机驱动电路的原理与设计 (10) 3.5避障电路的原理与设计 (10) 3.6光电开关的安装 (11) 3.7循迹电路的原理与设计 (11) 3.8金属检测电路的原理与设计 (11) 3.9铁片转移电路原理与设计, (12) 3.10语音提示电路的原理与设计 (12) 3.11系统其它功能的扩展 (12) 四、软件设计的实现与说明 (13) 4.1主程序流程图 (13) 4.2路面循迹子程序流程图 (14)

4.3智能救援小车系统的部分程序清单 (15) 五、系统功能测试 (17) 5.1使用仪器及设备清单的说明 (17) 5.2系统功能测试 (17) 5.2.1基本要求部分的功能测试 (17) 5.2.2发挥部分的功能测试 (17) 六、结论 (19) 七、结束语 (19) 八、参考文献: (19) 摘要 本小组设计制作的一款智能救援小车,能够实现2008年山东省电子设计竞赛G题的基本部分和发挥部分的所有功能要求。另外具有以下扩展功能功能:测温、无线遥控、测速及里程、测量路面坡度。 本作品以两个直流减速电机为驱动,通过各类传感器件来采集信息,送入主控单元STC 89C52单片机,处理数据后完成相应的操作,以实现相应的功能。直流减速电机采用电机专用驱动芯片L293D进行驱动,其中避障采光电开关来完成;用RPR220型光电对管完成系统循迹功能;铁片检测部分通过电感式接近开关铁片进行信号的采集,接近开关反馈的信号送入单片机处理,由控制单元处理信号并控制相应的线圈,利用线圈用电产生磁场的效应捡起铁片并转移到题目中所指定的区域,由语音提示电路提示小车操作完成。实现了智能救援小车在

STM32智能小车主程序

//#include "delay.h" #include "usart1.h" //#include "remote.h" #include "PWM_OUT.h" //#include "Ultrasonic.h" #include "esp8266.h" #include "usart3.h" #include "HXD.h" #include "main.h" int main(void) { u16 i=0,x; u16 k,j; SystemInit(); USART1_Init();//串口1初始化 USART3_Init();//串口3初始化用于WIFI USART1_ONOFF(1); USART3_ONOFF(1); // Remote_Init();//初始化红外接收 // ULT_Init();//超声波初始化 HXD_Init(); PWM_Init();//初始化PWM(电机) WiFi_Init(); x=0; i=300; while(1) { USART_Work(); PWM_MoTo_Work(); huxiLED(i);

for (k=0;k<720;k++) { for(j=0;j<100;j++); } if((i>0)&&(x==0)){ i++; if(i==800)//灭 x=1; } if((i<801)&&(x==1)) { i--; if(i==500)// 亮 x=0; } // if(i>10) i=10; // if(Remote_Rdy)//处理红外遥控// { // // Remote_Work(); // } // if(PWM_Rdy)//处理电机PWM // { // PWM_MoTo_Work(); // } } }

研究智能小车的背景和意义

研究智能小车的背景和 意义 Revised by Petrel at 2021

随着计算机,微电子技术的快速发展,智能化技术的开发越来越快,智能程度也越来越高,应用的范围也得到了极大的扩展。智能小车系统以迅猛发展的汽车电子技术为背景,涵盖了电子,计算机,机械,传感技术等多个学科。同时,当今机器人技术的发展日新月异,其应用于考古,探测,国防等众多领域。无人飞船,外星探测,智能化生产等等无不得益于机器人技术的发展。一些发达国家已经把机器人设计制作竞赛作为创新教育的战略手段。从某种意义上来说,机器人技术反映的是一个国家综合技术实力的高低,而智能小车是机器人的雏形,它的控制系统的研究与制作将有助于推动智能机器人控制系统的发展[1]。随着智能化技术的发展,对于智能化技术的研究也越来越受关注。全国电子竞赛与各省电子竞赛几乎每次都有智能小车方面的题目,全国各大高校也都重视该项目的研究,可见智能小车具有较大的研究意义。 小车,也就是轮式机器人,最适合在那些人类无法工作的环境中工作,该技术可以应用于无人驾驶机动车,无人生产线,仓库,服务机器人等领域。在危险环境下,机器人非常适合使用。在这些险恶的环境下工作,人类必需采取严密的保护措施。而机器人可以进入或穿过这些危险区域进行维护和探测工作,且不需要得到像对人一样的保护。例如美国的“勇气”号和“机遇”号,在火星探测过程中分别在其着陆区域附近找到火星上过去曾有过水的证据,为人类对火星的探测做出了巨大的贡献[1]。 机器人的应用正逐步渗入到工业和社会的各个层面,如采用带有专用新型传感器的移动式机器人,连续监视采矿状态,以便及早发现事故突发的先兆,采取相应的预防措施;智能轮椅运用口令识别与语音合成、机器人自定位、动态随机避障、多传感器信息融合、实时自适应导航控制等功能,运用了现代高新技术来改善残障人们的生活质量和生活自由度。在智能车辆领域,智能小车自动行驶功能的研究将有助于智能车辆的研究。智能车辆驾驶任务的自动完成将给人类社会的进步带来巨大的影响,例如能切实提高道路网络的利用率、降低车辆的燃油消耗量,尤其是在改进道路交通安全等方面提供了新的解决途径。 “工欲善其事,必先利其器”。人类在认识自然、改造自然、推动社会进步的过程中,不断地创造出各种各样为人类服务的工具,其中许多具有划时代的意义。作为20世纪自动化领域的重大成就,机器人已经和人类社会的生产、生活密不可分。因此为了使智能小车工作在最佳状态,进一步研究及完善其速度和方向的控制是非常有必要的。 本文所研究的内容涉及寻迹、避障、人工操控等多种功能,初步实现智能化,可做为各类科研的基础模型,具有较大的研究空间,适合于多种领域的智能化研究与开发。 智能小车是能够感知环境,能够有学习、情感和对外界一种逻辑判断思维的一种智能移动机器人。移动机器人作为现代高科技的集成体,是21世纪的科技制高点之一。移动机器人技术的发展,应该说它是科学技术发展的一个综合性的结果。同

智能小车报告分析

智能小车报告分析 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

智能小车(红外版)项目报告 目录 一、引言 ------------------------------1 二、总体方案 ------------------------------1 三、电路与程序设计 ------------------------------4 四、小车调试方案和调试结果 ------------------------------8 五、遇到的问题和解决方案 -------------------------------9 六、工程管理方案 -------------------------------10 七、总结和体会 -------------------------------10 一、引言 智能,即可以按照预先设定的模式在一个环境中运行,不需要人为的管 理。智能小车就是其中一个体现。本文的智能小车设有自动避障和自动循迹的 功能。其中避障的实现需要注意当小车与障碍物之间距离小于某一数值时,车

通过电动机转向;寻迹的实现则需要通过车底部的光电传感器检测行驶方向是否偏离黑线,再通过电动机调整运行方向。 小车系统以STC89C52单片机为系统控制处理器;采用红外传感获取轨道及障碍物的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 二、总体方案 本小组设计的智能小车的控制机制是:以STC89C52单片机为控制核心的智能循迹避障小车。采用红外探测法实现信号检测,通过红外发射管和接受管来感知给定黑色轨迹和障碍物,将感知的信号返回给单片机,然后单片机对不同信号进行区分,结合软件编程控制小车前进、后退、左转、右转,从而实现循迹避障功能,即在有轨迹的地方小车能沿轨迹行驶,当遇到障碍时小车能够自动避开。 1.实现功能 (1)寻迹功能 该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”一黑线。本车用了比较普遍的检测方法——红外探测法。红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。 (2)避障功能

智能小车课程设计报告书

※※※※※※※※※ 级学生※※2015※※课程设计材料※※※※※※※※※※※ 课程设计报告书 课题名称智能小车蓝牙操控和循迹的实现 名姓 学号 院学 专业 指导教师 2019年2月15日 设计目的1 通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。 2功能要求

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动运作,不需要人为的管理,可应用于科学勘探等等用途;并且能实现显示时间、速度、里程,具有自动寻迹、寻光、避障等功能,可程控行驶速度、准确定位停车,远程传输图像、按键控制加速,减速,刹停,左转和右转、实时显示运行状态等功能。 3 总体设计方案 在现有玩具电动车的基础上,加了四个按键,实现对电动车的运行轨迹的启动,并将按键的状态传送至单片机进行处理,然后由单片机根据所检测的各种按键状态实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用AT89C51单 片机。以AT89C51为控制核心,利用按键的动作,控制电动小汽车的状态。加 装光电、红外线、超声波传感器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动小车的智能控制,如图1所示。简易智能电动车采用AT89C51单 片机进行智能控制。开始由手动启动小车,并复位初始化,当到达规定的起始黑线,由小车底部的红外光电传感器检测到第一条黑线后,通过单片机控制小车[2]。在白纸所做轨迹道路中,小车通过超声波传感器正前开始记数、显示、调速方检测和光电传感器左右侧检测,由单片机控制实现系统的自动避障功能。在电动车进驶过程中,采用双极式H型PWM脉宽调制技术,以控制小车调速;并采用 动态共阴显示行驶时间和里程。小车通过光电传感装置实现驶向光源并通过循迹保持小车在白纸范围内行驶。当小车到达终点第二次检测到黑线时,单片机控制小车停车。 总体设计框架图图1 4 硬件电路选取与设计

智能小车源代码

#include 令狐采学 #include //#include"lcd.h" sbit TX=P2^7; sbit RX=P2^6; sbit PWM=P1^4; sbit Beep=P3^7; sbit led1=P3^3; sbit led2=P3^4; sbit led3=P3^5; /***********蓝牙切换按键**********/ sbit k1=P3^6; /***自定义一些数据,注意这些数据对应“51智能车蓝牙无线遥控.exe”软件上的数据设置**/ #define leftdata 0x11 #define rightdata 0x22 #define forwarddata 0x33 #define backdata 0x44 #define stopdata 0x55 #define uchar unsigned char #define uint unsigned int

unsigned char receiveData,high_velosity,low_velosity; void UsartConfiguration(); /***********电机端口定义************************/ sbit IN1=P1^0; //为高电平时,左电机后转sbit IN2=P1^1; //为高电平时,左电机正转sbit IN3=P1^2; //为高电平时,右电机正转sbit IN4=P1^3; //为高电平时,右电机后转 /**************无线遥控模块定义****************/ sbit Key_A = P2^0; //B键信号端对应D0 sbit Key_B = P2^1; //D键信号端对应D1 sbit Key_C = P2^2; //C键信号端对应D2 sbit Key_D = P2^3; //C键信号端 void delay0(int a); void delay15us(void); void delay1ms(int z); void di(); //蜂鸣器函数声明 unsigned int time;//用于存放定时器时间值unsigned int S; //用于存放距离的值 char flag =0; //量程溢出标志位 char f1,f2,f3,f4,n0; int a; int n;//运行次数判断标志 int s_left,s_right;

基于单片机的智能小车开题报告

毕业设计(论文) 开题报告 设计(论文)题目:基于单片机的智能小车 学院名称:电子与信息工程学院 专业:电子与信息工程 班级:电信092班 姓名:杨介派学号09401180228 指导教师:胡劲松职称教授 定稿日期:2013 年1 月26 日

基于单片机的智能小车 1.课题研究背景和意义 智能化作为现代社会的新产物,是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。它集中地运用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体。智能车辆是目前世界车辆工程领域研究的热点和汽车工业增长的新动向。随着企业生产技术的不断提高以及对自动化技术要求的不断加深,智能车辆已在许多工业部门获得了广泛的应用。无论是从科学发展、理论研究的角度,还是从汽车工业发展以及市场竞争的角度看,对智能车辆的研究都是必要的。而智能小车的研究及相关产品开发也将有利于我国在此领域技术发展与进步。因此,研制一种智能,高效的智能小车控制系统具有重要的实际意义和科学理论价值。 2.国内外研究现状及发展趋势 2.1 国外智能车辆的现状研究 国外智能车辆的研究历史较长,始于上世纪50年代,它的发展历程大致可以分为三个阶段: 第一阶段:20世纪50年代是智能车辆研究的初始阶段。1954年美国Barrett Electronic 公司研究开发出了世界上第一台自主引导车系统,该系统只是一个运行在固定路线上的拖车式运货平台,但它却具有了智能车辆最基本的特征即无人驾驶。 第二阶段:从80年代中后期,世界主要发达国家对智能车辆开展可卓有成就的研究,在欧洲,普罗米修斯项目于1986年开始了在这个领域的探索,在美洲,美国于1995年成立了国家自动高速公路系统联盟,其目标之一就是研究发展智能车辆的可行性,并促进智能车辆技术进入实用化。 第三阶段:从90年代开始,智能车辆进入了深入、系统、大规模的研究阶段。最为突出的是,美国卡内基-梅陇大学机器人研究所一共完成了Navlab系列的自主车的研究,取得了显著的成就。 2.2 国内智能车辆的现状研究 国内的许多高校和科研院所都在进行ITS关键技术、设备的研究,随着ITS研究的兴起,我国已形成了一支ITS技术研究开发的专业技术队伍。交通部已将ITS研究列入“十五”科技发展计划和2010年长期规划。相信经过相关领域的共同努力,我国ITS及智能车辆的技术水平

智能循迹小车详细制作过程

(穿山乙工作室)三天三十元做出智能车 基本设计思路: 1.基本车架(两个电机一体轮子+一 个万向轮) 2.单片机主控模块 3.电机驱动模块(内置5V电源输出) 4.黑白线循迹模块 0.准备所需基本元器件 1).基本二驱车体一台。(本课以穿山乙推出的基本车体为 例讲解) 2).5x7cm洞洞板、单片机卡槽、51单片机、石英晶体、红 色LED、1K电阻、10K排阻各一个;2个瓷片电容、排针40 个。 3).5x7cm洞洞板、7805稳压芯片、红色LED、1K电阻各一 个;双孔接线柱三个、10u电解电容2个、排针12个、9110 驱动芯片2个。 4).5x7cm洞洞板、LM324比较器芯片各一个;红外对管三 对、4.7K电阻3个、330电阻三个、红色3mmLED三个。 一、组装车体

(图中显示的很清晰吧,照着上螺丝就行了) 二、制作单片机控制模块 材料:5x7cm洞洞板、单片机卡槽、51单片机、石英晶体、红色LED、1K电阻、10K排阻各一个;2个瓷片电容、排针40个。 电路图如下,主要目的是把单片机的各个引脚用排针引出来,便于使用。我们也有焊接好的实物图供你参考。(如果你选用的是STC98系列的单片机在这里可以省掉复位电路不焊,仍能正常工作。我实物图中就没焊复位)

三、制作电机驱动模块 材料:5x7cm洞洞板、7805稳压芯片、红色LED、1K电阻各一个;双孔接线柱三个、10u电解电容2个、排针12个、9110驱动芯片2个。 电路图如下,这里我们把电源模块与驱动模块含在了同一个电路板上。因为电机驱动模块所需的电压是+9V左右(6—15V 均可),而单片机主控和循迹模块所需电压均为+5V。 这里用了一个7805稳压芯片将+9V电压稳出+5V电压。

智能循迹小车实验报告

简单电子系统设计报告 ---------智能循迹小车 学号201009130102 年级10 学院理学院 专业电子信息科学与技术 姓名马洪岳 指导教师刘怀强

摘要 本实验完成采用红外反射式传感器的自寻迹小车的设计与实现。采用与白色地面色差很大的黑色路线引导小车按照既定路线前进,在意外偏离引导线的情况下自动回位。 本设计采用单片机STC89C51作为小车检测、控制、时间显示核心,以实验室给定的车架为车体,两直流机为主驱动,附加相应的电源电路下载电路,显示电路构成整体电路。自动寻迹的功能采用红外传感器,通过检测高低电平将信号送给单片机,由单片机通过控制驱动芯片L298N驱动电动小车的电机,实现小车的动作。 关键词:STC89C51单片机;L298N;红外传感器;寻迹 一、设计目的 通过设计进一步掌握51单片机的应用,特别是在控制系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。 二、设计要求 该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N发出控制命令,控制电机的工作状态以实现对小车姿态的控制,绕跑到行驶一周。 三、软硬件设计 硬件电路的设计 1、最小系统:

小车采用atmel公司的AT89C52单片机作为控制芯片,图1是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下: (1)、电源电路:给单片机提供5V电源。 (2)、复位电路:在电压达到正常值时给单片机一个复位信号。 图1 单片机最小系统原理图 2、电源电路设计: 模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计中,51单片机使用5V电源,电机及舵机使用5V电源。考虑到电源为电池组,额定电压为4.5V,实际充满电后电压则为4-4.5V,所以单片机及传感器模块采用最小系统模块稳压后的5V电源供电,舵机及电机直接由电池供电。 3、传感器电路:

智能小车源代码

#include #include //#include"lcd.h" sbit TX=P2^7; sbit RX=P2^6; sbit PWM=P1^4; sbit Beep=P3^7; sbit led1=P3^3; sbit led2=P3^4; sbit led3=P3^5; /***********蓝牙切换按键**********/ sbit k1=P3^6; /***自定义一些数据,注意这些数据对应“51智能车蓝牙无线遥控.exe”软件上的数据设置**/ #define leftdata 0x11 #define rightdata 0x22 #define forwarddata 0x33 #define backdata 0x44 #define stopdata 0x55 #define uchar unsigned char #define uint unsigned int unsigned char receiveData,high_velosity,low_velosity; void UsartConfiguration(); /***********电机端口定义************************/ sbit IN1=P1^0; //为高电平时,左电机后转 sbit IN2=P1^1; //为高电平时,左电机正转 sbit IN3=P1^2; //为高电平时,右电机正转 sbit IN4=P1^3; //为高电平时,右电机后转 /**************无线遥控模块定义****************/ sbit Key_A = P2^0; //B键信号端对应D0 sbit Key_B = P2^1; //D键信号端对应D1 sbit Key_C = P2^2; //C键信号端对应D2 sbit Key_D = P2^3; //C键信号端 void delay0(int a); void delay15us(void); void delay1ms(int z); void di(); //蜂鸣器函数声明

智能小车控制程序1

/*实现前进与后退功能*/ /*控制智能车向前行驶10秒,然后停3秒,再向后行驶6秒,停止*/ /********************************************************/ #include #define uint unsigned int /*进行端口声明时,应与具体硬件连接相对应,如不相互对应,将影响程序功能的正常实现*/ sbit S1=P1^3; //对电机端口声明 sbit S2=P1^4; sbit S3=P1^5; sbit S4=P1^6; /*功能函数定义*/ void delay(uint del) //延时函数,延时del毫秒 { uint i,j; for(i=0; i

{ go(); //前进 delay(10000); //前进10秒 stop(); //停止 delay(3000); //停3秒 back(); //后退 delay(6000); //后退6秒 stop(); //停止 }

智能小车循迹报告

智能小车循迹报告 电工电子实习报告 学院: 专业班级: 学生姓名: 指导教师: 完成时间: 成绩: 评阅意见: 评阅教师日期 智能循迹小车设计报告一. 设计要求 (1)(通过理论学习掌握基本的焊接知识以及电子产品的生产流程。 (2)(熟悉掌握手工焊接的方法与技巧。 (3)(完成循迹智能小车的安装与调试 二. 设计的作用、目的 1.利用所学过的基础知识,通过本次电子实习培养独立解决实际问题的能力; 2(巩固本课程所学的理论知识和实验技能; 3(掌握常用电子电路的一般设计方法,提高设计能力和实验、动手能力,为今后从事电子电路的设计、研制电子产品打下基础。 三.设计的具体实现 1. 系统概述 智能机器人小车的设计中我们使用的是一体反射式红外对管,所谓一体就是发射管和接受管固定在一起,反射式的工作原理就是接收管接收到的信号是发射管发

出的红外光经过反射物的反射后得到的,所以使用红外对管进行循迹时必须是白色地板 红外寻迹是利用红外光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。(为简化操作,本次实习只安装了两侧的探头) 1)行驶直线的控制:利用红外传感器的左右最外端的探头检测黑线,如果全白则说明在道中间,没有偏离轨道,走直线;一旦右侧探头检测到黑线,说明小车外侧探头已跑出轨道,让车左拐;同理一旦左侧检测到黑线,说明左侧探头已经出线,执行右拐命令。 2)拐直角弯的控制:当车前探头检测到黑线,执行直走,让车中心探头去检测,一旦探头检测到黑线开始左拐,直到车位探头检测到跳出左拐命令,继续开始执行循迹,通过设置车中间探头与车尾探头的间距,便可以实现拐弯的角度,进而顺利入弯。 小车的硬件主要包括4大模块:即电源模块、电机驱动模块、红外循迹 模块、简易控制模块。 系统工作框图如下: 驱动电机检测黑线简易控制控制小车 2.单元电路设计与分析 1)电源模块 电源模块电路板

智能小车单片机课程设计报告

单片机课程设计 题目: 智能小车设计 专业: 计算机科学与技术 班级: 14级2班 姓名学号组长 成员 成员 成员 成员 2016 年 12 月 23 日

打开命令行终端的快捷方式: ctr+al+t:默认的路径在家目录 ctr+shift+n:默认的路径为上一次终端所处在的路径. linux@ubuntu:~$ linux:当前登录用户名. ubuntu:主机名 :和$之间:当前用户所处在的工作路径. windows下的工作路径如C:\Intel\Logs linux下的工作路径是:/.../..../ ~:代表的是/home/linux这个路径.(家目录). ls(list):列出当前路径下的文件名和目录名. ls -a(all):列出当前路径下的所有文件和目录名,包括了隐藏文件. .:当前路径 ..:上一级路径 ls -l:以横排的方式列出文件的详细信息 total 269464(当前这个路径总计所占空间的大小,单位是K) drwxr-xr-x 3 linux linux 4096 Dec 4 19:16 Desktop 第一个位置:代表的是文件的类型. linux系统下的文件类型有以下几种. b:块设备文件 c:字符设备文件 d:directory,目录 -:普通文件. l:连接文件. s:套接字文件. p:管道文件. rwxr-xr-x:权限 r:读权限 -:没有相对应的权限 w:写权限 x:可执行权限 修改权限:

chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名 第一组:用户权限 第二组:用户组的权限 第三组:其他用户的权限. chmod 三个数(权限) 文件名 首先根据你想要的权限生成二进制数,再根据二进制数转换成十进制的三位数 rwxr-x-wx 111101011 7 5 3 chmod 753 文件名 rwx--xr-x 第二个位置上的数字:对应目录下的子文件个数,如果是非目录,则数字是1 第三个位置:用户名(文件创造者). 第四个位置:用户组的名字(前边的用户所处在的用户组的名字). 第五个位置:对应文件所占的空间大小(单位为b) 第六~八个位置:Dec 4 19:16时间戳(最后一次修改文件的时间) 最后一个位置:文件名 操作文件: 1.创建一个普通文件:touch 文件名 2.删除一个文件:rm(remove) 文件名 3.新建一个目录:mkdir(make directory) 目录名 递归创建目录:mkdir -p 目录1/目录2/目录3 4.删除一个目录:rmdir 目录名.//仅删除一个空目录 rm -rf 目录名//删除一个非空目录 5.切换目录(change directory):cd 路径 linux下的路径分两种 相对路径:以.(当前路径)为起点. 绝对路径:以/(根目录)为起点, 用相对路径的方式进入Music:cd ./Music 用绝对路径的方式进入Desktop:cd /home/linux/Desktop 返回上一级:cd .. 返回加家目录的三种方式 (1).cd

简易智能小车_源程序

简易智能小车——2003年全国大学生电子设计竞赛, c51源程序系统的单片机程序 #include "" #define det_Dist */ void ctrMotor_Dist(float dist,unsigned char type) {unsigned char t=0; mType=type; P2=((P2&240)|15); cntTime_Plues=(int)(dist/det_Dist); while(cntTime_Plues) { if(Inter_EX0==1&&StartTask==0) { cntTime_Plues=0; break; } if(Light_Flag==1) t=LightSeek(); if(type==0) 0为A仓库,1为B仓库,2为停车场*/ void fndIorn(void) interrupt 0 { unsigned char i; P10=1; P2=((P2&240)|15); //停车 P07=1; delay(1000);//刹车制动 P07=0; Inter_EX0=1; cntIorn++; Display(cntIorn); for(i=0;i<40;i++) { P2=P2&249; delay(2);

P2=((P2&240)|15); delay(2); } P2=P2&249; delay(100); P2=((P2&240)|15); //停车 IornColor(); //判断铁片黑白,设置bkAim for(i=0;i<95;i++) { P2=P2&249; delay(3); P2=((P2&240)|15); delay(2); } P2=((P2&240)|15); //停车 delay(4000); //把铁片吸起来 EX0=0; } /*外部中断1中断程序: */ /*对霍尔开关的脉冲记数,对小车的位置进行记录,以便对小车进行定位*/ void stpMove(void) interrupt 2 { cntTime_Plues--; if(Direction==0) //向上 { if(mType==0) sY+=det_Dist; else if(mType==2) sY-=det_Dist; } else if(Direction==1) //向左 { if(mType==0) sX+=det_Dist; else if(mType==2) sX-=det_Dist; }

智能寻迹小车

智能寻迹小车 摘要: 本文介绍了一种基于51单片机的小车寻迹系统。该系统采用两组高灵敏度的光电对管,对路面黑色轨迹进行检测,并利用单片机产生PWM波,控制小车速度。测试结果表明,该系统能够平稳跟踪给定的路径。 关键词: 智能小车;光电对管;寻迹;脉冲宽度调制 在历届全国大学生电子设计竞赛中多次出现了集光、机、电于一体的简易智能小车题目。笔者通过论证、比较、实验之后,制作出了简易小车的寻迹电路系统。整个系统基于普通玩具小车的机械结构,并利用了小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行。 总体方案 整个电路系统分为检测、控制、驱动三个模块。首先利用光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。系统方案方框图如图1所示。 图1 智能小车寻迹系统框图 传感检测单元 小车循迹原理 该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。 红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫

发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。 传感器的选择 市场上用于红外探测法的器件较多,可以利用反射式传感器外接简单电路自制探头,也可以使用结构简单、工作性能可靠的集成式红外探头。ST系列集成红外探头价格便宜、体积小、使用方便、性能可靠、用途广泛,所以该系统中最终选择了ST168反射传感器作为红外光的发射和接收器件,其内部结构和外接电路均较为简单,如图2所示: 图2 ST168检测电路 ST168采用高发射功率红外光、电二极管和高灵敏光电晶体管组成,采用非接触式检测方式。ST168的检测距离很小,一般为8~15毫米,因为8毫米以下是它的检测盲区,而大于15毫米则很容易受干扰。笔者经过多次测试、比较,发现把传感器安装在距离检测物表面10毫米时,检测效果最好。 R1限制发射二极管的电流,发射管的电流和发射功率成正比,但受其极限输入正向电流50mA的影响,用R1=150的电阻作为限流电阻,Vcc=5V作为电源电压,测试发现发射功率完全能满足检测需要;可变电阻R2可限制接收电路的电流,一方面保护接收红外管;另一方面可调节检测电路的灵敏度。因为传感器输出端得到的是

智能小车实训报告

智能小车实训报告 摘要: 本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器; 采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 一、实验目的: 通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。 二、设计方案 该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N 发出控制命令,控制电机的工作状态以实现对小车姿态的控制。 三.报告内容安排 本技术报告主要分为三个部分。第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术原理的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智

能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。 技术方案概要说明 本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块。 工作原理: 利用红外采集模块中的红外发射接收对管检测路面上的轨迹 将轨迹信息送到单片机 单片机采用模糊推理求出转向的角度,然后去控制 行走部分 最终完成智能小车可以按照路面上的轨迹运行。 硬件电路的设计 1、最小系统: 小车采用atmel公司的AT89C52单片机作为控制芯片,图1是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。 其中各个部分的功能如下: 1、时钟电路:给单片机提供一个外接的16MHz的石英晶振。 2、电源电路:给单片机提供5V电源。 3、复位电路:在电压达到正常值时给单片机一个复位信号。

智能小车课程设计

精心整理 智能循迹小车 【摘要】 本课题是基于低功耗单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以单片机为系统控制处器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 一、实验目的 ????这次设计智能小车的目的是为了掌握电路设计的方法和技巧。如何将学习到的理论知识运用到实际当中去,怎样能够活学活用,深入的了解电子元器件的使用方法,了解各种元器件的基本用途和方法,能够灵活敏捷的判断电路中出现的故障,学会独立设计电路,积累更多的设计经验,加强焊接能力和技巧,完成基本的要求。并能完美的完成这次实训。 根据老师给的控制要求,和自己的发挥扩充能力,独立的,大胆的去实践,开拓创新,能够将自己的想法体现到实际电路当中去。 二、设计方案 该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片发出控制命令,控制电机的工作状态以实现对小车姿态的控制。三、各芯片说明 W981216BH-6 一种髙速度同步动态随机存取存储器(SDRAM),具有1M字(words)*4层(banks)*16位(bits)的存储结构组织.传输数据带宽最高达166M字/秒(-6)。 对SDRAM是否访问是突发导向。在一个页面连续的内存位置可在一个1,2,4,8或整页突发访问时长和行选择组由活动命令。列地址自动生成的SDRAM的内部计数器在突发运作。随机栏也可以通过阅读在每个时钟周期提供其地址。该多组特性使交织在内部银行隐藏预充电时间。通过让一个可编程的模式寄存器,该系统可以改变突发长度,延时周期,交错或连续突发最大限度地发挥其性能。W981216BH是在理想的主内存高性能应用。 特征: 1、.3V±0.3V电源

智能小车-电机源代码

直流电机控制Keil c51源代码 直流电机的开环控制Keil c51源代码 //-----------------------函数声明,变量定义-------------------------------------------------------- #include #include #include //-----------------------定义管脚-------------------------------------------------------- sbit PWM=P1^0; //PWM波形输出 sbit DR=P1^1; //方向控制 #define timer_data (256-100) //定时器预置值,12M时钟是,定时0.1ms #define PWM_T 100 //定义PWM的周期T为10ms unsigned char PWM_t; //PWM_t为脉冲宽度(0~100)时间为0~10ms unsigned char PWM_count; //输出PWM周期计数 unsigned char time_count; //定时计数 bit direction; //方向标志为 //-------------------------------------------------------------------------------------------------- // 函数名称:timer_init // 函数功能:初始化设施定时器 //-------------------------------------------------------------------------------------------------- void timer_init() { TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装) */ PCON=0x00; TF0=0; TH0=timer_data; //保证定时时长为0.1ms TL0=TH0; ET0=1; TR0=1; //开始计数 EA=1; //中断允许 } //-------------------------------------------------------------------------------------------------- // 函数名称:setting_PWM // 函数功能:设置PWM的脉冲宽度和设定方向 //-------------------------------------------------------------------------------------------------- void setting_PWM() { if(PWM_count==0) //初始设置 { PWM_t=20;

相关文档
最新文档