葉希梅
(武夷學(xué)院 機(jī)電工程學(xué)院,福建 武夷山 354300)
嵌入式系統(tǒng)在各行各業(yè)中廣泛應(yīng)用,與之對應(yīng)的教學(xué)實(shí)驗(yàn)內(nèi)容、方法、設(shè)備等研究工作也開展的非常激烈。漆強(qiáng)[1]介紹了嵌入式口袋實(shí)驗(yàn)室的設(shè)計(jì)過程,李杜蕾等[2]針對傳統(tǒng)教學(xué)中存在專業(yè)課實(shí)驗(yàn)時間遲、與工程實(shí)踐脫節(jié)等問題,然后以物聯(lián)網(wǎng)智能家居系統(tǒng)為例開展嵌入式系統(tǒng)教學(xué)與實(shí)驗(yàn)的改革,曹俊武等[3]為了理順嵌入式系統(tǒng)教學(xué)、實(shí)驗(yàn)、實(shí)踐等關(guān)系,創(chuàng)建了嵌入式實(shí)驗(yàn)創(chuàng)新平臺,整合嵌入式系統(tǒng)基礎(chǔ)實(shí)驗(yàn)、操作系統(tǒng)實(shí)驗(yàn)、工程訓(xùn)練項(xiàng)目等內(nèi)容,郭國法等[4]引入CDIO工程教育理念開展嵌入式系統(tǒng)教學(xué)與實(shí)驗(yàn),使嵌入式系統(tǒng)的實(shí)驗(yàn)項(xiàng)目與工程應(yīng)用結(jié)合度更高。鄭寧漢等[5]討論了如何設(shè)計(jì)一個適應(yīng)現(xiàn)代學(xué)生的實(shí)驗(yàn),主要從完整性、開放性、可升級性、靈活性角度進(jìn)行設(shè)計(jì),較好的激發(fā)學(xué)生學(xué)習(xí)興趣。綜上所述,目前的嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)研究主要以體系、方法、系統(tǒng)方面的研究居多,而具體實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)方面的研究較少。本文以常見的IO口輸出控制實(shí)驗(yàn)設(shè)計(jì)為例,分析實(shí)驗(yàn)內(nèi)容設(shè)計(jì)如何將理論知識與工程應(yīng)用相結(jié)合。
常見的IO口輸出控制實(shí)驗(yàn)有LED燈控制、蜂鳴器、流水燈等,其中流水燈實(shí)驗(yàn)電路如圖1所示。實(shí)驗(yàn)程序通常是用程序控制LED從左到右逐個點(diǎn)亮或多個燈點(diǎn)亮。對應(yīng)的實(shí)驗(yàn)程序簡單明了、直觀易懂,如圖2所示。該實(shí)驗(yàn)內(nèi)容簡單,基本實(shí)現(xiàn)了IO口控制方式的驗(yàn)證。學(xué)生實(shí)驗(yàn)時可操作和調(diào)整的內(nèi)容少、實(shí)驗(yàn)過程簡單、實(shí)驗(yàn)不充實(shí)。因此,有必要重新設(shè)計(jì)實(shí)驗(yàn)程序,引導(dǎo)學(xué)生深入理解IO口的工作原理和控制方法,以便更好的進(jìn)行后續(xù)學(xué)習(xí)。
圖1 單片機(jī)流水燈實(shí)驗(yàn)電路Figure 1 Experimental Circuit of Single Chip Microcomputer Pipeline Lamp
圖2 兩種LED流水燈控制程序Figure 2 Two control crocedures of LED Pipeline Lamp
上述實(shí)驗(yàn)程序的數(shù)據(jù)以常數(shù)的方式給定,雖然實(shí)現(xiàn)了所需的功能,但卻很難與其它程序共享程序。若將實(shí)驗(yàn)程序的各種數(shù)據(jù)參數(shù)化,就可以更好進(jìn)行程序共用。我們可以把LED顯示的數(shù)據(jù)和LED的亮暗時間當(dāng)作參數(shù),把LED控制功能用函數(shù)包裝起來。實(shí)驗(yàn)時,只要用不同的參數(shù)代入?yún)?shù)化IO控制程序,就可以得到LED顯示內(nèi)容與亮暗時間各不相同的實(shí)驗(yàn)現(xiàn)象。圖3左側(cè)程序?yàn)閰?shù)化IO口輸出控制基本程序,右側(cè)程序調(diào)用左側(cè)基本程序,代入合適的數(shù)據(jù),實(shí)現(xiàn)了流水燈功能。通過調(diào)整時間,還可以給流水燈的每一階段不同的時間。
圖3 LED控制功能函數(shù)與流水燈應(yīng)用程序Figure 3 LED Control Function and Pipeline Lamp Application Program
參數(shù)化的IO控制函數(shù)讓簡單的LED電路有更加豐富的功能。若將上文中的LED控制功能函數(shù)的參數(shù)以變量形式代入,再添加一些輔助程序,則可以設(shè)計(jì)出更加有意思的功能程序,如LED搖搖棒,LED點(diǎn)陣顯示器,閃光莫爾斯碼發(fā)送器等。下面以閃光莫爾斯碼發(fā)送器設(shè)計(jì)為例說明IO口輸出控制函數(shù)的數(shù)據(jù)化實(shí)現(xiàn)過程。
在設(shè)計(jì)閃光莫爾斯碼發(fā)送器時,首先需要了解莫爾斯碼的特點(diǎn)和發(fā)送方法,然后設(shè)計(jì)基本莫爾斯碼發(fā)生程序和莫爾斯編碼表。例如ABC的莫爾斯碼分別是:點(diǎn)劃,劃點(diǎn)點(diǎn)點(diǎn),劃點(diǎn)劃點(diǎn)。用16位數(shù)的高8位表示碼數(shù),低8位表示編碼內(nèi)容(0為點(diǎn),1為劃),ABC的編碼分別為0x202,0x401,0x405。根據(jù)編碼規(guī)則和莫爾斯碼發(fā)送時間規(guī)率,設(shè)計(jì)出莫爾斯碼發(fā)生器程序如圖4所示。下面的函數(shù)以參數(shù)化IO口輸出控制函數(shù)為基礎(chǔ),根據(jù)莫爾斯碼的信息,將LED的亮暗的時間信息用變量代入,實(shí)現(xiàn)了莫爾碼的輸出功能。
圖4 莫爾斯碼發(fā)生器程序Figure 4 Morse code generator program
原有IO口輸出控制實(shí)驗(yàn)基本實(shí)現(xiàn)了IO口功能的演示與訓(xùn)練,實(shí)驗(yàn)數(shù)據(jù)方面幾乎沒有什么可記錄的內(nèi)容,而實(shí)驗(yàn)數(shù)據(jù)的分析對于理解實(shí)驗(yàn)原理、靈活應(yīng)用實(shí)驗(yàn)原理都有很重要的作用。加入?yún)?shù)化和數(shù)據(jù)化之后,IO口輸出控制實(shí)驗(yàn)的數(shù)據(jù)包含了實(shí)驗(yàn)現(xiàn)象、LED亮暗時間,LED亮暗情況、LED控制數(shù)據(jù)、不同時間與數(shù)據(jù)的實(shí)驗(yàn)現(xiàn)象差異等內(nèi)容,數(shù)據(jù)記錄表格如表1,2所示。通過這些表格,建立起數(shù)據(jù)與實(shí)驗(yàn)現(xiàn)象的對應(yīng)關(guān)系,分析實(shí)驗(yàn)數(shù)據(jù)與實(shí)驗(yàn)現(xiàn)象之間的對應(yīng)關(guān)系和不同行數(shù)據(jù)對應(yīng)的實(shí)驗(yàn)現(xiàn)象差異,可以更好的理解IO口輸出控制功能和應(yīng)用。
表1 IO口輸出參數(shù)化控制實(shí)驗(yàn)程序測試Table 1 Test of Parametric Control Experiment Program for IO Port Output
表2 莫爾斯碼發(fā)送程序功能測試Table 2 Functional Test of Morse Code Sender
通過對數(shù)據(jù)和實(shí)驗(yàn)現(xiàn)象的分析,較好的實(shí)現(xiàn)了IO口功能與結(jié)構(gòu)化程序設(shè)計(jì)知識的融會貫通。
本文針對常見的IO輸出控制實(shí)驗(yàn)存在的實(shí)驗(yàn)過程簡單、不充實(shí)、不方便調(diào)整等問題,設(shè)計(jì)了參數(shù)化IO輸出控制程序和數(shù)據(jù)化IO輸出控制程序,在原先驗(yàn)證性實(shí)驗(yàn)程的基礎(chǔ)上加入有效的實(shí)驗(yàn)量化數(shù)據(jù)和設(shè)計(jì)性實(shí)驗(yàn)內(nèi)容,將程序設(shè)計(jì)基礎(chǔ)知識與硬件電路進(jìn)行有效結(jié)合。該實(shí)驗(yàn)設(shè)計(jì)豐富了實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)現(xiàn)象。經(jīng)過3輪實(shí)驗(yàn)教學(xué),學(xué)生實(shí)驗(yàn)后對IO口控制功能的應(yīng)用更加熟練,學(xué)習(xí)興趣也有較大提高。