季紅梅 / 安徽財貿職業學院
高職單片機教學研究
——定時器應用教學
季紅梅 / 安徽財貿職業學院
教學須因材施教、因人施策。面對高職學生群體,運用怎樣的教學方法才能達到最佳教學效果呢?根據自己多年教學體會,認為高職課堂教學,既不能等同于高中教學,也不能完全照搬高校教學,它必須具有高職的特色:理論適用、技能為主,課堂教學既要注重知識性,更要注重趣味性,通過學生跟著老師做、學生學著自己做、理論實踐相結合、現場教學做總結的方式,達到加快理解掌握單片機功能應用的技能。
高職教學;單片機應用;理論結合實訓
單片機在工業儀表、實時分散控制、物聯網應用等方面都有著不可或缺的作用。在高職學院單片機的課堂教學成為電子技術、物聯網技術甚至計算機應用專業等相關專業的重要專業基礎課,特別是當前各類高職技能大賽項目的機器人控制、非接觸識別等科目,單片機相關知識點的學習掌握更是重中之重。而常規的單片機教學模式是從芯片原理到編程使用講解,理論性強、記憶內容多,往往一開始就使得不少學生難以理解接授,產生畏難情緒。因此,設計出一套適合高職學生的教、學、做一體化模式,就像過去師傅帶徒弟一樣,使學生通過做、學、教的實踐體會,真正在做中學,在實踐中理解,在理解中提升,達到加快理解掌握單片機功能應用技能的教學目標。下面本人以定時器的教學設計為例,設計教學模式如下。
首先,在開始定時器知識點教學之前,應該通過實驗演示、圖片、視頻等方式給同學們展示單片機的應用實例,同時啟發大家推舉生活中遇到的相關實例,越是接近生活的實例越是能激起同學們學習的興趣。教師需要充分準備具備較強的相關知識應對學生提出的難題實例,適當引用到后續實訓中。
其次,對于學習單片機相關專業的同學,都能熟練使用電腦的優勢,以電腦為例,用比擬法教學,使得同學們基本了解單片機的基本構件,參見圖 1。

圖1 功能比較圖
其三,強化二進制與十六進制的應用知識教學。計算機基礎對于二進制的教學僅僅告訴了同學們一種數制方式,我們需要同學們充分了解以下問題:
1.什么是二進制?一個字節幾位二進制數?
2.什么是十六進制?一個十六進制表示幾個字節?
3.為何要使用二進制、十六進制?
4.十進制數0-15用十六進制如何表示?
5.一個字節用十六進制如何表示?
6.二進制與十六進制如何快速轉換?
其四,在充分了解了二進制與十六進制,掌握位操作的概念,認識0和1標識的狀態應用,特別是必須牢記如何置0與位置1。對于位置0和位置1總結出一個算式,能理解就自己設置,不能理解就按照老師給的算式設置,強行記憶。
位操作要點:
1.能夠直接位訪問的,直接設置
例如:EA=0 或 EA=1
2.字節訪問的位操作,改變操作的某位,不能影響其他位的狀態
置0用&=~算式,置1用|=。(案例略)
通過一定數量的練習,保證同學們能夠熟練進行狀態設置位操作?;A準備好了,興趣提起來了,能夠使得同學們期待你的下一次課程,那么你才是成功的授者。
單片機以CC2530為教學應用對象。
在開始定時器教學之前,需要通過幾個小實驗,展示位操作的學習成果,學習通過I/O口寄存器的設置,設計LED燈的每秒閃爍一次的實驗,通過不同參數調整延時,可以體會一下要求達到的時間精度的不可控性,導出了精確時間定時需要定時器…通過精確計算時間,獲得準確的LED定時閃爍。
CC25030定時器T1的主要功能是這樣介紹的:
◆五個捕獲/比較通道
◆16位定時器
◆自由運行、模模式、正數/倒數計數操作
◆時鐘分頻系數:1、8、32、128
◆在每個捕獲/比較和最終計數上生成中斷請求
如果我們就是上述功能展開教學,能聽下去的同學可預見的是寥寥無幾。所以教學設計直奔主題:T1是16位定時器,有自由重載模式、模模式、正倒數模式,計數范圍0-65535(復習十六進制,討論此數來由),假定使用32MH時鐘,分別帶同學們學習三種不同模式下的定時器的應用。
(1)計數次數獲得
計數的時間間隔由時鐘頻率計算獲得,假設使用32MHz時鐘8分頻,獲得0.5s的時間間隔,需要計數多少次數呢?頻率Hz的倒數是秒,定時器計數次數獲得:需要的時間秒數/(1/分頻后頻率Hz),如果次數大于65535,需要程序控制計數若干次。0.5s/(1/(32*106/8))s就是0.5s需要的計數次數,計算結果大約是65535*30次。
(2)自由重載模式
所謂自由重載模式就是,16位計數器從0開始計數加1直到65535時加1計數溢出,計數器重新載入0再次計數到65535如此重復。參見圖2。

