如何制作數(shù)字時鐘
花79美元讓一只LED亮起來似乎有些奢侈。你肯定更想用BASIC Stamp制作出更實用的東西?;ㄉ?00多美元,你就可以制作一臺精致的數(shù)字時鐘!這好像也過于奢侈,但以后做其他各種裝置時,你會發(fā)現(xiàn)這些元件都可以重復(fù)利用。
我們將使用BASIC Stamp的輸入輸出引腳來顯示數(shù)字。在數(shù)字時鐘部分,我們了解了如何連接7447芯片的7段顯示發(fā)光二極管。7447芯片可以和BASIC Stamp協(xié)同工作。將BASIC Stamp的四根輸入輸出引腳直接與7447相連,就可以很容易的顯示0到9的數(shù)字。BS-1版本的Stamp有8根輸入輸出引腳,這樣可以直接驅(qū)動兩片7447芯片。
就一個時鐘而言,需要至少顯示4個數(shù)字。為了用8個輸入輸出引腳驅(qū)動4片7447,我們需要更有創(chuàng)造性一些。下圖給出了一種解決辦法:
上圖中,8根輸入輸出引腳從左邊引入。該方法用4個輸入輸出引腳驅(qū)動全部的4片7447。剩余的4個引腳,用來按順序激活4片7447(芯片上的“E”表示“Enable 使能”——7447芯片上的5號引腳)。要讓這個系統(tǒng)工作,Stamp的程序首先通過4根數(shù)據(jù)線發(fā)出第一個數(shù)字,并且把第一片7447的E引腳與第一根控制線置位,從而把7447激活。然后發(fā)出第二個數(shù)字,激活第二片7447,就這樣按順序不停的反復(fù)激活四片7447。 實際上,稍微改動一下連線,一片7447就可以實現(xiàn)這些功能。使用74154多路轉(zhuǎn)換芯片以及一些驅(qū)動,就可以用這種方法驅(qū)動多達(dá)16個數(shù)字。
這就是實際中控制發(fā)光二極管顯示屏的標(biāo)準(zhǔn)方法。如果你有一個老式的發(fā)光二極管顯示的計算器,邊晃動邊觀察顯示屏。你會發(fā)現(xiàn)同一時刻只有一個數(shù)字被點(diǎn)亮。這種技術(shù)被稱為多路復(fù)用顯示。
這種技術(shù)在時鐘和計算器上有很好的應(yīng)用,但是存在兩個重要問題:
- 發(fā)光二極管耗電量大。
- 7 段顯示發(fā)光二極管只能顯示數(shù)字。
另一方法是使用液晶顯示屏。 液晶顯示屏應(yīng)用廣泛,而且與Stamp連接方便。 例如,下圖所示的兩行字母數(shù)字式的液晶顯示屏在Jameco公司(部件號150990)和Parallax公司(部件號27910)都可以買到。 此處展示的是一個典型的液晶顯示屏,將液晶顯示屏插在面包板上,便于和其他芯片連接:
這類液晶顯示屏的優(yōu)點(diǎn):
- 一根引腳就可以驅(qū)動顯示。 顯示屏包含允許Stamp以串行方式與自己通信的邏輯電路,因此只需一根引腳。 此外,BASIC Stamp中的SEROUT命令可以十分容易的實現(xiàn)串口通信,控制顯示屏十分簡單。
- 液晶顯示屏可以顯示字母數(shù)字文本,包括: 字母和數(shù)字,甚至可以是自定義字符。
- 液晶顯示屏耗電量極低——只需3毫安的電流。
唯一美中不足就是,這樣的一個液晶顯示屏要花費(fèi)59美元。顯然,沒有人會在烤箱上裝這樣的顯示屏。 而設(shè)計烤箱時,一般會先用這樣的顯示屏作樣品試驗,而后用自己設(shè)計的芯片和軟件驅(qū)動便宜的顯示屏,用于最終的產(chǎn)品。
驅(qū)動這樣的顯示屏,你只需提供5伏以上的電源和地線(Stamp的9伏電池滿足這兩個條件),然后把Stamp的一個輸入輸出引腳與顯示輸入線連接。 要將Stamp的輸入輸出引腳連接到像液晶顯示屏這樣的設(shè)備,我能找到的最輕松的方法,是使用Jameco公司生產(chǎn)的連線工具(部件號34577)和30-gauge規(guī)格的連接線(部件號22541)。這樣不需要焊接,并且連接結(jié)實、可靠。
下面的程序中,BASIC Stamp完成了一個時鐘的功能,通過液晶顯示屏輸出時間(假定液晶顯示屏接在Stamp輸入輸出0號引腳上):
pause 1000 '等待液晶顯示屏啟動
serout 0, n2400, (254,1) '清除顯示
serout 0, n2400, ("time:") 顯示屏上 顯示“time:”
'在加載程序之前進(jìn)行預(yù)設(shè)
b0 = 0 '秒數(shù)
b1 = 27 '分鐘數(shù)
b2 = 6 '小時數(shù)
again:
b0 = b0 + 1 '秒數(shù)加1
if b0 60 then minutes
b0 = 0 '如果秒數(shù)等于60
b1 = b1 + 1 '則分鐘數(shù)加1
minutes:
if b1 60 then hours
b1 = 0 '如果分鐘數(shù)等于 60
b2 = b2 + 1 '則小時數(shù)加1
hours:
if b2 13 then show
b2 = 1 '如果小時數(shù)等于13,則重置為1
show:
serout 0, n2400, (254, 135) '在顯示屏上定位光標(biāo),
'然后顯示時間
serout 0, n2400, (#b2, ":", #b1, ":", #b0, " ")
pause 950 '暫停950毫秒
goto again '重復(fù)
這個程序中,通過SEROUT命令向液晶顯示屏發(fā)送數(shù)據(jù)。 序列 (254, 1) 用于清空液晶顯示屏,其中254是轉(zhuǎn)義字符,1是清空屏幕的指令。 序列(254, 135)用于定位光標(biāo)。其他兩個SEROUT指令只是將文本字符串發(fā)送到顯示屏。
這種方法將得到一個比較精確的時鐘。通過調(diào)整PAUSE語句,可以將每天的誤差控制在數(shù)秒之內(nèi)。顯然,真正的時鐘需要一到兩個按鈕來校正時間—— 在這個程序中,你需要在向 Stamp 載入程序前,預(yù)先設(shè)置時間。
此方法簡單、有效,但并不十分準(zhǔn)確。如果你需要提高計時精度,在Stamp上連接實時時鐘芯片是一種好的選擇。這樣,每過一秒左右就會從芯片讀取時間并顯示出來。實時時鐘芯片中使用石英晶體獲得極佳的精確度。 時鐘芯片通常還包含日期信息,并可以自動進(jìn)行閏年修正。
要讓實時時鐘和Stamp實現(xiàn)對接,一個簡單的辦法是使用稱為Pocket Watch B的元件。
Pocket Watch B模塊 |
評論