葉希梅
(武夷學院 機電工程學院,福建 武夷山 354300)
嵌入式系統在各行各業中廣泛應用,與之對應的教學實驗內容、方法、設備等研究工作也開展的非常激烈。漆強[1]介紹了嵌入式口袋實驗室的設計過程,李杜蕾等[2]針對傳統教學中存在專業課實驗時間遲、與工程實踐脫節等問題,然后以物聯網智能家居系統為例開展嵌入式系統教學與實驗的改革,曹俊武等[3]為了理順嵌入式系統教學、實驗、實踐等關系,創建了嵌入式實驗創新平臺,整合嵌入式系統基礎實驗、操作系統實驗、工程訓練項目等內容,郭國法等[4]引入CDIO工程教育理念開展嵌入式系統教學與實驗,使嵌入式系統的實驗項目與工程應用結合度更高。鄭寧漢等[5]討論了如何設計一個適應現代學生的實驗,主要從完整性、開放性、可升級性、靈活性角度進行設計,較好的激發學生學習興趣。綜上所述,目前的嵌入式系統實驗教學研究主要以體系、方法、系統方面的研究居多,而具體實驗項目設計方面的研究較少。本文以常見的IO口輸出控制實驗設計為例,分析實驗內容設計如何將理論知識與工程應用相結合。
常見的IO口輸出控制實驗有LED燈控制、蜂鳴器、流水燈等,其中流水燈實驗電路如圖1所示。實驗程序通常是用程序控制LED從左到右逐個點亮或多個燈點亮。對應的實驗程序簡單明了、直觀易懂,如圖2所示。該實驗內容簡單,基本實現了IO口控制方式的驗證。學生實驗時可操作和調整的內容少、實驗過程簡單、實驗不充實。因此,有必要重新設計實驗程序,引導學生深入理解IO口的工作原理和控制方法,以便更好的進行后續學習。

圖1 單片機流水燈實驗電路Figure 1 Experimental Circuit of Single Chip Microcomputer Pipeline Lamp

圖2 兩種LED流水燈控制程序Figure 2 Two control crocedures of LED Pipeline Lamp
上述實驗程序的數據以常數的方式給定,雖然實現了所需的功能,但卻很難與其它程序共享程序。若將實驗程序的各種數據參數化,就可以更好進行程序共用。我們可以把LED顯示的數據和LED的亮暗時間當作參數,把LED控制功能用函數包裝起來。實驗時,只要用不同的參數代入參數化IO控制程序,就可以得到LED顯示內容與亮暗時間各不相同的實驗現象。圖3左側程序為參數化IO口輸出控制基本程序,右側程序調用左側基本程序,代入合適的數據,實現了流水燈功能。通過調整時間,還可以給流水燈的每一階段不同的時間。

圖3 LED控制功能函數與流水燈應用程序Figure 3 LED Control Function and Pipeline Lamp Application Program
參數化的IO控制函數讓簡單的LED電路有更加豐富的功能。若將上文中的LED控制功能函數的參數以變量形式代入,再添加一些輔助程序,則可以設計出更加有意思的功能程序,如LED搖搖棒,LED點陣顯示器,閃光莫爾斯碼發送器等。下面以閃光莫爾斯碼發送器設計為例說明IO口輸出控制函數的數據化實現過程。
在設計閃光莫爾斯碼發送器時,首先需要了解莫爾斯碼的特點和發送方法,然后設計基本莫爾斯碼發生程序和莫爾斯編碼表。例如ABC的莫爾斯碼分別是:點劃,劃點點點,劃點劃點。用16位數的高8位表示碼數,低8位表示編碼內容(0為點,1為劃),ABC的編碼分別為0x202,0x401,0x405。根據編碼規則和莫爾斯碼發送時間規率,設計出莫爾斯碼發生器程序如圖4所示。下面的函數以參數化IO口輸出控制函數為基礎,根據莫爾斯碼的信息,將LED的亮暗的時間信息用變量代入,實現了莫爾碼的輸出功能。

圖4 莫爾斯碼發生器程序Figure 4 Morse code generator program
原有IO口輸出控制實驗基本實現了IO口功能的演示與訓練,實驗數據方面幾乎沒有什么可記錄的內容,而實驗數據的分析對于理解實驗原理、靈活應用實驗原理都有很重要的作用。加入參數化和數據化之后,IO口輸出控制實驗的數據包含了實驗現象、LED亮暗時間,LED亮暗情況、LED控制數據、不同時間與數據的實驗現象差異等內容,數據記錄表格如表1,2所示。通過這些表格,建立起數據與實驗現象的對應關系,分析實驗數據與實驗現象之間的對應關系和不同行數據對應的實驗現象差異,可以更好的理解IO口輸出控制功能和應用。

表1 IO口輸出參數化控制實驗程序測試Table 1 Test of Parametric Control Experiment Program for IO Port Output

表2 莫爾斯碼發送程序功能測試Table 2 Functional Test of Morse Code Sender
通過對數據和實驗現象的分析,較好的實現了IO口功能與結構化程序設計知識的融會貫通。
本文針對常見的IO輸出控制實驗存在的實驗過程簡單、不充實、不方便調整等問題,設計了參數化IO輸出控制程序和數據化IO輸出控制程序,在原先驗證性實驗程的基礎上加入有效的實驗量化數據和設計性實驗內容,將程序設計基礎知識與硬件電路進行有效結合。該實驗設計豐富了實驗內容和實驗現象。經過3輪實驗教學,學生實驗后對IO口控制功能的應用更加熟練,學習興趣也有較大提高。