【摘 要】教學(xué)須因材施教、因人施策。面對高職學(xué)生群體,運用怎樣的教學(xué)方法才能達到最佳教學(xué)效果呢?根據(jù)自己多年教學(xué)體會,認為高職課堂教學(xué),既不能等同于高中教學(xué),也不能完全照搬高校教學(xué),它必須具有高職的特色:理論適用、技能為主,課堂教學(xué)既要注重知識性,更要注重趣味性,通過學(xué)生跟著老師做、學(xué)生學(xué)著自己做、理論實踐相結(jié)合、現(xiàn)場教學(xué)做總結(jié)的方式,達到加快理解掌握單片機功能應(yīng)用的技能。
【關(guān)鍵詞】高職教學(xué);單片機應(yīng)用;理論結(jié)合實訓(xùn)
1.引言
單片機在工業(yè)儀表、實時分散控制、物聯(lián)網(wǎng)應(yīng)用等方面都有著不可或缺的作用。在高職學(xué)院單片機的課堂教學(xué)成為電子技術(shù)、物聯(lián)網(wǎng)技術(shù)甚至計算機應(yīng)用專業(yè)等相關(guān)專業(yè)的重要專業(yè)基礎(chǔ)課,特別是當前各類高職技能大賽項目的機器人控制、非接觸識別等科目,單片機相關(guān)知識點的學(xué)習(xí)掌握更是重中之重。而常規(guī)的單片機教學(xué)模式是從芯片原理到編程使用講解,理論性強、記憶內(nèi)容多,往往一開始就使得不少學(xué)生難以理解接授,產(chǎn)生畏難情緒。因此,設(shè)計出一套適合高職學(xué)生的教、學(xué)、做一體化模式,就像過去師傅帶徒弟一樣,使學(xué)生通過做、學(xué)、教的實踐體會,真正在做中學(xué),在實踐中理解,在理解中提升,達到加快理解掌握單片機功能應(yīng)用技能的教學(xué)目標。下面本人以定時器的教學(xué)設(shè)計為例,設(shè)計教學(xué)模式如下。
2.概述單片機的實用性與基礎(chǔ)知識
首先,在開始定時器知識點教學(xué)之前,應(yīng)該通過實驗演示、圖片、視頻等方式給同學(xué)們展示單片機的應(yīng)用實例,同時啟發(fā)大家推舉生活中遇到的相關(guān)實例,越是接近生活的實例越是能激起同學(xué)們學(xué)習(xí)的興趣。教師需要充分準備具備較強的相關(guān)知識應(yīng)對學(xué)生提出的難題實例,適當引用到后續(xù)實訓(xùn)中。
其次,對于學(xué)習(xí)單片機相關(guān)專業(yè)的同學(xué),都能熟練使用電腦的優(yōu)勢,以電腦為例,用比擬法教學(xué),使得同學(xué)們基本了解單片機的基本構(gòu)件,參見圖 1。
其三,強化二進制與十六進制的應(yīng)用知識教學(xué)。計算機基礎(chǔ)對于二進制的教學(xué)僅僅告訴了同學(xué)們一種數(shù)制方式,我們需要同學(xué)們充分了解以下問題:
1.什么是二進制?一個字節(jié)幾位二進制數(shù)?
2.什么是十六進制?一個十六進制表示幾個字節(jié)?
3.為何要使用二進制、十六進制?
4.十進制數(shù)0-15用十六進制如何表示?
5.一個字節(jié)用十六進制如何表示?
6.二進制與十六進制如何快速轉(zhuǎn)換?
其四,在充分了解了二進制與十六進制,掌握位操作的概念,認識0和1標識的狀態(tài)應(yīng)用,特別是必須牢記如何置0與位置1。對于位置0和位置1總結(jié)出一個算式,能理解就自己設(shè)置,不能理解就按照老師給的算式設(shè)置,強行記憶。
位操作要點:
1.能夠直接位訪問的,直接設(shè)置
例如:EA=0 或 EA=1
2.字節(jié)訪問的位操作,改變操作的某位,不能影響其他位的狀態(tài)
置0用&=~算式,置1用|=。(案例略)
通過一定數(shù)量的練習(xí),保證同學(xué)們能夠熟練進行狀態(tài)設(shè)置位操作?;A(chǔ)準備好了,興趣提起來了,能夠使得同學(xué)們期待你的下一次課程,那么你才是成功的授者。
3.定時器的模式和應(yīng)用
單片機以CC2530為教學(xué)應(yīng)用對象。
在開始定時器教學(xué)之前,需要通過幾個小實驗,展示位操作的學(xué)習(xí)成果,學(xué)習(xí)通過I/O口寄存器的設(shè)置,設(shè)計LED燈的每秒閃爍一次的實驗,通過不同參數(shù)調(diào)整延時,可以體會一下要求達到的時間精度的不可控性,導(dǎo)出了精確時間定時需要定時器…通過精確計算時間,獲得準確的LED定時閃爍。
CC25030定時器T1的主要功能是這樣介紹的:
◆五個捕獲/比較通道
◆16位定時器
◆自由運行、模模式、正數(shù)/倒數(shù)計數(shù)操作
◆時鐘分頻系數(shù):1、8、32、128
◆在每個捕獲/比較和最終計數(shù)上生成中斷請求
如果我們就是上述功能展開教學(xué),能聽下去的同學(xué)可預(yù)見的是寥寥無幾。所以教學(xué)設(shè)計直奔主題:T1是16位定時器,有自由重載模式、模模式、正倒數(shù)模式,計數(shù)范圍0-65535(復(fù)習(xí)十六進制,討論此數(shù)來由),假定使用32MH時鐘,分別帶同學(xué)們學(xué)習(xí)三種不同模式下的定時器的應(yīng)用。
(1)計數(shù)次數(shù)獲得
計數(shù)的時間間隔由時鐘頻率計算獲得,假設(shè)使用32MHz時鐘8分頻,獲得0.5s的時間間隔,需要計數(shù)多少次數(shù)呢?頻率Hz的倒數(shù)是秒,定時器計數(shù)次數(shù)獲得:需要的時間秒數(shù)/(1/分頻后頻率Hz),如果次數(shù)大于65535,需要程序控制計數(shù)若干次。0.5s/(1/(32*106/8))s就是0.5s需要的計數(shù)次數(shù),計算結(jié)果大約是65535*30次。
(2)自由重載模式
所謂自由重載模式就是,16位計數(shù)器從0開始計數(shù)加1直到65535時加1計數(shù)溢出,計數(shù)器重新載入0再次計數(shù)到65535如此重復(fù)。參見圖2。
自由重載模式案例參考代碼:32MHz時鐘8分頻,獲得0.5s的時間間隔LED閃爍,時間間隔精確度有差異。
#include "ioCC2530.h" // 引用頭文件,包含對CC2530的寄存器、中斷向量等的定義
//定義led燈端口
#define LED1 P1_0 // P1_0定義為P1.0
#define LED2 P1_1 // P1_1定義為P1.1
unsigned int counter=0; //統(tǒng)計溢出次數(shù)
/*********************************************************************
* 函數(shù)名稱:initendprint
* 功 能:初始化系統(tǒng)IO,定時器T1控制狀態(tài)寄存器
********************************************************************/
void init(void)
{ P1SEL &= ~0x03; // 設(shè)置LED1、LED2為普通IO口
P1DIR |= 0x003 ; // 設(shè)置LED1、LED2為輸出
LED1 = 0;
LED2 = 1; //滅 LED
T1CTL = 0x05; // T1 通道 0,8 分頻; 自動重載模式(0x0000->0xffff);
CLKCONCMD &= 0x80; //時鐘速度設(shè)置為32MHz
}
/*********************************************************************
* 函數(shù)名稱:main
* 功 能:main函數(shù)入口
********************************************************************/
void main(void)
{
init(); //調(diào)用初始化函數(shù)
unsigned int counter=0; //統(tǒng)計溢出次數(shù)
while(1)
{
if( T1IF==1 ) //查詢溢出中斷標志,是否有中斷并且為定時器1發(fā)出的中斷
{ T1IF=0; //清溢出標志
counter++;
if(counter==30) //中斷計數(shù),約0.5s (32/8)*10^6/65535/30=2Hz
{
counter =0;
LED1 = !LED1;
LED2 = !LED2;
}
}
}
}
(3)模模式
自由重載模式計數(shù)次數(shù)區(qū)間是0-65535很難匹配精確的適合秒數(shù)的計數(shù)次數(shù),因此導(dǎo)出使用模模式。模模式是采用比較計數(shù)次數(shù)達到T1CC0寄存器指定的參數(shù)(初始化中預(yù)置)時,計數(shù)溢出計數(shù)器重新載入0再次計數(shù)到T1CC0。參見圖3。例如:32MHz并128分頻時獲得0.5s計數(shù)次數(shù)是62500*2即可,可以獲得精確定時計數(shù)。
模模式下案例:32MHz時鐘128分頻,獲得0.5s的時間間隔LED閃爍,時間間隔精確度無差異。修改參數(shù)如下:
T1CTL = 0x0e; // 配置128分頻,模模式計數(shù)工作模式,并開始啟動
T1CCTL0 |= 0x04; //設(shè)定timer1通道0比較模式,定時器1的通道0的中斷
//使能T1CCTL0.IM默認使能
T1CC0L =62500 & 0xFF; // 把62500的低8位寫入T1CC0L
T1CC0H = ((62500& 0xFF00) >> 8); //把62500的高8位寫入T1CC0H
//計數(shù)次數(shù)為2次即可獲得0.5s計時間隔。
(4)正倒數(shù)模式
正倒數(shù)模式即是計數(shù)器0加到T1CC0上限再減到0為一次計數(shù)溢出,相當于二次模模式。參見圖4。例如:32MHz128分頻時獲得0.5s計數(shù)次數(shù)是1次,可以獲得精確定時計數(shù)。
正倒數(shù)模式下案例:32MHz時鐘8分頻,獲得0.5s的時間間隔LED閃爍,時間間隔精確度無差異。修改參數(shù)如下:
T1CTL = 0x0f; // 配置128分頻,模比較計數(shù)工作模式,并開始啟動
T1CCTL0 |= 0x04; //設(shè)定timer1通道0比較模式,定時器1的通道0的中斷
//使能T1CCTL0.IM默認使能
T1CC0L =62500 & 0xFF; // 把62500的低8位寫入T1CC0L
T1CC0H = ((62500& 0xFF00) >> 8); //把62500的高8位寫入T1CC0H
//計數(shù)次數(shù)為2次即可獲得0.5s計時間隔。
(5)CC25030其他定時器T2、T3、T4簡介
T2定時器被系統(tǒng)使用,T3、T4基本功能與T1類似,但要注意,只有T1定時器為16為定時器,其他均為8為定時器,相同的定時間隔相差256倍。
(6)設(shè)計實驗案例
定時LED燈閃爍,定時跑馬燈(正向反向變換),定時顯示計數(shù)等等。幾種功能可以通過按鍵切換,通過調(diào)整按鍵延時,觀察按鍵反應(yīng)時間,引導(dǎo)出后續(xù)知識點中斷功能的應(yīng)用。
4.教學(xué)方法與教學(xué)設(shè)備利用
(1)教學(xué)方法
常規(guī)做法是教師教(理論或原理)學(xué)生聽學(xué),本課程采用教師做學(xué)生模仿做,實現(xiàn)練習(xí)目標之后,總結(jié)實現(xiàn)實訓(xùn)的過程(步驟),再對應(yīng)原理(理論)加以理解。教師提出拓展目標案例,學(xué)生在理解的基礎(chǔ)上完成拓展實訓(xùn)。總結(jié)為:做、學(xué)、教,拓展提升。
(2)教學(xué)設(shè)備利用
由于場地受限,本實驗室目前僅有13套設(shè)備,教師使用一套,同時只能有12組學(xué)生參與實驗,對于近50人的班級,我們采用分2組且同學(xué)自帶筆記本上課方式,二人一組共享一套設(shè)備,基礎(chǔ)設(shè)計編程使用各自的筆記本電腦,連接調(diào)試分時使用實驗設(shè)備,既充分利用設(shè)備資源也能達到高效教學(xué)的目標。
經(jīng)過二屆學(xué)生的教學(xué)實踐,學(xué)生基本都能夠掌握教授單片機的應(yīng)用技能。教學(xué)過程中,盡量將學(xué)習(xí)的知識點劃分為幾個固定的基本步驟,一點一點添加或通過循序漸進修改初始化的部分參數(shù),即可實現(xiàn)不同類型的設(shè)置方式,完成相關(guān)要求項目,方便學(xué)生學(xué)習(xí)及記憶。開始學(xué)生按照老師要求的方法記憶式學(xué)做實驗,多做幾個實驗,即可在教師的指導(dǎo)啟發(fā)下完成自主設(shè)計的實驗項目,在最后的課程實訓(xùn)周,能夠獨立完成較高難度的綜合實訓(xùn)項目,達到教學(xué)目標。
參考文獻:
[1] 姜仲 劉丹 ZigBee技術(shù)與實訓(xùn)教程[M]北京 清華大學(xué)出版社 2014.
[2] 物聯(lián)網(wǎng)無線傳感網(wǎng)實訓(xùn)教程[M]北京 新大陸時代教育科技有限公司 2014.
[3] 本書編委 ZigBee技術(shù)開發(fā)-CC2530單片機原理及應(yīng)用[M]北京 清華大學(xué)出版社 2015.
[4] 楊玥 單片機與接口技術(shù)-基于CC2530的單片機應(yīng)用[M]北京 清華大學(xué)出版社 2017.
作者簡介:季紅梅,安徽財貿(mào)職業(yè)學(xué)院 云桂信息學(xué)院。endprint