張安東,林開司,張 露
(銅陵職業(yè)技術(shù)學院,安徽 銅陵244000)
“單片機應(yīng)用技術(shù)”課程是應(yīng)用電子技術(shù)、電子信息工程技術(shù)等相關(guān)專業(yè)的核心課程,幾乎所有高校電子信息類專業(yè)都開設(shè)了該課程。因為“單片機”廣泛應(yīng)用于各生產(chǎn)、生活領(lǐng)域,如工業(yè)生產(chǎn)、家用電氣、消費電子等等。正由于“單片機”在應(yīng)用電子技術(shù)、電子信息工程技術(shù)等專業(yè)中的核心地位以及它的實踐性,很多學校在開設(shè)“單片機應(yīng)用技術(shù)”課程后又開設(shè)了一門后續(xù)課程,叫“單片機課程設(shè)計”。這是一門集單片機、電子技術(shù)、電子測量等綜合性的課程,作者所在的學校就開設(shè)了該課程。
作者所在的學校“單片機課程設(shè)計”這門課程采用項目教學法。系統(tǒng)設(shè)計中的硬件部分可以通過在萬能板上焊接或者制作印制電路板(PCB板)等獲得真實硬件,在萬能板上焊接電路所耗費的課時較多,受課時數(shù)的限制不能所有的項目都采取此種方法。制作PCB板的設(shè)備一般高校都不具備,如果代工生產(chǎn)一般要批量化,很難針對每個同學都能定制他們自己設(shè)計的PCB,因為受教學成本的限制。所以采用Proteus軟件進行硬件仿真即可達到了教學效果,又能克服上述困難。
串口通信是單片機的重要內(nèi)容,教學內(nèi)容一般包括單片機間的通信,單片機與上位機的通信。單片機與上位機通信的教學中,上位機一般采用串口調(diào)試助手,該軟件是通用的上位機串口通信軟件。在實際的工程應(yīng)用中,針對不同應(yīng)用場景,上位機與單片機間的通信信息,串口調(diào)試助手不能全部反映,此時必須定制上位機通信軟件。在某些情況下,要求上位機對單片機采集的各種信息進行遠程實時監(jiān)控,此時也需要上位機通信軟件。VB6.0是基于對象的程序設(shè)計語言,主要開發(fā)基于Windows的應(yīng)用程序,應(yīng)用十分廣泛,是一個成熟穩(wěn)定的開發(fā)工具,使用VB6.0作為上位機軟件開發(fā)工具是個很好的選擇。
對于一些理論知識較扎實、實踐能力較強的學生設(shè)計的教學項目要體現(xiàn)一定的難度,針對串口通信,設(shè)計的項目包括單片機的軟硬件設(shè)計,還包括上位機通信軟件的設(shè)計。設(shè)計的項目更貼近工程實踐,使得學生對單片機于上位機通信的理解更深刻,且進一步理解單片機工程開發(fā)的步驟與提高解決實際問題的能力。下面以具體任務(wù)闡述Proteus和VB6.0聯(lián)合仿真在單片機課程設(shè)計教學中的應(yīng)用。
設(shè)計一個對水塔水位進行檢測與控制的系統(tǒng),如圖1所示,在水塔不同高度安裝3根金屬棒,感知水位變化。其中,B棒處于下限水位,C棒處于水位上限水位,A棒接地,B、C通過電阻接5V電源。同時該系統(tǒng)通過串口與上位機通信,上位機軟件能實時顯示水位高度。
圖1 水位控制示意圖
教師根據(jù)任務(wù)要求分析如何進行系統(tǒng)設(shè)計,首先系統(tǒng)包括單片機控制部分和上位機軟件部分,這里的系統(tǒng)設(shè)計主要是單片機硬件系統(tǒng)設(shè)計。系統(tǒng)采用51單片機為主控芯片,系統(tǒng)包括傳感器水位檢測電路,由于是采用仿真,所以使用撥碼開關(guān)模擬液位傳感器檢測水位高度,模擬檢查值通過LED數(shù)碼管顯示,所以系統(tǒng)還包括數(shù)碼管顯示電路;系統(tǒng)有啟動和停止電機加水及單片機與上位機通信的功能,所以系統(tǒng)還包括繼電器驅(qū)動和電機控制電路及串口通信電路。為了對上下水位和電機啟停有指示還包括LED指示電路。系統(tǒng)框圖如圖2所示。
圖2 系統(tǒng)框圖
教學過程中,教師提供設(shè)計方案,具體實現(xiàn)電路由學生自己根據(jù)自身的知識與經(jīng)驗自行設(shè)計。
系統(tǒng)硬件包括單片機最小系統(tǒng),最小系統(tǒng)包括時鐘和復位電路構(gòu)成。數(shù)碼管顯示模擬水位值,使用3位共陽極數(shù)碼管構(gòu)成顯示電路,對應(yīng)數(shù)碼管的驅(qū)動使用OC門驅(qū)動芯片74HC07,對繼電器的驅(qū)動也采用74HC07。實際單片機與上位機通信要進行電平轉(zhuǎn)換,如果上位機使用RS232串口,由于單片機是TTL電平,所以要使用電平轉(zhuǎn)換芯片,將TTL電平轉(zhuǎn)成RS232串口電平。為了更接近工程實踐,電路中設(shè)計電平轉(zhuǎn)換電路,轉(zhuǎn)換芯片為MAX232。使用Proteus中的虛擬元件COMPIM實現(xiàn)單片機與上位機通信,COMPIM是把仿真電路中的數(shù)字量映射到計算機的物理端口。單片機的TXD和RXD與COMPIM相連接,就可以直接操作映射到物理端口。需要注意的是,TXD和RXD兩根信號線是直通方式連接,而非交叉。學生根據(jù)教師講解后自行設(shè)Proteus仿真電路圖,整體電路如圖3所示。
圖3 數(shù)碼管顯示電路
圖4 繼電器控制電機電路
圖5 單片機最小系統(tǒng)及驅(qū)動和水位模擬電路
圖6 單片機與上位機通信電路
系統(tǒng)軟件設(shè)計包括單片機驅(qū)動程序設(shè)計和基于VB6.0的上位機通信軟件設(shè)計。單片機驅(qū)動程序主要包括數(shù)碼管顯示程序、撥碼開關(guān)水位模擬程序、電機驅(qū)動程序、水位報警程序及單片機與上位機通信程序等。上位機通信軟件主要包括軟件界面設(shè)計及對數(shù)據(jù)的接收與處理。
單片機驅(qū)動程序這里主要給出主程序流程圖,流程圖如圖5所示。教學過程中,教師和學生共同設(shè)計程序流程圖,包括主程序流程圖和各功能函數(shù)的流程圖,學生在給出流程圖的基礎(chǔ)上自行設(shè)計程序。當然這里的流程圖只是參考,學生自己也可自行設(shè)計程序,能達到功能要求即可,不做限制。
圖7 主程序流程圖
利用VB6.0中的MSComm控件實現(xiàn)上位機與單片機之間的通信。波特率設(shè)置為19200,數(shù)據(jù)位8位,沒有奇偶校驗位,1位停止位。初始化代碼如下所示:
MSComm1.CommPort=3’通信端口位
‘COM3
MSComm1.Settings="9600,n,8,1"’設(shè)置通信格式
MSComm1.InputMode=
comInputModeText
'接收文本型數(shù)據(jù),如果設(shè)置為1則以二進制的形式取回傳入的數(shù)據(jù).
MSComm1.PortOpen=True’打開端口
MSComm1.InputLen=1
MSComm1.SThreshold=1
利用定時器控件的時間間隔屬性(Interval屬性),每隔一定時間執(zhí)行一次Timer事件中的相應(yīng)代碼,接收一次單片機發(fā)來是數(shù)據(jù),實現(xiàn)對水位的實時監(jiān)測,這里設(shè)置位每500ms接收一次串口數(shù)據(jù)。
波特率是在單片機時鐘頻率為11.0592MHz時計算得到的,所以設(shè)置單片機和COMPIM的時鐘頻率為11.0592MHz。使用虛擬串口軟件創(chuàng)建一對虛擬串口,這里為COM3和COM4口,波特率設(shè)為19200。使用開關(guān)模擬液位傳感器檢測到的水位,最低水位設(shè)為3,最高水位設(shè)為100,模擬的實時水位為撥碼開關(guān)的值乘以100/255。模擬的水位值在數(shù)碼管上顯示,同時通過串口發(fā)送給上位機,上位機能檢測到水位控制的情況,仿真結(jié)果如圖所示。
圖8 上位機運行結(jié)果
在實際的教學過程中,使用Proteus可以使每個學生都能獨立設(shè)計基于單片機的硬件電路,且對于同一問題不同的學生可能采用不同的方法,因此可以提高學生的硬件電路設(shè)計能力和創(chuàng)新能力。設(shè)計完硬件電路之后每個學生設(shè)計針對該硬件的驅(qū)動程序,使學生對單片機軟硬件的結(jié)合理解更深。為了某些情況下實現(xiàn)遠程監(jiān)測,可以使用串口將采集的信息發(fā)送給上位機,因此要編寫上位機程序。由于VB6.0上手容易,所以在實施任務(wù)之前要求學生利用課余時間自學VB6.0編程軟件,教師指導學生學習與本系統(tǒng)開發(fā)有關(guān)的VB知識,在學生自學的過程中,提高學生的自學能力,實踐證明在這過程中學生的自學能力和學習自覺性都得到很大的提高。并且當學生通過自己的努力完成教學任務(wù)后,有了很大的成就感,最后使得一部分學生,在仿真的基礎(chǔ)上自己設(shè)計PCB然后在網(wǎng)上找商家打樣,最后做成實際的硬件系統(tǒng)。所以通過Proteus和VB6.0聯(lián)合仿真在提高一定難度的基礎(chǔ)上