張安東,林開司,張 露
(銅陵職業技術學院,安徽 銅陵244000)
“單片機應用技術”課程是應用電子技術、電子信息工程技術等相關專業的核心課程,幾乎所有高校電子信息類專業都開設了該課程。因為“單片機”廣泛應用于各生產、生活領域,如工業生產、家用電氣、消費電子等等。正由于“單片機”在應用電子技術、電子信息工程技術等專業中的核心地位以及它的實踐性,很多學校在開設“單片機應用技術”課程后又開設了一門后續課程,叫“單片機課程設計”。這是一門集單片機、電子技術、電子測量等綜合性的課程,作者所在的學校就開設了該課程。
作者所在的學校“單片機課程設計”這門課程采用項目教學法。系統設計中的硬件部分可以通過在萬能板上焊接或者制作印制電路板(PCB板)等獲得真實硬件,在萬能板上焊接電路所耗費的課時較多,受課時數的限制不能所有的項目都采取此種方法。制作PCB板的設備一般高校都不具備,如果代工生產一般要批量化,很難針對每個同學都能定制他們自己設計的PCB,因為受教學成本的限制。所以采用Proteus軟件進行硬件仿真即可達到了教學效果,又能克服上述困難。
串口通信是單片機的重要內容,教學內容一般包括單片機間的通信,單片機與上位機的通信。單片機與上位機通信的教學中,上位機一般采用串口調試助手,該軟件是通用的上位機串口通信軟件。在實際的工程應用中,針對不同應用場景,上位機與單片機間的通信信息,串口調試助手不能全部反映,此時必須定制上位機通信軟件。在某些情況下,要求上位機對單片機采集的各種信息進行遠程實時監控,此時也需要上位機通信軟件。VB6.0是基于對象的程序設計語言,主要開發基于Windows的應用程序,應用十分廣泛,是一個成熟穩定的開發工具,使用VB6.0作為上位機軟件開發工具是個很好的選擇。
對于一些理論知識較扎實、實踐能力較強的學生設計的教學項目要體現一定的難度,針對串口通信,設計的項目包括單片機的軟硬件設計,還包括上位機通信軟件的設計。設計的項目更貼近工程實踐,使得學生對單片機于上位機通信的理解更深刻,且進一步理解單片機工程開發的步驟與提高解決實際問題的能力。下面以具體任務闡述Proteus和VB6.0聯合仿真在單片機課程設計教學中的應用。
設計一個對水塔水位進行檢測與控制的系統,如圖1所示,在水塔不同高度安裝3根金屬棒,感知水位變化。其中,B棒處于下限水位,C棒處于水位上限水位,A棒接地,B、C通過電阻接5V電源。同時該系統通過串口與上位機通信,上位機軟件能實時顯示水位高度。

圖1 水位控制示意圖
教師根據任務要求分析如何進行系統設計,首先系統包括單片機控制部分和上位機軟件部分,這里的系統設計主要是單片機硬件系統設計。系統采用51單片機為主控芯片,系統包括傳感器水位檢測電路,由于是采用仿真,所以使用撥碼開關模擬液位傳感器檢測水位高度,模擬檢查值通過LED數碼管顯示,所以系統還包括數碼管顯示電路;系統有啟動和停止電機加水及單片機與上位機通信的功能,所以系統還包括繼電器驅動和電機控制電路及串口通信電路。為了對上下水位和電機啟停有指示還包括LED指示電路。系統框圖如圖2所示。

