|
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit zuo1=P2^0;//定義控制左邊電機的單片機引腳
sbit zuo2=P2^1;//定義控制左邊電機的單片機引腳
sbit you1=P2^2;//定義控制右邊電機的單片機引腳
sbit you2=P2^3;//定義控制右邊電機的單片機引腳
uchar a=0;//定義一個變量a用來讀取串口的數據
void delay(uint z)//一個帶參數的延時程序
{
int i,j;
for(i=10;i>0;i--)
for(j=z;j>0;j--);
}
void init()//初始化子程序
{
TMOD=0x20; //設置定時器T1為工作方式2
TH1=0xfd;
TL1=0xfd;//T1定時器裝初值
TR1=1;//啟動定時器T1
REN=1;//允許串口接收
SM0=0;
SM1=1;//設置串口工作方式1
EA=1; //開總中斷
ES=1;//開串口中斷
}
void go()
{
zuo1=0;
zuo2=1;//左邊輪子正轉
delay(60);//PWM有用值,越大左邊輪子轉得越快
zuo1=1;//關閉左邊輪子
you1=0;
you2=1;//右邊輪子正轉
delay(60);//PWM有用值,越大右邊的輪子越快
you1=1;//關閉6右邊輪子
delay(100);//PWM無用值,越大,小車跑的越慢
}
void hui()
{
zuo1=1;
zuo2=0;//左邊輪子倒轉
delay(60);//PWM有用值,越大左邊輪子越快
zuo2=1;//關閉左邊輪子
you1=1;
you2=0;//右邊輪子倒轉
delay(60);//PWM有用值,越大右邊輪子越快
you2=1;//關閉右邊輪子
delay(100);//PWM無用值,越大,小車跑的越慢
}
void turnleft()//小車左轉程序
{
zuo1=1;
zuo2=0; //左輪制動
delay(35);
zuo2=1;
you1=0;
you2=1; //右輪正轉
delay(35); //PWM有用值,越大,右輪越快
you1=1; //右輪停止
delay(100);//PWM無用值,越大,小車跑的越慢
}
void turnright()//小車右轉程序
{
zuo1=0;
zuo2=1; // 左邊輪子正轉
delay(35);//PWM有用值,越大,左邊輪子越快
zuo1=1; // 左輪停止
you1=1;
you2=0; //右輪停止
delay(35);
you2=1;
delay(100);// PWM無用值,越大,小車跑的越慢
}
void down()//停止程序
{
zuo1=1;
zuo2=1;
you1=1;
you2=1;
}
void main()//主程序
{
init();//調用初始化子程序
while(1) //死循環
{
switch(a)//判斷a從串口讀取到的數據
{
case 0x4f: //0x1f 前進
go();
break;
case 0x3f: //0x2f 后退
hui();
break;
case 0x2f: // 0x3f 左轉
turnleft();
break;
case 0x1f: //0x4f右轉
turnright();
break;
case 0x00: //0x00停止
down();
break;
}
}
}
void chuan()interrupt 4//串口中斷服務
{
RI=0;//軟件清除串口響應
a=SBUF;//讀取單片機串口接收的藍牙模塊發送的數據
}
|
-
-
藍牙小車.zip
2019-4-10 15:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
34.75 KB, 下載次數: 21, 下載積分: 黑幣 -5
|