基于51单片机的避障小车程序.docx

基于51单片机的避障小车程序.docx

ID:51801767

大小:13.91 KB

页数:4页

时间:2020-03-15

基于51单片机的避障小车程序.docx_第1页
基于51单片机的避障小车程序.docx_第2页
基于51单片机的避障小车程序.docx_第3页
基于51单片机的避障小车程序.docx_第4页
资源描述:

《基于51单片机的避障小车程序.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于51单片机的避障小车程序程序中有我写的注释,看不懂程序的话,可以参考。#include#include#defineucharunsignedchar#defineuintunsignedintsbitIN1=P2^1;//左电机输入端1sbitIN2=P2^2;//左电机输入端2sbitIN3=P2^3;//右电机输入端1sbitIN4=P2^4;//右电机输入端2sbitENA=P2^0;//右电机使能控制端sbitENB=P2^5;//左电机使能控制端sbitTX=P1^0;/

2、/超声波发送控制端sbitRX=P1^1;//超声波接收控制端uinttime=0,ERROR;//用于存放定时器时间值uintPWM1,PWM2,num1=0,num2=0;uints=0;//用于存放距离的值uchartt=0;voidDelay20us()//@11.0592MHz延时20us{unsignedchari;_nop_();_nop_();_nop_();i=52;while(--i);}voidforwardg()//前进函数{IN1=1;IN2=0;IN3=1;IN4=0;PWM1=15;PWM2=18

3、;}voidstopg()//停止函数{IN1=1;IN2=1;IN3=1;IN4=1;PWM1=0;PWM2=0;}voidcount()//测距函数{tt=200;if(tt==200)//20ms超声波发送一次{tt=0;TX=1;//超声波发送端Delay20us();//延时20usTX=0;//超声波发送端ERROR=50000;//while(RX==0&&ERROR>0)//判断是否有接收&&等待时常{ERROR--;//等待时长}if(RX==1)//超声波有接收RX=1{TR0=1;//开始计时while(

4、RX&&!TF0);//接收完毕(RX=0)或者超出量程结束语句TR0=0;//停止计时if(TF0==1)//如果溢出(超出量程){TF0=0;//置溢出标志位为0s=999;//直行控制}else{time=TH0*256+TL0;TH0=0;TL0=0;s=(time*1.7)/100;//距离计算公式}}else{s=999;}}}voidtime0init()//定时器0初始化{TMOD

5、=0x01;//设置定时器0为工作方式1TH0=0;TL0=0;//定时器赋初值}voidtime1init()//定时器1初始化

6、{ET1=1;//开定时器中断TR1=1;//开定时器1中断TH1=0xFF;//定时器赋初值TL1=0xA3;TMOD

7、=0x10;//设置定时器1为工作方式1}voidtime1()interrupt3//定时计数器1中断{TH1=0xFF;TL1=0xA3;//赋初值tt++;num1++;num2++;if(num1>=100)//PWM的周期为100*0.1=10msnum1=0;if(num2>=100)num2=0;if(num1

8、;if(num1>=PWM1)ENA=0;//关闭右电机使能控制端if(num2>=PWM2)ENB=0;}voidmain(){time0init();time1init();EA=1;//开总中断while(1){count();//调用距离计算函数if(s>=6)//大于等于6厘米前进{forwardg();}else{stopg();}}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。