亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
智能小車和手機藍牙連接 按鍵按超過幾次后,小車失控
[打印本頁]
作者:
c03131401
時間:
2017-4-20 10:52
標題:
智能小車和手機藍牙連接 按鍵按超過幾次后,小車失控
//描述本人制作此小車和手機藍牙連接后每次開始都能正常前后左右,但按超過幾次后,小車失控,再按就一直前進或后退! 請大家看看程序有問題嗎? 藍牙模塊沒有接錯線!!模塊用串口調(diào)試也是好的,每次都能正常接收,大家看看有什么問題,請指教
/****************************************************************************
硬件連接
藍牙有4條線定義:
VCC
GND
TDX
RXD
把藍牙插入單片機J7接口中 --注意不要接錯線,否則燒壞藍牙模塊,不保修,不換貨。
端口模式配置
PXM1 PXM0 模式
0 0 準雙向口
0 1 強推挽輸出
1 0 高阻輸入
1 1 開漏輸出
******************************************************************/
/************* 功能說明 **************
串口1全雙工中斷方式收發(fā)通訊程序。本例程使用11.0592MHZ時鐘,如要改變,請修改下面的"定義主時鐘"的值并重新編譯。
串口設置為:9600,8,n,1.
******************************************/
/************* 本地常量聲明 **************/
#define MAIN_Fosc 11059200L //定義主時鐘
#define RX1_Lenth 32 //串口接收緩沖長度
#define BaudRate1 9600UL //選擇波特率
#define Timer1_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 1 重裝值, 對應300KHZ
#define Timer2_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 2 重裝值, 對應300KHZ
#define Timer1_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 1 重裝值, 對應300KHZ
#define Timer2_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 2 重裝值, 對應300KHZ
#include "STC15Fxxxx.H"
//char code str[] = "收到指令,向前!\n";
//char code str1[] = "收到指令,向后!\n";
//char code str2[] = "收到指令,向左!\n";
//char code str3[] = "收到指令,向右!\n";
//char code str4[] = "收到指令,停止!\n";
bit flag_REC=0;
bit flag =0; //標志位清零
#define left 'C'
#define right 'D'
#define up 'A'
#define down 'B'
#define stop 'F'
unsigned char i=0;
unsigned char dat=0;
unsigned char buff[5]=0; //接收緩沖字節(jié)
sbit M1A=P1^0; //定義左側(cè)電機驅(qū)動A端
sbit M1B=P1^1; //定義左側(cè)電機驅(qū)動B端
sbit M2A=P1^2; //定義右側(cè)電機驅(qū)動A端
sbit M2B=P1^3; //定義右側(cè)電機驅(qū)動B端
/************* 本地變量聲明 **************/
u8 idata RX1_Buffer[RX1_Lenth]; //接收緩沖
u8 TX1_Cnt; //發(fā)送計數(shù)
u8 RX1_Cnt; //接收計數(shù)
bit B_TX1_Busy; //發(fā)送忙標志
void tingzhi()
{
M1A=0; //將M1電機A端初始化為0
M1B=0; //將M1電機B端初始化為0
M2A=0; //將M2電機A端初始化為0
M2B=0;
}
void qianjin()
{
M1A=1;
M1B=0;
M2A=1;
M2B=0;
}
void houtui()
{
M1A=0;
M1B=1;
M2A=0;
M2B=1;
}
void zuozhuan()
{
M1A=0;
M1B=1;
M2A=1;
M2B=0;
}
void youzhuan()
{
M1A=1;
M1B=0;
M2A=0;
M2B=1;
}
//字符串發(fā)送函數(shù)
/* void send_str( )
// 傳送字串
{
unsigned char i = 0;
while(str[i] != '\0')
{
SBUF = str[i];
while(!TI); // 等特數(shù)據(jù)傳送
TI = 0; // 清除數(shù)據(jù)傳送標志
i++; // 下一個字符
}
}
void send_str1( )
// 傳送字串
{
unsigned char i = 0;
while(str1[i] != '\0')
{
SBUF = str1[i];
while(!TI); // 等特數(shù)據(jù)傳送
TI = 0; // 清除數(shù)據(jù)傳送標志
i++; // 下一個字符
}
}
void send_str2( )
// 傳送字串
{
unsigned char i = 0;
while(str2[i] != '\0')
{
SBUF = str2[i];
while(!TI); // 等特數(shù)據(jù)傳送
TI = 0; // 清除數(shù)據(jù)傳送標志
i++; // 下一個字符
}
}
void send_str3()
// 傳送字串
{
unsigned char i = 0;
while(str3[i] != '\0')
{
SBUF = str3[i];
while(!TI); // 等特數(shù)據(jù)傳送
TI = 0; // 清除數(shù)據(jù)傳送標志
i++; // 下一個字符
}
}
void send_str4()
// 傳送字串
{
unsigned char i = 0;
while(str4[i] != '\0')
{
SBUF = str4[i];
while(!TI); // 等特數(shù)據(jù)傳送
TI = 0; // 清除數(shù)據(jù)傳送標志
i++; // 下一個字符
}
}*/
/**********************************************/
void main(void)
{
B_TX1_Busy = 0;
RX1_Cnt = 0;
TX1_Cnt = 0;
S1_8bit(); //8位數(shù)據(jù)
S1_USE_P30P31(); //UART1 使用P30 P31口 默認
AUXR &= ~(1<<4); //Timer stop 波特率使用Timer2產(chǎn)生
AUXR |= 0x01; //S1 BRT Use Timer2;
AUXR |= (1<<2); //Timer2 set as 1T mode
TH2 = (u8)(Timer2_Reload >> 8);
TL2 = (u8)Timer2_Reload;
AUXR |= (1<<4); //Timer run enable
REN = 1; //允許接收
ES = 1; //允許中斷
EA = 1; //允許全局中斷
while (1)
{
P1M1 = 0;
P1M0 = 0;
if(flag_REC==1) //
{
flag_REC=0;
if(buff[0]=='O'&&buff[1]=='N') //第一個字節(jié)為O,第二個字節(jié)為N,第三個字節(jié)為控制碼
switch(buff[2])
{
case up : // 前進
//send_str( );
qianjin();
break;
case down: // 后退
// send_str1( );
houtui();
break;
case left: // 左轉(zhuǎn)
//send_str3( );
zuozhuan();
break;
case right: // 右轉(zhuǎn)
// send_str2( );
youzhuan();
break;
case stop: // 停止
//send_str4( );
tingzhi();
break;
}
}
}
}
/********************* UART1中斷函數(shù)************************/
void UART1_int (void) interrupt UART1_VECTOR
{
if(RI) //如果為1接收數(shù)據(jù)有效 為0未接收到數(shù)據(jù)
{
RI=0;
dat=SBUF;
if(dat=='O'&&(i==0)) //接收數(shù)據(jù)第一幀
{
buff[i]=dat;
flag=1; //開始接收數(shù)據(jù)
}
else
if(flag==1)
{
i++;
buff[i]=dat;
if(i>=2)
{i=0;flag=0;flag_REC=1 ;} // 停止接收
}
}
if(TI)
{
TI = 0;
B_TX1_Busy = 0; //清除發(fā)送忙標志
}
}
復制代碼
作者:
Jog
時間:
2017-5-2 22:58
樓主解決了嗎?我也出現(xiàn)這樣的情況了
作者:
c03131401
時間:
2017-5-3 08:12
現(xiàn)在我懷疑是電源共用了一個電源,電機瞬間停止啟動后造成的電壓不穩(wěn)定 ,我想買個帶光耦隔離的驅(qū)動,把電源分開試試!想了好多天了 ,再試試吧!
作者:
c03131401
時間:
2017-8-11 08:14
解決了,就是電源干擾,改用減速電機就可以了 ,或者電源分開獨立!
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1