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