基于單片機利用無字庫12864液晶模塊自制日歷
編程
電路雖然簡單,但是要讓不帶字庫的LCD、1302在M8的統(tǒng)一領導下有條不紊地工作,所以具體編程必須解決以下問題。
圖7程序流程
1、讓時鐘走動起來,而且可以通過按鍵設定或修改當前數(shù)據(jù)。
2、讓液晶顯示時鐘芯片當前提供的信息:年月日時分秒,兩個顯示界面的按時刷新。
3、制作字模和圖形界面編程。
以上第1點,就是用M8控制1302。我們可以按照它的時序要求編列一些函數(shù),另外在程序中建立—個數(shù)組DateTme[7]用來存放從1302讀出的年月日時分秒,作為數(shù)據(jù)刷新依據(jù);第2點,主要是在LED上顯示這個數(shù)組當前的數(shù)據(jù)(要注意1302存放日期時間的格式是BCD碼,所以存取之前必須先進行數(shù)制轉換)。數(shù)據(jù)刷新實際上就是查詢1302當前“秒”是否等于上次查詢結果,如不等于則已經(jīng)過去1秒,在數(shù)組記下新秒,刷新顯示“秒”-當然是1秒刷新一次;而且當秒更新為O日寸要更新“分”……·以此類推。第3點上次已有敘述使用,畔畔字模的方法,其中編制了8 x 8小數(shù)字、1 2×16數(shù)字、16×1 6漢字幾種字模用于不同的顯示位置,另外有個小雞啄米的動畫,可以在16點陣字模工具中用鼠標點擊,分別畫出小雞低頭和小雞抬頭兩個圖案,在秒刷新時交替顯示即可。用字模軟件制作好所需的字模后,把所有常量字模數(shù)組定義放在頭文件miniClock中,這些數(shù)組全部放在FLASH區(qū)。
圖形界面的模擬指示針、刻度的制作也不困難,只要事先規(guī)劃出水平刻度長度,起點和終點坐標畫出水平線,垂直刻度則按照刻度位置畫出短垂直線,指示地則是在刻度上方或下方垂直直線,它的位置要計算好,根據(jù)時間數(shù)據(jù)刷新而改變。
標題“小小日歷鐘”是個漢字串,用一個漢字串顯示函數(shù)Vold show-string1616(ucharx,uchary,uchar * string,uchar string_length);參數(shù)是顯示起始列、頁、字串指針、字串長度,同時要事先定義—個以上指針所指的字串數(shù)組,此數(shù)組的元素是待顯示的字模在字模數(shù)組的位置。
整個程序流程見圖7,左遠是主流程,右邊是年日月時分秒更新流程。
調試
硬件焊好后,反復檢查無誤 不插M8、1302和LCD鋰電池,插上穩(wěn)壓小板,接通USB電源,測試M8插座,1302插座,編程口和LCD的VCC電源應為正常3.3V,拆下穩(wěn)壓斷電,插上鋰電池,1302插座8腳應為2.4V,插上S5并接通,VCC應為3∨,至此電池沒有問題了。拔掉S5,插上M8、液晶和1302,插上穩(wěn)壓板和USB電源,如果你從末使用過這種LCD,不妨自己先編制一些小程序(例如啟動、初始化M8和液晶后,用不同的參數(shù)運行清屏函數(shù))觀察液晶顯示是否如同預期,如果沒有反應要再次檢查程序中對M8引腳定義是否和你的實際硬件接線一致,這個小液晶和別的一些液晶不同,不需要硬件調整對比度夏,不會因此對比度調節(jié)不當而不顯示(除非你修改了默認值)。這—關先過了再往下走。往M8下載程序,如果一切正常,畫面會立即出來。不過現(xiàn)在的口期、時間不對、按動S2最下面一行日期時間的分隔符上會呈現(xiàn)豎線光標,連續(xù)按S2光標會循環(huán)右移,在光標停下的位置按動S1,在上面就會出現(xiàn)設定值,反復按動會循環(huán)遞增,就這樣逐—調節(jié)日期和時間,如圖5所示。最后按下S3,新的時間就存入1302了,并能按秒刷新。現(xiàn)在插上電池,一切就好了。如圖 6所示,可見時、分已經(jīng)改為新的設定值??梢匀サ舴€(wěn)壓板,雖然液晶熄滅,可是1302還在悶聲不響地運行,如果你插上開關S5再接通,液晶又亮了。為了節(jié)省電池消耗,不要老是開著它。如同老式懷表,看表前再按開蓋子。
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
評論