基于51单片机的蓝牙遥控小车 PWM控制
最近在做一个蓝牙控制的小车,说说自己遇到的问题,及自己学习到的东西,最后发现绕了好大的圈,这方面的资料也不全,现在说说我的小车之路!
这是一开始用普通键盘做的PWM调速程序!可以正常运行:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit in1=P1^1;
sbit in2=P1^6;
sbit in3=P1^2;
sbit in4=P1^7;
sbit ina=P1^3;
sbit inb=P1^4;
sbit key_jia=P2^3;
sbit key_jian=P2^4;
sbit key_dao=P2^5;
sbit key_left=P2^6;
uchar w=0,m=0,n=0;
void init() //定时器初始化,
{ TMOD=0x01;
TH0=0xff;
TL0=0x17;
EA=1;
ET0=1;
TR0=1;
P1=0x00;
}
void key()
{
if(key_jia==0)
{
while(key_jia==0);
if(w==100)
w=100;
else
w+=25;
}
if(key_jian==0)
{
while(key_jian==0);
if(w==25)
w=25;
else
w-=25;
}
if(key_dao==0)
{
while(key_dao==0);
{
m+=1;
if(m==1)
{
in1=0;
in2=1;
in3=0;
in4=1;
}
if(m==2)
{
in1=1;
in2=0;
in3=1;
in4=0;
m=0;
}
}
}
if(key_left==0)
{
while(key_left==0);
{
n+=1;
if(n==1)
{
in1=1;
in2=0;
in3=0;
in4=0;
}
if(n==2)
{
in1=1;
in2=0;
in3=1;
in4=0;
n=0;
}
}
}
}
void main()
{
init();
in1=1;
in2=0;
in3=1;
in4=0;
while(1)
key();
}
void time0() interrupt 1
{ uchar tt;
TH0=0xff;
TL0=0x17;
tt++;
if(tt<w)
{
ina=1;
inb=1;
}
else
{
ina=0;
inb=0;
}
if(tt==100)
tt=0;
}
这个PWM,浪费了我好多的时间,有看不懂的自己多看看书,望大神勿喷!
这是一开始的想法,现在看来,好多都太麻烦了,但是很好理解!
希望可以帮到一些想学习的人!