新闻中心

EEPW首页 > 消费电子 > 免电源的电话使用计时器

免电源的电话使用计时器

——
作者:时间:2007-10-09来源:21IC中国电子网收藏

前言: 

    在通讯沟通频繁的今日,相信家家户户都有一台以上的电话机,您家必定发生过打完电话后未挂好而造成电话无法打进的困扰吧。或者您的家人或同事或朋友打电话一打就打了许久又不自知吧。

  下面为您介绍一款DIY制作「免电源电话使用」供您避免上述现象之产生,总共才用了12个元件(单片机1个,LED七字显示数码管2个,电容3个,电阻1个,桥式整流子1个,电感1个,石英晶体1个,稳压二极管1个,按键1个),相信只需要20多元及1个休息日即可组装完成做出一个前所未有的趣味电子产品了。

特点说明: 

DIY制作基本上要有着三个特点:

一看就懂:指电路简单明了。

一买就有:指电路容易取得。

一做就成:指制作成功率高。

  当您看完本篇文章之后一定会有种跃跃欲试的感觉,那么请跟着感觉走是不会错的。整个DIY制作虽然小小的,不过特点倒是挺多项。 

  免用外部电源,整个DIY电子产品是利用电话线电压来工作的,故可免除许多烦人的事(指怕停电,浪费电,体积大,成本高,配线难),在使用上没有任何不适的感觉,也不须担心电信局测试。 

  对通话品质无影响,所谓的无影响其实有着二个含意,一为无杂讯干扰,一为通话音量不增减。大家都知道多位数的LED七段显示得用扫描方式,如此一来会有脉冲电流杂讯产生,这点对听觉灵敏的耳朵而言是不可忽视的。另外整个电路的AC阻抗得非常的低,以免除声音的衰减。针对这二个要求,这里介绍一个简单又实用的电源取得电路供您参考。 

  LED七段显示,非常适合夜晚来使用,同时由于亮度很够,即使在白天也是清清楚楚,这点就是LCD显示望尘莫及的。 

  LED显示不但能做使用时间的显示之外,也能表示电话线正被使用中,故可当未挂好话筒之提醒指示之用。 

  LED显示采用最省元件的互补式,即一个LED七段显示器为共阴,另一为共阳,如此即可直接用单片机四个I/O直接推动而得到最高亮度了。 

  利用OTP型单片机EM78P156来做核心控制,整个程序小小的,若您想更改或增加功能都是非常容易的。 

功能说明:

  当您的电话使用后没有放置好,或者是打电话聊长天的时候给您显示通话使用时间给予心理压力。基本上可算是有提醒指示及显示二大功能。 

提醒指示: 

  只要LED七段显示器点亮则表示电话线正被使用,此时不是您正在打电话就是话筒未被放置好。

显示: 

  只要话筒一被拿起,电话回路被建立后单片机开始做计时及显示动作,以分为单位,最大可显示99分,之后又从0开始。若您要有精准的计时时可在电话通之后按CLR键,此时单片机清除计数从新开始计数显示。

线路图: 

图1线路说明:

  整个线路说实在的,太小了,不过增一分则肥,减一分则瘦。还是老老实实的交待清楚吧,那么您要购买或更换电路时才不会走冤枉路。 
直接从电话线路取得工作电源,见图2 :

  为一简单的检波器π型滤波器及基纳稳压器所构成,经过这5个元件的打点而得到从电话端看到的是一个AC低阻抗,同时隔离了单片机扫描LED七段显示器所衍生的杂音。另外5V的稳压二极管更提供了很稳定的电源供电路使用。有二个地方需注意的是5V稳压二极管得选购5W以上的比较不会过热,同时电感得选购直流内阻低的,愈低愈不会发热。

  LED七段显示器采用一共阴极,一共阳极的,故颜色及亮度最好选相近的。

  当PORT5输出为HIGH时,共阳极的LED七段显示器被选到,此时PORT6输出为LOW时LED被点亮,反之LED不会亮。当PORT5输出为LOW时,共阳极的LED七段显示器被选到,此时PORT6输出为HIGH时LED被点亮,反之LED不会亮。之所以要四个I/O都并联在一起是要保证有50mA的输出显示电流,不是四个并联使用的话则显示亮度会打折扣。

{{分页}}

单片机部份,图4 

  选用 台湾EMC 公司的EM78P156 OTP或8位单片机,不但指令少,程序撰写容易外,所需外部元件也是精简得很,我们不妨看看只需一个32768Hz的石英晶体及一个助振电容就行了,另外的1K电阻是关机泄放电流用的,可避免重置失效,而CLR按键是用来清除显示时间的。若您不再乎那拨号时间的误差则可以不用此元件的。

程序列:

; FILE NAME:T_CARE0.DT 
; DATE :1999,5,5 
; BY :HWANG JYN_GUO 
; CIRCUIT :T_CARE0.321 
;
; FUNCTION DESCRIPTION: 
; USING TCC TO GET 1 SEC INTERRUPT 
; 32768/(2*64*256)= 1 SEC 
; CRYSTAL MODE 32768 Hz 
; 2 CYCLE AND 2 CLOCK MODE 

