汪愛明,劉紀偉,李永興,張仔航,賀宇航,李崢崢
(中國礦業大學(北京) 機電學院,北京 100083)
單片機課程是機械電子工程、電氣工程、測控技術與儀器等專業必修的專業課程[1],是學習AVR、ARM 等高級嵌入式芯片的基礎,是從事機電一體化設計人才必須掌握的一門技術。單片機是一種實踐性很強的應用型技術[2-3],然而,傳統單片機教學主要依賴于理論教學[4],弱化了實驗教學,實驗教學都是基于開發板進行,以驗證性和演示性內容為主[5]。這與單片機實踐性強的特點相矛盾,導致學生不能理解單片機如何使用,只是死記硬背相關知識點,應付考試,最終導致學完后學生都無法基于單片機進行最簡單的應用設計,更別說去解決工程中遇到的問題。因此有必要對單片機課程教學方法進行改革。
我校從鍛煉學生動手能力、提高學生學習興趣這兩點出發[6-8],提出采用具有相關行業背景的工程案例融合理論與實驗教學[9-11],通過實驗案例匯聚單片機相關知識點及相關工具軟件的使用,使學生懂得如何使用單片機,為將來從事單片機工程應用打下堅實基礎。
礦用無極繩運輸系統是實現在煤礦工作面順槽和采掘大巷運輸材料和設備的先進輔助運輸設備,能夠上坡、下坡和拐彎,運輸距離可達3000 m。它利用絞車驅動鋼絲繩,鋼絲繩牽引礦用車輛(礦車、平板車、材料車、人車)實現連續往返運輸。
現有礦用無極繩運輸設備控制系統如圖1 所示,主要由對講機、無線通信網絡、信號主機、本安電源及控制裝置和絞車開關組成。礦用車輛作業人員通過對講機打點,遠距離與在控制室值班的絞車司機通信,絞車司機根據得到的指令操作絞車,實現運輸系統的前進、停止、后退的工作狀態的控制,滿足現場運輸需要。該系統缺少一套顯示及語音提示裝置(以下簡稱“打點裝置”),輔助絞車司機在控制室及時掌握礦用無極繩運輸設備當前的運輸狀態,通過操作指令控制設備運行;另外,如遇到急停工況指令,系統自動響應,及時停止設備,避免造成更大損失和安全事故。
該打點裝置是一個應用單片機技術解決煤炭行業工程問題的典型案例,通過該案例使學生了解利用單片機研發測控系統基本開發流程,掌握元器件選型和電路設計的基本知識,掌握 Proteus、Keil、Altium Designer 等工具軟件的使用方法,培養學生結合單片機相關模塊的使用方法、應用單片機C 語言編寫專用軟件的能力。

圖1 現有礦用無極繩運輸設備的控制系統
單片機應用開發主要工作就是進行電路原理圖和PCB 設計以及程序編制,因此需要安裝Altium Designer 6.0 和Keil Vision 4。本實驗案例基于STC15 系列國產單片機設計,因此需要安裝STC-ISP 在線編程軟件。本案例參考文獻[12—13]設計了仿真實驗模塊,便于學生利用課余時間學習單片機相關知識點,因此需要安裝Proteus 7.8。考慮到大部分學生備有筆記本,因此需要安裝USB 轉串口驅動軟件CH341SER。為了最大化提高學生的參與程度,需要配置面包板、不同長度的連接線、12DVC 和5DVC 雙路輸出的開關電源;此外還需一臺筆記本電腦、USB 轉串口線、萬用表以及螺絲刀等工具。
1)功能需求分析。
本實驗案例要求學生綜合應用單片機中斷、定時器、PCA、人機接口、串口等知識點,采用模塊化設計理念,開發礦用無極繩運輸設備控制系統的打點裝置,能夠根據基站轉發來打點控制信息(前進、后退、停車、急停),本裝置顯示前進、后退、停車、急停的信息狀態,并進行語音提示,屏幕顯示的前進、后退、停車用來提示絞車司機手動操作礦用無極繩絞車綜合保護裝置主機上的相關按鈕實現正、反向運行,而“急停”狀態下,則本裝置直接將急停信號送給礦用無極繩絞車綜合保護裝置主機,自動實現急停控制。
本實驗案例要求學生分析設計任務要求,合理設計方案,完成元器件選型、硬件電路和軟件程序的設計,并能夠采用Proteus 進行相關模塊的仿真,采用Keil Vision 4 進行程序的編制,采用Altium Designer 6.0進行電路原理圖和PCB 的設計。每個模塊要求學生依據設計的電路原理圖,在面包板上搭建電路,燒寫程序,實現預期的功能。
2)總體方案設計。
基站輸出打點信號如下:一直為低電平表示沒有打點要求,200 Hz、500 ms 的脈沖信號表示急停,300 Hz、500 ms 的脈沖信號表示停止,400 Hz、500 ms 脈沖信號表示前進,600 Hz、500 ms 脈沖信號表示后退。
本裝置總體方案如圖2 所示,以抗擾能力強的STC 單片機為核心開發裝置。基站控制信號輸入至STC 單片機,利用STC 單片機PCA 模塊的脈沖捕獲功能,配合定時器模塊實現對規定時間內的平均頻率進行計算,實現控制信號類別的判斷;擴展2 個16×16點陣模塊,實現前進、后退、停車、急停四種控制信號類別的高亮度顯示;擴展語音模塊,實現控制信號類別的語音提示;擴展繼電器輸出模塊,輸出急停節點至礦用無極繩絞車綜合保護裝置主機,實現自動急停;考慮系統功耗較大,采用12DVC 本安電源供電,設計電源模塊,將12DVC 轉變為5DVC,給單片機及各模塊供電。

