本文我們要利用無(wú)字庫12864液晶模塊來(lái)自制一個(gè)小小日歷鐘,最圖終效果圖見(jiàn)圖1。 這個(gè)小小日歷鐘有什么特點(diǎn)呢? 1、電路簡(jiǎn)單,使用元件少,容易制作,核心就是單片機ATMega8L和日歷鐘忡1302。 2、全部使用低壓元件,3V電壓就可以工作。 3,使用自編的小字模和圖形界面使得顯示具有特色:在文字界面可以清晰地讀出當前的日期和時(shí)間,而且加入一個(gè)小動(dòng)畫(huà)使顯示更加生動(dòng),在圖形界面使用模擬刻度和指針動(dòng)態(tài)指示當前時(shí)間,兩個(gè)界面柙按鍵切換。 圖2電路原理 4、電源制作在獨立的小電路板上,調試程序時(shí)插入使用USB供電的3.3V穩壓電源,完畢后可以取下,插上開(kāi)關(guān),使用電池供電。 5、不用背光時(shí)耗電很小(全機約3mA),可以使用圓片鋰電池CR2O32供電。 日歷鐘安裝在一塊50mm x50mm小萬(wàn)用板上。外形見(jiàn)圖1。 電路原理 電原理圖見(jiàn)圖2,液晶型號如前述,單片機就是AVR的ATMega8L-8PU(以下簡(jiǎn)稱(chēng)M8),可以在低電壓下工作,M8 的PD口控制液晶,主要就是控制串行寫(xiě)入顯示數據。DS13O2(以下簡(jiǎn)稱(chēng)1302)是常用的日歷時(shí)鐘芯片,32768Hz晶體B是它的振蕩源。在它內部有10個(gè)命令寄存器用來(lái)存儲日期、時(shí)間的數值并控制芯片工作,M8通過(guò)PB0PB1、 PB2控制1302的RST、SCLK、I/O:RST為高時(shí)才能讀寫(xiě)1302,讀寫(xiě)都是讓數據在I/O串行傳送,當SCLK上升沿時(shí)寫(xiě)入1位地址或數據,寫(xiě)入1位地址或數據。寫(xiě)入地址后每當SCLK下降沿時(shí)則讀出數據。讀寫(xiě)都是從最低位開(kāi)始,受SCLK時(shí)鐘同步。接通電源后它必須通過(guò)單片機程序啟動(dòng)計時(shí),只要有電源或者各用電源存在,它就能一直工作下去,和單片機是否工作無(wú)關(guān)。連接在M8的PC口的4個(gè)輕觸按鍵,S1,S2,S3用于調校時(shí)問(wèn):分別為確認修改、移動(dòng)光標,修改數值;S4用于界面切換。電源包插兩部分 :圓片電池CR2O32通過(guò)二極管VD1連接到1302的VCC1作為后各電源、以便在關(guān)機時(shí)也能使1302繼續工作,另一路可通過(guò)開(kāi)關(guān)S5給液晶、MB、1302的VCC2供電,在調試時(shí)為了避免消耗電池,接入了另—個(gè)5∨轉3.3V的小穩壓板,用微型∪SB接口從外部取得5V電源。調試好后,取下穩壓板,在插孔上插上小撥動(dòng)開(kāi)關(guān)S5,就可以使用鋰電池了。注意二極管VD1不可省略,因為按照1302的說(shuō)明書(shū),VCC2高于VCC1時(shí)由VCC2電,VCC2低于VCC1時(shí)由VCC1供電,在用電池時(shí),由于有二吸管,VCC2比VCC1高,電池正常供電,關(guān)斷電池時(shí),VCC2為0,電池通過(guò)二極管作為后各電源,符合要求 ,保證電路正常工作。 硬件制作 這個(gè)日歷鐘電路簡(jiǎn)單所需元器件很少。集成電路使用雙列直插插座,液晶焊上90度插針排和焊在萬(wàn)用板上的90°排針插座插接。6線(xiàn)編程口,電源部分插座使用了圓孔2.54mm間距插座條。電池使用圓鋰電池CR2O32。采用一塊5cm見(jiàn)方的萬(wàn)用板安裝全部元件,首先截取—段90°排針座,焊在電路板背面上方中央,作為液晶插座,M8的IC插座也要裝在電路板背面,為此把它的引腳往外彎折,按照液晶插座引腳對應的位置定位IC插座, 先焊上RC復位元件以及—些相關(guān)連線(xiàn),然后把MB插座定位,接焊在電路板焊盤(pán)上。1302插座依據M8插座定位,和32768HZ晶體一起也是焊在電路板反面。這種非常規安裝雖然不盡合理,但有效利用了萬(wàn)用板的安裝面積(否則液晶占用的—塊不便利用),而且可使液晶和MB和1302之間的連線(xiàn)變得非常簡(jiǎn)單,直接用焊錫連通即可。在電路板正面,還要安裝輕觸按鍵、電池窠、編程插孔排、電源塊插孔。兩面元器件布置見(jiàn)圖3和圖4。另用—小塊萬(wàn)用板焊上微型USB插座、濾波電容、低壓穩壓器LM1117-3.3以及和時(shí)鐘板電源插孔對應的IC插針。 焊接液晶90°插針排時(shí),可把它先插八已經(jīng)焊在電路板上的排針座,再焊接液晶上的鍍金焊盤(pán),注意保持液晶和電路板的平行,所以插針不能在液晶上插到底。 因為LCD背光對于區區2OOmAh容量的小鋰電池來(lái)說(shuō),50mA電流顯得耗電太大,所以就沒(méi)有安裝背光電源接線(xiàn),如果需要安裝最好接到外部電源上而不要使用小電池。 編程 電路雖然簡(jiǎn)單,但是要讓不帶字庫的LCD、1302在M8的統一領(lǐng)導下有條不紊地工作,所以具體編程必須解決以下問(wèn)題。 圖7程序流程 1、讓時(shí)鐘走動(dòng)起來(lái),而且可以通過(guò)按鍵設定或修改當前數據。 2、讓液晶顯示時(shí)鐘芯片當前提供的信息:年月日時(shí)分秒,兩個(gè)顯示界面的按時(shí)刷新。 3、制作字模和圖形界面編程。 以上第1點(diǎn),就是用M8控制1302。我們可以按照它的時(shí)序要求編列一些函數,另外在程序中建立—個(gè)數組DateTme用來(lái)存放從1302讀出的年月日時(shí)分秒,作為數據刷新依據;第2點(diǎn),主要是在LED上顯示這個(gè)數組當前的數據(要注意1302存放日期時(shí)間的格式是BCD碼,所以存取之前必須先進(jìn)行數制轉換)。數據刷新實(shí)際上就是查詢(xún)1302當前“秒”是否等于上次查詢(xún)結果,如不等于則已經(jīng)過(guò)去1秒,在數組記下新秒,刷新顯示“秒”-當然是1秒刷新一次;而且當秒更新為O日寸要更新“分”……·以此類(lèi)推。第3點(diǎn)上次已有敘述使用,畔畔字模的方法,其中編制了8 x 8小數字、1 2×16數字、16×1 6漢字幾種字模用于不同的顯示位置,另外有個(gè)小雞啄米的動(dòng)畫(huà),可以在16點(diǎn)陣字模工具中用鼠標點(diǎn)擊,分別畫(huà)出小雞低頭和小雞抬頭兩個(gè)圖案,在秒刷新時(shí)交替顯示即可。用字模軟件制作好所需的字模后,把所有常量字模數組定義放在頭文件miniClock中,這些數組全部放在FLASH區。 圖形界面的模擬指示針、刻度的制作也不困難,只要事先規劃出水平刻度長(cháng)度,起點(diǎn)和終點(diǎn)坐標畫(huà)出水平線(xiàn),垂直刻度則按照刻度位置畫(huà)出短垂直線(xiàn),指示地則是在刻度上方或下方垂直直線(xiàn),它的位置要計算好,根據時(shí)間數據刷新而改變。 標題“小小日歷鐘”是個(gè)漢字串,用一個(gè)漢字串顯示函數Vold show-string1616(ucharx,uchary,uchar * string,uchar string_length);參數是顯示起始列、頁(yè)、字串指針、字串長(cháng)度,同時(shí)要事先定義—個(gè)以上指針所指的字串數組,此數組的元素是待顯示的字模在字模數組的位置。 整個(gè)程序流程見(jiàn)圖7,左遠是主流程,右邊是年日月時(shí)分秒更新流程。 調試 硬件焊好后,反復檢查無(wú)誤 不插M8、1302和LCD鋰電池,插上穩壓小板,接通USB電源,測試M8插座,1302插座,編程口和LCD的VCC電源應為正常3.3V,拆下穩壓斷電,插上鋰電池,1302插座8腳應為2.4V,插上S5并接通,VCC應為3∨,至此電池沒(méi)有問(wèn)題了。拔掉S5,插上M8、液晶和1302,插上穩壓板和USB電源,如果你從末使用過(guò)這種LCD,不妨自己先編制一些小程序(例如啟動(dòng)、初始化M8和液晶后,用不同的參數運行清屏函數)觀(guān)察液晶顯示是否如同預期,如果沒(méi)有反應要再次檢查程序中對M8引腳定義是否和你的實(shí)際硬件接線(xiàn)一致,這個(gè)小液晶和別的一些液晶不同,不需要硬件調整對比度夏,不會(huì )因此對比度調節不當而不顯示(除非你修改了默認值)。這—關(guān)先過(guò)了再往下走。往M8下載程序,如果一切正常,畫(huà)面會(huì )立即出來(lái)。不過(guò)現在的口期、時(shí)間不對、按動(dòng)S2最下面一行日期時(shí)間的分隔符上會(huì )呈現豎線(xiàn)光標,連續按S2光標會(huì )循環(huán)右移,在光標停下的位置按動(dòng)S1,在上面就會(huì )出現設定值,反復按動(dòng)會(huì )循環(huán)遞增,就這樣逐—調節日期和時(shí)間,如圖5所示。最后按下S3,新的時(shí)間就存入1302了,并能按秒刷新,F在插上電池,一切就好了。如圖 6所示,可見(jiàn)時(shí)、分已經(jīng)改為新的設定值?梢匀サ舴壓板,雖然液晶熄滅,可是1302還在悶聲不響地運行,如果你插上開(kāi)關(guān)S5再接通,液晶又亮了。為了節省電池消耗,不要老是開(kāi)著(zhù)它。如同老式懷表,看表前再按開(kāi)蓋子。 |