51单片机与蓝牙模块的串口通信.docx

上传人:b****6 文档编号:8060298 上传时间:2023-01-28 格式:DOCX 页数:15 大小:86.47KB
下载 相关 举报
51单片机与蓝牙模块的串口通信.docx_第1页
第1页 / 共15页
51单片机与蓝牙模块的串口通信.docx_第2页
第2页 / 共15页
51单片机与蓝牙模块的串口通信.docx_第3页
第3页 / 共15页
51单片机与蓝牙模块的串口通信.docx_第4页
第4页 / 共15页
51单片机与蓝牙模块的串口通信.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

51单片机与蓝牙模块的串口通信.docx

《51单片机与蓝牙模块的串口通信.docx》由会员分享,可在线阅读,更多相关《51单片机与蓝牙模块的串口通信.docx(15页珍藏版)》请在冰豆网上搜索。

51单片机与蓝牙模块的串口通信.docx

51单片机与蓝牙模块的串口通信

 

51单片机与蓝牙模块的串口通信(共11页)

#include<>

#include<>

#include<>

#include""

#include""

#defineuintunsignedint

#defineucharunsignedchar

#defineNop()_nop_()

sbitP10=P1^0;/*定义独立对地按键端口*/

sbitP11=P1^1;/*定义独立对地按键端口*/

sbitP12=P1^2;/*定义独立对地按键端口*/

sbitP13=P1^3;/*定义独立对地按键端口*/592MHz

TL1=0XFD;

TH0=0;

TL0=0;

TR1=1;//timer1run

SCON=0x50;//UART为模式1,8位数据,允许接收

PCON|=0x80;//SMOD=1;Baud加倍

IE|=0x90;//EnableSerialInterrupt

TR1=1;//timer1run

EA=1;

ET0=1;

}

voidsend(ucharcc)

{

SBUF=cc;

while(TI==0);

TI=0;

}

voidsend_f(ucharccc)

{

send('');

send('<');

send('F');

send(ccc);

send('>');

}

voidcall_out()