PC == 02
RF == 03 ;STATUS
FZ == 02 ;FLAG OF ZERO
FC == 00 ;FLAG OF CARRY
P5 == 0X05 ;PORT 5
P6 == 0X06 ;PORT 6
DL == 0X10 ;DELAY LOOP
MIN == 0X11 ;MINUTE
SEC == 0X12 ;SECOND
DD == 0X13 ;DISPLAY DIGIT
DDH == 0X14 ;DISPLAY DIGIT HIGH
AB == 0X15 ;A BACK_UP
RFB == 0X16 ;RF BACK_UP 
ORG 0
0000 JMP INIT ;PROGRAM START
ORG 8
;TCC INTERRUPT---------------------------------------------
TCCI:
0008 MOV AB,A ;AB <- A
0009 SWAP AB ;AB <- BA
000A SWAPA RF
000B MOV RFB,A ;RFB<- FR
000C INC SEC
CHECK:
000D MOV A,SEC
000E SUB A,@59 ;59-SEC=A
000F JBC RF,FC
0010 JMP C_MIN
0011 CLR SEC
0012 INC MIN
C_MIN:
0013 MOV A,MIN
0014 SUB A,@99 ;99-MIN=A
0015 JBS RF,FC
0016 CLR MIN
TCCE:
0017 SWAPA RFB
0018 MOV RF,A ;RF<- RFB
0019 SWAPA AB ;A <- BA
001A BC 0X0F,0 ;CLEAR TCC_INT
001B RETI
;TABLE 7 SEGEMENT------------------------------------------------------
T7:
001C ADD PC,A ; GFE DCBA
001D RETL @0B01000000 ;0 0100 0000
001E RETL @0B01111001 ;1 0111 1001
001F RETL @0B00100100 ;2 0010 0100
0020 RETL @0B00110000 ;3 0011 0000
0021 RETL @0B00011001 ;4 0001 1001
0022 RETL @0B00010010 ;5 0001 0010
0023 RETL @0B00000010 ;6 0000 0010
0024 RETL @0B01011000 ;7 0101 1000
0025 RETL @0B00000000 ;8 0000 0000
0026 RETL @0B00010000 ;9 0001 0000
;DELAY ------------------------------------------------------------------------
DELAY:
0027 MOV P5,A
0028 MOV A,@20
0029 MOV DL,A 
D_1:
002A DJZ DL
002B JMP D_1
002C MOV A,@0XFF
002D IOW P6
002E RET
;INIT ------------------------------------------------------------------------------
INIT:
002F MOV A,@0X00
0030 MOV MIN,A
0031 MOV SEC,A
0032 IOW 0X0E ;DISABLE WDT
0033 IOW P5 ;PORT 5 OUTPUT
0034 IOW P6 ;PORT 6 OUTPUT
0035 MOV A,@0X01
0036 IOW 0X0F ;ENABLE TCC_INT
0037 MOV A,@0X05 ;1/64
0038 CONTW
0039 ENI
;SCAN ---------------------------------------------------------------------------
SCAN:
003A MOV A,MIN
HTD:
003B CLR DDH
H_H:
003C ADD A,@246 ;A=A-10
003D JBS RF,FC
003E JMP H_L
003F INC DDH
0040 JMP H_H 
H_L:
0041 ADD A,@10
0042 CALL T7
0043 IOW P6
0044 MOV P6,A
0045 MOV A,@255 ;DISPLAY DIGIT 0
0046 CALL DELAY
0047 MOV A,DDH
0048 CALL T7
0049 IOW P6
004A XOR A,@0XFF
004B MOV P6,A
004C MOV A,@00 ;DISPLAY DIGIT 1
004D CALL DELAY
004E JMP SCAN 
程序说明:
程序就像日常说话一样,只要能够表达清楚意思,那么,愈短愈受人欢迎(当然得在保证有正常功能的情况下而言)。此次DIY制作的软件程序长度仅有78个指令,够短了吧,相信看懂也不难。整个程序可以分成5个段落来做说明,寄存器使用说明:
DL ----- 子程序用寄存器
MIN ----- 存放分钟资料寄存器
SEC ----- 存放秒钟资料寄存器
DD ----- 存放显示位数资料寄存器
DDH ----- 存放显示资料寄存器
AB ----- 存放ACC的副本
RFB ----- 存放STATUS的副本 
TCC中断子程序: 
从0000--001B行为每秒发生一次的TCC中断子程序,其中0008--000B及0017--0019行为进入及离开中断子程序的ACC及STATUS保留动作。其中000C为每进入一次中断子程序就将SEC这寄存器予以进位。其中000D--0012为判断SEC寄存器是否大于59,是则将MIN寄存器予以进位并清除SEC寄存器。其中0013--0016为判断MIN寄存器是否大于99,是则将MIN寄存器予以清除,其中001A为清除TCC中断旗标。
LED字型转换程序: 
从001C--0026行存放了字型转换表,可将0--9的数字转成相对的LED七字显示器的资料。
显示时间长度延迟程序: 
从0028--002B延迟程序,而0027及002C--002D为启动显示及关掉显示之指令。
微控制器启始设定程序: 
从002F--0039行对微控制器内部相关硬件做了必要性的设定动作。值得特别一提的是0035--0039行对TCC中断记数器予以设定成每秒中断一次。计算式如下:
系统时基/(2周期模式



评论


相关推荐

技术专区

关闭