<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 如何制作數(shù)字時鐘

          如何制作數(shù)字時鐘

          作者: 時間:2011-07-13 來源:網(wǎng)絡(luò) 收藏
          如何制作數(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個輸入輸出引腳驅(qū)動4片7447的解決辦法

          上圖中,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ù)字被點亮。這種技術(shù)被稱為多路復(fù)用顯示。

          這種技術(shù)在時鐘和計算器上有很好的應(yīng)用,但是存在兩個重要問題:

          • 發(fā)光二極管耗電量大。
          • 7 段顯示發(fā)光二極管只能顯示數(shù)字。

          另一方法是使用液晶顯示屏。 液晶顯示屏應(yīng)用廣泛,而且與Stamp連接方便。 例如,下圖所示的兩行字母數(shù)字式的液晶顯示屏在Jameco公司(部件號150990)和Parallax公司(部件號27910)都可以買到。 此處展示的是一個典型的液晶顯示屏,將液晶顯示屏插在面包板上,便于和其他芯片連接:

          個典型的液晶顯示屏,將液晶顯示屏插在面包板上,便于和其他芯片連接

          這類液晶顯示屏的優(yōu)點:

          • 一根引腳就可以驅(qū)動顯示。 顯示屏包含允許Stamp以串行方式與自己通信的邏輯電路,因此只需一根引腳。 此外,BASIC Stamp中的SEROUT命令可以十分容易的實現(xiàn)串口通信,控制顯示屏十分簡單。
          • 液晶顯示屏可以顯示字母數(shù)字文本,包括: 字母和數(shù)字,甚至可以是自定義字符。
          • 液晶顯示屏耗電量極低——只需3毫安的電流。

          唯一美中不足就是,這樣的一個液晶顯示屏要花費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的元件。

          如何制作數(shù)字時鐘
          Pocket Watch B模塊
          Pocket Watch B在Jameco公司(部件號145630)和Parallax公司(部件號 27962)都可以買到。該元件只有一枚硬幣大小,包括時鐘芯片、石英晶體和與輸入輸出引腳通信用的串行接口。它的價格在30美元左右,也不適用于烤箱,但卻非常適合在搭建樣品模型時使用。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();