{

uchari;

send('(');

for(i=0;i

{

send(CallOut_Num[i]);

}

send(')');

m=0;

}

voidinterrupt_pro()

{

string_write(0,1,reci_buff);

lcd_char_write(14,1,mun_to_char[temp/10]);//fortest

lcd_char_write(15,1,mun_to_char[temp%10]);//fortest

if(temp==')')CallIn_flag=1;//|temp=='$'|temp=='%'

elseif(temp=='$'){lcd_delay(5);//if(temp=='$')

string_write(0,0,clr);

string_write(0,0,reci_buff);}

elseswitch(temp)

{

case'X':

string_write(0,0,clr);string_write(0,0,"Disconnet");break;

case'P':

string_write(0,0,clr);string_write(0,0,"Pairing");break;

case'S':

string_write(0,0,clr);string_write(0,0,"Linking");break;

case'O':

string_write(0,0,clr);string_write(0,0,"Connect");break;

case'R':

string_write(0,0,clr);string_write(0,0,"Ring");

//string_write(5,0,CallIn_Num);

break;

case'D':

string_write(0,0,clr);string_write(0,0,"Ding");

//string_write(5,0,CallIn_Num);

break;

case'I':

string_write(0,0,clr);string_write(0,0,"Talking");break;

case'L':

string_write(0,0,clr);string_write(0,0,"Callfailed");break;

case'A':

string_write(0,0,clr);string_write(0,0,"MP3playing");break;

case'E':

string_write(0,0,clr);string_write(0,0,"Callrelease");break;

case'H':

string_write(0,0,clr);string_write(0,0,"A2DPconnected");break;

case'V':

string_write(0,0,clr);string_write(0,0,"A2DPdisconnected");break;

//case')':

x=0;break;//for(i=0;i<16;i++)lcd_char_write(i,1,lcd_table[i]);/*显示标题*/

default:

break;

}

//temp='';//fortest

}

voidkey_pro()

{

uchari,key_value_buff;

key_value_buff=key_scan();

if(key_value_buff!

=0)//有按键动作

{

switch(key_value_buff)/*显示按键*/

{

case0x18:

//0

if(call_flag){CallOut_Num[m]='0';lcd_char_write(m+2,0,'0');m++;}

elseif(!

shift_flag)

{send('');send('A');//Answer

lcd_char_write(3,1,'0');//可以不显示出来

lcd_char_write(8,1,'A');

lcd_char_write(9,1,'');

}

else

{send_f('P');

lcd_char_write(3,1,'0');

lcd_char_write(8,1,'F');

lcd_char_write(9,1,'P');

}

break;

case0x28:

//1

if(call_flag){CallOut_Num[m]='1';lcd_char_write(m+2,0,'1');m++;}

elseif(!

shift_flag)

{send('');send('H');//Hangup

lcd_char_write(3,1,'1');

lcd_char_write(8,1,'H');

lcd_char_write(9,1,'');

}

else

{send_f('L');

lcd_char_write(3,1,'1');

lcd_char_write(8,1,'F');

lcd_char_write(9,1,'L');

}

break;

case0x48:

//2

if(call_flag){CallOut_Num[m]='2';lcd_char_write(m+2,0,'2');m++;}

elseif(!

shift_flag)

{send('');send('R');//Reject

lcd_char_write(3,1,'2');

lcd_char_write(8,1,'R');

lcd_char_write(9,1,'');

}

else

{send_f('U');

lcd_char_write(3,1,'2');

lcd_char_write(8,1,'F');

lcd_char_write(9,1,'U');

}

break;

case0x88:

//3

if(call_flag){CallOut_Num[m]='3';lcd_char_write(m+2,0,'3');m++;}

elseif(!

shift_flag)

{send('');send('L');//Redial

lcd_char_write(3,1,'3');

lcd_char_write(8,1,'L');

lcd_char_write(9,1,'');

}

else

{send_f('F');

lcd_char_write(3,1,'3');

lcd_char_write(8,1,'F');

lcd_char_write(9,1,'F');

}

break;

case0x14:

//4

if(call_flag){CallOut_Num[m]='4';lcd_char_write(m+2,0,'4');m++;}

elseif(!

shift_flag)

{send('');send('U');//Volup

lcd_char_write(3,1,'4');

lcd_char_write(8,1,'U');

lcd_char_write(9,1,'');

}

else

{send_f('B');

lcd_char_write(3,1,'4');

lcd_char_write(8,1,'F');

lcd_char_write(9,1,'B');

}

break;

case0x24:

//5

if(call_flag){CallOut_Num[m]='5';lcd_char_write(m+2,0,'5');m++;}

elseif(!

shift_flag)

{send('');send('D');//Voldown

lcd_char_write(3,1,'5');

lcd_char_write(8,1,'D');

lcd_char_write(9,1,'');

}

else

{send_f('S');

lcd_char_write(3,1,'5');

lcd_char_write(8,1,'F');

lcd_char_write(9,1,'S');

}

break;

case0x44:

//6

if(call_flag){CallOut_Num[m]='6';lcd_char_write(m+2,0,'6');m++;}

elseif(!

shift_flag)

{send('');send('0');//

lcd_char_write(3,1,'6');

lcd_char_write(8,1,'0');

lcd_char_write(9,1,'');

}

else

{send('');send('G');send('x');

lcd_char_write(3,1,'6');

lcd_char_write(8,1,'G');

lcd_char_write(9,1,'x');

}

break;

case0x84:

//7

if(call_flag){CallOut_Num[m]='7';lcd_char_write(m+2,0,'7');m++;}

elseif(!

shift_flag)

{send('');send('V');//Voicedial

lcd_char_write(3,1,'7');

lcd_char_write(8,1,'V');

lcd_char_write(9,1,'');

}

else

{send('');send('n');

lcd_char_write(3,1,'7');

lcd_char_write(8,1,'n');

lcd_char_write(9,1,'');

}

break;

case0x12:

//8

if(call_flag){CallOut_Num[m]='8';lcd_char_write(m+2,0,'8');m++;}

elseif(!

shift_flag)

{send('');send('Z');//Calltransfer

lcd_char_write(3,1,'8');

lcd_char_write(8,1,'Z');

lcd_char_write(9,1,'');

}

else

{send('');send('p');

lcd_char_write(3,1,'8');

lcd_char_write(8,1,'p');

lcd_char_write(9,1,'');

}

break;

case0x22:

//9

if(call_flag){CallOut_Num[m]='9';lcd_char_write(m+2,0,'9');m++;}

elseif(!

shift_flag)

{send('');send('Q');//Disconnect

lcd_char_write(3,1,'9');

lcd_char_write(8,1,'Q');

lcd_char_write(9,1,'');

}

else

{send('');send('z');//Calltransfer

lcd_char_write(3,1,'9');

lcd_char_write(8,1,'z');

lcd_char_write(9,1,'');

}

break;

case0x42:

//A*

if(call_flag){CallOut_Num[m]='*';lcd_char_write(m+2,0,'*');m++;}

else

{send('');send('Y');//Version

lcd_char_write(3,1,'A');

lcd_char_write(8,1,'Y');

lcd_char_write(9,1,'');}

break;

case0x82:

//B#

if(call_flag){CallOut_Num[m]='#';lcd_char_write(m+2,0,'#');m++;}

else

{send('');send('T');//Setautoanswer

lcd_char_write(3,1,'B');

lcd_char_write(8,1,'T');

lcd_char_write(9,1,'');}

break;

case0x11:

if(!

call_flag)

{send('');send('t');//Clrautoanswer

lcd_char_write(3,1,'C');

lcd_char_write(8,1,'t');

lcd_char_write(9,1,'');}

break;

case0x21:

if(!

call_flag){

send('');send('M');//Setvolumeset

lcd_char_write(3,1,'D');

lcd_char_write(8,1,'M');

lcd_char_write(9,1,'');}break;

case0x41:

if(!

call_flag){

send('');send('m');//Clrvolumeset

lcd_char_write(3,1,'E');

lcd_char_write(8,1,'m');

lcd_char_write(9,1,'');}break;

case0x81:

if(!

call_flag){

send('');send('N');//Setautolink

lcd_char_write(3,1,'F');

lcd_char_write(8,1,'N');

lcd_char_write(9,1,'');}break;

default:

break;

}

while(key_scan()!

=0);/*等待按键放开*/

}

scan_key_port=0xff;/*释放矩阵按键端口*/

delay_1ms(5);

if((P10==0)||(P11==0)||(P12==0)||(P13==0))

{

delay_1ms(10);/*延时去抖动*/

if((P10==0)||(P11==0)||(P12==0)||(P13==0))

{

if(P10==0){lcd_char_write(3,1,'a');send('');send('S');lcd_char_write(8,1,'S');}//Link

elseif(P11==0)

{

call_flag=~call_flag;

if(call_flag){string_write(0,0,clr);lcd_char_write(0,0,0);}//显示拨号状态符号

else{for(i=0;i<16;i++)CallOut_Num[i]='';string_write(0,0,clr);string_write(3,0,"Welcome!

");}

}

elseif(P12==0){lcd_char_write(3,1,'c');send('');send('P');lcd_char_write(8,1,'P');}//Pair

elseif(P13==0)

{

shift_flag=~shift_flag;

if(shift_flag)lcd_char_write(15,0,'s');

elselcd_char_write(15,0,'');

}

while((P10==0)||(P11==0)||(P12==0)||(P13==0));/*等待按键放开*/

}

}

delay_1ms(5);

}

voidTimer0Interrupt()interrupt1//定时器0中断服务函数

{

TH0=0;

TL0=0;

TR0=0;if(reci_flag1==1)reci_flag=1;

z=0;

if(call_flag==1)time++;

}

//串口接收中断函数

voidserial()interrupt4using3

{

if(RI)

{

RI=0;

temp=SBUF;//if(temp!

=10)

reci_buff[z]=temp;

z++;if(z>15)z=0;

TR0=1;

reci_flag1=1;

}

}

/*voidserial()interrupt4using3//串口接收字符串

{

if(RI)

{

RI=0;

temp=SBUF;

if(temp=='R')

{

CallIn_flag=1;

}

reci_flag=1;

}

}

boolRIwait(uinti)

{//等待时间到,返回1

while(i--){if(RI)return0;};//等待时间内RI=1,返回0

return1;//串行接收停止位的中间时,RI置1

}

ucharReadSbuf(void)

{

//从SBUF读数据,可得到接收的数据

ucharTmpSbuf;

TmpSbuf=SBUF;

SCON=0x50;

returnTmpSbuf;

}

voidComService(void)interrupt4

{

ucharTmpSBUF,i=0;

EA=0;

ES=0;

if(RIwait(RiWaitTimer))gotoExitCom;

switch(ReadSbuf())

{

case'R':

//currentcall

for(i=0;i<20;i++)

{

if(RIwait(RLongiWaitTimer))break;//gotoExitCom;

[i]=ReadSbuf();

TelTmpNum[i]=[i];//newaddif[i]=='\r')break;

}

[i]='\n';

TelTmpNum[i]='\n';//newaddif(StandbyStatus==IsStandby)

{

=IR_BLUETOOTHPOWERON;

}

else

{

if==BlueToothWorkInCalling)

=IR_BLUE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1