圖2 總體方案
如表1 所示,以STC15F2K60S2 國產單片機為核心開發本裝置,選用德飛萊16×16 點陣屏實現高亮度、大屏幕顯示,選用MP3-FLASH-16P 語音模塊實現前進、后退、停止、急停語音提示,選用G5V-1 繼電器控制播報語音的選擇以及急停節點的輸出,選用VRB1205ZP-6W 電源模塊,選用帶燈自鎖按鈕開關實現電源通斷控制及指示。裝置硬件電路由單片機最小系統,繼電器驅動、語音、急停輸出電路,顯示接口電路和電源模塊四大部分組成。

表1 主要元器件選型
1)單片機最小系統。
如圖3 所示,單片機最小系統由STC15F2K60S2單片機、MAX232 串口芯片、DB9 插接件以及多個電容組成,實現在線編程功能。利用STC-ISP 在線編程軟件和一條串口線就可以將程序下載到單片機里,便于調試。

圖3 STC 單片機最小系統電路圖
2)繼電器驅動、語音和急停輸出電路。
如圖4 所示,繼電器驅動、語音和急停輸出電路主要由7 通道達林管驅動芯片ULN2003、5 個G5V-1型繼電器、MP3-FLASH-16P 語音模塊組成。G5V-1繼電器額定驅動電流30 mA,STC 單片機I/O 口最大驅動電流20 mA,因此采用達林管驅動芯片ULN2003實現對單片機I/O 口驅動電流的放大,最大可達150 mA。ULN2003 的輸入接單片機的P2.7、P2.3、P2.2、P2.0和P4.4,當單片機I/O 口輸出為高電平時,ULN2003對于I/O 輸出低電平,此時對應繼電器通電,常開節點閉合,分別用來控制急停節點的輸出,以及急停、停止、前進、后退提示語音段的播放控制。
3)顯示接口電路。
采用兩塊德飛萊16×16 點陣屏級聯的方式實現兩個漢字的顯示,供電電源為5 V,接口電路如圖3 所示。GND 引腳連接電源,P0.0、P0.1、P0.2、P0.3 分別連接A、B、C、D,用于控制16 行,SCK 引腳連接P2.5,LAT 引腳連接P2.6,R1 引腳信號連接至P2.4,G1 引腳連接至P0.4,OE 引腳接P2.1。
4)電源模塊。
如圖5 所示,電源模塊核心為金升陽VRB1205ZP-6W模塊,實現將12VDC 轉變為5VDC;U2 為插接件,用于連接帶燈自鎖按鈕開關,實現電源通斷控制及指示;U1 也為插接件,用于連接外部12VDC 輸入電源和基站脈沖信號。
單片機C 語言較匯編語言更容易掌握,因此建議實驗時采用C語言編寫軟件源程序。在Keil 編程平臺下編寫、調試、編譯等,將生成的.hex 文件通過STC-ISP 在線編程方式加載到STC 單片機。編寫軟件時,要求學生首先設計軟件主程序流程圖,設計出各模塊的流程圖,然后編寫軟件程序,逐步調試成功,最后形成總程序。

圖4 繼電器驅動電路、語音電路及急停電路

圖5 電源模塊
如圖6 所示,軟件采用STC 單片機CCP/PCA 模塊(工作于捕獲模式,輸入端為CCP1)實現對單個脈沖周期的測量,進而得到單個的脈沖頻率,并存到一個數組中。定義變量Capture1,若Capture1=0,則表示某個脈沖開始計時;若Capture1=1,則表示該脈沖計時結束。單個脈沖周期的測量原理如圖7 所示。當單片機檢測到輸入脈沖上升沿時,進入中斷處理程序;如果是第一個脈沖上升沿,則啟動CCP1 計數器;如果是第二個脈沖上升沿,則表示第一個脈沖結束了,此時讀取CCP1 計數器的數值,依據設定的計數頻率,換算為脈沖周期T1 及脈沖頻率,根據該方法可測量后續脈沖周期T2、T3 等。為了提高準確性,軟件對500 ms內的脈沖平均頻率進行計算。因此,在檢測到第一個脈沖上升沿時,還需啟動定時器。定時器中斷處理程序如圖8 所示,當定時器定時時間達到500 ms 時,對脈沖頻率記錄數值取平均值,得到平均脈沖頻率,進而根據平均脈沖頻率給顯示標志DisplayFlag 賦不同的數值,給單片機的P2.7、P2.3、P2.2、P2.0 和P4.4賦高電平或低電平,實現語音和急停控制。如圖9 所示,在主程序中,首先進行串口、定時器、CCP/PCA模塊的初始化,并開總中斷;然后,依據顯示標志DisplayFlag 的值,顯示對應的提示內容。

