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