电话远程遥控器,telephone remote controller
关键字:电话遥控,远程遥控,MT8870,89C51,电话遥控电路,远程遥控电路
子程序代码: ORG 0150H HOKE: CLR 7DH SETB P3.1 ;open telephone CLR TR0 ;close T0 MOV R2,#03H ;password wrong 3 LCALL RING10 ;input password IN: CLR 7EH ;7EH=0 DTMF: MOV R7,#5H ;PASSWORD:5 R7 MOV R1,#38H ;sign SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 WAIT: JBC 7EH,CC ;wait INT0 LJMP WAIT CC: MOV R7,#5H ;password 5*** MOV R0,#30H ;password top MOV R1,#38H ;sign CMP: MOV A,@R1 MOV R4,A CLR C MOV A,@R1 SUBB A,@R0 ;test INC R0 INC R1 JZ AAA ;OK,pass one LJMP QQ AAA: DJNZ R7,CMP ;R7-1!=0 LJMP LL ;pass QQ: DJNZ R2,IN1 ;password wrong&R2!=0 LCALL RING20 LJMP STOP IN1:LCALL RING20 ;password wrong,try! LJMP IN
4.3 密码修改部分
本系统是通过在线输入密码而改变特定存储器中的密码值的。 程序代码: ORG 1700H KEYIN: SETB RS1 ;当前工作寄存器第二工作区 CLR RS0 ANL A,#00H ;清零A寄存器 MOV B,#05H LCALL RING10 ;发提示音:输入密码*** MOV R7,#5H MOV R1,#38H WPIN: JBC 7EH,READ ;等待INT0中断 LJMP WPIN READ: MOV R1,#38H MOV R0,#40H MOV R7,#05H READ1: MOV A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R7,READ1 ;判断输入密码是否为5位,否跳转READ1 LCALL RING10 ;满5位,发提示音:再输入新密码 MOV R7,#5H MOV R1,#38H WRE: JBC 7EH,KEYCMP ;等待中断INT1 LJMP WRE KEYCMP:MOV R6,#05H MOV R0,#40H MOV R1,#38H KEYCP:MOV A,@R0 CLR C SUBB A,@R1 ;A减((R1)) INC R1 INC R0 JZ BBB ;A的内容如果为0,则跳转BBB LJMP LL BBB: DJNZ R6,KEYCP ;R6减1不为0,则跳转KEYCP,即循环比较密码的五位 MOV R1,#38H MOV R0,#30H MOV R6,#5H KEYREIN:MOV A,@R1 MOV @R0,A INC R1 INC R0 DJNZ R6,KEYREIN ;R6减1不为0,则跳转,即循环比较密码的五位 LCALL RING50 ;发提示音:新密码已经设置 LJMP STOP RET
4.4 控制电器部分
本系统首先通过外围双音频解码电路解码的信息(选择电器)判断所选择的电器,然后跳转到每一个子程序,通过单片机向P1口的低四位发送数据,这些控制信息表示对不同的电器进行控制的控制字。为了简单表示,在这里只写出了电器“一”的控制子程序,其它子程序很相似,详见附录。
程序代码: LL: LCALL RING30 ;sound:input control MOV R7,#1H ;*** MOV R1,#38H CLR 7EH WAIT0: JBC 7EH,DD ;wait INT0 LJMP WAIT0 DD: MOV R1,#38H MOV A,@R1 RR A RR A RR A RR A MOV R4,A RL A ADD A,R4 MOV DPTR,#TAB JMP @A+DPTR TAB: LJMP ZERO LJMP EIGHT ;8 LJMP FOUR ;4 LJMP STOP ;# LJMP TWO ;2 LJMP ZERO ;0 LJMP SIX ;6 LJMP LL ;** LJMP ONE ;1 LJMP LL ;9,** LJMP FIVE ;5 LJMP LL ;A,** LJMP THREE ;3 LJMP LL ;*,** LJMP SEVEN ;7 LJMP LL ;C,**
ORG 0250H ZERO: LJMP LL
ONE: LCALL RING40 ;发提示音:请操作电器 OO1: MOV R7,#01H CLR 7EH WAIT1: JBC 7EH,WW1 ;wait INT0 LJMP WAIT1 WW1:MOV R1,#38H ;检查信号首位 MOV A,@R1 CJNE A,#50H,BB1 ;(38)不等于0AH(0),则跳转BB1 LJMP ZZ1 ;(38)等于0AH(0),则跳转ZZ1 BB1: CJNE A,#80H,QUIT1 ;(38)不等于01H(1),则跳转QUIT1 SETB P1.3 ;open 1 CLR P1.2 CLR P1.1 CLR P1.0 LJMP QUIT1 ZZ1: CLR P1.3 ;close all CLR P1.2 CLR P1.1 CLR P1.0 LCALL RING50 ;finsh QUIT1: LJMP LL
4.5 振铃计数部分
本单元是通过计数器T0的外部中断方式来计数的,程序代码:
ORG 0090H TT0: SETB 7DH RETI
第五章 系统调试
5.1 整体调试
整体调试所使用的测试仪器仪表和工具:
1、IBM-PC/XT兼容机一台,主频:50Hz,有软驱和25针串行接口; 2、ME-5103单片机仿真机一个; 3、MF116万用表一个; 4、计算机5V稳压电源一个; 5、SR8双踪示波器; 6、Manley In-Circuit Emulator Debugger(MBUG)开发软件;
本装置的调试主要分为硬件调试、软件调试和联机调试等三大部分。 经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,我是首先完成单元功能模块的调试,然后进行系统调试,整体上与硬件调试的方法差不多。联机调试是最重要的一部分,同时也是本装置成功的关键。有许多新问题都不是很容易解决的。
调试的步骤
5.2 硬件单元电路 5.2.1 5V稳压电源
本装置使用单5V稳压电源供电,要求交流成分小。经过示波器测量5V稳压电源输出端,其交流部分电压的峰-峰值为6mV,符合本装置的电源要求,稳压电源调试完毕。
5.2.2 振铃音检测
在本单元电路制作前期,实验室中无模拟交换机,无法产生振铃信号,我只好在完成此部分的焊接后回寝室中完成其测试。将本装置的电话线两端并联在电话机两端,摘机拨打“190”,然后挂机,市交换机会回送连续的测试振铃音。经过测量,这种测试振铃音和正常的振铃信号的频率、振幅等特性都一样,只是正常的振铃信号是1秒通4秒断,而这种测试振铃音是连续的。当送测试振铃音时,用万用表的直流档测量光电耦合器4N25的输出端,有明显的电压,这说明可以形成中断响应信号。后接振铃指示灯,发现在送铃流 图5.1信号时,指示灯亮,但是灯在闪烁。分析得光耦输出端所接的滤波电容C2太小,于是把原来的1μF换成现在的100μF,如右图5.1所示,问题得到解决。
|