標(biāo)題: 基于單片機(jī)無線控制小車設(shè)計(jì) [打印本頁]
作者: 翁珹 時(shí)間: 2019-5-11 11:33
標(biāo)題: 基于單片機(jī)無線控制小車設(shè)計(jì)
在綜合考量了單片機(jī)的使用性能、成本和時(shí)間等問題,本次課題主要旨在實(shí)現(xiàn)以下性能指標(biāo):
1)根據(jù)力學(xué)結(jié)構(gòu)完成小車整體框架的搭建,穩(wěn)固其整體重心;
2)完成底層運(yùn)動(dòng)系統(tǒng)的搭建,保證小車能夠正常行進(jìn);
3)完成手機(jī)遙控功能,通過手機(jī)控制底層小車的工作方式。
整體小車車身采用學(xué)校提供基本車身框架材料,通過自己的設(shè)計(jì)和搭建,完成底層硬件系統(tǒng)的搭載,再通過上層安卓手機(jī)APP遙控,通過無線藍(lán)牙通信協(xié)議,實(shí)現(xiàn)小車能夠遵從指令實(shí)現(xiàn)在室內(nèi)的自主避障的巡航功能與手機(jī)遙控功能
#include <reg52.h>
sbit PWM1 = P2^0;//PWM波產(chǎn)生的端口
sbit PWM2 = P2^1;
sbit motor_control_1 = P2^7;//左輪前進(jìn)
sbit motor_control_2 = P2^6;//左輪后退
sbit motor_control_3 = P2^5;//右輪前進(jìn)
sbit motor_control_4 = P2^4;//右輪后退
sbit LED0 = P0^0;//前燈
sbit LED1 = P0^1;//左后燈
sbit LED2 = P0^2;//右后燈
unsigned int PWMCnt1 = 0;
unsigned int cntPWM1 = 60;
unsigned int PWMCnt2 = 0;
unsigned int cntPWM2 = 60;
unsigned char bluetoothdata;
void initial_myself();
void initial_interrupt();
void usart_service(void);
void delay_long(unsigned int time);
void go_forward(void);//
void stop();
void turn_right();
void turn_left();
void back();
void main()
{
initial_myself();
delay_long(100);
initial_interrupt();
stop();
while(1)
{
LED1=1;LED2=1;
usart_service();
}
}
void usart_service()
{
switch(bluetoothdata)
{
case 'f':go_forward();
delay_long(100);
SBUF = 'f';//返回?cái)?shù)據(jù)到手機(jī)
bluetoothdata = 'a';
break;
case 's':stop();
delay_long(100);
SBUF = 's';
bluetoothdata = 'a';
break;
case 'r':turn_right();
delay_long(100);
SBUF = 'r';
bluetoothdata = 'a';
break;
case 'l':turn_left();
delay_long(100);
SBUF = 'l';
bluetoothdata = 'a';
break;
case 'b':back();
delay_long(100);
SBUF = 'b';
bluetoothdata = 'a';
break;
case '1':cntPWM1 = 60;
cntPWM2 = 60;
delay_long(100);
SBUF = '1';
bluetoothdata = 'a';
break;
case '2':cntPWM1 = 100;
cntPWM2 = 100;
delay_long(100);
SBUF = '2';
bluetoothdata = 'a';
break;
case '3':cntPWM1 = 140;
cntPWM2 = 140;
delay_long(100);
SBUF = '3';
bluetoothdata = 'a';
break;
case '4':LED0=0;
delay_long(100);
SBUF = '4';
bluetoothdata = 'a';
break;
case '5':LED0=1;
delay_long(100);
SBUF = '5';
bluetoothdata = 'a';
break;
}
}
void usart_receive(void) interrupt 4 //串口中斷程序
{
if(RI == 1)//收到字符
{
RI = 0;//軟件清零
bluetoothdata = SBUF;//讀取數(shù)據(jù)
}
if(TI == 1)//發(fā)送數(shù)據(jù)
{
TI = 0;//清零
}
}
void T0_time() interrupt 1 //定時(shí)器0中斷程序
{
PWMCnt1++;
PWMCnt2++;
if(PWMCnt1 >= 200)
{
PWMCnt1 = 1;
}
if(PWMCnt1 <= cntPWM1) //230
{
PWM1 = 1;
}
else
{
PWM1 = 0;
}
if(PWMCnt2 >= 200)
{
PWMCnt2 = 1;
}
if(PWMCnt1 <= cntPWM2) //230
{
PWM2 = 1;
}
else
{
PWM2 = 0;
}
TH0 = (65536 - 50) / 256;
TL0 = (65536 - 50) % 256;
}
void initial_myself()
{
TMOD = 0x01;//
TH0 = (65536 - 50) / 256;//定時(shí)50微秒
TL0 = (65536 - 50) % 256;
SCON = 0x50;
TMOD = 0x21;
TH1 = TL1 = 0xfd;//設(shè)置波特率9600
IP = 0x10;//設(shè)置串口中斷為高優(yōu)先級(jí)
}
void initial_interrupt()
{
EA = 1;// 開總中斷
ES = 1;// 開串口中斷
ET0 = 1;//開定時(shí)器0中斷?
TR0 = 1;//開定時(shí)器0
TR1 = 1;// 開定時(shí)器1
}
void delay_long(unsigned int time)
{
unsigned int i;
unsigned int j;
for(i = 0 ; i < time ; i++)
{
for(j = 0; j < 500; j++);
}
}
void go_forward()
{
motor_control_1 = 0;
motor_control_2 = 1;
motor_control_3 = 0;
motor_control_4 = 1;
}
void stop()
{
motor_control_1 = 0;
motor_control_2 = 0;
motor_control_3 = 0;
motor_control_4 = 0;
}
void turn_left()
{
int i=6000;
for(;i>=0;i--)
{
if(i)
{
motor_control_1 = 0;
motor_control_2 = 1;
motor_control_3 = 0;
motor_control_4 = 0;
LED1=0;
}
else
{
motor_control_1 = 0;
motor_control_2 = 0;
motor_control_3 = 0;
motor_control_4 = 0;
}
}
LED1=1;
}
void turn_right()
{
int i=6000;
for(;i>=0;i--)
{
if(i)
{
motor_control_1 = 0;
motor_control_2 = 0;
motor_control_3 = 0;
motor_control_4 = 1;
LED2=1;
}
else
{
motor_control_1 = 0;
motor_control_2 = 0;
motor_control_3 = 0;
motor_control_4 = 0;
}
}
LED2=1;
}
void back()
{
motor_control_1 = 1;
motor_control_2 = 0;
motor_control_3 = 1;
motor_control_4 = 0;
LED1=0;LED2=0;
}
-
-
藍(lán)牙小車.rar
2019-5-11 11:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
24.16 KB, 下載次數(shù): 9, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |