葉 鋼,張 莉
(麗水職業技術學院 機電工程學院,浙江 麗水 323000)
隨著科學技術的不斷發展,自動化技術越來越多地出現在單一周期性的產品中,實現自動化代替人工。校園打鈴器是一個按時響鈴的產品,以前人工打鈴,往往會出現打鈴不準確或忘記打鈴的情況,且人工成本也高。采用單片機作為校園自動打鈴器的控制器,不僅可以促進打鈴器的迅速發展,還有利于校園學習生活。
(1)通過AT89C52單片機設計一個校園自動打鈴器。
(2)通過按鍵來改變校園作休時間的變化[1],自由設定打鈴時間點,并具有自動打鈴功能,響鈴時間為20 s,20 s后自動關閉響鈴。
(3)打鈴時間點可以斷電保存信息。
(4)通過按鍵自由設定系統時鐘,時鐘走時精準。
如圖1所示系統硬件結構,單片機采用AT89C52,通過控制內部定時器產生時鐘信號,由數碼管實時顯示當前時間,并通過按鍵自由設定打鈴時間點。具有自動打鈴功能,打鈴時間點存放在I2C總線器件AT24C02中,該器件是2 KB的串行CMOS EEPROM,有1個16 Bytes頁寫緩沖器,通過I2C總線接口進行操作[2]。

圖1 系統硬件結構
EEPROM存儲器選擇AT24C02型號,是一款串行通信的I2C器件,內含256 Bytes(2 KB),擦寫次數大于10 000次,寫入速度小于10 ms。自動打鈴器系統硬件電路如圖2所示,由于僅擴展1個器件,所以將A2,A1,A0這3條地址線接地,WP為寫保護控制端,接地時允許寫入。SDA為數據輸入/輸出線,SCL為串行時鐘線。

圖2 系統電路
AT24C02的1~4腳接地,8腳接電源,7腳接地,5腳接P3.1口,6腳接P3.0口,5腳和6腳均外接1個5.1k上拉電阻,用以抬高該腳的電位。
單片機的P1.0~P1.4口分別接K1,K2,K3,K4,K5 5個獨立按鍵,每個按鍵均加1個上拉電阻。可以通過這5個按鍵設置系統時鐘和打鈴器時間。K1鍵為時鐘設置鍵,當按下K1鍵,系統進入系統時鐘的設置狀態,然后可按動K3(位選鍵)和K4(段選鍵)進行時鐘設置;K2為作息設置鍵,當按下K2鍵,系統進入作息時間的設置狀態,然后可按動K3(位選鍵)和K4(段選鍵)進行作息時間設置;所有設置完畢后,可通過按動K5鍵退出設置,返回系統走時狀態。
單片機的P0口通過74LS245作為顯示的段碼輸出,每個段碼上均需要加上拉電阻,因此采用10 kΩ的排阻來代替8個上拉電阻。系統的數碼管顯示采用動態掃描方式,2個四位一體的共陰數碼管構成1個8位的數碼顯示效果。在與單片機連接時,P2口作為數碼管的位碼輸出端,其中P2.0控制最左邊的數碼管,P2.1控制左數第2個數碼管,以此類推,P2.7控制最右邊的數碼管。
系統的響鈴設備采用蜂鳴器,單片機的P3.7口通過串聯1個1 k電阻與1個PNP三極管的基極相連,三極管的集電極接蜂鳴器到地,三極管的發射極直接連電源,在三極管的基極與發射極間加1個10 k電阻。當設置的作息時間到時,單片機的P3.7口輸出1個低電平到三極管的基極,三極管就處于導通狀態,蜂鳴器發出響鈴聲音。
系統程序主要包括主程序、I2C總線讀寫操作函數、按鍵處理函數、顯示函數等。
主程序的主要功能包括:系統初始化、數碼管顯示、作息時間比較、判斷是否調整系統時間、判斷是否設置作息時間等。程序流程如圖3所示,系統復位后,讀取存儲在AT24C02芯片中已設定好的作息時間,并保存到單片機的RAM中;接著開中斷,調用顯示程序,并調用打鈴時間比較程序,將系統時間與RAM中存放的作息時間一一比較,若相等,則響鈴,若不相等則調用按鍵程序;判斷時鐘設置鍵或者作息設置鍵是否被按下,若被按下則分別進入時鐘設置分支程序或作息設置分支程序,若沒有按鍵被按下,則返回重復循環。

圖3 主程序流程
對于沒有配置I2C總線接口的單片機(如AT89C52等),可以利用其I/O口模擬總線接口的時序。從I2C總線的數據操作中可以看出,除了基本的啟動(STA)、停止(STOP)、發送應答位(MACK)和發送非應答位(MNACK)外,還應有應答位檢查(CACK)和歸一化的讀/寫子程序,例如發送1個字節(WRBYT)、接收1個字節(RDBYT)、發送N個字節(WRNBYT)和接收N個字節的子程序(RDNBYT)。
采用5個獨立按鍵實現系統時間、作息時間的設置功能。K1設置系統時間,K2設置作息時間,K3實現數碼管的位選,K4實現數碼管的段選,K5退出設置回到走時狀態。按鍵處理流程如圖4所示,當檢測到按鍵被按下時,最左邊的數碼管進入閃爍狀態,表示此時可以輸入時間;當通過段選鍵設置好相應數值后,按下位選鍵,下一個數碼管會進入閃爍狀態,表示可以輸入數值,此時也可通過段選鍵設置相應的數值。以此類推,從而實現8個數碼管的顯示數值,并自動保存到EEPROM中。

圖4 按鍵處理函數流程
顯示子程序采用動態掃描方式進行設計,8個數碼管輪流點亮。在輪流點亮掃描過程中,每位顯示器的點亮時間極為短暫(約為1ms),左邊的兩個數碼管顯示“小時”,中間的兩個數碼管顯示“分鐘”,右邊的兩個數碼管顯示“秒鐘”,三者之間用“—”隔開。
通過單片機仿真軟件進行系統仿真,如表1所示作息時間,按下K2鍵后,通過K3鍵和K4鍵輸入作息時間。如圖5所示,其中“06”表示小時,“10”表示分鐘,最右邊的“01”表示第一個作息時間點,按照作息時間順序依次輸入29個作息時間。

圖5 作息時間設置

表1 作息時間
按下K1鍵,通過K3鍵和K4鍵輸入系統當前時間,如圖6所示,圖中“10-10-45”表示當前系統時間為10點10分45秒。

圖6 系統時間設置
當系統時間與作息時間一致時,系統控制蜂鳴器自動響鈴,響鈴時間為20 s,20 s后結束響鈴。
用單片機作為定時打鈴控制器,可充分發揮單片機體積小、價格便宜、功耗低、可靠性好等特點[3],可以廣泛應用于學校、機關及工礦企事業,可實現作息時間的定時周期性打鈴[4]。在實際應用中,能夠非常方便地替代人工打鈴,打鈴時間準確,穩定性高,能夠達到預期效果。