圖2 自由重載模式
自由重載模式案例參考代碼:32MHz時鐘8分頻,獲得0.5s的時間間隔LED閃爍,時間間隔精確度有差異。
#include "ioCC2530.h" // 引用頭文件,包含對CC2530的寄存器、中斷向量等的定義
//定義led燈端口

* 函數名稱:init
* 功 能:初始化系統IO,定時器T1控制狀態寄存器

(3)模模式
自由重載模式計數次數區間是0-65535很難匹配精確的適合秒數的計數次數,因此導出使用模模式。模模式是采用比較計數次數達到T1CC0寄存器指定的參數(初始化中預置)時,計數溢出計數器重新載入0再次計數到T1CC0。參見圖3。例如:32MHz并128分頻時獲得0.5s計數次數是62500*2即可,可以獲得精確定時計數。

圖3 模模式
模模式下案例:32MHz時鐘128分頻,獲得0.5s的時間間隔LED閃爍,時間間隔精確度無差異。修改參數如下:
T1CTL=0x0e; // 配置128分頻,模模式計數工作模式,并開始啟動
T1CCTL0 |= 0x04; //設定timer1通道0比較模式,定時器1的通道0的中斷
//使能T1CCTL0.IM默認使能
T1CC0L =62500 & 0xFF; // 把62500的低8位寫入T1CC0L
T1CC0H=((62500& 0xFF00) >> 8); //把 62500 的高 8 位寫入T1CC0H
//計數次數為2次即可獲得0.5s計時間隔。
(4)正倒數模式
正倒數模式即是計數器0加到T1CC0上限再減到0為一次計數溢出,相當于二次模模式。參見圖4。例如:32MHz128分頻時獲得0.5s計數次數是1次,可以獲得精確定時計數。

圖4 正倒數模式
正倒數模式下案例:32MHz時鐘8分頻,獲得0.5s的時間間隔LED閃爍,時間間隔精確度無差異。修改參數如下:
T1CTL=0x0f; // 配置128分頻,模比較計數工作模式,并開始啟動
T1CCTL0 |= 0x04; //設定timer1通道0比較模式,定時器1的通道0的中斷
//使能T1CCTL0.IM默認使能
T1CC0L =62500 & 0xFF; // 把62500的低8位寫入T1CC0L
T1CC0H=((62500& 0xFF00) >> 8); //把 62500 的 高 8 位 寫 入T1CC0H
//計數次數為2次即可獲得0.5s計時間隔。
(5)CC25030其他定時器T2、T3、T4簡介
T2定時器被系統使用,T3、T4基本功能與T1類似,但要注意,只有T1定時器為16為定時器,其他均為8為定時器,相同的定時間隔相差256倍。
(6)設計實驗案例
定時LED燈閃爍,定時跑馬燈(正向反向變換),定時顯示計數等等。幾種功能可以通過按鍵切換,通過調整按鍵延時,觀察按鍵反應時間,引導出后續知識點中斷功能的應用。
(1)教學方法
常規做法是教師教(理論或原理)學生聽學,本課程采用教師做學生模仿做,實現練習目標之后,總結實現實訓的過程(步驟),再對應原理(理論)加以理解。教師提出拓展目標案例,學生在理解的基礎上完成拓展實訓??偨Y為:做、學、教,拓展提升。
(2)教學設備利用
由于場地受限,本實驗室目前僅有13套設備,教師使用一套,同時只能有12組學生參與實驗,對于近50人的班級,我們采用分2組且同學自帶筆記本上課方式,二人一組共享一套設備,基礎設計編程使用各自的筆記本電腦,連接調試分時使用實驗設備,既充分利用設備資源也能達到高效教學的目標。
經過二屆學生的教學實踐,學生基本都能夠掌握教授單片機的應用技能。教學過程中,盡量將學習的知識點劃分為幾個固定的基本步驟,一點一點添加或通過循序漸進修改初始化的部分參數,即可實現不同類型的設置方式,完成相關要求項目,方便學生學習及記憶。開始學生按照老師要求的方法記憶式學做實驗,多做幾個實驗,即可在教師的指導啟發下完成自主設計的實驗項目,在最后的課程實訓周,能夠獨立完成較高難度的綜合實訓項目,達到教學目標。
[1]姜仲 劉丹 ZigBee技術與實訓教程[M]北京 清華大學出版社 2014.
[2]物聯網無線傳感網實訓教程[M]北京 新大陸時代教育科技有限公司 2014.
[3]本書編委 ZigBee技術開發-CC2530單片機原理及應用[M]北京 清華大學出版社 2015.
[4]楊玥 單片機與接口技術-基于CC2530的單片機應用[M]北京 清華大學出版社 2017.
季紅梅,安徽財貿職業學院 云桂信息學院。