標(biāo)題:
藍牙小車單片機源程序
[打印本頁]
作者:
111n
時間:
2018-1-16 21:28
標(biāo)題:
藍牙小車單片機源程序
#include <REGX51.H>
#define godata 0x31;
#define backdata 0x32;
#define rightdata 0x33;
#define leftdata 0x34;
//#define P0=0;
sbit PWM0=P1^0; /*IN1*/
sbit PWM1=P1^1; /*IN2*/
sbit PWM2=P1^2; /*IN3*/
sbit PWM3=P1^3; /*IN4*/
sbit P_0=P0^0; /*LED1*/
sbit P_1=P0^1; /*LED*/
sbit P_2=P0^2; /*LED*/
sbit P_3=P0^3; /*LED*/
sbit P_4=P0^4; /*LED*/
sbit P_5=P0^5; /*LED*/
unsigned char receive ,receivedata;
unsigned char go,back,right,left,stop,LED;
//串口波特率的定時發(fā)生器,用的是定時器1 方式2,波特率是9600
void init()
{
TMOD=0x20; /* 定時器工作在方式2*/
TL1=0XFD; /*9600波特率 */
TH1=0XFD; /*啟動T1*/
SCON=0X50; /*串行方式1,允許接收*/
PCON=0X00;
TR1=1; /*啟動T1*/
EA=1; /*開總中斷*/
ES=1; /*允許串行中斷*/
}
void signal() interrupt 4 /*串口接收中斷函數(shù)*/
{
RI=0;
receivedata=SBUF;
receive=1;
}
//控制信號的接收處理
void signalfuntion()
{
if(receive==1)
{
receive=0;
go=0;
back=0;
right=0;
left=0;
stop=0;
LED=0;
switch(receivedata)
{
case 0x01:go=1; //前進
break;
case 0x02:back=1; //后退
break;
case 0x03:right=1; //右轉(zhuǎn)
break;
case 0x04:left=1; //左轉(zhuǎn)
break;
case 0x05:stop=1; //停
case 0x06:LED=1;
// default:stop=1;
default:break;
}
}
else
{
go=0;
back=0;
right=0;
left=0;
stop=0;
}
}
//電機控制輸出
void Motorcontrol()
{
if(go==1)
{
PWM0=1;
PWM1=0;
PWM2=1;
PWM3=0;
}
else if(back==1)
{
PWM0=0;
PWM1=1;
PWM2=0;
PWM3=1;
}
else if(right==1)
{
PWM0=1;
PWM1=0;
PWM2=1;
PWM3=1;
}
else if(left==1)
{
PWM0=1;
PWM1=1;
PWM2=1;
PWM3=0;
}
else if(stop==1)
{
PWM0=1;
PWM1=1;
PWM2=1;
PWM3=1;
}
}
void main()
{
init(); //初始化
while(1)
{
signalfuntion() ;
Motorcontrol();
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1