基于51单片机的蓝牙小车程序.docx

基于51单片机的蓝牙小车程序.docx

ID:57194091

大小:10.98 KB

页数:5页

时间:2020-08-05

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

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

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

2、电机使能控制端uintbht;//蓝牙uintbht_mode=0,forward=0,backward=0,left=0,right=0,stop=0;voidTime0init()//定时器0的初始化函数,用于产生PWM,控制小车的速度{TH0=0xff;//定时0.1msTL0=0xa3;TMOD=0x01;//工作方式1EA=1;//开总中断ET0=1;//开定时器中断TR0=1;//开定时器0中断}voidtime0()interrupt1//定时计数器0{TH0=0xff;TL0=0xa3;n

3、um1++;num2++;if(num1==100)//PWM的周期为100*0.1=10msnum1=0;if(num2==100)num2=0;if(num1PWM1)ENA=0;//关闭右电机使能控制端if(num2>PWM2)ENB=0;}voidUsartInit()//定时计数器1的初始化子函数{TH1=0XFA;//计数器初始值设置,注意波特率是9600的TL1=0XFA;SCON=0X50

4、;//设置为工作方式1ES=1;//打开接收中断EA=1;//打开总中断TR1=1;//打开计数器TMOD

5、=0X20;//设置计数器工作方式2(特别注意第二次设置工作方式时要加或)PCON=0X80;//波特率加倍}voidusart()interrupt4//串口中断子函数{bht=SBUF;//出去接收到的数据RI=0;//清除接收中断标志位SBUF=bht;//将接收到的数据放入到发送寄存器while(!TI);//等待发送数据完成TI=0;if(bht=='Y')//开关控制函数{bht_mod

6、e=1;//允许发送数据forward=0;backward=0;left=0;right=0;stop=0;}if(bht=='N')//开关控制函数{bht_mode=0;forward=0;backward=0;left=0;right=0;stop=0;}if(bht_mode==1){if(bht=='f')//前进控制{forward=1;backward=0;left=0;right=0;stop=0;}elseif(bht=='b')//后退控制{forward=0;backward=1;

7、left=0;right=0;stop=0;}elseif(bht=='l')//左转控制{forward=0;backward=0;left=1;right=0;stop=0;}elseif(bht=='r')//右转控制{forward=0;backward=0;left=0;right=1;stop=0;}elseif(bht=='s')//停止控制{forward=0;backward=0;left=0;right=0;stop=1;}}else{forward=0;backward=0;left

8、=0;right=0;stop=1;}}voidforwardg()//前进函数{IN1=1;IN2=0;IN3=1;IN4=0;PWM1=25;//右轮PWM2=20;}voidbackwardg()//后退函数{IN1=0;IN2=1;IN3=0;IN4=1;PWM1=20;PWM2=20;}voidleftg()//左转函数{IN1=1;IN2=0;IN3=1;IN4=0;PWM1=10;PWM2=20;}voidrightg()//右转函数{IN1=1;IN2=0;IN3=1;IN4=0;PWM1

9、=20;PWM2=10;}voidstopg()//停止函数{IN1=1;IN2=1;IN3=1;IN4=1;PWM1=0;PWM2=0;}voiddrive(){if(bht_mode==1){if(forward==1)forwardg();if(backward==1)backwardg();if(left==1)leftg();if(right==1){rightg();}if(stop==1){stopg();}}e

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

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

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