吳葉蘭 范衛(wèi)萍 陳寶花 黃亞楠
北京工商大學計算機與信息工程學院 北京 100048
綜合型課程設計在單片機實踐教學中的應用
吳葉蘭 范衛(wèi)萍 陳寶花 黃亞楠
北京工商大學計算機與信息工程學院 北京 100048
單片機原理及應用是一門實踐性很強的課程,其綜合性課程設計是實踐教學中非常重要的一環(huán)。單片機課程設計能夠加深學生對單片機原理的理解,提高實踐和創(chuàng)新能力。介紹了一種人體反應速度測試儀的單片機課程設計項目,給出了系統(tǒng)工作原理、系統(tǒng)軟硬件設計,分析了相關算法。實驗結果表明,該課程設計能綜合應用單片機知識,激發(fā)學生學習單片機的興趣,提高學生的工程實踐能力。
單片機;課程設計;反應速度測試儀
單片機技術自問世以來,已經(jīng)廣泛應用到工業(yè)自動化控制、自動檢測、家用電器、電力電子等各個領域。單片機原理及應用課程是電類工科專業(yè)的專業(yè)必修課,是一門實踐性很強的課程,可以使學生真正掌握單片機原理并能靈活應用是實踐教學的重點[1-3]。單片機的實踐教學通常分兩個層次,一個層次是與課程相配套的實驗教學,這部分內(nèi)容通常是針對某個具體知識點設計的,多數(shù)是驗證性的;另一個層次是課程設計,其目的是通過綜合性設計將單片機各個知識點貫穿起來,讓學生能夠融會貫通所學的理論知識從而具備綜合應用能力。但以往的單片機課程設計,一般是要求學生編寫一個較大的程序在實驗箱上運行,這種方式雖然能綜合不同的知識點,但不能使學生了解單片機設計從芯片選型、原理圖繪制、PCB制作到軟硬件聯(lián)調的全過程;同時,有的課程設計題目缺乏趣味性、實用性,難以吸引學生興趣。因此,符合學生認知特點、綜合相關知識的單片機課程設計具有十分重要的意義,好的課程設計能激發(fā)學生的學習興趣,培養(yǎng)學生動手能力,使學生的創(chuàng)新能力與實踐能力得到提高。同時,改進教學組織形式,把課程設計環(huán)節(jié)擴展到整個教學過程中,即在單片機課程初期就把課程設計內(nèi)容布置下去,學生在學習過程中有充分的時間進行思考、改進設計方案,并做出最終的實物,取得了較好效果。
在單片機課程設計的實踐教學中,我們選取了多個趣味性、實用性的課程設計,下面通過人體反應速度測試儀實例說明單片機課程設計所包含的設計原理、軟硬件設計、測試結果等諸多環(huán)節(jié)。
1.1 工作原理
人體反應速度測試儀的原理[4]是用LED測試燈亮滅的隨機性測試被測者的反應速度。具體做法是:當測試者按下按鍵后,測試燈亮起,測試隨之開始。在測試過程中,測試者集中注意力一直觀察測試燈,當看到燈滅時,測試者要迅速放開按鍵,從燈滅到放開按鍵的時間就是測試者的反應時間,該時間會顯示在數(shù)碼管上。如果LED測試燈從亮到滅的時間是固定的,則在重復測試情況下,被測者有可能預測到滅燈時間,進而影響測試結果的可靠性,因此要求LED測試燈從亮到滅的時間必須具有隨機性。
滅燈時間的隨機性是通過獲取隨機數(shù)實現(xiàn)的,這里通過采集環(huán)境溫度作為隨機種子并調用隨機函數(shù)產(chǎn)生隨機數(shù)。同時,為了直觀顯示反應速度的快慢,系統(tǒng)采用了LED燈(以下稱為“反應速度等級指示燈”)亮燈個數(shù)來體現(xiàn),反應時間越短,則反應速度等級指示燈亮的個數(shù)就越多,表明測試者反應越快。若測試者在滅燈之前放開按鈕,則系統(tǒng)判為犯規(guī),報警并顯示錯誤信息。系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
1.2 系統(tǒng)硬件設計
根據(jù)系統(tǒng)工作原理,系統(tǒng)的硬件設計如圖2所示。本系統(tǒng)采用的單片機是AT89S52,為實現(xiàn)上述反應速度測試器的功能此系統(tǒng)包括了測試燈模塊,測試按鍵模塊,蜂鳴報警電路模塊,溫度采集模塊和反應速度等級指示燈模塊。
圖2 硬件設計原理圖
其中,測試燈模塊選用紅色LED燈模擬測試燈,亮滅狀態(tài)通過軟件編程控制。本設計中選用P1.0端口控制該LED燈,外加限流電阻接+5 V電源,P1.0端口輸出低電平時,測試燈亮,輸出高電平時,測試燈滅。測試按鍵模塊僅由一個按鍵組成,接P3.4端口。按鍵按下時,該I/O口的輸入為低電平。此時測試燈亮起,測試正式開始。反應時間顯示裝置由4位LED數(shù)碼管組成,用來動態(tài)顯示反應時間,單位為毫秒。蜂鳴報警電路模塊用于提示被測者有無犯規(guī),如果被測者在燈滅之前釋放按鍵則鳴響,表示犯規(guī)。用P3.6口接蜂鳴器報警電路,通過該口輸出一定頻率的方波來驅動蜂鳴器。溫度采集模塊用于采集環(huán)境溫度,用于隨機種子的產(chǎn)生,進而得到滅燈隨機時間。反應速度等級指示燈模塊選用5個LED燈作為反應速度等級指示燈,燈亮的個數(shù)越多,表明測試者的反應速度越快。
1.3 算法分析
1.3.1 滅燈時間隨機的必要性
人類反應時間長短的主要決定因素之一是中樞神經(jīng)系統(tǒng)機能,它對刺激信號的分析時間主要和2個因素有關:一是中樞神經(jīng)系統(tǒng)的興奮性,二是條件反射建立的鞏固程度[5,6]。考慮到條件反射建立的鞏固程度對反應時間有不可忽視的影響,即在滅燈時間固定不變的情況下,短時間內(nèi)隨著測試次數(shù)的不斷增加,測試者對滅燈時間的熟悉程度以及動作嫻熟度的提高會使反應時間縮短,降低該系統(tǒng)的精確性與可靠性。因此,滅燈時間必須嚴格隨機。
1.3.2 隨機數(shù)的選取
常用產(chǎn)生隨機數(shù)的方法是直接為隨機數(shù)生成器提供一粒不變的隨機種子,然后調用rand()函數(shù)來產(chǎn)生隨機數(shù)。這種做法并不能產(chǎn)生真正的隨機數(shù),因為rand()函數(shù)是按指定的順序來產(chǎn)生整數(shù),所以每次得到的值都是一樣的。因此,C語言的隨機并不是真正意義上的隨機。為了使程序在每次執(zhí)行時都能生成一個新序列的隨機值,常需要為隨機數(shù)生成器提供一粒新的隨機種子。函數(shù)srand()可以為隨機數(shù)生成器播散種子。只要種子不同rand()函數(shù)就會產(chǎn)生不同的隨機數(shù)序列。srand()稱為隨機數(shù)生成器的初始化器。
要在不同的時間得到不同的隨機種子,自然會想到一些變化量,例如電壓、電流、溫度等。在這里,選取溫度作為變化量。然而,環(huán)境中的溫度雖在變化,但一般情況不可能有單位量的差異,故本系統(tǒng)對于采集到的溫度只取小數(shù)部分作為變化量。
1.3.3 隨機數(shù)的產(chǎn)生
通過溫度傳感器DS18B20采集環(huán)境的溫度,以十進制表示,并取小數(shù)部分前4位,設變量名為value。表1給出了value的取值情況。
表1 DS18B20的溫度數(shù)據(jù)關系表
由表中十進制與二進制的對照關系可知,將數(shù)據(jù)輸出(二進制)的低4位取出,化為十進制數(shù)n,再除以16即為溫度的小數(shù)部分,則有如下公式:
value有下列16種值,如表2所示。將該值作為seed值,用srand(seed)函數(shù)初始化隨機數(shù)序列種子,調用rand()函數(shù)就會產(chǎn)生不同的隨機數(shù)序列rt,再結合定時器實現(xiàn)毫秒的整數(shù)倍延時,得到從燈亮到燈滅的時間T。
表2 隨機種子取值情況表
1.4 系統(tǒng)軟件設計
程序采用模塊化的設計思想,在Keil開發(fā)環(huán)境下,系統(tǒng)的軟件采用C語言編寫,其程序固化在AT89S52單片機內(nèi)部Flash存儲器中,整個軟件程序包括按鍵模塊,溫度采集模塊,測試燈模塊,數(shù)碼管顯示模塊,速度等級指示燈模塊和蜂鳴報警模塊。
1.4.1 主程序
系統(tǒng)主程序流程如圖3所示。單片機上電之后系統(tǒng)便開始檢測測試按鍵的狀態(tài),當測試按鍵被按下時,測試燈亮起,經(jīng)過某段隨機時間,測試燈熄滅。在亮燈過程中不斷檢測測試按鍵的狀態(tài),若在燈滅之前按鍵被釋放,則系統(tǒng)將反應時間設為四位數(shù)碼管可以顯示的最大數(shù)值9999,指示測試者犯規(guī),此次測試結果無效。否則,等到燈滅之后,定時器從零開始計時至按鍵被釋放,并將得到的反應時間顯示在數(shù)碼管上。
1.4.2 反應速度測試
反應速度測試模塊的流程圖如圖4所示。該段程序描述了燈從亮到滅隨機時間的實現(xiàn)。在測試燈亮起之后,系統(tǒng)先讀取經(jīng)過溫度傳感器采集到的溫度值,并取小數(shù)部分t作為隨機種子,得到隨機數(shù)rt,即滅燈時間。若rt<1 000,則令rt=rt+2 000,防止滅燈時間過短,出現(xiàn)燈一閃即滅的情況。將rt的值結合1 ms定時器實現(xiàn)ms的延時,延時時間結束或者出現(xiàn)測試按鍵被提前釋放時燈自行熄滅。
1.5 測試結果及數(shù)據(jù)分析
1.5.1 測試條件
反應時間測試實驗分別在兩種條件下進行,第一種是“時間固定”,即每次測試中測試燈從燈亮到滅的時間間隔是一樣的;第二種是“時間隨機”,即每次測試中測試燈從燈亮到滅的時間間隔隨機變化。測試者在測試前未被告知測試燈從亮到滅的時間間隔是否隨機,每個測試者分別在兩種條件下進行測試,在經(jīng)過幾次測試等測試者熟悉操作之后開始記錄測試數(shù)據(jù)。
1.5.2 測試數(shù)據(jù)
圖5 反應時間變化曲線
由于外界的微小因素極易對反應時間的測定造成干擾,因此在數(shù)據(jù)的測試上采用了在一段時間內(nèi)取均值的方法,測試結果如圖5所示。根據(jù)測試結果,對時間固定和時間隨機兩種情況的均值和方差做了統(tǒng)計,如表3所示??梢钥闯?,在時間隨機的條件下,測試者所測得的反應時間均值大于在時間固定條件下所測得的反應時間均值,且離散性更大,更符合測試的規(guī)律。
表3 兩種測試結果的均值與方差
單片機課程是一門理論性和實踐性都很強的課程,理論學習之后進行課程設計是十分必要的。開展一個具體項目的設計,能加強學生對理論知識的掌握和運用,達到理論與實踐相結合的目的。通過以上單片機課程設計的實例,介紹了一個好的課程設計應包括原理設計、硬件設計、軟件設計、算法分析、實驗結果測試等各個環(huán)節(jié)。學生通過這些環(huán)節(jié)的實際訓練,看到自己作品的成功運行,會從中體會到學習的樂趣,激發(fā)他們的科研熱情,也為后續(xù)相關課程、學科競賽、畢業(yè)設計打下很好的基礎。
[1] 唐永紅.單片機實踐教學探索,電氣電子教學學報[J].2007,29(1):72-73.
[2] 毛敏.MCS-51系列單片機系統(tǒng)及應用實踐教程[M].北京:高等教育出版社,2006.
[3] 吳葉蘭,段振剛,喬繼紅,蘇維均.Proteus仿真軟件在單片機實驗教學中的應用[J].計算機教育,2009(24):146-148.
[4] 王曉鵬.人體反應速度測試器[J].電子制作,2009(5):35-38.
[5] 李春梅.人體反應速度測試器的實驗研究[J].實驗科學與技術,2011(4):4-7.
[6] 張梅.影響速度素質的因素分析[J].田徑, 2004 (1):53-54.
An Application of Integrated Course Design in SCM Practice Teaching
Wu Yelan, Fan Weiping, Chen Baohua, Huang Yanan
Beijing Technology and Business University, Beijing, 100048, China
Principles and applications of SCM is a course emphasized on practice. The comprehensive course project of SCM is very important in teaching process. SCM course project can deepen students' understanding of SCM principle and enhance the students' practice and innovation ability. The paper introduces the SCM course design of human reaction speed test instrument, gives the system working principle, the hardware and software design, and provides an analysis of the random algorithm. The experimental result shows that the course design can integrate the SCM knowledge comprehensively, arouse students the students' interest in learning SCM, and improve the students' engineering practice ability.
SCM; course project; reaction speed tester
2014-07-09
吳葉蘭,碩士,副教授。
北京市屬高等學校人才強教計劃資助項目(編號:PHR201108088)。