基于DTMF技术与射频技术的远程控制的实现
MF_Q2=1; //Q2=1产生Q2的上升沿
non_();//Q2的高电平持续
_nop_();
uc_data=DTMF_REG;//读MT8880状态寄存器
uc_data=uc_data0x0f;//屏蔽高四位,只取低4位
DTMF_Q2=0;//Q2=0完成一个Q2时钟
return(uc_data);
}
“MT8880发送前的初始化”函数:
//功能说明:发送前的初始化(对MT8880控制寄存器的
//操作)void DTMF-send-init(void)
{
DTMF_REG=0x49;
//写1001到MT8880控制寄存器CRA(允许发送)
DTMF_CPW(); //写人控制器寄存器
DTMF_REG=0x40;//写0000到MT8880控制寄存器CRB
DTMF_CPW(); //写人控制器寄存器}
“MT8880接收前的初始化”函数:
//功能说明:接收前的初始化(对MT8880控制寄存器
//的操作)void DIME rec init(void)
{
DTMF_REG=0x4C;
//写1100到MT8880控制寄存器CRA(使能中断模式,接着写CRB)
DTMF_CPW();
DTMF_REG=0x40; //写 0000到MT8880控制寄存器
//CRB
DTMF_CPW();
}
“MT8880接收1位DTMF”函数:
//功能说明:接收1位DTMF信号
//返回参数:接收到数据存于A//DTMF REG为与MCU的接口寄存器,在"DTMF.H"有定义
//READSR为读状态寄存器SR时临时存储器,在"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(); //读状态寄存器SR
while(SRBZ! =1);
//判断SR的b2=1吗?=1说明收到有效数据
DTMF_REG=0x2f;
uc_data=DTMF_CPR();//读取数据
return(uc_data);
)
“MT8880发送1位DTMF”函数:
//功能说明:发送1位DTMF信号
//输人参数:待发送数据给A//DTMF-REG为与MCU的接口寄存器,在"DTMf. H"有定义//READSR为读状态寄存器SR时临时存储器,在"DTMF.H"
//有定义
void DTMF send_lbyte(uchar uc_data)
{
DIME_ON();
DTMF_Q2=0;
DTMF RS0=0:
DTMF RW=0:
DTMF RFC=uc data:
DTMF CPM():
delay_ms(130);
//突发模式,送出后延时的100 ms再读状态寄存器
DTMF ̄REG=0x6f;//CS=0 RS0=1 RW=1 Q2=0
READSR=DTMF CPR():
}
4.3对编码芯片地址线和数据线的控制
已正确识别用户通过DTMF技术输人的控制指令后,单片机只要控制8位地址线和4位数据线这12个lO口的高低电平就可以启动无线传输。而在无线接收端是由硬件电路自动完成的,不需要软件控制。
本文介绍的技术已在实际项目中运用,系统运行稳定。如果增加语音提示功能,则整个系统能做得更加完善和更加人性化。要实现语音提示功能,只要增加一块语音录放芯片就可以了。
- WLAN 需要规划 掌握射频通信知识(01-03)
- 关于UART通信端口上射频干扰的研究(02-09)
- 基于WiMAX技术的5.8G无线专网射频系统设计(10-06)
- XRRU数字射频拉远设备助力无线网络建设(08-01)
- 灵巧划分在WIMAX射频中的应用(03-06)
- 使用OBSAI协议搭建多模基站的基带射频接口(06-08)