完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
/*********控制小车行驶************/
#include "reg52.h" #define UCHAR unsigned char #define UP 'A' #define DOWN 'B' #define LEFT 'C' #define RIGHT 'D' #define STOP 'F' ***it RB=P1^0; //右后轮 ***it rb=P1^1; ***it RF=P1^2; //右前轮 ***it rf=P1^3; ***it LB=P1^4; //左后轮 ***it lb=P1^5; ***it LF=P1^6; //左前轮 ***it lf=P1^7; UCHAR count=0,flag=0,len=0,h=0,r[3]=0,flag_con=0; unsigned int a; /***************小车运动细节*************************/ /***********小车前进部分*****************/ void L_forward(UCHAR num) // 小车左排轮前进,num可调整占空比 { LF=1;lf=0; LB=0;lb=1; if(count<=num) { LF=1; lb=1; } else { LF=0; lb=0; } } void R_forward(UCHAR num) //小车右排轮前进,num可调整占空比 { RB=1;rb=0; RF=0;rf=1; if(count<=num) { RB=1; rf=1; } else { RB=0; rf=0; } } /***************小车后退部分********************/ void L_drawback(UCHAR num) //小车左排轮后退,num可调整占空比 { LF=0;lf=1; LB=1;lb=0; if(count<=num) { lf=1; LB=1; } else { lf=0; LB=0; } } void R_drawback(UCHAR num) //小车右排轮后退,num可调整占空比 { RB=0;rb=1; RF=1;rf=0; if(count<=num) { rb=1; RF=1; } else { rb=0; RF=0; } } /*********小车的基本运动状态*************/ void stop() //小车停止 { RB=0;rb=0; RF=0;rf=0; LF=0;lf=0; LB=0;lb=0; } void forward(UCHAR num) //小车前进,num可调整占空比 { L_forward(num); R_forward(num); } void drawback(UCHAR num) //小车后退,num可调整占空比 { L_drawback(num); R_drawback(num); } void B_round(UCHAR L,UCHAR R) //小车后退转弯 { //L控制左排轮速度 L_drawback(L); //R控制右排轮速度 R_drawback(R); } void F_round(UCHAR L,UCHAR R) //小车前进转弯 { //L控制左排轮速度 L_forward(L); //R控制右排轮速度 R_forward(R); } void turn_right45() //前进右转45度 { for(a=500;a>0;a--) { R_drawback(20); L_forward(40); } } void turn_right90() //前进右转90度 { for(a=500;a>0;a--) { R_drawback(50); L_forward(50); } } void turn_left45() //前进左转45度 { for(a=500;a>0;a--) { R_forward(40); L_drawback(20); } } void turn_left90() //前进左转90度 { for(a=650;a>0;a--) { R_forward(50); L_drawback(50); } } void delay(UCHAR ms) { UCHAR i,j; for(i=ms;i>0;i--) for(j=110;j>0;j--); } void main() { TMOD=0x21; TH0=(65536-9)/256; TL0=(65536-9)%256; TH1=0xfd; TL1=0xfd; //装初值 ET0=1; TR0=1; TR1=1; //定时器中断1打开 REN=1; //允许串行口接受数据 SM0=0; SM1=1; //串行口工作方式位01,10位异步收发,波特率可变 EA=1; //打开总中断 ES=1; //打开串口中断 stop(); while(1) { if(flag_con==1) { flag_con=0; if(r[0]=='O'&&r[1]=='N') { ES=0; SBUF=r[2]; while(!ti); TI=0; ES=1; switch(r[2]) { case UP: forward(80);break; case DOWN: drawback(80);break; case LEFT: turn_left45();break; case RIGHT: turn_right45();break; case STOP: stop();break; default:break; } } } } } void timer()interrupt 1 { TH0=(65536-9)/256; TL0=(65536-9)%256; count++; if(count>=100) {count=0;} } void inser() interrupt 4 { if(RI) { RI=0; h=SBUF; if(h='O'&&(len=0)) { flag=1; r[len]=h; flag=1; } else if(flag==1) { len++; r[len]=h; if(len>2) { len=0;flag=0;flag_con=1; } } } |
|
相关推荐
10个回答
|
|
好吧,无人问津,表示已经找到原因了`
|
|
|
|
问题终于解决了
|
|
|
|
回帖奖励 +1 分积分 |
|
|
|
楼主 能发下完整程序吗 最好有原理图....最近打算做一个 有点无从下手的感觉
|
|
|
|
|
|
|
|
是电机电源供电问题,电压电流不足。
|
|
|
|
表示不知道,抱歉啊啊啊啊啊
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
988 浏览 0 评论
645 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
778 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
842 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
795 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10781 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 04:22 , Processed in 0.846712 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191