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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于51单片机的蓝牙小车程序程序中有我写的注释,看不懂程序的话,可以参考。#includereg52.h#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;//左电机使能控制端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;num1++;num2++;if(num1==100)//PWM的周期为100*0.1=10msnum1=0;if(num2==100)num2=0;if(num1PWM1)ENA=1;//打开右电机使能控制端if(num2PWM2)ENB=1;if(num1PWM1)ENA=0;//关闭右电机使能控制端if(num2PWM2)ENB=0;}voidUsartInit()//定时计数器1的初始化子函数{TH1=0XFA;//计数器初始值设置,注意波特率是9600的TL1=0XFA;SCON=0X50;//设置为工作方式1ES=1;//打开接收中断EA=1;//打开总中断TR1=1;//打开计数器TMOD|=0X20;//设置计数器工作方式2(特别注意第二次设置工作方式时要加或)PCON=0X80;//波特率加倍}voidusart()interrupt4//串口中断子函数{bht=SBUF;//出去接收到的数据RI=0;//清除接收中断标志位SBUF=bht;//将接收到的数据放入到发送寄存器while(!TI);//等待发送数据完成TI=0;if(bht=='Y')//开关控制函数{bht_mode=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;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=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=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();}}else{stopg();}}voidmain(){Time0init();UsartInit();while(1){drive();}}

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功