最近研究出一款安卓手機編程控制的基于藍牙的開關裝置,體積很小。具體觀看優酷網宣傳視頻: 現在分享下設計原理圖如下: 采用可編程芯片,編程實現無線傳輸接收端代碼如下: /******************************************************************** 主函數*********************************************************************/ void main(){ TMOD=0X00; //定時器T0設定AUXR=0X80; //輔助寄存器TL0=BAUD; //十六位寄存器TH0=BAUD>>8; //十六位寄存器TR0=1; //開定時器ET0=1;PT0=1;EA=1; //開總中斷UART_INIT(); //串口初始化while(1) //無線循環{if(REND) { REND=0; r++; //but[r++&0x0f]=RBUF; dat=RBUF; } if(TEND) { if(t!=r) { TEND=0;// TBUF=dat;switch(dat) //接收數據判斷{uchar k;k=10;case 'A': P33=1;delay(k);TBUF =dat;dat=0xee;break; // 開case 'B': P33=0;delay(k);TBUF =dat;dat=0xee;break; // 關case 'C': if(P33==1){TBUF ='A';}if(P33==0){TBUF = 'B';}delay(k);dat=0xee;break; // 讀輸出口狀態case 'D': P33=!P33;delay(k);TBUF =dat;dat=0xee;break; // 輸出口取反default:break; // 跳出} t++; //TBUF=but[t++&0x0f]; TING=1; } }/******************************************************************** 接收數據判斷函數*********************************************************************/ } } /******************************************************************** 定時器T0*********************************************************************/void tm0()interrupt 1 using 1{ if(RING) { if(--RCNT==0) { RCNT=3; if(--RBIT==0) { RBUF=RDAT; RING=0; REND=1; } else { RDAT>>=1; if(RXB)RDAT|=0X80; } } } else if(!RXB) { RING=1; RCNT=4; RBIT=9; } if(--TCNT==0) { TCNT=3; if(TING) { if(TBIT==0) { TXB=0; TDAT=TBUF; TBIT=9; } else { TDAT>>=1; if(--TBIT==0) { TXB=1; TING=0; TEND=1; } else { TXB=CY; } } } }}/******************************************************************** 功能:串口初始化,波特率9600,方式1*********************************************************************/void UART_INIT(){TING=0;RING=0; TEND=1;REND=0; TCNT=0;RCNT=0;} 本程序代碼由本人編寫而成,難免有疏漏之處,請各位多多指教。稍后,有需要安卓手機藍牙代碼的朋友。可以聯系QQ:615854698;電話:13049863925。可以免費索取的喲,歡迎多提寶貴意見。 |