找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7680|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

[DIY]最近制作的點(diǎn)陣時(shí)鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:73557 發(fā)表于 2015-2-12 00:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
        這是最近制作的點(diǎn)陣時(shí)鐘,做這個(gè)時(shí)鐘的初衷是一個(gè)朋友想要做一個(gè)時(shí)鐘,開始選用的是數(shù)碼管,無(wú)奈體積較小,距離稍遠(yuǎn)就看不清,又想換用大體積數(shù)碼管,但大體積數(shù)碼供電較為麻煩(高于5V),并且耗電量較高,剛好手上有點(diǎn)陣屏,所以想到用這個(gè)點(diǎn)陣屏來做顯示,時(shí)鐘初形做出來后又增加了測(cè)溫,紅外遙控、農(nóng)歷功能,效果還是挺滿意的,字體很大,晚間亮度合適,耗電量可以接受,5V供電下平均電流約60ma,一年耗電僅有幾度,具有陽(yáng)歷、農(nóng)歷、溫度、時(shí)間功能,家庭使用有一定實(shí)用價(jià)值。
   
        電路原理圖如上。硬件結(jié)構(gòu):采用AT89S52或與之兼容的芯片作主控芯片,兩片74HC164做串入并出輸出段碼,MCU的P0、P2口做列選,DS1302時(shí)鐘芯片負(fù)責(zé)計(jì)時(shí),DS18B20負(fù)責(zé)測(cè)量溫度,兩片8×8點(diǎn)陣屏作為顯示屏,每片負(fù)責(zé)顯示兩位數(shù)字。
        實(shí)現(xiàn)功能:時(shí)間+測(cè)溫+紅外遙控+陽(yáng)歷+農(nóng)歷。開機(jī)顯示當(dāng)前時(shí)分,中間2個(gè)小數(shù)點(diǎn)閃動(dòng)代表秒,可以短按“改變鍵”切換到查詢溫度、查詢年、查詢陽(yáng)歷月日、查詢農(nóng)歷月日、查詢星期、查詢分秒。長(zhǎng)按“設(shè)置鍵”進(jìn)入年、月日、走時(shí)精度、時(shí)分設(shè)置,農(nóng)歷及星期采用程序自動(dòng)運(yùn)算來計(jì)算,在設(shè)置過程中,設(shè)置項(xiàng)閃動(dòng),按鍵可改變數(shù)值。設(shè)置或查詢狀態(tài)時(shí),當(dāng)無(wú)按鍵達(dá)15秒時(shí)退到正常的時(shí)間顯示狀態(tài)。用紅外遙控時(shí)操作更簡(jiǎn)便,設(shè)置數(shù)據(jù)可加可減,查詢時(shí)可直接按鍵查詢相應(yīng)狀態(tài)。具有走時(shí)精度調(diào)整功能,主要是受晶振精度影響,走時(shí)誤差有可能每天誤差數(shù)秒,通過調(diào)整,可以使每天最大誤差控制在0.5秒內(nèi),每年最大誤差3分鐘,還是可以接受的。
        編程思路:采用中斷掃描方式進(jìn)行動(dòng)態(tài)掃描顯示,2.5ms中斷一次,掃描8列,掃描頻率50Hz,無(wú)閃爍,同時(shí)在中斷中讀取溫度值,并做一些變量的累加,在主循環(huán)中讀取時(shí)間并轉(zhuǎn)換顯示、讀取按鍵并處理。采用外部中斷方式來讀取紅外信號(hào)。   
        編程難點(diǎn):處理好掃描顯示、按鍵讀取、18B20讀取的關(guān)系,18B20的采用單總線方式讀取,其時(shí)序要求較高,所以既要兼顧溫度讀取又要兼顧動(dòng)態(tài)掃描等,這里會(huì)有點(diǎn)難度。還要兼顧紅外解碼中斷的問題,在紅外解碼過程中,要避免其它影響,確保解碼正確。
        心得體會(huì):程序中使用狀態(tài)機(jī)分步執(zhí)行的方法,大大提高了代碼執(zhí)行效率,按鍵、讀取溫度等對(duì)動(dòng)態(tài)掃描均不產(chǎn)生影響,效果與靜態(tài)顯示一樣,但在紅外解碼中,因?yàn)闀r(shí)序要求較高,所以仍采用了軟件延時(shí)方法,并且為了確保時(shí)間準(zhǔn)確,對(duì)計(jì)數(shù)器中斷進(jìn)行了屏弊,所以紅外解碼時(shí)對(duì)動(dòng)態(tài)掃描顯示會(huì)有點(diǎn)影響,表現(xiàn)為屏幕閃動(dòng),這個(gè)暫時(shí)未有較好解決辦法,也算是動(dòng)態(tài)掃描的弊端。代碼經(jīng)初步優(yōu)化,大約為4.6K,因?yàn)檫M(jìn)行計(jì)算陽(yáng)歷轉(zhuǎn)農(nóng)歷、星期計(jì)算這里有較多數(shù)組,還有點(diǎn)陣屏字模也占用一些空間,自己感覺這個(gè)代碼量還是不錯(cuò)的
成品圖:PCB板子與兩塊屏大小相當(dāng),兩屏中間有縫是因?yàn)槿f(wàn)能板的孔位置是已經(jīng)定好的,所以這點(diǎn)縫隙沒辦法解決,呵呵,要布線做PCB才行啦。


        點(diǎn)陣屏采用插座連接上去,可拆御,底下放元件,元件并不多,PCB上空間還是挺多的。上面中間是測(cè)溫的18B20,左右兩片74HC164,中間是MCU主控芯片,藍(lán)色是3V的電池,確保斷電時(shí)時(shí)鐘仍可正常,右下方是紅外接收頭。

        MCU的底下是RC復(fù)位電路,還有幾只上拉電阻。

        背面直接飛線,呵呵,比較多線,飛得頭都暈了,焊這些線就要花二個(gè)小時(shí)。


        采用的5×5CM大小的高亮度點(diǎn)陣屏
這是使用的遙控器,原來是汽車上用的,以前買下來,也不知道是什么型號(hào),搞了個(gè)紅外分析軟件,把波形讀出來,再寫出解碼程序,呵呵。


        正常狀態(tài)下,顯示時(shí)分,中間2個(gè)小數(shù)點(diǎn)閃動(dòng)。

        查詢顯示年份。

        查詢顯示陽(yáng)歷的月日,以點(diǎn)亮1位小數(shù)點(diǎn)來區(qū)分。

        查詢顯示農(nóng)歷月日,以點(diǎn)亮2個(gè)小數(shù)點(diǎn)來區(qū)分。

        查詢顯示溫度值,溫度值精確到0.1度(實(shí)際這個(gè)芯片測(cè)溫精度是0.0625度,生活應(yīng)用中0.1度已足夠),當(dāng)為負(fù)溫度時(shí),最左邊顯示負(fù)號(hào),測(cè)溫范圍-55度至+125度。

        查詢顯示星期,顯示為“周一”“周二”...“周日”,8×8點(diǎn)陣屏只能顯示較為簡(jiǎn)單的漢字。

        走時(shí)精度值可調(diào),范圍在-9到9,在時(shí)間設(shè)置中進(jìn)行調(diào)整,每調(diào)整一級(jí)可以使走時(shí)每天增減1秒,經(jīng)過對(duì)時(shí)調(diào)整,可以控制每天走時(shí)誤差在0.5秒內(nèi)。


        可以顯示簡(jiǎn)單的圖形,呵呵
下面是操作視頻片段。



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 贊一個(gè)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2016-4-17 23:49 | 只看該作者
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表