新聞中心

        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周期模式



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 和田市| 博野县| 遂平县| 嘉兴市| 清水河县| 武城县| 庆安县| 任丘市| 中宁县| 清流县| 洛川县| 公主岭市| 玉林市| 介休市| 象山县| 黄石市| 松滋市| 平乡县| 盱眙县| 织金县| 开原市| 安徽省| 宜兴市| 瑞金市| 永嘉县| 吕梁市| 门源| 科尔| 吐鲁番市| 旬阳县| 大渡口区| 连平县| 双城市| 株洲县| 鄂伦春自治旗| 静乐县| 曲阜市| 英吉沙县| 临城县| 新田县| 开鲁县|