一種基于A(yíng)T89C51控制的高精度倒計時(shí)系統
1 引 言
倒計時(shí)系統的任務(wù), 就是對某一設定日期進(jìn)行倒數, 并在顯示屏顯示當前至設定日期的時(shí)間, 以增強人們的關(guān)注度和緊迫感。開(kāi)發(fā)實(shí)踐表明: 以時(shí)鐘芯片DS12C887為時(shí)鐘模塊、單片機AT89C51為控制模塊的高精度倒計時(shí)系統具有精度高、能夠長(cháng)時(shí)間連續穩定地工作、使用方便的特點(diǎn), 可較好滿(mǎn)足實(shí)際需要。系統的硬件設計和軟件設計如下。
2 系統的硬件設計
系統的控制模塊由AT89C51單片機構成, 用于完成對串行口控制器的初始化和數據讀寫(xiě), 并對接收的各種數據進(jìn)行識別、轉儲及顯示。時(shí)鐘芯片DS12C887提供高精度的年、月、日、時(shí)、分、秒時(shí)間,校準后直接與單片機相連。倒計時(shí)顯示模塊由LED數碼管, 74HC595芯片和74LS245芯片組成。
系統總體框圖如圖1所示。
系統總體結構圖
圖1 系統總體結構圖
2. 1 時(shí)鐘模塊及其與單片機的連接
時(shí)鐘模塊用于對時(shí)、分、秒、年、月、日和星期的計時(shí), 由美國DALLAS 公司生產(chǎn)的時(shí)鐘日歷芯片DS12C887構成, 該芯片集成度高, 可提供年、月、日、時(shí)、分、秒, 設定每一時(shí)刻產(chǎn)生中斷, 并且其外圍電路設計簡(jiǎn)單, 性能好, 計時(shí)準確性高。DS12C887帶有128字節RAM, 其中有11字節RAM 用來(lái)存儲時(shí)間信息, 4字節RAM用來(lái)存儲DS12C887的控制信息,為控制寄存器。用戶(hù)可以在任何時(shí)候對其進(jìn)行訪(fǎng)問(wèn)以對DS12C887進(jìn)行控制操作, 有113字節的通用RAM 供用戶(hù)使用。用戶(hù)還可對DS12C887進(jìn)行編程以實(shí)現多種方波的輸出, 并對內部的三路中斷通過(guò)軟件進(jìn)行控制。DS12C887為雙列直插式封裝, 與單片機的連接為: AD0~ AD7雙向地址/數據復用線(xiàn)與單片機的P0口相聯(lián), 用于向單片機交換數據; AS地址選通輸入腳與單片機的ALE 相聯(lián)用于對地址鎖存, 實(shí)現地址數據的復用; CS片選線(xiàn)與單片機的P2. 6相聯(lián), 用于選通時(shí)鐘芯片; DS數據選通讀輸入引腳與單片機的讀選通引腳相聯(lián), 用于實(shí)現對芯片數據的讀控制; R /W讀/寫(xiě)輸入與單片機的寫(xiě)選通引腳相聯(lián), 用于實(shí)現對時(shí)鐘芯片的寫(xiě)控制;MOT 直接接地, 選用INTEL 時(shí)序; IRQ 引腳與單片機的INT1相連, 用于為時(shí)間的采集提供時(shí)間基準。
2. 2 顯示模塊的設計
單片機將讀入的DS12C887時(shí)間信息經(jīng)過(guò)程序處理, 輸出顯示信號到P1口, 顯示信息包括倒計時(shí)信息(當前距離設定時(shí)間的天數)和當前時(shí)間的星期、時(shí)、分、秒信息。顯示電路主要由9個(gè)LED 數碼管, 9 片74HC595 芯片和一片74LS245芯片組成。
設計采用動(dòng)態(tài)顯示方式, 即將所有位的段選線(xiàn)并聯(lián)在一起由一個(gè)8位I /O 口控制。74HC595是硅結構的高速CMOS器件, 內置8 位移位寄存器和一個(gè)存儲器, 具有三態(tài)輸出功能, 當使能端OE 為低電平時(shí), 將存儲寄存器的數據輸出到總線(xiàn)。利用74HC595并行輸出端具有的輸出鎖存功能, 采用74HC595芯片的串入并出方式控制數碼管的顯示,具體的連接方式為: 芯片的Q7引腳和SER 引腳級聯(lián), 通過(guò)三個(gè)I/O口與單片機連接。74HC595的14腳( SER)為串行輸入端, 12腳( RCLR) 為移位時(shí)鐘端, 時(shí)鐘上升沿將14腳數據移入寄存器; 11腳( SRCLR )為鎖存時(shí)鐘端, 時(shí)鐘上升沿鎖存數據; 8腳( E )為3態(tài)輸出控制端, 接低電平時(shí)輸出數據。輸出數據和移位時(shí)鐘均由單片機輸出: 單片機P1. 0口輸出數據, 在移位脈沖上升沿到來(lái)時(shí)數據移出進(jìn)入74HC595; P1. 1 口輸出移位脈沖; P1. 2口輸出鎖存脈沖。出現在并行輸出端上的數據經(jīng)74LS245驅動(dòng)數碼管顯示, 由于數據已被鎖存, 在傳送下一組數據時(shí), 前一組數據的內容不變, 以此方式進(jìn)行數據的傳送和顯示, 故在顯示模塊軟件中將P1. 0、P1. 1、P1. 2均定義為模擬串行口。調整鍵盤(pán)的接口有 4個(gè)鍵: 1個(gè)設定/確認鍵、1個(gè)修改+ 1鍵、1個(gè)修改- 1鍵、1個(gè)移位鍵。對應秒、分、時(shí)、倒計時(shí)、星期, 有5 個(gè)LED。LED亮, 表示對應的秒或分或星期或倒計時(shí)數據可按修改鍵修改。在設定時(shí)間狀態(tài), 首先移位為秒位, 對應秒移位LED亮, 按下移位鍵, 移位LED燈按秒→分→時(shí)→倒計時(shí)→星期逐次循環(huán); 按下修改+ 1鍵或修改- 1 鍵可對相應位的數據進(jìn)行+ 1或- 1操作。
3 系統的軟件設計
系統的主程序包括: 對單片機串行口的設置以及初始化→讀取DS12C887時(shí)鐘芯片→判斷是否計算倒計時(shí)→顯示。初始化12887為24小時(shí)制, BCD碼, 不允許中斷, 分配12887的始地址為B000H, A寄存器的地址為B00AH, B 寄存器的地址為B00BH, C寄存器的地址為B00CH, D寄存器的地址為B00DH, DS12887的內部分配如表1所示。
表1 DS12887的內部分配。
DS12887的內部分配
顯示子程序首先通過(guò)模擬串行口讀取DS12C887的數據, 然后利用74HC595 對數據進(jìn)行顯示。具體步驟為: 顯示子程序將P1. 0 置位 將P1. 0送入段碼 將P1. 1送入移位脈沖 將P1. 2送入鎖存脈沖 返回主程序。倒計時(shí)子程序首先由單片機讀DSl2C887的時(shí)間單元, 并將其存放在以69H 為起始的單元中, 操作時(shí)先讀取月份, 然后利用查表方法計算其下月份到預定時(shí)間的天數, 再利用查表方式判斷其月份是31天、30天, 28天或29天,將查表得到的天數減去讀取日期, 將二個(gè)天數相加就可得到實(shí)際天數。進(jìn)行時(shí)、分、秒計算時(shí), 可以直接利用預定時(shí)、分、秒減去讀取的時(shí)、分、秒得到相差的時(shí)、分、秒, 完成后返回主程序。
4 結束語(yǔ)
綜上, 所設計的倒計時(shí)系統由DS12C887構成時(shí)鐘模塊, 單片機AT89C51 對系統進(jìn)行控制, 設定從模擬串行口讀取DS12C887 的數據后, 再利用74HC595將數據送入數碼管顯示。系統經(jīng)調試和參數整定后運行穩定可靠, 連續長(cháng)期運行積累誤差為零, 為高精度的倒計時(shí)系統。實(shí)踐開(kāi)發(fā)表明, 基于上述技術(shù)的倒計時(shí)系統具有結構緊湊、簡(jiǎn)單, 價(jià)格低廉, 可靠性高等特點(diǎn), 便于實(shí)際應用。
評論