這個領域確實非常有趣,比原來單純的編程要好多了,即動腦又動手,而且很容易入門。跟着網上down的視頻教程學完了理論之後開始動手製作電子時鐘,電路就是最基礎的小電路:一塊洞洞板,一個芯片座,2排杜邦線就OK了,至於排針用不用都行,可以直接把杜邦線焊在芯片座上。
電路搞定之後就是連線,根據DS12C887芯片說明書裏面的引腳介紹來考慮把這些引腳連到單片機的相關引腳上。MOT是模式選擇引腳,有摩托羅拉和英特爾兩種總線模式,這裏我選英特爾模式,所以MOT角不接線或者接地,IO引腳AD0-AD7就連在單片機的P0口。剩下的CS,AS,RW,DS四個控制引腳連在單片機還沒有被佔用的引腳上就可以了,這裏我連的是P3.7,P3.6,P3.3和P3.1。IRQ中斷引腳連在單片機的外部中斷0引腳上,SQW方波輸出引腳在這次設計中沒有用到所以不鏈接,Vcc引腳就接Vcc,reset復位引腳也接一個Vcc,至此線路連接部分就搞定了。
一切就緒之後就是編程,這裏面要注意一點就是這個芯片第一次使用的時候需要一系列初始化設置,最重要的就是晶振起振,按照說明書所說的控制寄存器A中的DV2,DV1,DV0這三個位是010的時候用來起振,其它位可以置0,所以在控制寄存器A的地址0x0A處傳一個數據0x20就是開啓振盪,表就開始走了;然後設置寄存器B,看了看說明,裏面需要設置的就是鬧鐘,顯示模式(二進制碼還是BCD碼)還有一個12小時還是24小時制,最後一個夏令時位置0就是不開啓夏令時。這裏我用二進制碼,24小時制,所以最後在0x0B地址送了一串數據0x26。
芯片初始化結束之後就是時間初始化,它需要一個初始的時間,在這個基礎之上開始走時,於是按照說明書在年月日星期時分秒的地址處分別送入相應的數據,時間初始化就結束了。然後就是上電看看它走不走,這裏面遇到一個問題,最開始用BCD碼時時間讀數出下了錯誤,跳着走,比如40之後就是49之類的,我數了一下,也是60個數但是現實錯誤,換成二進制碼模式就好了。其它的沒有遇到問題。只是在設置鬧鐘的時候需要讀一下寄存器C來把寄存器C中的IRQF位清0,還有就是1602液晶的相關操作了。
最後附上作品的照片。