圖6 脈沖捕捉中斷流程圖

圖7 脈沖頻率檢測原理示意圖

圖8 定時器中斷處理流程圖

圖9 主程序流程圖
在案例實施過程中,指導教師可以將案例劃分成不同模塊[14],每個模塊就是一個小實驗。逐步完成各個模塊,最后匯合在一起就完成了整個案例。本工程案例涉及單片機課程教學目標的存儲器、中斷系統、定時器、PCA 模塊、按鍵、繼電器、相關工具軟件等多個知識點,既可以應用到課內實驗教學,也可以用到課外獨立實驗教學。根據實際情況,本案例的課時可以設置為8 學時。教學過程中,將理論教學與實驗教學穿插進行,以便提高教學效果。
案例的任務模塊、課時分配和分值如表2 所示,分成單片機驅動繼電器模塊、STC 單片機最小系統、脈沖頻率檢測模塊、顯示模塊及語音模塊和各模塊集成五大任務。基于模擬仿真和實際實驗相結合的思路,提出了學生能夠基于Proteus 仿真、繪制電路原理圖及PCB、基于面包板搭建電路驗證、基于Keil 編寫相關程序的四大要求。學生掌握Proteus 仿真軟件的使用方法,課后在自己電腦上安裝該軟件,結合教材就可以自學單片機相關知識。電路原理圖及PCB 的繪制、基于Keil 編寫相關程序是開發測控系統必備技能。利用單片機開發測控系統,需要學生在非常了解硬件電路的基礎上進行編程;在面包板搭建電路驗證相關任務,能夠使學生更深刻地理解相關硬件電路并開發軟件。因此,只要很好地完成上述四大要求,學生就掌握了利用單片機開發測控系統的基本技能。
考慮到Proteus 軟件目前不支持國產STC 單片機,因此只對單片機驅動繼電器仿真實驗采用Proteus。應用單片機開發測控系統,如果所有的都從底層開發,即利用最基本的芯片開發相關硬件和軟件,難度大、周期長;基于系統集成的理念,盡量利用成熟模塊,進行二次開發,實現系統相關功能,節約時間,降低開發難度。本案例在顯示模塊和語音模塊就是采用了系統集成的思路,選用德飛萊16×16 點陣屏、MP3-FLASH-16P 語音模塊進行二次開發,實現高亮度、大屏幕顯示以及“前進、后退、停止、急停”語音提示。在這兩個模塊設計和實現的過程中,開課前提前把說明書發給學生自學,結合功能需求,提出實驗方案。在本案例實施過程中,應向學生強調系統集成的研發理念,這對于以后從事工程應用幫助較大。
此外,在程序編寫的過程中,要求學生合理添加程序解釋,并設計出主程序、子程序的流程圖。
通過從不同角度進行評價與考核,能夠幫助教師了解學生對相關知識的掌握情況,便于及時調整教學進度和方法[14]。因此在教學評價與考核方面,不僅對每個任務實驗結果、實驗過程中每個環節進行評價與考核,而且對整個系統完成情況和功能進行評價與考核,按照完成時間、功能實現情況以及完成質量綜合打分,考核結果為優秀、良好、中等、及格和不及格5 個級別。總評成績由實驗環節成績和實驗報告成績兩部分組成,各100 分。若將本案例應用到課內實驗教學,可以規定理論課考試成績與總評成績的百分比占比,換算為課程成績;若將本案例應用到課外獨立實驗教學,總評成績即為課程成績。

表2 案例任務分解、課時分配和分值
虛實結合、面向行業工程應用的單片機實驗案例匯聚單片機相關知識點及相關工具軟件的使用,案例設計完成后,應用于我校機械系的單片機課程教學,較采用成熟開發板的演示性和觀摩性實驗教學方式,能夠更好調動學生積極性,提高學生參與程度,鍛煉其動手實踐能力。通過案例與理論課學習,學生懂得如何使用單片機,為將來在工作過程中利用單片機解決實際問題打下堅實基礎。單片機課程案例式教學方法可以應用于課內、外實驗教學,可以推廣應用到測控、電氣等其他專業。