新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 如何制作數字時鐘

        如何制作數字時鐘

        作者: 時間:2011-07-13 來源:網絡 收藏
        如何制作數字時鐘

        花79美元讓一只LED亮起來似乎有些奢侈。你肯定更想用BASIC Stamp制作出更實用的東西。花上100多美元,你就可以制作一臺精致的數字時鐘!這好像也過于奢侈,但以后做其他各種裝置時,你會發現這些元件都可以重復利用。

        我們將使用BASIC Stamp的輸入輸出引腳來顯示數字。在數字時鐘部分,我們了解了如何連接7447芯片的7段顯示發光二極管。7447芯片可以和BASIC Stamp協同工作。將BASIC Stamp的四根輸入輸出引腳直接與7447相連,就可以很容易的顯示0到9的數字。BS-1版本的Stamp有8根輸入輸出引腳,這樣可以直接驅動兩片7447芯片。

        就一個時鐘而言,需要至少顯示4個數字。為了用8個輸入輸出引腳驅動4片7447,我們需要更有創造性一些。下圖給出了一種解決辦法:

        用8個輸入輸出引腳驅動4片7447的解決辦法

        上圖中,8根輸入輸出引腳從左邊引入。該方法用4個輸入輸出引腳驅動全部的4片7447。剩余的4個引腳,用來按順序激活4片7447(芯片上的“E”表示“Enable 使能”——7447芯片上的5號引腳)。要讓這個系統工作,Stamp的程序首先通過4根數據線發出第一個數字,并且把第一片7447的E引腳與第一根控制線置位,從而把7447激活。然后發出第二個數字,激活第二片7447,就這樣按順序不停的反復激活四片7447。 實際上,稍微改動一下連線,一片7447就可以實現這些功能。使用74154多路轉換芯片以及一些驅動,就可以用這種方法驅動多達16個數字。

        這就是實際中控制發光二極管顯示屏的標準方法。如果你有一個老式的發光二極管顯示的計算器,邊晃動邊觀察顯示屏。你會發現同一時刻只有一個數字被點亮。這種技術被稱為多路復用顯示。

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

        • 發光二極管耗電量大。
        • 7 段顯示發光二極管只能顯示數字。

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

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

        這類液晶顯示屏的優點:

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

        唯一美中不足就是,這樣的一個液晶顯示屏要花費59美元。顯然,沒有人會在烤箱上裝這樣的顯示屏。 而設計烤箱時,一般會先用這樣的顯示屏作樣品試驗,而后用自己設計的芯片和軟件驅動便宜的顯示屏,用于最終的產品。

        驅動這樣的顯示屏,你只需提供5伏以上的電源和地線(Stamp的9伏電池滿足這兩個條件),然后把Stamp的一個輸入輸出引腳與顯示輸入線連接。 要將Stamp的輸入輸出引腳連接到像液晶顯示屏這樣的設備,我能找到的最輕松的方法,是使用Jameco公司生產的連線工具(部件號34577)和30-gauge規格的連接線(部件號22541)。這樣不需要焊接,并且連接結實、可靠。

        下面的程序中,BASIC Stamp完成了一個時鐘的功能,通過液晶顯示屏輸出時間(假定液晶顯示屏接在Stamp輸入輸出0號引腳上):

         
        pause 1000 '等待液晶顯示屏啟動
        serout 0, n2400, (254,1) '清除顯示
        serout 0, n2400, ("time:") 顯示屏上 顯示“time:”
        '在加載程序之前進行預設
        b0 = 0 '秒數
        b1 = 27 '分鐘數
        b2 = 6 '小時數

        again:
        b0 = b0 + 1 '秒數加1
        if b0 60 then minutes
        b0 = 0 '如果秒數等于60
        b1 = b1 + 1 '則分鐘數加1
        minutes:
        if b1 60 then hours
        b1 = 0 '如果分鐘數等于 60
        b2 = b2 + 1 '則小時數加1
        hours:
        if b2 13 then show
        b2 = 1 '如果小時數等于13,則重置為1

        show:
        serout 0, n2400, (254, 135) '在顯示屏上定位光標,
        '然后顯示時間
        serout 0, n2400, (#b2, ":", #b1, ":", #b0, " ")
        pause 950 '暫停950毫秒
        goto again '重復

        這個程序中,通過SEROUT命令向液晶顯示屏發送數據。 序列 (254, 1) 用于清空液晶顯示屏,其中254是轉義字符,1是清空屏幕的指令。 序列(254, 135)用于定位光標。其他兩個SEROUT指令只是將文本字符串發送到顯示屏。

        這種方法將得到一個比較精確的時鐘。通過調整PAUSE語句,可以將每天的誤差控制在數秒之內。顯然,真正的時鐘需要一到兩個按鈕來校正時間—— 在這個程序中,你需要在向 Stamp 載入程序前,預先設置時間。

        此方法簡單、有效,但并不十分準確。如果你需要提高計時精度,在Stamp上連接實時時鐘芯片是一種好的選擇。這樣,每過一秒左右就會從芯片讀取時間并顯示出來。實時時鐘芯片中使用石英晶體獲得極佳的精確度。 時鐘芯片通常還包含日期信息,并可以自動進行閏年修正。

        要讓實時時鐘和Stamp實現對接,一個簡單的辦法是使用稱為Pocket Watch B的元件。

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 龙海市| 读书| 新民市| 呼伦贝尔市| 黎城县| 尤溪县| 沙河市| 峨边| 新竹市| 大邑县| 寻乌县| 盘山县| 澄江县| 徐闻县| 许昌市| 河津市| 黄平县| 万荣县| 周口市| 靖州| 新干县| 汽车| 芦溪县| 府谷县| 达拉特旗| 洪江市| 临夏市| 翁牛特旗| 海伦市| 宝丰县| 兴山县| 定安县| 布拖县| 云林县| 台北市| 贵定县| 石首市| 洞头县| 关岭| 大方县| 射阳县|