系别:计算机与信息工程系
班级:计01-4班
学号:25号
姓名:姜楠
指导老师:谢子殿
内容提要
本文主要介绍了一种以单片机AT89C51和双音多频解码集成电路MT8870为核心,通过电话线路遥控的远程多路智能控制器。该系统实用、功能灵活多样,可以对被遥控对象的状态进行查询以及控制,可以广泛的应用于家用电器或者其它场所的各种控制设备。无线电遥控既是利用无线电信号对被控物体实施远距离控制。无线电遥控不可避免的须占用一定的无线电频率资源,造成电磁污染;常规的有线遥控需进行专门的布线,增加了投入;而红外线、超声波遥控则受距离所限。现有的遥控方式中,还有载波通信控制手段和基于无线寻呼的遥控方式。载波方式即通过电力线传递信息,该方式只能局限于同一变电所、同一变压器所辖范围内。因此也存在距离问题,应用范围有限。基于无线寻呼的遥控方式利用了现有的寻呼频率资源,不需占用额外的频谱。而且,随着寻呼网的全国联网,其遥控的距离基本不受限制。但该方式的受控方动作滞后于控制方的操作,不具备实时性,而且不具备很高的可靠性。电话遥控作为一较新的课题与常规的遥控方式相比,显示出一定的优越性,不需进行专门的布线,不占用无线电频率资源,避免了电磁污染。同时,由于电话线路各地联网,可以充分利用现有的电话网,因此遥控距离可跨省市,甚至跨越国家。电话属双工通信手段。因此,这可以大大体现出利用电话进行遥控的更大优越性。操作者可以通过各种提示音即时了解受控对象的有关信息,从而进行进一步的操作。电话遥控这一课题目前已有涉足者,但是只是还只限于实验室阶段,因而距离实际应用,尤其是对于日常生活尚有一定的差距,并不能完全体现出电话遥控方式的双工通信特点。本作品正是针对这一点进行了较大改进,采取单片机智能控制,利用不同的提示音达到对于不同操作的提示及对受控方状态的信息反馈,从而使操作者能够及时了解受控方信息,使产品达到交互式与智能化。
一 总体
电话智能遥控器由单片机构成主控部分,进行主要的信息处理,接收外部操作指令形成各种控制信号,并完成对于各种信息的记录;接口电路提供单片机与电话外线的接口。其中包括铃音
、摘挂机控制、忙音检测、双音频DTMF识别,及语音提示电路。整体原理流程图如下:
语音提示电路是该作品重要组成部分。为了降低本装置的造价,作品的提示音使用程序产生。语音提示电路受单片机的控制产生相应的提示音提示,并通过反馈电路反馈至电话外线。从而使操作者对电器的操作达到交互式,并能即时了解有关的信息;显示电路用于状态设置时的显示;控制部分即受控的终端,如前所述,可通过接驳不同的终端并对电话进行必要的改动从而达到功能的扩展。这一点,可使产品达到系列化。
本系统的每一个接口电路(振铃检测、模拟摘挂机、语音反馈、双音频解码等)都已经经过实际的交换机在线实验,具有很强的实用性。本系统使用最简单的电路、最便宜的电路芯片实现了完善的功能。本系统还有许多可以添加的功能,具有很强的市场前景。
本装置并联于电话机的两端,不会影响到电话机的正常使用。用户通过异地的电话机拨通本装置所连接外线的电话号码,通过市局交换机向电话机发出振铃信号。本装置如果检测到振铃五次,即五次响铃后无人接,自动摘机,进入密码检测,输入正确后选择被控制电器,然后输入开或关进行遥控电器,完成后返回。
二 系统设计可行性
2.1 总体设计分析
根据电话远程智能遥控系统的具体设计要求:
⑴ 通过电话网对异地的电器实现控制(开/关);
⑵ 控制器可以实现自动模拟摘挂机;
⑶ 控制器设置密码校验;
我设计此系统必须具有以下单元功能模块:
⑴ 铃音检测、计数;
⑵ 自动摘挂机;
⑶ 密码校验;
⑷ 在线修改密码;
⑸ 双音频信号解码;
⑹ 输入信息分析;
⑺ 控制电器开关;
⑻ 电器状态查询;
⑼ 忙音检测;
根据电话机和交换机发出的不同信号音以及电话线各种状态的不同要求,我结合实际情况对具体的单元功能模块作出软件或硬件上的不同分工,具体如下。
理论上交换机所发出的各种信号音都可以通过软件编程而识别,即通过单片机发出的脉冲信号来检测信号音单位时间内的脉冲个数计算出其频率,从而完成信号音识别。但是从系统的可靠性和程序的结构设计上分析,我选择了硬件来解决振铃音检测、忙音检测、双音频信号解码等功能模块。 自动摘挂机和电器的控制必须使用具体硬件电路来实现。振铃音计数、忙音计数、密码校验、在线修改密码、输入信息分析、电器状态查询等功能模块使用软件编程方式要比硬件电路简单的多,实现也很容易。综上所述,我设计信号音检测、自动摘挂机、控制电器、双音频解码等功能模块使用硬件电路实现。而信号音计数、密码校验、在线修改密码、信息分析、电器状态查询等功能模块使用软件编程完成。下面就硬件以及软件实现的单元电路分别进行具体分析。
2.2 硬件模块
本作品使用了大量的硬件电路完成部分功能模块,其目的就是充分利用硬件电路的可靠性、稳定性,使整体电路达到比较高的稳定性。
2.2.1自动摘挂机
因为程控电话交换机对电话摘机的响应是电话线回路电流突然变大为约30mA的电流,交换机检测到回路电流变大就认为电话机已经摘机。自动摘挂机电路可以通过单片机控制一个继电器的开关,继电器的控制端连接一个大约300Ω的电阻接入电话线两端,从而完成模拟摘挂机。
2.2.2振铃音的检测
当用户被呼叫时,电话交换机发来铃流信号。振铃为25±3伏的正弦波,谐铃失真不大于10%,电压有效值90±15V。振铃以5秒为周期,即1秒送,4秒断。根据振铃信号电压比较高的特点,可以先使用高压稳压二极管进行降压,然后输入至光电耦合器。经过光耦的隔离转换,从光电耦合器输出的波形是时通时断的正弦波,经过RC回路进行滤波输出很
的方波。方波信号就可以直接输出至单片机的中断计数器输入口,完成整个振铃音检测和计数的过程。
2.2.3控制电器
此部分比较简单,通过单片机控制多路继电器的开关即可,常用的电路已经很成熟,在此就不累述了。
2.2.4双音频解码
此部分是整个系统的关键,它的工作情况直接决定了系统的可靠性。经过翻阅大量的文献资料,我发现使用电话专用的双音频编解码芯片进行输入双音频信号的解码,是比较常用的一种方法。使用集成电路不但外围电路简单,而且可靠性强。经过专用集成电路的解码,信号转换成为不同的码制信号,可以直接被单片机读取。一般常用的电话双音频编解码集成电路有8870、8880、8888等, 本设计使用双音频解码集成片MT8870来完成此功能模块。
2.3 软件模块
使用AT89C51作为控制的单片机芯片,它的编程方式和mcs51大体相同,具体有关AT89C51的介绍不在这里累述。
2.3.1信号音计数
本单元可以使用AT89C51的两个计数器的外部中断方式来实现对不同信号音的计数。
2.3.2密码检测
本单元可以在系统初始化的时候,在单片机内部的存储器的内部开辟一块空间放置密码。当用户输入密码的时候,单片机把输入的密码写入另外的一块空间,然后利用减法运算比较两者是否相等。这样就可以实现密码检测的功能。
2.3.3 信号分析处理
本单元可以利用查表方式,也可以用简单的语句,稍微长一点的语句实现,例如CASE语句等。经过翻阅大量的技术资料,对具体要求实现的功能进行完整的系统分析,我认为我的电话遥控系统设计基本符合实际情况,可以完成设计任务所要求实现的基本功能。
三 硬件单元电路设计
3.1 振铃检测电路
在电话线路未来铃流前,电话线路由电话交换机提供大约48V的直流电压。当用户被呼叫时,电话交换机发来铃流信号。振铃信号为25±3伏的正弦波,谐铃失真不大于10%,电压有效值90±15V。振铃以5秒为周期,即1秒送,4秒断。在本电路检测铃流信号时,以五次铃响为准,即五次振铃后无人摘机,便由单片机控制自动模拟摘机。
原理说明:
电话振铃信号通过电容C1隔直、D1稳压二极管、R1限流电阻输入至光电耦合器4N25的输入端1口,C1、D1和R1共同组成振铃信号变换电路,它们使输入电压和电流不会太大,对后面的光电耦合器起保护作用。光电耦合器4N25起的是隔离作用,光电耦合器是一种电信号的耦合器件,它一般是将发光二极管和光敏三极管的光路耦合在一起,输入和输出之间不可共地,输入电信号加于发光二极管上,输出信号由光敏三极管取出。光电耦合器以光电转换原理传输信息,它不仅使信息发出端(一次侧)与信息接收并输出端(二次侧)是绝缘的,从而对地电位差干扰有很强的抑制能力,而且有很强的抑制电磁干扰能力。速度高、价格低、接口简单。
振铃信号通过光耦4N25的4脚输出振铃正弦波,R2和C2共同组成滤波电路,信号到了开关三极管T1的基极就变成了方波。经过三个反向器的整形输出到单片机AT89C51的T0/P3.4口,中断方式采用外部中断,计数5次产生T0中断,控制继电器模拟摘机,完成振铃音检测。原器件选取:
1、 C1隔直电容,因为是过滤直流,滤出低频信号,而且振铃信号的电压还比较高,因此选取1μF耐压100V的瓷片电容
2、 D1为稳压二极管,选取36V的稳压二极管;
3、 R1是4N25的限流电阻,取33 kΩ
4、 4、IC1选取光电耦合器4N25;
5、 R2和C2共同组成振铃信号音滤波电路,根据电话振铃的技术指标:频率25Hz的正弦波,1秒通,4秒断,τ=RC可以推出0.02≤τ≤4(S)。为了使振铃信号音输出很好的方波波形,计算后选取R2=10kΩ,C2=100μF,τ=1s;
6、 R3和D3共同组成振铃指示灯,R3=100Ω,D3为黄色5mm发光二极管;
7、 T1和R4组成模拟开关电路,T1选取9013,根据分压原理和74LS04的低电平有效值,R4取2.9 kΩ;
8、 反向器由74LS04中的三组反向器组成,起整流作用;
3.2 模拟摘挂机电路
设计主要思路:
根据国家有关标准规定:不论任何电话机,摘机状态的直流电阻应≤300Ω,有“R”键的电子电话机的摘机状态直流电阻应≤350Ω。在挂机状态下,其漏电流≤5μA。当用户摘机时,电话机通过叉簧接上约300Ω的负载,使整个电话线回路流过约30mA的电流。交换机检测到该电流后便停止铃流发送,并将线路电压变为十几伏的直流,完成接续。模拟摘挂机电路主要由一个三极管开关电路控制继电器的开关,继电器控制接入电话线两端的200Ω电阻。摘挂机信令由单片机通过使TXD/P3.1口变为高电平实现。经过两个反向器驱动发光二极管D1指示摘机,同时改变三极管T1的基极电压,使T1处于导通状态,从而开启继电器J1,J1使电阻R3接入电话线两端。因为R3的电阻为200Ω,使回路电流变大,控制电路向交换机发出模拟摘机的信号,交换机响应摘机信号,完成电话线路接通。整个电路完成自动模拟摘机过程。
根据设计原理,原器件选取如下:
1、
反向器取74LS04中的两组反向器;
2、
R1是摘机指示灯限流保护电阻,取220Ω;
3、
D1是摘机指示灯,取5mm绿色发光二极管;
4、
R2是三极管限流电阻,取2kΩ;
5、
T1三极管是起模拟开关控制继电器的作用,取9013;
6、
D2二极管是起继电器反向保护的作用,取4001;
7、
J1是继电器控制开关,取JRC 4001F(DC5V);
8、
R3是摘机电阻,取200Ω;
3.3 双音频解码
原理简介:
双音多频DTMF信号解码电路由MT8870主要承担。MT8870的连线如图3.4所示,它的2、3脚接收来自电话机的双音多频脉冲信号该双音多频信号先经其内部的拨号音滤波器,滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高,低音频信号分开,再经高,低群滤波器,幅度检测器送入输出译码电路,经过数字运算后,在其数据输出端(11~14脚)输出相对应的8421码。MT8870的数据输出端Q4 ~ Q1连到AT89C51的P1口的P1.4 ~ P1.7,CPU经P1口识别4位代码。电话按键与译码(Q4~Q1)输出相应。其中,A,B,C,D 4个按键常被当作R/P,REDIAL,HOLD,HANDSFREE等功能使用。注意,需要特别指出的是,对于“0”号码,MT8870输出的8421码并非是“0000”,而是“1010”;另外,“*”,“#”字号码,MT8870输出的8421码分别为“1011”和“1100”。有些技术资料会出现错误,包括比较权威的
,所以我是在实验中,记录下测量的每一组数据后,才把这些数据应用于程序当中。为了使单片机AT89C51获取有效数据,MT8870的STD有效端经反相后接CPU的/INT0引脚。当MT8870获取有效双音多频信号后,STD电平由低变高,再反相为低,CPU检测后,指示P1口接收有效二进制代码。而无效的双音频信号(电话线路杂音、人们的语音信号等)是不会引起MT8870的STD端变化的。其中,接在电源处的电容对抗干扰有一定的作用。在实际应用中,存在这样一个问题:MT8870的使能控制端不允许中断时,将使MT8870的STD端中断关闭。其解决办法是,将STD端接与非门的一输入,与非门的另一输入端接一不定电平端P。当STD有效(即中断开放)时,P = 1则/INT0中断关闭;P = 0时则/INT0中断允许。本单元元器件列表:
1、 D1、D2、D3、D4共同组成整流电路,选取4001;
2、 R1和R2是输入平衡电阻,取100KΩ,C1隔直电容,取0.1μF;
3、 芯片外部晶振选择3.579MHz;
4、 IC1是双音频解码芯片,选取MT8870;
5、 C2选取0.1μF;
6、 R3是输出平衡电阻,选取100KΩ;
7、 反向器选取74LS04的一组反向器;
3.4 信号音提示电路
原理说明:
为了方便本系统的使用者,本人设计了信号音提示音电路,如图3.5。首先我规定了信号音的规范以及其对应含义:
1、
响1声,频率为500Hz:请输入密码;
2、
响2声,频率为500Hz:请输入需要控制的电器号;
3、
响3声,频率为500Hz:请输入控制开/关;
4、
响1声,频率为1000Hz:完成操作;
5、
响3声,频率为1000Hz:密码错误;
信号音从单片机89C51的RXD/P3.0口输出,先经过一组反向器进行整流、隔离,从反向器输出的是频率一定,时通时断的方波,提示信号经过隔直电容C1输入到音频放大集成电路LM386N-1的输入端。经过LM386N-1的放大,信号音经耦合电容C5至变压器T1,它是音频输出专用的耦合变压器,正好符合阻抗匹配的要求。本电路比较难点在于耦合变压器T1的选取。因为电话线中直流电压比较高,而且还有各种信号音,这些都会影响到语音信号加载到电话线上,因此本装置使用一个耦合变压器作为隔离器件。耦合变压器分两种,一种是输入,一种是输出,本设计中输入用的耦合变压器反馈语音性能比较好,音频放大集成电路LM386的连接比较简单,本装置的使用是LM386放大增益为50dB的连接方式。
原器件选取:
1、
反向器选取74LS04中的一组反向器;
2、
C1的是对音频信号起隔直耦合的作用,所以取100μF的电解电容,耐压性能无特殊要求;
3、
IC1、R1、R2、C2、C3、 C4和C5共同组成音频放大电路,IC1选取LM386N-1,R1取1kΩ,C2取10μF的电解电容,C3取10μF的电解电容,R2取1kΩ,C4取10μF的电解电容,C5取100μF的电解电容;
4、T1是音频输出专用变压器;
3.5 电器控制电路
原理说明:
本单元电路主要是由译码扩展电路、反向电路、D触发器和继电器控制电路组成。首先,单片机AT89C51从P1口的低四位输出四位控制信号。P1.0、P1.1、P1.2作为三位数据线,P1.3作为使能控制信号,一同加在3-8线译码器的输入端。当使能端有效时,三位数据线经过译码器数扩展为八位数据线。这八位数据连接八个反向器进行整流隔离,然后连接D触发器进行数据锁存。每个D触发器的输出端都控制一路继电器,而每一路继电器也控制一路电器的开关。二极管指示灯并联在开关三极管两段作为电器开关指示。这样就可以完成单片机对多路电器的控制。也可以把P1口的八位都用作控制电器,数据输入口改在P2口,在本装置中一共有八路电器可以控制,其它电器控制相同。
元器件选取:
1、3-8线译码器选取74LS138P;
2、反向器选取两片74LS04(每一片内有六个反向器)中的九个反向器;
3、触发器选取四片4013(每一片内有两个D触发器);
4、 极管选取八个9013;
5、二极管起保护作用,选取八个4001;
6、
指示灯选取八个红色5mm发光二极管;
7、指示灯限流电阻选取八个1kΩ的电阻;
8、三极管的限流电阻选取八个2kΩ的电阻;
9、
继电器选取八个JRC-4100F DC5V继电器;
四 软件设计
本系统的软件设计主要分为系统初始化、振铃检测计数、控制摘挂机、双音频信号分析处理、控制电器、信号音提示等部分。每个功能模块对于整体设计都是非常重要的,单片机T89C51通过软件程序才能很好的对外部的信息进行采集、分析和决策。下面,就整体设计以及每个单元功能模块分别进行说明。
整体流程图:见总体设计部分
4.1 信号音发声部分
本功能模块主要是产生信号提示音,方便不同的使用者。根据普通人耳的反应频率为20Hz至20KHz的范围,和CCITT规定的电话话音信号的频率范围是300Hz至3400Hz,我在本功能单元的发声频率定为500Hz和1000Hz两种。主要分为五种提示音:
1、
低音,表示装置已经摘机,请输入密码,其参数:频率f=500Hz,延时t=0.5秒/声;
2、
两声低音,表示密码已经通过,请选择电器,其参数:频率f=500Hz,延时t=0.5秒/声;
3、
三声低音,表示电器已经选定,请控制(开/关),其参数:频率f=500Hz,延时t=0.5秒/声;
4、
三声高音,表示密码输入错误,其参数:频率f=1000Hz,延时t=0.3秒/声;
5、
一声高音,表示控制已经完成,其参数:频率f=1000Hz,延时t=0.3秒/声;
提示音发生是使用有限循环,反复使单片机的RXD口的电平反转,从而形成方波信号。
子程序代码:
ORG 1100H
RING10:MOV R6,#20 ;input password
RING11: MOV R7,#20 ;800Hz
RING12: LCALL DL10 ;sound=1
CPL P3.0 ;delay=0.5s
DJNZ R7,RING12
DJNZ R6,RING11
CLR P3.0 RET
ORG 1150H
RING20: MOV R3,#03
RING21: MOV R6,#20 ;password wrong
RING22: MOV R7,#20 ;1600Hz
RING23: LCALL DL20 ;sound=3
CPL P3.0 ;delay=0.25s
DJNZ R7,RING23
DJNZ R6,RING22
CLR P3.0
MOV R7,#200
RING24: LCALL DL10
DJNZ R7,RING24
DJNZ R3,RING21
CLR P3.0
RET
ORG 1200H
RING30: MOV R3,#02
RING31: MOV R6,#20 ;select
RING32: MOV R7,#20 ;800Hz
RING33: LCALL DL10 ;sound=2
CPL P3.0 ;delay=0.5s
DJNZ R7,RING33
DJNZ R6,RING32
CLR P3.0
MOV R7,#200
RING34: LCALL DL10
DJNZ R7,RING34
DJNZ R3,RING31
CLR P3.0
RET
ORG 1250H
RING40: MOV R3,#03
RING41: MOV R6,#20 ;control
RING42: MOV R7,#20 ;800Hz
RING43: LCALL DL10 ;sound=3
CPL P3.0 ;delay=0.5s
DJNZ R7,RING43
DJNZ R6,RING42
CLR P3.0
MOV R7,#100
RING44: LCALL DL10
DJNZ R7,RING44
DJNZ R3,RING41
CLR P3.0
RET
ORG 1300H
RING50: MOV R6,#40 ;
RING51: MOV R7,#20 ;1600Hz
RING52: LCALL DL20 ;sound=1
CPL P3.0 ;delay=0.15s
DJNZ R7,RING52
DJNZ R6,RING51
CLR P3.0
RET
ORG 1500H
DL10: MOV R5,#25 ;delay1.25ms,f=800HZ,fosc=12MHz,
DL12: MOV R4,#25
DL11: DJNZ R4,DL11
DJNZ R5,DL12
RET
ORG 1600H
DL20: MOV R5,#12 ;delay0.625ms,f=1600HZ,fosc=12MHz,
DL22: MOV R4,#25
DL21: DJNZ R4,DL21
DJNZ R5,DL22
RET
ORG 1650H
DL30: MOV R5,#50 ;delay20ms
DL32: MOV R4,#200
DL31: DJNZ R4,DL31
DJNZ R5,DL32
RET
4.2 密码检测部分
本系统密码校验的基本原理是:在系统初始化的时候把原始密码写入地址为30H开始的存储空间内,密码的位数“5”赋给R7。当系统摘机时,要求输入密码,单片机把解码后的数据(使用者输入的密码)存储在38H开始的存储空间内。然后单片机对进行两个存储地址的内容逐位进行比较,直到完全相等才能转到下一进程,有一位不同,程序就转到出错程序。
子程序代码:
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 ;
MOV R7,#1H ;***
MOV R1,#38H
CLR 7EH
WAIT0: JBC 7EH,DD ;
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 ;
CLR P1.2
CLR P1.1
CLR P1.0
LCALL RING50 ;
QUIT1: LJMP LL
4.5 振铃计数部分
本单元是通过计数器T0的外部中断方式来计数的,
程序代码:
ORG 0090H
TT0: SETB 7DH
RETI
附电路图:
五 总结
本次课程设计,时间紧任务大,由于资料原因选题也难度较大,文章中也难免有考虑不妥之处,但是通过本次实习,对于单片机我有了更深层次的理解,并且从某种程度上来说使我对,硬件电路的整体设计与配套软件设计的模式有了更深层次的了解,学到了很多东西,为以后学习打下了良好的基础。
六 参考文献
〈〈单片机应用实用技术(修订版)〉〉 北航出版社
〈〈51系列单片机设计实例〉〉 北航出版社
拨打电话
响铃<5
N
摘机
响铃
Y
输入密码
密码校验
Y
N
选择所需控制的电器
控制电器开关
关闭系统挂断电话