筆者在此主要介紹AT89C51單片機對直流電機進行啟動/停止、正轉(zhuǎn)/反轉(zhuǎn)的控制,利用LCD液晶顯示器1602對直流電機的正反轉(zhuǎn)時間進行倒計時顯示。經(jīng)過軟硬件的設(shè)計及調(diào)試,已成功研制出了樣機。可應(yīng)用于電動閥門、電動窗簾、家用電器、旋轉(zhuǎn)燈具等方面。
系統(tǒng)首先通過按鍵對電機的正、反向(即順時針、逆時針)轉(zhuǎn)動時間分別設(shè)置,設(shè)置的時間顯示在LCD液晶顯示器1602上,格式為第一行顯示Forward(正轉(zhuǎn)) 時:分:秒,第二行顯示Backward(反轉(zhuǎn)) 時:分:秒。采用倒計時方式。時間設(shè)定完成后,按下開始鍵,電機工作指示燈閃爍,正向轉(zhuǎn)動時間開始倒計時,正向轉(zhuǎn)動指示燈亮(紅燈亮),同時電機正向轉(zhuǎn)動;當正向轉(zhuǎn)動時間倒計時到0,反向轉(zhuǎn)動時間立即開始倒計時,正向轉(zhuǎn)動指示燈熄滅,反向轉(zhuǎn)動指示燈亮(綠燈亮),同時電機反向轉(zhuǎn)動。當反向轉(zhuǎn)動時間倒計時也到0時,系統(tǒng)自動恢復(fù)到初始設(shè)定的時間。按下停止鍵,正(反)轉(zhuǎn)倒計時停止計時,直流電機停止工作,電機工作指示燈熄滅。
系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
圖1系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)的控制芯片采用Atmel公司的AT89C51。6個按鍵分別連接到單片機的P2.0~P2.5口,作為按鍵控制信號的輸入。按下K0鍵,系統(tǒng)進入時間設(shè)定模式,連續(xù)按下K0鍵可以依次選擇時、分、秒進行設(shè)置,通過K1,K2鍵對時、分、秒進行加1或減1操作。按下K3鍵退出時間設(shè)定模式,K4,K5鍵分別為啟動鍵和停止鍵。
P0.0~P0.7作為數(shù)據(jù)總線連接到LCD1602的數(shù)據(jù)線,需要外接上拉電阻。P1.0、P1.1、P1.2分別接1602的控制端RS、R/W、EN端。P1.3、P1.4、P1.5分別作為電機工作指示燈、正轉(zhuǎn)指示燈、反轉(zhuǎn)指示燈的控制信號輸出。P1.6、P1.7分別是控制電機啟/停、正/反向轉(zhuǎn)動的控制信號輸出。
系統(tǒng)的顯示部分采用字符型液晶顯示器LCD1602。它可以顯示2行、每行顯示16個ASCII字符。主控制驅(qū)動電路為HD44780 (HITACHI )。采用標準的接口特性適配M6800系列MPU操作時序和標準的16腳接口,工作電壓為5V。
系統(tǒng)選用的直流電機為HY37JB363。由于單片機的I/O口提供的輸出電流只有幾mA,而直流電機的額定工作電流需要幾百mA,所以在單片機與直流電機之間需加一個驅(qū)動電路,系統(tǒng)選用的是LMD18200芯片。
系統(tǒng)軟件由主程序、數(shù)據(jù)處理子程序、定時器0中斷服務(wù)子程序、按鍵處理子程序以及液晶顯示子程序等組成。
主程序:完成系統(tǒng)的初始化、按鍵掃描、數(shù)據(jù)處理及顯示程序。初始化完成之后,掃描按鍵,如有按鍵按下,調(diào)用相應(yīng)的處理程序。K0被按下時,被選中的時間單位將會不斷的閃爍,區(qū)別于其他沒有被設(shè)置的時間單位,通過K1,K2鍵對時間進行夾1/減1改動,按下K3鍵退出時間設(shè)定。啟動鍵被按下時,開啟定時中斷,LCD顯示時間開始倒計時,P1.4口輸出低電平,正向轉(zhuǎn)動指示燈(紅燈)亮,P1.7輸出高電平,電機開始正向轉(zhuǎn)動。在中斷服務(wù)程序中控制P1.3口輸出電平,使電機工作指示燈(黃燈)閃爍。停止鍵按下時,P1.6輸出高電平,直流電機停止轉(zhuǎn)動,P1.3~P1.5輸出高電平,各狀態(tài)指示燈熄滅,關(guān)閉定時中斷,停止計數(shù)。正向轉(zhuǎn)動時間倒計時到0時,反向轉(zhuǎn)動立即開始倒計時,P1.7輸出低電平,電機反向轉(zhuǎn)動,P1.4輸出高電平,P1.5輸出低電平,正轉(zhuǎn)指示燈熄滅,反轉(zhuǎn)指示燈(綠燈)亮。反向轉(zhuǎn)動時間倒計時也到0時,系統(tǒng)自動恢復(fù)到初始設(shè)定的時間。
數(shù)據(jù)處理子程序:將秒、分、時計數(shù)器的數(shù)據(jù)分別處理后送顯示緩沖區(qū)。
定時器0中斷服務(wù)子程序:完成計時功能。每定時50ms產(chǎn)生一次中斷,利用軟件對中斷進行累加計數(shù),當定時器產(chǎn)生20次中斷后(即1S后),秒單元減1。同理,對分、時單元也分別處理。
按鍵處理子程序:完成按鍵的防抖動處理、判鍵及設(shè)置正反轉(zhuǎn)時間的秒、分、時和控制直流電機啟/停和正/反轉(zhuǎn)。
液晶顯示子程序:第一行顯示格式為: Forward(正轉(zhuǎn)) 時:分:秒。第二行顯示格式為:Backward(反轉(zhuǎn)) 時:分:秒。
(作者單位:江蘇省常州技師學(xué)院)