基于DTMF技術與射頻技術的遠程控制的實現(xiàn)
“MT8880發(fā)送前的初始化”函數(shù):
//功能說明:發(fā)送前的初始化(對MT8880控制寄存器的
//操作)void DTMF-send-init(void)
{
DTMF_REG=0x49;
//寫1001到MT8880控制寄存器CRA(允許發(fā)送)
DTMF_CPW(); //寫人控制器寄存器
DTMF_REG=0x40;//寫0000到MT8880控制寄存器CRB
DTMF_CPW(); //寫人控制器寄存器}
“MT8880接收前的初始化”函數(shù):
//功能說明:接收前的初始化(對MT8880控制寄存器
//的操作)void DIME rec init(void)
?。?p> DTMF_REG=0x4C;
//寫1100到MT8880控制寄存器CRA(使能中斷模式,接著寫CRB)
DTMF_CPW();
DTMF_REG=0x40; //寫 0000到MT8880控制寄存器
//CRB
DTMF_CPW();
}
“MT8880接收1位DTMF”函數(shù):
//功能說明:接收1位DTMF信號
//返回參數(shù):接收到數(shù)據(jù)存于A//DTMF REG為與MCU的接口寄存器,在"DTMF.H"有定義
//READSR為讀狀態(tài)寄存器SR時臨時存儲器,在"DTMF.H"
//有定義
uchar DTMF_rec_1 byte(void)
?。?p> uchar uc_data;
DTMF_REG=Ox⒍;//CS=0 RS0=1 RW=1 Q2=0
READSR=DTMF_CPR(); //讀狀態(tài)寄存器SR
while(SRBZ! =1);
//判斷SR的b2=1嗎?=1說明收到有效數(shù)據(jù)
DTMF_REG=0x2f;
uc_data=DTMF_CPR();//讀取數(shù)據(jù)
return(uc_data);
?。?p> “MT8880發(fā)送1位DTMF”函數(shù):
//功能說明:發(fā)送1位DTMF信號
//輸人參數(shù):待發(fā)送數(shù)據(jù)給A//DTMF-REG為與MCU的接口寄存器,在"DTMf. H"有定義//READSR為讀狀態(tài)寄存器SR時臨時存儲器,在"DTMF.H"
//有定義
void DTMF send_lbyte(uchar uc_data)
?。?p> DIME_ON();
DTMF_Q2=0;
DTMF RS0=0:
DTMF RW=0:
DTMF RFC=uc data:
DTMF CPM():
delay_ms(130);
//突發(fā)模式,送出后延時的100 ms再讀狀態(tài)寄存器
DTMF ̄REG=0x6f;//CS=0 RS0=1 RW=1 Q2=0
READSR=DTMF CPR():
?。?p> 4.3對編碼芯片地址線和數(shù)據(jù)線的控制
已正確識別用戶通過DTMF技術輸人的控制指令后,單片機只要控制8位地址線和4位數(shù)據(jù)線這12個lO口的高低電平就可以啟動無線傳輸。而在無線接收端是由硬件電路自動完成的,不需要軟件控制。
本文介紹的技術已在實際項目中運用,系統(tǒng)運行穩(wěn)定。如果增加語音提示功能,則整個系統(tǒng)能做得更加完善和更加人性化。要實現(xiàn)語音提示功能,只要增加一塊語音錄放芯片就可以了。
評論