久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
單片機(jī)藍(lán)牙控制小車 求大牛求相助!
[打印本頁]
作者:
s-Pual
時(shí)間:
2017-10-19 20:41
標(biāo)題:
單片機(jī)藍(lán)牙控制小車 求大牛求相助!
硬件從做好的循跡小車中改過來的。是好的。存在問題:
手機(jī)發(fā)送16進(jìn)制代碼,小車沒有反應(yīng)
藍(lán)牙型號(hào)為HC-05
附上程序代碼,求大神解惑!
不勝感激!
作者:
s-Pual
時(shí)間:
2017-10-19 20:42
#include <reg52.h>
#include <math.h>
//宏定義
#define uchar unsigned char
#define uint unsigned int
#define SPEED_L_MAX 60
#define SPEED_R_MAX 60
//端口聲明
sbit L1 = P0^0;
sbit L2 = P0^1;
sbit R1 = P0^2;
sbit R2 = P0^3;
//變量定義
uchar t; // 計(jì)數(shù)
uchar PWM_L1; // 占
uchar PWM_L2; // 空
uchar PWM_R1; // 比
uchar PWM_R2; //
uchar Temp; // 接收數(shù)據(jù)暫存變量
uchar Port_flag; // 串口接收標(biāo)志位
int mode; // 控制模式
int SPEED_L_TARGET; // 左輪速度
int SPEED_R_TARGET; // 右輪速度
//子程序聲明
void Speed_Calculate();
void motor();
void Port_init();
void Time0_init()
{
TMOD|=0x01;
TH0=(65536 - 100)/256;
TL0=(65536 - 100)%256;
EA=1;
ET0=1;
TR0=1;
}
void Port_init()
{
TMOD|=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void main()
{
Time0_init();
Port_init();
while(1)
{
if( Port_flag == 1 )
{
Port_flag = 0;
switch (Temp)
{
case 0x01 :
mode = 1; // 直走
case 0x02 :
mode = 2; // 左拐
case 0x03 :
mode = 3; // 右拐
case 0x04 :
mode = 4; // 倒退
case 0x05 :
mode = 5; // 停止
}
}
Speed_Calculate();
motor();
}
}
void motor()
{
if(SPEED_L_TARGET>=0)
{
PWM_L1=SPEED_L_TARGET;
PWM_L2=0;
}
else
{
PWM_L1=0;
PWM_L2=abs(SPEED_L_TARGET);
}
if(SPEED_R_TARGET>=0)
{
PWM_R1=SPEED_R_TARGET;
PWM_R2=0;
}
else
{
PWM_R1=0;
PWM_R2=abs(SPEED_R_TARGET); //絕對(duì)值
}
}
void Speed_Calculate()
{
if (mode == 1)
{
SPEED_L_TARGET = SPEED_L_MAX*0.45; //直走
SPEED_R_TARGET = SPEED_R_MAX*0.45;
}
else if(mode == 2)
{ //稍微左拐
SPEED_L_TARGET = SPEED_L_MAX*0;
SPEED_R_TARGET = SPEED_R_MAX*0.55;
}
else if(mode == 3)
{
SPEED_L_TARGET = SPEED_L_MAX*0.55; //稍微右拐
SPEED_R_TARGET = SPEED_R_MAX*0;
}
else if(mode == 4)
{
SPEED_L_TARGET = SPEED_L_MAX*(-0.45); //后退
SPEED_R_TARGET = SPEED_R_MAX*(-0.45);
}
else if (mode == 5)
{
SPEED_L_TARGET = SPEED_L_MAX*0; //停止
SPEED_R_TARGET = SPEED_R_MAX*0;
}
}
void Timer0 () interrupt 1
{
TH0=(65536 - 100)/256;
TL0=(65536 - 100)%256;
t++;
if(t<PWM_L1) L1=1;else L1=0;
if(t<PWM_L2) L2=1;else L2=0;
if(t<PWM_R1) R1=1;else R1=0;
if(t<PWM_R2) R2=1;else R2=0;
if(t>100)
t=0;
}
void Port () interrupt 4
{
RI=0;
Temp=SBUF;
Port_flag=1;
}
作者:
s-Pual
時(shí)間:
2017-10-19 20:53
別沉了啊,自頂。糾結(jié)半天了
作者:
HC6800-ES-V2.0
時(shí)間:
2017-10-20 08:32
s-Pual 發(fā)表于 2017-10-19 20:53
別沉了啊,自頂。糾結(jié)半天了
因?yàn)闆]有你說的相應(yīng)硬件,也沒辦法試驗(yàn)?zāi)愕某绦颉?br /> 你到本論壇的智能小車/機(jī)器人板塊去找找答案吧。
你的小車沒反應(yīng),不一定只是51單片機(jī)的程序問題,還和你的手機(jī)APK程序有關(guān),兩邊要配套才行。我的藍(lán)牙小車就是從那里學(xué)來的,多看幾篇相關(guān)文章。
以我的經(jīng)驗(yàn),提醒你以下幾點(diǎn):
1、首先是單片機(jī)藍(lán)牙接收和手機(jī)藍(lán)牙發(fā)送的數(shù)據(jù)類型一定要相同,一定一定一定。
2、51單片機(jī)的晶振是多少?如果是12M,串口的波特率最大4800,一定要加倍,否則,接收數(shù)據(jù)誤差太大,沒法工作的。
3、手機(jī)APK程序是自己寫的嗎?如果是用別人的,那得好好研究一下別人的51單片機(jī)程序,才知道別人的手機(jī)是發(fā)的什么樣的數(shù)據(jù),網(wǎng)上很難找到手機(jī)APK的源程序,只能從單片機(jī)程序中去找相關(guān)的信息。
作者:
蘆葦劫
時(shí)間:
2017-10-20 10:28
s-Pual 發(fā)表于 2017-10-19 20:53
別沉了啊,自頂。糾結(jié)半天了
二、藍(lán)牙sbuf分為接受和發(fā)送,接受完成后,一定要將RI關(guān)閉,并接受到的數(shù)據(jù)用發(fā)送緩沖器sbuf發(fā)送到單片機(jī)內(nèi)部,具體實(shí)現(xiàn):SBUF=/*變量*/;
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久精品国产亚洲
|
97精品国产一区二区三区
|
成年人视频在线免费观看
|
欧美日韩精品一区
|
日韩视频一级
|
一区二区三区在线免费看
|
91精品国产91久久久久久吃药
|
国产欧美日韩在线播放
|
日韩一二三区
|
免费久久精品视频
|
亚洲一区二区三区在线观看免费
|
欧美一区二区三区在线视频
|
日韩一二区
|
日韩欧美在线视频一区
|
日韩成人av在线
|
国产精品资源在线
|
精品国产一区二区三区久久久四川
|
成人在线免费电影
|
av黄色在线
|
国产99久久
|
黄色毛片在线观看
|
欧美一区二区三区在线观看视频
|
国产精品视频网址
|
视频一区二区三区中文字幕
|
久久91精品国产
|
欧美精品在线免费观看
|
久久国产成人
|
国产.com
|
久久国产精品久久久久久
|
日本二区在线观看
|
中文字幕av在线播放
|
国产在线精品一区二区
|
在线国产小视频
|
久久三区
|
亚洲欧美中文日韩在线v日本
|
久久一区精品
|
国产视频一区在线
|
日韩精品中文字幕在线
|
久久精品久久久久久
|
亚洲在线视频
|
h在线播放
|