|
這個可以用藍牙控制小車前進后退左右轉
#include <reg52.h>
sbit INT=P2^0;
sbit INT2=P2^1;
sbit INT3=P2^2;
sbit INT4=P2^3;
sbit ENA=P1^1;
sbit ENB=P1^2;
int buf,t;
int zuo,you,zuo1=5,you1=5;
int zuo1,you1;
void delay(int z)
{
int x,y;
for (x=z;y>0;y--)
for (y=114;z>0;z--);
}
void CarGo()
{
zuo=zuo1;
you=you1;
ENA=1;
ENB=1;
INT= 1;
INT2=0;
INT3=1;
INT4=0;
}
void CarBack()
{
zuo=zuo1;
you=you1;
ENA=1;
ENB=1;
INT= 0;
INT2=1;
INT3=0;
INT4=1;
}
void CarTurnLeft()
{
zuo=5;
you=5;
INT=0;
INT2=1;
INT3=1;
INT4=0;
}
void CarTurnRight()
{
zuo=5;
you=5;
INT= 1;
INT2=0;
INT3=0;
INT4=1;
}
void kuaiLeft()
{
zuo=10;
you=10;
INT=0;
INT2=1;
INT3=1;
INT4=0;
}
void kuaiRight()
{
zuo=10;
you=10;
INT= 1;
INT2=0;
INT3=0;
INT4=1;
}
void CarStop()
{
zuo=0;
you=0;
}
void main()
{
SCON=0x50; //設定串口工作方式
PCON=0x00; //波特率不倍增
EA=1;
TMOD|=0x02;
TR0=1;
ET0=1;
TH0=(65535-100)/256;
TL0=(65535-100)%256;
TMOD|=0x20;
ES=1;
TR1=1;
TH1=0xfd;
TL1=0xfd;
while(1);
}
void in() interrupt 1
{
TH0=(65535-100)/256;
TL0=(65535-100)%256;
t++;
if(t==10) t=0;
if(t<zuo)
{
ENB=1;
}
else
{
ENB=0;
}
if(t<you)
{
ENA=1;
}
else
{
ENA=0;
}
}
void serial() interrupt 4
{
TL1=0xfd;
TH1=0xfd; //波特率9600
ES = 0; //關閉串行中斷
RI = 0; //清除串行接受標志位
buf = SBUF; //從串口緩沖區取得數據
switch(buf)
{
case 0x00 : CarGo();break;
case 0x01 : CarBack();break;
case 0x02 : CarStop();break;
case 0x03 : CarTurnLeft();break;
case 0x04 : CarTurnRight();break;
case 0x05 : zuo1--,you1--;break;
case 0x06 : zuo1++,you1++;break;
case 0x07 : kuaiLeft();break;
case 0x08 : kuaiRight();break;
}
ES = 1; //允許串口中斷
}
|
-
-
藍牙車.zip
2018-5-23 19:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
966 Bytes, 下載次數: 39, 下載積分: 黑幣 -5
源代碼
|