完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include //#include //#include"i2c.h" #define uchar unsigned char #define uint unsigned int //串口定义 直流马达 ***it motor1=P1^0; // IN1 左齿轮 ***it motor2=P1^1; // IN2 ***it motor3=P1^2; // 右齿轮 ***it motor4=P1^3; // 超声波 ***it trig1=P0^1; //zuo ***it trig2=P0^0; ***it echao1=P3^2; // 右 ***it echao2=P3^3; //定义全局变量 uchar num_1,num_2; uchar length1=0; uchar length2=0; //uchar motor1=14; //uchar motor2=14; //定义子函数 void HC_SR04(); void timer_init(); //定时器初始化 void Delay(uint); void delay_10us(); void bizhang(); //避障 //void quguang(); //趋光 void stright_run(); void left_run(); void right_run(); void back_run(); void stop(); void main() { timer_init(); while(1) { HC_SR04(); delay_10us(); length1=length1/58; length2=length2/58; bizhang(); } } void timer_init() //初始化 { TMOD=0x02; //T0方式2 可自动装载 TL0=156; TL1=156; //TCON=0x50; EA=1; TR0=1; //ET1=1; ET0=1; EX1=1; EX0=1; trig1=0; trig2=0; // chao_T=0; // chao_R=1; } void HC_SR04() { trig1=1; trig2=1; delay_10us(); trig1=0; trig2=0; } void timer_0() interrupt 1 { if(echao1==1) num_1++; if(echao2==1) num_2++; } void int1() interrupt 0 //左侧超声波 { length1=num_1*100+256-TL0; num_1=0; } void int2() interrupt 2 //右侧超声波 { length2=num_2*100+256-TL0; num_2=0; } void bizhang() { //if(length_1<28||length_2<25) if(length1<28||length2<25) { if(length1<28&&length2<25) { // stop; // Delay(1); left_run(); Delay(1); } if(length1>28||length2>25) { if(length1-3 // stop; // Delay(1); left_run(); Delay(1); } if(length1-3>length2) { // stop; // Delay(1); right_run(); Delay(1); } } } if(length1>28&&length2>25) { stright_run(); // xg_run(); } } void quguang() { ; } void stright_run() { motor1=1; //左齿轮 motor2=0; motor3=1; //右齿轮 motor4=0; } void left_run() { motor1=0; motor2=1; motor3=1; motor4=0; } void right_run() { motor1=1; motor2=0; motor3=0; motor4=1; } void back_run() // 将正负极接反 { motor1=0; motor2=1; motor3=0; motor4=1; } void stop() { motor1=0; motor2=0; motor3=0; motor4=0; } void Delay(uint num) { uint temp=0; while(num--) { temp=100; while(temp--); } } void delay_10us() { _nop_();_nop_(); _nop_();_nop_();_nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_(); } 这是我编的一个超声波避障小车程序,但是老是一卡一卡的,很不稳定,求大神指点一下 |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
492 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
638 浏览 0 评论
742 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1263 浏览 0 评论
1133 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12055 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 08:39 , Processed in 0.447977 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号