免電源的電話使用計時器設(shè)計
出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-03 22:22:37
電話通信是通過聲能與電能相互轉(zhuǎn)換、并利用"電"這個媒介來傳輸語言的一種通信技術(shù)。兩個用戶要進行通信,簡單的形式就是將兩部電話機用一對線路連接起來。在通訊溝通頻繁的今日,相信家家戶戶都有一臺以上的電話機,您家必定發(fā)生過打完電話后未掛好而造成電話無法打進的困擾吧。或者您的家人或同事或朋友打電話一打就打了許久又不自知吧。
下面為您介紹一款DIY制作:免電源電話使用計時器
特點說明:
DIY制作基本上要有著三個特點:
一看就懂:指電路簡單明了。
一買就有:指電路容易取得。
一做就成:指制作成功率高。
免用外部電源,整個DIY電子產(chǎn)品是利用電話線電壓來工作的。對通話品質(zhì)無影響,所謂的無影響其實有著二個含意,一為無雜訊干擾,一為通話音量不增減。大家都知道多位數(shù)的LED七段顯示得用掃描方式,如此一來會有脈沖電流雜訊產(chǎn)生,這點對聽覺靈敏的耳朵而言是不可忽視的。另外整個電路的AC阻抗得非常的低,以免除聲音的衰減。針對這二個要求,這里介紹一個簡單又實用的電源取得電路供您參考。
LED顯示采用省元件的互補式,即一個LED七段顯示器為共陰,另一為共陽,如此即可直接用單片機四個I/O直接推動而得到亮度了。
利用OTP型單片機EM78P156來做控制,整個程序小小的,若您想更改或增加功能都是非常容易的。
功能說明:當(dāng)您的電話使用后沒有放置好,或者是打電話聊長天的時候給您顯示通話使用時間給予心理壓力。基本上可算是有提醒指示及顯示二大功能。
提醒指示:只要LED七段顯示器點亮則表示電話線正被使用,此時不是您正在打電話就是話筒未被放置好。
顯示:只要話筒一被拿起,電話回路被建立后單片機開始做計時及顯示動作,以分為單位,可顯示99分,之后又從0開始。若您要有精準的計時時可在電話通之后按CLR鍵,此時單片機清除計數(shù)從新開始計數(shù)顯示。線路圖如圖1所示。

圖1
圖1線路說明:整個線路說實在的,太小了,不過增一分則肥,減一分則瘦。還是老老實實的交待清楚吧,那么您要購買或更換電路時才不會走冤枉路。
直接從電話線路取得工作電源,如圖2所示。

圖2
為一簡單的檢波器π型濾波器及基納穩(wěn)壓器所構(gòu)成,經(jīng)過這5個元件的打點而得到從電話端看到的是一個AC低阻抗,同時隔離了單片機掃描LED七段顯示器所衍生的雜音。另外5V的穩(wěn)壓二極管更提供了很穩(wěn)定的電源供電路使用。有二個地方需注意的是5V穩(wěn)壓二極管得選購5W以上的比較不會過熱,同時電感得選購直流內(nèi)阻低的,愈低愈不會發(fā)熱。
LED七段顯示器采用一共陰極,一共陽極的,故顏色及亮度選相近的。如圖3所示。

圖3
當(dāng)PORT5輸出為HIGH時,共陽極的LED七段顯示器被選到,此時PORT6輸出為LOW時LED被點亮,反之LED不會亮。當(dāng)PORT5輸出為LOW時,共陽極的LED七段顯示器被選到,此時PORT6輸出為HIGH時LED被點亮,反之LED不會亮。之所以要四個I/O都并聯(lián)在一起是要保證有50mA的輸出顯示電流,不是四個并聯(lián)使用的話則顯示亮度會打折扣。
單片機部份,見圖4。

圖4
選用臺灣EMC公司的EM78P156OTP或8位單片機,不但指令少,程序撰寫容易外,所需外部元件也是精簡得很,我們不妨看看只需一個32768Hz的石英晶體及一個助振電容就行了,另外的1K電阻是關(guān)機泄放電流用的,可避免重置失效,而CLR按鍵是用來清除顯示時間的。若您不再乎那撥號時間的誤差則可以不用此元件的。
程序列:





