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