基于DTMF编解码芯片实现的单片机遥控器解读Word格式.docx
《基于DTMF编解码芯片实现的单片机遥控器解读Word格式.docx》由会员分享,可在线阅读,更多相关《基于DTMF编解码芯片实现的单片机遥控器解读Word格式.docx(37页珍藏版)》请在冰豆网上搜索。
在单片机的控制下,通过HD7279模块以及MT8880模块以及无线发送模块实现数据的显示以及指令的发送,在发送端,当有遥控信号需要发送时,将遥控信号发送到MT8880芯片,芯片进行自动的编码后送到无线发送模块。
在接收端,当无线模块接收到遥控信号时将双音多频信号发到MT8880芯片,芯片将自动解码信号,然后将解码的信号发送到单片机,单片机通过HD7279显示出来。
2.3、系统的原理框图
图2.1总体框图
3硬件电路方案设计
3.1硬件电路的方案设计
通过功能需求的分析以及模块的分析,硬件电路主要包括了单片机最小系统、HD7279芯片的键盘显示部分、以及MT8880芯片编解码模块,无线发送接收模块硬件电路。
3.2单片机最小系统
5l系列单片机中典型芯片(AT89C51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256B的RAM,2个16b的定时/计数器TO和T1,4个8b的工/O端I:
IP0,P1,P2,P3,一个全双功串行通信口等组成。
特别是该系列单片机片内的Flash可编程、可擦除只读存储器(E~PROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。
51单片机的最小系统主要包括时钟电路和复位电路,时钟电路是计算机的心脏,它是控制着计算机的工作节奏。
MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别是反相放大器输入和输出端,外接定时反馈元件就组成震荡器产生时钟送至单片机内部的各个部件。
如下图2.2所示,片内电路与片外器件构成一个时钟发生电路,CPU的所有操作均在时钟脉冲同步下进行。
片内振荡器的震荡频率fOSC非常接近晶振频率,一般多在1.2MHz~12MHz之间选取,这次课设用的时钟频率是11.0592MHz。
图2.2中C1、C2是反馈电容,其值在5pF~30pF之间选择,其典型值是30Pf。
作用有两个:
其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小)
单片机刚接上电源时,其内部各寄存器处于随机状态,复位可以使CPU和系统中其他部件处于一个确定的初始状态,并以此初始状态开始工作。
RST为外部复位信号的输入脚,当在该引脚上保持两个机器周期以上的高电平,单片机就会被夫复位。
单片机的复位电路有很两种:
系统上电自动复位和系统上电自动复位加系统手动复位,系统上电自动复位只在上电时进行复位,如果单片机中途需要复位的话需要重新把电源关掉,这样非常不方便,通常的做法是使用第二种方法实现,在单片机上电后自动复位后如果中途需要进行复位后可以通过按键来实现:
在正确选择单片机复位电路和时钟电路后,单片机最小系统如下图所示:
图3.1单片机最小系统
3.3键盘显示
由于单片机的I/O口有限,如果直接用于键盘和数码管的管理会消耗很多I/O口,本系统中采用具有串行接口的HD7279,HD7279是专门用于管理键盘和数码管的芯片,该芯片最多可以管理64个键盘和8个数码管。
并且采用串行接口,无需外围元件可直接驱动LED,所以单片机只要控制其四个端口即可,这样可以节省单片机的很多的I/O口。
HD7279内部含有译码器可直接接受BCD码或十六进制码并同时具有两种译码方式,其各个位的译码是相互独立的,指令有两种模式:
纯指令模式和带有数据指令模式。
此外还具有多种控制指令如消隐、闪烁、左移、右移、段寻址等。
HD7279具有片选信号可方便的实现8位的显示或多于64键的键盘接口。
读键盘的指令时序图如下:
图3.2HD72729读键盘时序图
在进行本进行系统设计时有两种方案:
方案一:
本方案中采用12个键盘和1个数码管,在当键盘按下时单片机接受数据,并且将键盘值送给HD7279进行显示,每次只能显示一位数据。
本方案的优点是硬件比较简单,但是缺陷是上次发送的数据不能显示,在连续发送数据时接收端判断数据的正确性带来困难。
方案二:
本方案中采用12个键盘和8个数码管,当键盘按下时单片机接收数据并判断键值后发送到7279芯片里面去进行显示,按下多少个数据数码管显示多少数据,次方案能方便的显示按下的数据,在接收数据时能方便的判断出接收的数据是否正确。
缺点是硬件电路比较复杂。
经过以上方案比较,方案二虽然比较复杂,但是HD7279最多能控制64个键盘,增加的只是软件部分,所以采用方案二作为键盘显示模块。
方案硬件电路图:
图3.3HD7279模块
3.4MT8880数据编编解码模块
3.4.1MT8880芯片的特点
MITEL公司生产的MT8880是一种常用的双音多频信号解码芯片。
图1为MT8880芯片引脚图,该器件有20个引脚:
引脚0SC2和OSCl引入时钟脉冲,通常外接3.58MH晶振;
引脚IN+、IN-为运放的同相和反相输入;
GS为增益选择端;
VREF是基准电压输出端;
DTMF端输出DTMF信号;
引脚R/W为读写控制信号输入;
引脚CS输入片选信号,低电平有效;
引脚ItSI为寄存器选择输入;
引脚CP为系统时钟输入;
D。
~D,为控制DTMF信号发送和DTMF译码的四位,引脚0SC2和OSCl引入时钟脉冲,通常外接数据输入/输出端口;
引脚IRQ/CALL处理中断请求信号,为开漏输出。
其内部框图如下:
MT8880共有6种工作模式:
图3.4MT8880内部框图
MT8880总共有六种工作模式,他们分别如下:
一:
DTMF模式:
电路发送或接收DTMF信号。
数据通过TDR、RDR以及状态寄存器SR,可以完成DTMF信号的发送与接收。
二:
呼叫处理(CALL)模式:
电路可以从输入信号中检测电话呼叫过程中的各种信号音,并由IRQ/CALL端方波输出。
...
三:
突发(BuRsT)模式:
该模式下只能发送DTMF信号而不能接收。
四:
单/双(S,D)音产生模式:
电路可产生单音或DTMF信号,用于测试和监测。
五:
测试(TEST)模式:
使电路从DTMF接收部分得到延迟监测信号,并从IRQ/CALL端输出。
六:
中断模式:
该模式可工作在DTMF状态条件下或BURST模式条件下,一旦有信号出现,则IRQ,CALL端输出低电平。
3.4.2MT8880数据编码模块设计
由于MT8880已经广泛应用于个行各业,所以它有典型的应用电路,只需要按照典型电路来设计即可。
典型电路如下:
图3.5MT8880引脚图
3.4.3MT8880数据解码模块
当MT8880作为DTMF接收器的时候,DTMF信号经由IN+和IN-输入,经过运算放大滤除信号中的拨号音频率,然后发送到双音频滤波器,分离出低频组和高频组信号,通过数字计数的方式检出DTMF信号的频率,并且通过译码器译成4位二进制码。
4位二进制编码被锁存在接收数据寄存器中,此时状态寄存器中的延时控制识别位复位,状态寄存器中的接收数据寄存器满标识位置位,对外而言,当寄存器中的延时控制识别位复位时,IRQ/CP由高电平变为低电平。
在中断模式下,若芯片同时被设置为接收DTMF信号模式,那么当收到有效DTMF信号并译码后,IRQ端变为低电平。
所以可用IRQ/CP作为单片机的中断信号,当IRQ由高电平变为低电平时向CPU发出中断请求,当单片机响应中断,读出寄存器中的数据后,IRQ返回高电平。
所以在电路中IRQ端与单片机的P3.2连接,并与一高电平并连,可以实现中断请求功能。
MT8880的D0~D3与单片机的P0.0~P0.3相连,CP端与P3.4相连,RSO与P1.0相连,R/W与P1.5相连。
电路图如3.3所示。
图3.6单片机与MT8880的连接图
3.5无线发送接收模块设计
3.5.1发送接收模块设计
由于MT8880芯片输出的是一个高频与一低频信号叠加的模拟信号,所以发送模块需要直接调制模拟信号。
所以发送接收模块采用的是深圳极限电子科技有限公司生产的5.8G无线影音模块/无线音视频模块/无线收发模块,该发送接收模块连接简单,电源提供5V即可,与其他模块的供电一致,可以用同一电源供电。
该模块包括无线接收以及发送模块。
发送模块的工作频段:
5725-5865MHz。
其中有2组频率8个信道可选,轻松避开干扰频率:
Ch15865MHzCh25845MHzCh35825MHzCh45805MHzCh55785MHzCh65765MHzCh75745MHzCh85725MHz。
发送模块的调制方式是FM宽频调频。
功率为100mW。
工作电压为5V,电流消耗大概在250mA,无线通信距离在300-500米。
3.5.2发送接收模块连接图
图3.7无线发送模块
图3.8无线接收模块
在发射模块中,总共有9个接口,包括BX、CH3、CH2、CH1、VCC、GND、VIDE0、A6.5、A6.8。
其中CH3、CH2、CH1是三个通道的选择,与接收端一一对应,左音频输入端即A6.5作为双音多频信号的输入端,把双音多频信号输入左音频端后,模块会对双音多频信号进行FM调制,最后从天线将信号发送出去。
在接收模块中公共有9个接口,包括GND、VIDE0、A6.5、A6.8、VCC、CH1、CH2、CH3、BX。
它们一一对应于发送端的各个接口,即发送端的A6.5端口的数据只能在接收端的A6.5的端口接收,在其他端口是无法接收的。
本系统中双音多频信号从无线发射模块的A6.5端口输入并编码发送出来后,无线接收端会接收信号并进行编码,然后根据相应的通道将解调后的信号送到相应的输出端A6.5,即左音频信号输出端,无线接收模块的左音频输出端连接到MT8880芯片的信号输入端,芯片将对信号进行解码后送到单片机。
单片机根据相应的信号换算成十进制数据。
4系统软件的设计
4.1系统的总体软件设计
4.1.1遥控信号发送端软件设计
由于本系统包括了四个模块,HD7279的键盘显示模块,单片机最小系统模块和MT8880数据编解码模块以及无线发送接收模块,在设计软件时要恰当的将三者结合起来,单片机最小模块是整个的控制中心,主要由它来实现键盘显示模块和MT8880数据发送模块的连接。
系统的发送模块框图如下:
图4.1发送模块框图
在主程序开始后,首先对各个芯片进行相应的初始化,对HD7279芯片的译码方式,显示模式进行设置,对MT8880芯片的工作模式,寄存器进行相应的控制。
对系统初始化以后就进入循环,判断是否有键按下,并且判断出相应的键功能。
执行相应的功能之后返回程序开始进行下次的工作。
这样系统就实现了实时的工作。
只要有相应的操作,系统就能反应出来。
完成系统的预定功能。
4.1.2遥控信号接收端软件总体设计
图4.2接收端流程图
主程序开始后对HD7279模块进行初始化以及MT8880芯片初始化后进入中断等待,对MT8880进行发送前必须进行初始化后,才能进行收发数据。
开始工作时需要对HD7279进行复位,数码管会显示最初设置的值。
然后要一个等待时间在对MT8880进行接收初始化,并且MT8880以中断模式工作。
4.2遥控信号编码解码子程序
4.2.1MT8880编程介绍
本系统采用的是兼信号收、发于一体的双音多频芯片MT8880。
此芯片可以通过不同的命令控制线来选择不同的状态,主要有接收状态和发送状态。
芯片里有五个寄存器,可归为三类:
数据转移寄存器、收发控制寄存器和收发状态寄存器。
软件程序设计必须考虑的是寄存器的工作时序和控制信号的电平。
这些寄存器都是由MT8880的三个控制脚进行控制的,它们分别为RS0、R/W和IRQ/CP脚,如表4.1所示为控制脚取不同的值时对应不同的寄存器,而IRQ/CP是读写有效位,高电平有效,低电平无效。
表4.1内部寄存器功能
RS0
R/W
功能
写发送数据寄存器
1
读接收数据寄存器
写控制寄存器
读状态寄存器
每写入一个控制指令时,程序都必须设有一定的延时,因为芯片实现每一个功能都需要时间处理,所以在给IRQ/CP高电平后要有一个延时时间。
收发控制由两个控制寄存器共同完成,它们分别是CRA和CRB,它们都是四位寄存器,如表4.2和表4.3所示,CRA的最低位(B0位)控制DTMF芯片是否允许输出双音多频信号;
而控制芯片是接收信号还是发送信号功能是由第二位(B1位)控制,此位为1时是CP模式,当芯片处于CP模式时,可以进行对信号音的检测,此时在芯片MT8880的IRQ脚会输出一个方波,当第二位是0时,就选择了DTMF模式,也就是进行接收号码或是发送号码;
第三位(B2位)是要配合第二位来实现的,当第二位选择CP模式时,只有第三位为1时在IRQ脚才会有方波输出;
写是否写CRB寄存器就是通过CRA的最高位(B3位)来控制,为1时是选择写CRB寄存器。
当加电后,必须使CRA和CRB初始化,使两者清零。
以下两表详细列出以上两寄存器各位的功能。
表4.2控制寄存器(CRA)功能
控制位
名称与功能
说明
b0
Tout音调输出
逻辑“1”使能音调输出
b1
CP/DTMF模式。
控制
逻辑“1”为CP模式。
当b2=1时,例如输入电话忙音,此脚输出忙音方波
b2
IRQ中断使能
逻辑“1”使能中断模式。
当b1=0时,接收到DTMF信号或准备发送新的双音信号,DTMF/CP引脚电平由高变低。
b3
RSEL寄存器选择
逻辑“1”允许选择CRB
表4.3控制寄存器(CRB)功能
控制位
名称与功能
说明
b0
BURST双音群模式
逻辑“0”使能双音群模式
b1
TEST实验模式
逻辑“1”使能实验模式。
该模式时,IRQ/CP引脚输出延迟控制信号(CRAb1=0)
b2
S/D单双音产生
逻辑“0”允许产生DTMF,否则,输出单音频
b3
C/R列/行音选择
b2=1,”逻辑“使能产生单音信号
本设计应用到的CRA的各控制位为b3b2b1b0=1000,有一点必须要注意那就是CRA的b3控制位一定要为高,否则对CRB的写操作将无法进行。
而设计中应用到的CRB的各控制位为b3b2b1b=0000,其中控制位b2和控制位b3是配合在一起使用的,并且在此次设计中用不到TEST实验模式,所以控制位b1为低电平。
另外,状态寄存器的功能如下表4.4所示
表4.4状态寄存器(SR)功能
状态位
名称
状态标志置位
状态标志清除
IRQ
发生中断;
b1或b2=0
读状态寄存器清除
突发模式下TDR为空
暂停结束:
准备发送新数据
同上
接收寄存器满
接收寄存器的数据有效
延迟控制
检测不到DTMF信号时置位
检测DTMF信号时清除
状态寄存器的读取也是很关键的,如何才能得知MT8880是否拨号出去,或是MT8880是否收到号了,这些都可以从状态寄存器获知,判断是否拨完号或是收完号,有三种方法:
一是延时法,二是查询法,三是中断法,本设计在MT8880拨号的过程中用到延时法,而在MT8880收号的过程中用到查询法,也是查询状态寄存器的状态位b2位是否为高电平,如果是高电平那就说明已经收到一位号了,只所以MT8880拨号的过程中用到延时法是因为如果拨号时间间隔太短,就不能完全收到号,这也是本设计采取这种方案的主要原因。
DTMF芯片的写入和读出功能均由芯片四个控制脚来决定的:
CS:
片选信号输入,若CS为低电平时为选通MT8880芯片
RS0:
寄存器选择输入
R/W:
读写控制信号输入
CP:
系统时钟输入,TTL电平
下面就列出编写MT8880拨号收号程序时必须要弄清的时序图。
图4.3写CRA、CRB的时序图
图4.4读状态寄存器时序图
图4.5发送DTMF时序图
图4.6接收DTMF时序图
4.2.2编码程序框图
图4.7MT8880软件框图
在主程序判断出有数据需要发送时,将数据发送到MT8880芯片上,芯片在接收到数据时会进行自动的编码成DTMF信号发送出去。
发送的时间大约要0.5秒,发送完了以后判断是否将数据全部发送完成,如果完成了就返回主程序,没有发完就继续下个数据的发送直到把全部数据发送完成。
4.2.3解码程序框图
下图为MT8880的详细工作的程序流程图。
开始时设置为一共可接收8个DTMF信号,当大于8个时再重新接收。
接收的数据会存在锁存器,然后读MT8880的状态需设置状态使其进行译码工作。
判断接收的数据,由于0根据MT8880译码规则是对应1010,而对应HD7279的规则1010对应为负号,所以当接收到10时要将其判断为0。
将译码后的数字送到HD7279中译码显示,显示的方式为逐个显示。
图4.8控制MT8880接收工作流程图
4.3HD7279模块框图
图4.9HD7279键盘显示流程图
HD7279芯片主要完成数据的译码以及显示,单片机控制4个端口即可。
如果有按键按下则7279的KEY端口的电平会由高变为低,所以如果电平变为低则把DATA端口的数据读进单片机,判断出相应的键值,并进行相应的操作。
如果是数据需要显示则将数据进行显示,如果是功能键则执行相应的功能。
5系统调试及结果
5.1调试仪器
万用表一台
直流电源一台
示波器一台
电脑一台
5.2调试方法
其实基于双音频编码信号的单片机的设计可分为遥控信号发送端的设计和遥控信号接收端的设计。
由于要实现无线发送,所以模块再调试的时候先有线调试再无线调试。
先调试单片机程序,找出程序的错误并修改至完全正确,而后将程序下载到单片机中。
在发送电路发送遥控信号时可以看见发送电路上的数码管显示出对应发送的数字信息,再看接收端的数码管的显示信息是否和发送的一致,观察接收电路中的二极管是否在一闪一闪的发亮(MT8880在进行解码工作)。
在观察发送与接收效果时若效果不理想可不停修改程序并下载直至达到最好的效果。
5.3HD7279模块调试
本模块的调试在硬件调试前,因为本设计只采用到了12个键盘所以要重新测试各个键盘所对应的两位十六进制代码,然后才能进行系统的整体调试。
主要是通过编写软件来实现代码的测定,将代码显示在数码管上来,从而测定了12个键盘的代码值。
测试完代码值后进行本模块的调试,本模块要达到的要求是当按键按下时数码管会显示相应按键的值,数码管最多可以显示8个按键值。
把写好的程序写入单片机后,当按下一个键时,数码管的八段全部显示改按键值。
这也要求不相符合,检查程序后发现在读键盘后并没有判断键盘键是否弹起,虽然按键的时间只有几百毫秒,但是单片机的读取速度很快,所以相当于按下了很多次按键,故数码管会全部显示。
找到原因后在程序里加入判断按键弹起的程序后再进行调试能达到要求。
5.4MT8880数据接收发送模块
在焊接好MT8880数据发送模块后,进行相应的调试,首先按照按下一个数据发送一个数据进行调试。
因为MT8880发送出去的是两个音频的组合,所以通过示波器的观察可以确定芯片是否正常工作。
调试开始后发现不论发送什么数据都没有反应,发送的波形并不是正常的波形叠加信号。
奸检查电路时发现MT8880芯片并没有正常工作,换一块芯片后每发一个数据时示波器有正常的两个音频信号的叠加。
达到了工作要求,完成了本模块的调试。
5.6无线模块的调试
由于本模块是使用深圳极限电子科技有限公司的无线发送接收模块,调试比较简单,只需要发送一个正弦波看接收端能否接收一个正弦波接可以看出模块是否起作用。
使用信号源产生一个1KHz的正弦波连接到发送模块的左声道输入端,在接收模块的左声道输出端连接示波器,发现示波器输出一个1KHz的正弦波,说明系统正常工作。
6设计总结
在这次毕业设计制作中,从方案论证、硬件电路设计到软件设计,工作量都非常大。
而时间也非常的紧,如果不能很好的掌握时间,是不能完成的。
通过请教老师,商定最终方案,确定硬件电路、软件编程。
由于在此之前都没有实际工程设计经验,在调试过程中设计中的一些不合理因素就表现出来了。
调试过程更是对我们耐力的考验,许多问题莫名其妙地发生了。
这使得沮丧过,懊恼过,但没有被失败吓倒,继续保持着高度的热情,共同奋斗,认真地找出错误、不足之处,并一一进行了改正,不断提高。
就这样,各项功能一点点地被实现,我们也一步步地向前进,最终迎来了胜利的曙光。
通过这次毕业设计制作活动,拓宽了思路,开阔了视野,从中学到了很多课本上学不到的东西。
在完成课题的过程中,使得有更多的机会和博士生、研究生、教授们接触,学到了很多解决实际问题的方法。
这次毕业设计巩固了我的基础知识,培养了我的实践动手能力,这其中更大的收获就是将书本死的知识和实践活动结合起来,并在实践中有的放矢的深入学习,提高了学习效率。
而