我用無線遙控PT2262和無線接收模塊PT2272及電機驅動模塊,結合單片機做了一個遙控小車,當按下前進也就是遙控器的A時,送開按鍵,小車還一直跑,而且再按遙控器的左轉、右轉、后退,小車的狀態不變化,用數碼管檢測到程序運行到左轉、右轉等狀態。還有就是用M4的遙控器如何實現5種行駛狀態.
程序如下:
#include <reg52.h>
#include "car_file.h"
void main()
{
P3=0X00;
P1=0xff;
TMOD = 0X02;
TH0 = 256-um;
TL0 = 256-um;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
keyscan();
// display(1);
}
}
void keyscan()
{
uchar num;
num = P1&0X0f;
{
if(num == 0x01)
{
left();
}
else stop();
if(num == 0x02)
{
go();
}
else stop();
if(num == 0x04)
{
right();
}
else stop();
if(num == 0x08)
{
back();
}
else stop();
}
}
void go()
{
IN1 = pwm(dutyleft);
IN2 =0;
IN3 = pwm(dutyright);
IN4 = 0;
}
void back()
{
IN2 = pwm(dutyleft);
IN1 = 0;
IN4 = pwm(dutyright);
IN3 = 0;
}
void left()
{
IN3 = pwm(dutyright);
IN4 =0;
IN1 = 0;
IN2 = 0;
}
void right()
{
IN1 = pwm(dutyleft);
IN2 = 0;
IN3 = 0;
IN4 = 0;
}
void stop()
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
}
void delay(uint z)
{
uint x,y;
for(x = z;x >0 ;x--)
for(y = 110;y > 0; y--);
}
void timer0() interrupt 1
{
t++;
}
uchar pwm(uchar dj_duty)
{
uchar duty;
if(t<=dj_duty)
{
duty= 1;
}
else
{
duty = 0;
}
if(t==20)
t=0;
return duty;
}
|