完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
思路 两个步进电机模拟两个轮子 使二驱车能够实现加速 减速 转向 既做到匀速加速减速左右转 其中非转向时两点机同步转动 设备和连接 89C82 其中电阻除了单片机供电是10K之外全是220 电容30PF 按键分别有加减速 倒车 左右转 寻迹模式和壁障模式 7个 程序 #include #define step_moto_port1 P0 #define step_moto_port2 P3 #define JIASU_KEY (!(P2_0)) #define JIANSU_KEY (!(P2_1)) #define ZZ_KEY (!(P2_2)) #define YZ_KEY (!(P2_3)) #define XJ_KEY (!(P2_4)) #define BZ_KEY (!(P2_5)) #define DC_KEY (!(P2_6)) ***it LED1 = P1^0; ***it LED2 = P1^1; unsigned int speed=1000; unsigned int speed_change=1000; unsigned char dir=1; //倒车控制,1为前进,0为倒车 unsigned char zhuan=0; //转向控制,0为直线,1为左转,2为右转 unsigned char ji=0; //模拟接收寻迹传感器读数,0为关闭,1为开启寻迹 unsigned char bi=0; //避障模式,0为无障碍,1为需要避障 unsigned char s; void Delay() { unsigned char t,y; for (t=0;t<245;t++) for (y=0;y<240;y++); } void run() { speed=speed_change; while(speed--) if(zhuan==0) { if(dir==1) { if(step_moto_port1 >=0x80) step_moto_port1=0x01; else step_moto_port1 <<= 1; if(step_moto_port2 >=0x80) step_moto_port2=0x01; else step_moto_port2 <<= 1; } if(dir==0) { LED1 = ~LED1; LED2 = ~LED2; if(step_moto_port1 <=0x01) step_moto_port1=0x08; else step_moto_port1 >>= 1; if(step_moto_port2 <=0x01) step_moto_port2=0x08; else step_moto_port2 >>= 1; } } if(zhuan==1) { LED1 = ~LED1; step_moto_port1=0x00; if(step_moto_port2 >=0x80) step_moto_port2=0x01; else step_moto_port2 <<= 1; } if(zhuan==2) { LED2 = ~LED2; step_moto_port2=0x00; if(step_moto_port1 >=0x80) step_moto_port1=0x01; else step_moto_port1 <<= 1; } if(bi==1) { LED1 = ~LED1; LED2 = ~LED2; if(step_moto_port1 <=0x01) step_moto_port1=0x08; else step_moto_port1 >>= 1; if(step_moto_port2 <=0x01) step_moto_port2=0x08; else step_moto_port2 >>= 1; Delay(); Delay(); Delay(); LED1 = ~LED1; step_moto_port1=0x00; if(step_moto_port2 >=0x80) step_moto_port2=0x01; else step_moto_port2 <<= 1; bi=0; } } void main(void) { step_moto_port1=0x01; step_moto_port2=0x01; while(1) { if(DC_KEY) { if(ji==0) dir = 0; while(DC_KEY) run(); dir = 1; } if(JIANSU_KEY) { if(speed_change >= 2000) speed_change = speed_change - 1000; while(JIANSU_KEY) run(); } if(JIASU_KEY) { if(speed_change < 20000) speed_change = speed_change + 1000; while(JIASU_KEY) run(); } if(ZZ_KEY) { if(ji==0) zhuan=1; dir=3; while(ZZ_KEY) run(); zhuan=0; dir=1; } if(YZ_KEY) { if(ji==0) zhuan=2; dir=3; while(YZ_KEY) run(); zhuan=0; dir=1; } if(BZ_KEY) { if(ji==0) dir=3; bi=1; while(BZ_KEY) run(); bi=0; dir=1; } if(XJ_KEY) { ji=1; dir=3; { if(ZZ_KEY) zhuan=1; while(ZZ_KEY) run(); zhuan=0; } { if(YZ_KEY) zhuan=2; while(YZ_KEY) run(); zhuan=0; } while(XJ_KEY) run(); dir=0; ji=0; } run(); } } 问题 程序无法实现控制```````````按任何键都是减速到近乎停止 而且电机要按倒车按键启动 求助大神```````````` |
|
相关推荐
3个回答
|
|
虽不晓,但觉吊~~~
|
|
|
|
一直很想做一个这样的东西来玩一下,但是现在都没有做,你如果要想别人给你答案,我建议你把程序的流程图也贴出来,我觉得看别人的程序是一件很头痛的事
|
|
|
|
顶 借鉴借鉴~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11765 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 15:34 , Processed in 0.638839 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号