完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
帮忙把程序改成4路避障3路寻线和防坠落功能红外遥控功能最好是hex格式驱动程序能不能改成in1 in2 in3 in4驱动的用的是42步进电机驱动模块是l298n单片机是stc89c52现在这谢过了这个程序有需要的可以拿走
#include "reg51.h" #include "stdio.h" #include < intrins.h > #include #define uchar unsigned char #define uint unsigned int //************************管脚定义************************************/ ***it en_left = P1^0;//左电机使能控制位 ***it cw_left= P1^1;//左电机方向控制位 ***it clk_left= P1^2;//左电机脉冲控制位 ***it en_right = P1^3;//右电机使能控制位 ***it cw_right= P1^4;//右电机方向控制位 ***it clk_right= P1^5;//右电机脉冲控制位 ***it ir_left=P1^6; //左侧红外传感器接收位 ***it ir_right=P1^7; //右侧红外传感器接收位 ***it ir_mid=P2^3; //中间红外传感器接收位 /////////////////////////函数声明//////////////////////////////////////// void timer1_init(); //定时器1初始化函数 void move_left(uint speed_l,uchar cw,uchar en);//左电机运动函数 void move_right(uint speed_r,uchar cw,uchar en);//右电机运动函数 void delay(unsigned int k); //延时函数 //////////////////变量定义//////////////////////////////////////////////// uint n;//进定时器1中断次数计数 uint speed;//电机速度控制变量 /**************函数体******************************************/ void delay(unsigned int k) { unsigned int i,j; for(i=0;i for(j=0;j<121;j++) {;}} } /*******************************/ void timer1_init() { TMOD=0X10; ET1=1; EA=1; TH1=(65536-100)/256; TL1=(65536-100)%256; TR1=1;//定时器启动后 运动控制脉冲将一直产生 小车的运动方式受 cw 和en控制 } void move_left(uint speed_l,uchar cw,uchar en) { //speed_l速度控制变量 cw方向控制变量 en使能控制变量 speed=speed_l; if(cw==1) { cw_left=1; } else { cw_left=0; } if(en==1) { en_left=1; } else { en_left=0; } } void move_right(uint speed_r,uchar cw,uchar en) { //speed_r速度控制变量 cw方向控制变量 en使能控制变量 speed=speed_r; //speed数值与速度成反比 请结合实际情况进行调节, if(cw==1) //但速度不能无限加快因为步进电机有速度上限 { //而且速度加快是力矩会下降,容易导致丢步现象 cw_right=1; //所以实际应用当中应调节到速度可力矩比较合适的数值 } //应考虑到电池电压,轮胎直径等因素 else { cw_right=0; //cw 控制电机正反转,1与0各代表一个方向 } if(en==1) { //en 为使能位 1:能 0:不能 en_right=1; } else { en_right=0; } } void main (void) { delay(10); timer1_init(); while(1) { if(ir_left==0&&ir_mid==0&&ir_right==0) //以下是三个红外传感器的八种状态和对应的运动方式 { move_left(15,0,1); move_right(15,0,1); delay(800); } if(ir_left==0&&ir_mid==0&&ir_right==1) { move_left(15,0,1); move_right(15,0,1); delay(400); } if(ir_left==0&&ir_mid==1&&ir_right==0) { move_left(15,0,1); move_right(15,0,1); delay(800); } if(ir_left==0&&ir_mid==1&&ir_right==1) { move_left(15,0,1); move_right(15,0,1); delay(400); } if(ir_left==1&&ir_mid==0&&ir_right==0) { move_left(15,1,1); move_right(15,1,1); delay(400); } if(ir_left==1&&ir_mid==0&&ir_right==1) { move_left(15,0,1); move_right(15,0,1); delay(800); } if(ir_left==1&&ir_mid==1&&ir_right==0) { move_left(15,1,1); move_right(15,1,1); delay(400); } if(ir_left==1&&ir_mid==1&&ir_right==1) { move_left(15,0,1); move_right(15,1,1); } } } void timer1_serve() interrupt 3 { TH1=(65536-100)/256; TL1=(65536-100)%256; n=n+1; // m=m+1; if(n==speed) { clk_left=~clk_left; clk_right=~clk_right; n=0; } } |
|
相关推荐
1个回答
|
|
额,有点长!呵呵,露个脸!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
685 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1235 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1175 浏览 0 评论
896 浏览 0 评论
944 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11864 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 07:37 , Processed in 0.540455 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号