当前位置:首页 > 西北农林科技大学智能小车实习总结(完整版) - 图文
③安装电机驱动、联轴器。注意联轴器的顶丝要装上。
④安欧装轮胎、牛眼,把一根30mm和两根8mm的铜柱拼接起来,两条铜柱要平行,固定牛眼的螺母安装在驱动的下方。
⑤安装光电开关、寻迹传感器。注意两侧安装光电开关的安装角度;注意调整寻迹传感器的安装角,适合寻线的宽度。然后插上线,注意区分Vcc、GND、OUT三根线不要弄混。最后接上电机电源。安装好的步进电机小车如图3-7所示。
图3-7 安装好的步进电机小车实物图
3.3.2步进电机小车的“T”字形行走任务实现 ①步进电机小车的“T”字形行走程序如下:
#include \定义头文件
#include \#include
#define uchar unsigned char #define uint unsigned int sbit en_left = P1^0;
- 38 -
sbit cw_left = P1^1; sbit clk_left = P1^2; sbit en_right = P1^3; sbit cw_right = P1^4; sbit clk_right = P1^5; void timer_init(); void
move_left(uint
speed_l,uchar cw,uchar en);
void move_right(uint {en_left=1;} else {en_left=0;} } void
函数
{
speed=speed_r; if(cw==1) {cw_right=1;} else
{cw_right=0;} if(en==1) {en_right=1;} else
{en_right=0;} }
void main (void)//“T”字形行
走主程序
{
delay(10); timer1_init(); while(1)
move_right(uint
speed_r,uchar cw,uchar en);
void delay(unsigned int k); void stop(); uint n; uint speed; 延时函数
{
unsigned int i,j; for(i=0;i void timer1_init()//中断服务子函数 { TMOD=0x10; ET1=1; EA=1; TH1=(65536-100)/256; TL1=(65536-100)%6; TR1=1; } void 函数 { speed=speed_l; if(cw==1) {cw_left=1;} else {cw_left=0;} if(en==1) - 39 - void delay(unsigned int k)//speed_r,uchar cw,uchar en)//右转子 {;}} move_left(uint 4s { 2s move_right(20,0,1); delay(2000); move_left(20,1,1);//左转move_left(20,0,1);//前进move_right(20,1,1); delay(4000); move_left(20,1,1);//后退 speed_l,uchar cw,uchar en)//左转子 0.9s 5s } } void stop() {TR1=0;} “T”字形行走。 move_right(20,1,1); delay(5000); stop();//停止 move_right(20,1,1); delay(900); move_left(20,0,1);//直行 void timer1_serve() interrupt 3//中断定时复位程序 { TH1=(65536-100)/256; TL1=(65536-100)%6; n=n+1; if(n==speed) { } } clk_left=~clk_left; clk_right=~clk_right; n=0; ②程序解释:小车先前进4秒,再后退2秒,左转前进4秒后停止,完成 3.3.3步进电机小车的遥控控制任务实现 ①步进电机小车的遥控控制程序如下: #include \#include \#include #define uchar unsigned char #define uint unsigned int sbit en_left = P1^0; sbit cw_left = P1^1; sbit clk_left = P1^2; sbit en_right = P1^3; sbit cw_right = P1^4; sbit clk_right = P1^5; sbit B_key=P2^0; sbit D_key=P2^1; sbit A_key=P2^2; sbit C_key=P2^6;//接口定义 void timer_init(); void speed_l,uchar cw,uchar en); void move_right(uint speed_r,uchar cw,uchar en); void delay(unsigned int k); uint n; uint speed; void delay(unsigned int k)// 时间延时 { } void timer1_init()//定时中断 初始化 { TMOD=0x10; - 40 - unsigned int i,j; for(i=0;i {;}} move_left(uint } ET1=1; EA=1; TH1=(65536-100)/256; TL1=(65536-100)%6; TR1=1; } void main (void)//主函数 { move_left(uint delay(10);//延时 timer1_init(); while(1)//等待中断 { void 义子函数 { } void 义子函数 { speed_l,uchar cw,uchar en)//左转定 if(A_key==1&&B_key==0&&C_key==0&&D_key==0)//设置按键A为前进 speed=speed_l; if(cw==1) {cw_left=1;} else {cw_left=0;} if(en==1) {en_left=1;} else {en_left=0;} } else { EA=1; move_left(20,0,1); move_right(20,1,1); if(A_key==0&&B_key==1&&C_key==0&&D_key==0) 设置按键B为右转 move_right(uint { EA=1; speed_r,uchar cw,uchar en)//右转定 move_left(20,0,1); move_right(20,0,1); } else speed=speed_r; if(cw==1) {cw_right=1;} else {cw_right=0;} if(en==1) {en_right=1;} else {en_right=0;} - 41 - if(A_key==0&&B_key==0&&C_key==1&&D_key==0) 设置按键C为左转 { EA=1;
共分享92篇相关文档