2012年6月6日

PIC控制第一站---RTC 時鐘控制

一開始規劃裡面就是有多孔的定時開關座
既然要定時那就得要有個時鐘,雖然PIC16F877A有Timer,但是這樣並不好用。
不能與真實世界時間同步。
所以必須借助外圍電路模組來做時間的偵測。

要開始了~~

在QL-200上面有RTC(DS1302)模組可以模擬,電路就不用擔心應該是OK的。

本想著QL200有附控制範例程式,應該不用30min就可以搞定這個時間IC
但是想的總是比較簡單
程式一載入IDE後,看到一大堆紅字蚯蚓就知道問題大了,因為Sample程式所引用的函式庫,跟我用的根本不一樣.....
不一樣會怎樣?? 所有腳位定義的Symbol 都不對了,還有他自訂的一些怪怪函數,根本都看不懂!
(註: QL200範例程式是用MicaroChip原廠的MPLAB函式庫,而我是用MikroC Demo Version)




那怎麼辦? 涼拌炒雞蛋!!
唉呦 還能怎麼辦? 就自己重寫吧!

找出DS1302 Datasheet,看一下指令及定址,參考一下範例程式的邏輯。
從頭開始Coding。其實真的不難,這個IC真的已經很成熟了,照著Datasheet就可以囉!
唯一件事情就是他的Byte排序,讀入及寫入是不一樣方向的。
這個也搞好久!!

我沒有ICE模擬器,所以不能線上偵錯或是看參數變數的。
所以改一次燒一次,改一次燒一次,然後透過RS232看輸出。
就這樣改了快四個小時。

改好了,再來就是要顯示輸出啊,
輸出到哪?? 當然是輸出到比較炫的LCD上面(QL200也有附上這模組及LCD1602)

有前面例子,不用看QL200範例了。
直接重寫輸出函式,不過這部分MikroC就好多了。
因為他有內建LCD顯示函數,只要提供主要三隻腳的接點(Data,RST,SCLK),在程式開頭定義一下就會自己動了!

讀出秒讓他每秒更新,這樣沒有問題囉!
就一次把年、月、日、時、分、秒都顯示吧~~

啟動後真的快要吐血了~ LCD上面出現一大堆亂碼!
我想說我寫錯了~就把除了秒以外的都Mark掉,再試一次!
只顯示秒沒有問題,我就再加入分,也沒有問題。再加入時.....
這時候就有問題了!又是一堆亂碼
我發現LCD不能更新太頻繁,我加上一個Delay 100ms 有好一點點。
調到150ms就沒有問題。
但是這樣幾個數值更新一次都超過一秒了。

所以最後我在整00秒的時候再做全部數值更新~ 這樣就沒有問題囉!

搞到這裡~~高興地想跳起來拍手,但是看到時間顯示已經06:45了,轉頭看窗外天已經好亮了~
該去補一下眠了!!

一天之後還是繼續在跑~沒有問題囉!

沒有留言:

張貼留言