程序說明
DIY制作的軟件程序長度僅有78個指令,整個程序可以分成5個段落來做說明,寄存器使用說明:
DL-----子程序用寄存器
MIN-----存放分鐘資料寄存器
SEC-----存放秒鐘資料寄存器
DD-----存放顯示位數(shù)資料寄存器
DDH-----存放顯示資料寄存器
AB-----存放ACC的副本
RFB-----存放STATUS的副本
⑴ TCC中斷子程序
從0000--001B行為每秒發(fā)生的TCC中斷子程序,其中0008--000B及0017--0019行為進入及離開中斷子程序的ACC及STATUS保留動作。其中000C為每進入中斷子程序就將SEC這寄存器予以進位。其中000D--0012為判斷SEC寄存器是否大于59,是則將MIN寄存器予以進位并清除SEC寄存器。其中0013--0016為判斷MIN寄存器是否大于99,是則將MIN寄存器予以清除,其中001A為清除TCC中斷旗標(biāo)。
⑵ LED字型轉(zhuǎn)換程序
從001C--0026行存放了字型轉(zhuǎn)換表,可將0--9的數(shù)字轉(zhuǎn)成相對的LED七字顯示器的資料。
⑶ 顯示時間長度延遲程序
從0028--002B延遲程序,而0027及002C--002D為啟動顯示及關(guān)掉顯示之指令。
⑷ 微控制器啟始設(shè)定程序
從002F--0039行對微控制器內(nèi)部相關(guān)硬件做了必要性的設(shè)定動作。值得特別一提的是0035--0039行對TCC中斷記數(shù)器予以設(shè)定成每秒中斷。計算式如下:
系統(tǒng)時基/(2周期模式×1秒×256進位)而得預(yù)除數(shù)為64.
⑸ LED七字顯示器掃描主程序
從003A--004E行為本軟件程序之主程序部份,又可分三部份。003C--0040行為取得MIN的拾位數(shù)之值。0042--0046行顯示MIN的個位數(shù)資料到共陽極的LED七字顯示器上。0047--004D行為顯示MIN的拾位數(shù)資料到共陰極的LED七字顯示器上。希望這短短的程序難不倒您才是。
程序撰寫步驟:
許多人習(xí)慣上撰寫程序的過程是依照「先小而大」,「先難后繁」,「邊測邊寫」等三項原則來從事的,底下便將電話使用計時器程序分成六個段落來完成。
1 先給予心跳
一般撰寫程序碰到計時的工作時不外乎三個方式來解決:
①用TIMER計數(shù)器來產(chǎn)生中斷來計時;②用POLLINGTIMER計數(shù)器來計時;③用計算程序指令個數(shù)來計時。
這三個方式中以方式一為簡單也為準確,故這里打算重要之秒的進位問題就交給TIMER計數(shù)器中斷方式來解決了。


這程序的目的是欲了解TCC中斷能否滿足秒的進位問題。
程序說明:
⑴ 中斷子程序
從0008--000A行為簡單的中斷子程序,每做就將PORT6反向,離開前順便清除中斷FLAG.
⑵ 微控制器起始設(shè)定程序
起始設(shè)定是每個程序一開始必須做的,主要功能是將一些會用到的硬件部份做一起始狀態(tài)的設(shè)定以發(fā)揮充分的掌控能力。
⑶ 從000B~0013行為起始設(shè)定程序

在EM78系列中有所謂的MEMORY及I/O兩大空間,一些MEMORY空間的寄存器處理時可用MOV、BS、BC、XOR、OR……等指令,而另一些I/O空間的控制寄存器處理時可用IOW、IOR等指令,這點不要弄混了才是。
0010MOVA,@0x01;將A內(nèi)放置1
0011IOW0x0F;僅致能TCC中斷能力
在EM78156中原本能有WDT中斷、外部中斷及TCC中斷等三種能力,如今我們只保留TCC中斷來使用。
0012MOVA,@0x05;將A內(nèi)放置5
0013CONTW;設(shè)定TCC控制寄存器
0014ENI;啟動中斷能力
TCC是一個很好用也很復(fù)雜的硬件線路,下面僅列出局部有關(guān)的地方于附錄供大家參考。由于系統(tǒng)時基是采用32768Hz的石英晶體,故本制作之準確度應(yīng)該不被懷疑才是。當(dāng)選用2CYCLE及2CLOCK的狀態(tài)時,若再將TCC設(shè)成除以64,那剛好每一秒鐘TCC發(fā)生溢位中斷。
掃描程序:從0015--0015行,總共1行,僅做跳躍自身之用。
效果觀察:程序?qū)懙酱藭r,倘若您手上的線路沒焊錯的話,那么您將會看到七字顯示屏幕顯示8并且以1秒亮1秒滅的速度亮滅著。
2 具有七段顯示能力
接下來就是加強掃描能力,使它有著正確的顯示數(shù)字的能力。



整個程序與TC0.ICE的差異就是增加了SEC計數(shù)的顯示能力,故有三處改動:
⑴ 中斷子程序中有了INCSEC指令來做每秒進位的動作。
⑵ 掃描程序功能加強:從0020--0026行所做之事為重覆的將SEC數(shù)字經(jīng)過查表后丟到P6上。為了方便了解,此時僅對數(shù)字0有做顯示動作。
⑶ 效果觀察:程序到此時您會看到個位數(shù)的七字顯示屏幕從0→9每秒進位。到9以后程序?qū)e亂。
3 具有二位數(shù)的顯示能力
能夠做七段顯示之后,各位想看到的當(dāng)然是二位數(shù)字的顯示了,由于這里采用一共陰、一共陽的七段顯示器,故處理起來還得稍費腦筋。