圖2 系統框圖
教學過程中,教師提供設計方案,具體實現電路由學生自己根據自身的知識與經驗自行設計。
系統硬件包括單片機最小系統,最小系統包括時鐘和復位電路構成。數碼管顯示模擬水位值,使用3位共陽極數碼管構成顯示電路,對應數碼管的驅動使用OC門驅動芯片74HC07,對繼電器的驅動也采用74HC07。實際單片機與上位機通信要進行電平轉換,如果上位機使用RS232串口,由于單片機是TTL電平,所以要使用電平轉換芯片,將TTL電平轉成RS232串口電平。為了更接近工程實踐,電路中設計電平轉換電路,轉換芯片為MAX232。使用Proteus中的虛擬元件COMPIM實現單片機與上位機通信,COMPIM是把仿真電路中的數字量映射到計算機的物理端口。單片機的TXD和RXD與COMPIM相連接,就可以直接操作映射到物理端口。需要注意的是,TXD和RXD兩根信號線是直通方式連接,而非交叉。學生根據教師講解后自行設Proteus仿真電路圖,整體電路如圖3所示。

圖3 數碼管顯示電路

圖4 繼電器控制電機電路

圖5 單片機最小系統及驅動和水位模擬電路

圖6 單片機與上位機通信電路
系統軟件設計包括單片機驅動程序設計和基于VB6.0的上位機通信軟件設計。單片機驅動程序主要包括數碼管顯示程序、撥碼開關水位模擬程序、電機驅動程序、水位報警程序及單片機與上位機通信程序等。上位機通信軟件主要包括軟件界面設計及對數據的接收與處理。
單片機驅動程序這里主要給出主程序流程圖,流程圖如圖5所示。教學過程中,教師和學生共同設計程序流程圖,包括主程序流程圖和各功能函數的流程圖,學生在給出流程圖的基礎上自行設計程序。當然這里的流程圖只是參考,學生自己也可自行設計程序,能達到功能要求即可,不做限制。

圖7 主程序流程圖
利用VB6.0中的MSComm控件實現上位機與單片機之間的通信。波特率設置為19200,數據位8位,沒有奇偶校驗位,1位停止位。初始化代碼如下所示:
MSComm1.CommPort=3’通信端口位
‘COM3
MSComm1.Settings="9600,n,8,1"’設置通信格式
MSComm1.InputMode=
comInputModeText
'接收文本型數據,如果設置為1則以二進制的形式取回傳入的數據.
MSComm1.PortOpen=True’打開端口
MSComm1.InputLen=1
MSComm1.SThreshold=1
利用定時器控件的時間間隔屬性(Interval屬性),每隔一定時間執行一次Timer事件中的相應代碼,接收一次單片機發來是數據,實現對水位的實時監測,這里設置位每500ms接收一次串口數據。
波特率是在單片機時鐘頻率為11.0592MHz時計算得到的,所以設置單片機和COMPIM的時鐘頻率為11.0592MHz。使用虛擬串口軟件創建一對虛擬串口,這里為COM3和COM4口,波特率設為19200。使用開關模擬液位傳感器檢測到的水位,最低水位設為3,最高水位設為100,模擬的實時水位為撥碼開關的值乘以100/255。模擬的水位值在數碼管上顯示,同時通過串口發送給上位機,上位機能檢測到水位控制的情況,仿真結果如圖所示。

圖8 上位機運行結果
在實際的教學過程中,使用Proteus可以使每個學生都能獨立設計基于單片機的硬件電路,且對于同一問題不同的學生可能采用不同的方法,因此可以提高學生的硬件電路設計能力和創新能力。設計完硬件電路之后每個學生設計針對該硬件的驅動程序,使學生對單片機軟硬件的結合理解更深。為了某些情況下實現遠程監測,可以使用串口將采集的信息發送給上位機,因此要編寫上位機程序。由于VB6.0上手容易,所以在實施任務之前要求學生利用課余時間自學VB6.0編程軟件,教師指導學生學習與本系統開發有關的VB知識,在學生自學的過程中,提高學生的自學能力,實踐證明在這過程中學生的自學能力和學習自覺性都得到很大的提高。并且當學生通過自己的努力完成教學任務后,有了很大的成就感,最后使得一部分學生,在仿真的基礎上自己設計PCB然后在網上找商家打樣,最后做成實際的硬件系統。所以通過Proteus和VB6.0聯合仿真在提高一定難度的基礎上