微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于51单片机设计的电话遥控器

基于51单片机设计的电话遥控器

时间:02-21 来源:互联网 点击:

此部分完全正常。接入仿真机测试时发现:单片机的TXD端不能控制模拟摘挂机部分的摘挂机。分析得出结论:可能是接口的电平不相符合。解决方法:加上一个三极管模拟开关,加上一个反向器(74LS04)进行控制隔离作用。经过接入仿真机测试表明反向器的作用很明显,于是在后面的电路设计当中,我在许多的接口上大多使用了反向器。至此,模拟摘挂机部分调试完毕。

5.2.4 控制电器

控制电器这部分的外围硬件电路很容易,在调试过程中很顺利完成。在接仿真机时,使用的是P2口控制电器,实验结果表明P2口无法正常控制每个电器,翻阅资料发现单片机89C51的P2口没有数据锁存功能,不能保持上一个状态的数据。解决方法:把P2口控制电器改为P1口的低四位控制电器,改线之后控制正常,但是新的问题出现了,原来要求控制八路的端口,现在只能控制四个电器。
经过市场实际分析,一般的控制电器只要求3~4路即可,为了实验单片机扩展控制功能,提高本遥控装置的潜在功能,我决定实验使用3-8线译码器74LS138对P1口的低四位输出数据进行译码扩展。具体电路详见前面。在成功的扩展了控制电器的个数后,我又发现了一个新的问题:遥控器不能同时使两路以及两路以上的电器开,即在同一时刻,遥控器只能使一路电器开启。
经过仔细分析,我发现了问题原因之所在,那就是译码器的原理问题。通常情况下我们认为的译码器可以扩展所能控制的电器,其实译码器只能扩展位数,而不能使状态发生变化。例如:三位二进制000~111可以控制表示三个电器、八种状态,而经过3-8线译码器译码后,可以控制八个电器,但是其状态也只有八种,如下表所示。

A2 A1 A0 输出D0~D7
0 0 0 0 1 1 1 1 1 1 1
0 0 1 1 0 1 1 1 1 1 1
0 1 0 1 1 0 1 1 1 1 1
0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 1 1 1 0 1 1 1
1 0 1 1 1 1 1 1 0 1 1
1 1 0 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 0

其解决方法是:使用D触发器使继电器保持上一个状态,这样才能使八路电器可以控制28=256个状态。

5.2.5 双音频检测

双音频检测是整体电路一个比较重要的过程,它的调试主要围绕着双音多频解码芯片8870展开的。在此部分的制作的前期,我采用的芯片是CM8870CPI。开始连接电路调试时,整体电路工作很正常,后来这块芯片使用大约一个星期左右的时间,解码电路经常会出现解码出错的情况。经过仔细检查电路,仿真机单步执行进行调试,确认硬件电路无误,诊断为CM8870CPI的问题。根据我的初步分析认定可能是芯片老化的原因,后更换为MT8870DE发现本装置工作很正常,而且换上MT8870DE工作了将近一个月,整体电路没有发生任何解码误码情况,MT8870DE在最后的联机调试过程中也没有出现任何问题。

5.3 电话遥控器软件程序调试

5.3.1软件系统设置

对于本系统而言,软件程序所实现的功能比较多,所以软件程序的调试显得相当的烦琐。整个程序是使用汇编语言,在MBUG下编写调试完成的。
首先我使用的是我自己的计算机联接MCS-51仿真机,计算机的主频为333MHz,但是出现了许多的问题。第一个问题就是:我所使用的MCS-51仿真机型号是ME-5103,联入计算机的25针串行口来进行程序的读入,但是我的计算机没有25针串行口。观察计算机的后面,主板上只有一个25针并行口,是用来连接打印机的;除了这个25针串行口外,还有两个9针串行口。
我只有把MCS-51仿真机的25针接口变成9针串行接口,才能连接计算机。后来我找到一个25针-9针的转换口,可以通过他使MCS-51仿真机和我的计算机联接。
我使用的是Manley In-Circuit Emulator Debugger(MBUG)开发软件,使用时发现此系统可以进行正常的Assemble(汇编),但是不能正常的进行Load Program,执行时会出现divide overflow error的错误,然后就退出此编译系统,这就使得无法进行仿真机模拟实验。
经过实验室多组同学的八台计算机的尝试,我们终于发现了问题之所在。实验结果表明:主频高于233MHz的计算机都不能正常联接MCS-51仿真机,而主频低于100MHz的计算机(有25针串行接口)均可以进行仿真实验。后来经过查阅有关技术资料,型号为ME-5103的MCS-51仿真机只能工作在IBM PC/XT/AT 286/386/486的环境下。
由于实验室的低档计算机(能联接MCS-51仿真机)的不太多,所以我们只有把仅有的几台计算机进行优化重组,以便合理利用有限的计算机资源。我的汇编语言程序相对来说还是比较多的,调试起来可能费时,所以我先在自己的计算机上对程序的语法错误(syntax error)进行调试修改,然后又对地址覆盖(org address is less)的错误进行修改,既对每个子程序的开始地址进行仔细的调整。到此为止整个软件程序调试环境就已经配好了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top