程序與TC1.ICE差異之處僅在掃描動作上不同罷了。若要掃共陽的位數(shù)時,必須將PORT5外設(shè)為高電位輸出,而要亮的字劃,在PORT6外設(shè)為低電位輸入即可。若要掃共陰的位數(shù)1時,必須將PORT5外設(shè)為低電位輸出即可,而要亮的字劃,在PORT6外設(shè)為高電位輸出即可。故有了0020--0025行,位數(shù)0的顯示處理及0026--002C行,位數(shù)1的顯示處理。
效果觀察:程序到此時您會看到二位數(shù)的七字顯示屏幕,同時從0→9每秒進位,到9以后程序?qū)e亂。
4 具有限數(shù)能力
以上的程序?qū)EC(秒)都不予限數(shù),當(dāng)然會造成CALLTABLERETEW錯誤發(fā)生,故底下增加MIN(分)并對SEC、MIN做59及99的限數(shù)動作。




程序與TC2.ICE差異之處有下:
TCC中斷子程序部份增加了A,R3的暫存動作及SEC、MIN的限數(shù)動作。0008--000A及0016--0018行系對A及R3做暫存及復(fù)原的動作。
000C--0011行系對秒做59的比較動作,SEC比59大則SEC=0,MIN=MIN+1.
0012--0015行系對分做99的比較動作,若MIN比99大則MIN=0。
在掃描程序部份增加了16進制變成10進制的動作。縱然二位數(shù)字來顯示MIN(分)的訊息是可行的,然將16進制變成10進制才能符合人類的習(xí)性。0033--0038行即在做16進制轉(zhuǎn)10進制的動作,將MIN的數(shù)值拆成個位數(shù)及拾位數(shù),并在0039--003D時顯示個位數(shù),而在003E--0044時顯示拾位數(shù)。
效果觀察:程序到此為止,理論上已做完該完成的所有行為了。但執(zhí)行起來…為何…為何…忽好忽壞呢?
完成正確功能:將TC3.ICE程序左看右看,上看下看,怎么看也看不出破綻出來,但為何程序跑起來很不穩(wěn)定,忽好忽壞的呢?答案是程序錯誤。




原來問題就在中斷子程序的A及R3暫存及復(fù)原這部份。
原來程序在A及R3的暫存部份:

錯就錯在0009時MOVA,RF指令會破壞ZEROFLAG的資料。新的程序在A及R3的暫存部份:

新的程序在A及R3的復(fù)原部份:

效果觀察:此時此刻的您一定是歡喜異常,眼睛看著分鐘一分一分的增加又不死機,剛才緊繃的心情頓時得到解脫,一切的心血總算有了回報了。
再動手將秒的閃爍呈現(xiàn)在七段的小數(shù)點上以滿足動感要求。





要如何增加小數(shù)點秒的閃爍呢?其實看結(jié)果一點也不困難。增加001D~0020這四行程序就可迎刃而解了。
5 好上加好
如果用示波器來看看制作成果的良好程度時,可以看到顯示周期比才近50%左右,讓人總覺得可惜,倘若能夠讓顯示周期比接近100%不亦快哉!
再動手改吧.





人的眼眼睛實在很容易被欺騙,只要掃描頻率大于30Hz其實已經(jīng)看不到閃爍的現(xiàn)象,故在不產(chǎn)生閃爍的現(xiàn)象中如何增加顯示周期比呢?
增加顯示時之時間,故這里增加了一個DELAY子程序(002C--0033行所示)供掃描顯示時呼叫之用。固定的在個位數(shù)及拾位數(shù)顯示時各呼叫來增加顯示周期比。
效果觀察:增加了DELAY子程序之后約可提升亮度一倍左右。
6 要善始善終-----永不死機
正當(dāng)要關(guān)掉ICE準備燒寫OTP的時候,仔細想想程序才那么小小的,留那么多的空白做什么?不妨拿來「增加穩(wěn)定度」之用。







與TC6.ICE程序的差異之處:
⑴ 在每個程序的段落"加入JMPINIT"指令。
⑵ 在程序節(jié)結(jié)尾以后「加入JMPINIT」指令。
這樣一來,不論IC何時死機錯亂都會跳到開始來執(zhí)行了。
加入WATCHDOGTIMER:來避免程序的錯誤而造成死LOOP現(xiàn)象。
加入錯誤偵測能力:利用剩余的寄存器來做引子,隨時去讀取這些寄存器,若和不為零則代表錯誤發(fā)生了,應(yīng)該重新開始。
效果觀察:不論如何故意的去弄死機都會從頭開始正常執(zhí)行程序了,大功告成。可以加上您認為漂亮合適的外殼,投入使用了。
附源程序






版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 單片機技術(shù)特性與嵌入式開發(fā)實踐指南2026/1/7 10:00:02
- 單片機(MCU)與數(shù)字信號處理器(DSP)分類及選型技術(shù)指南2025/12/30 10:02:37
- 工業(yè)級DSP信號處理系統(tǒng):硬件適配與抗干擾工程方案2025/12/15 14:41:00
- HOLTEK推出HT32F65533G/733G內(nèi)建N/N預(yù)驅(qū)電機專用SoC單片機2025/11/26 14:11:41
- 什么是C51數(shù)據(jù)類型擴充定義2025/10/27 13:59:22









