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