曹克澄
上海電機學院高職學院 上海 201306
在《單片機原理及應用》教學內(nèi),教師常將流水燈控制作為一個案例和實驗內(nèi)容進行講解和演示,從而提高學生的學習興趣。基于對流水燈的控制可以設計出許多單片機教學內(nèi)容。本文以匯編語言為例闡述教學內(nèi)容。
流水燈的控制電路如圖1所示,采用灌電流電阻方式,這里要給學生講清楚為什么采用灌電流方式,不用拉電流方式,主要防止輸出電流過大使CPU 發(fā)熱甚至燒壞。
圖1 流水燈電路圖
其程序清單如下:
;???????????????????????????????
;?軟件定時的流水燈循環(huán)左移顯示程序?
;???????????????????????????????
ORG 0000H
LJMP MAIN
;????????????????
;?主程序?
;????????????????
ORG 0100H
MAIN:MOV A,#01H
LOOP:MOV P1,A
RL A
LCALL DELAY
SJMP LOOP
;????????????????????
;?延時子程序?
;????????????????????
ORG 0200H
DELAY:…
…
END
如何在上述電路及程序的基礎完成更多的教學內(nèi)容? 這就是涉及教學內(nèi)容設計。
1、流水燈花樣控制。上述程序可以實現(xiàn)流水燈單個LED循環(huán)左移點亮,就可以向?qū)W生提出對流水燈控制更多的要求,具體如下:
(1)如果要求實現(xiàn)右移,由學生找出適當?shù)闹噶罴右孕薷? 答案很簡單:將指令“RL A”改為“RR A”即可。這樣就講解了兩條指令的功能,同時可以講解其他類似的指令“RLC A”和“RRC A”,如果在上面的程序中將“RL A”指令分別用這兩條代替指令,流水燈顯示的情況與前面有什么不同?
(2)如果要求先亮高4位四個LED亮、低4位LED暗,延時后高4位發(fā)光LED暗、低4位LED燈;依次反復,又如何實現(xiàn)?
那么就要求將指令“MOV A,#01H”改為“MOV A,#0F0H”,而指令“RL A”可以既可以用指令“CPL A”代替,也可以用“XOR A,#0FF”代替,還可以用“SWAP A”指令代替,當然也可以用比較指令來實現(xiàn)(當然本例中用比較指令不是最優(yōu)化的程序),這樣就可以拓展學生靈活使用各類指令的思路。
(3)對于流水燈的花樣還有許多,如:依次逐個從高到低或從低到高點亮LED,8個LED從外向里(即從兩頭向里)依次逐個點亮LED或從里向外(即從里向兩頭)依次逐個點亮LED。這樣編寫程序的難度逐步在增加。
在此基礎還可以將只有8個LED擴大為16個LED,另8個在P2口輸出,要出現(xiàn)上述各功能,又可以將編程的難度增加。
(4)在上述基礎上,還可以要求學生編寫在一個程序中實現(xiàn)幾個花樣的流水燈控制,也可以通過開關、紅外線遙控器來選擇不同的花樣,這樣學生就要掌握條件判斷指令、紅外線遙控器信號接收及編碼識別的知識。
2、定時方式的設計。在單片機控制系統(tǒng)中,經(jīng)過要采用定時方法,定時方式一般有兩種:軟件定時和硬件定時。軟件定時指編寫延時子程序,通過調(diào)用延時子程序?qū)崿F(xiàn)定時目的;硬件定時指采用單片機內(nèi)部定時器實現(xiàn)定時。因此在流水燈循環(huán)點亮中,設計兩種定時方式,讓學生學習體會。
(1)軟件定時(調(diào)用延時子程序)。編程定時子程序在教學上可以安排學生編寫不同的定時子程序,常見的有10ms、50ms、100ms、500ms、1s,通過編寫這些子程序讓學生學會如何計算各循環(huán)次數(shù),如何通過插入NOP指令進行時間的微調(diào)(有時光靠循環(huán)無法做到剛好達到規(guī)定的定時時間)。
(2)硬件定時(內(nèi)部定時器定時)。采用內(nèi)部定時器進行定時就比較方便,但要注意內(nèi)部定時器在系統(tǒng)時鐘頻率12MHz時,最大在定時時間是工作在方式1時的65.536ms,如果按上例中要定時500ms,則要設計一個計數(shù)器,定時器的定時時間為50ms,計數(shù)器計數(shù)到10次,則代表定時500ms時間到。
在采用內(nèi)部定時器定時時,主程序中安排的是定時器初始化程序,即選擇定時器工作方式、設置定時器初值、中斷系統(tǒng)有關設置及啟動定時器工作,而實現(xiàn)流水燈花樣控制的指令要安排在定時器中斷服務程序中,同時每次500ms定時時間到要對計數(shù)器清零。
3、其他教學內(nèi)容設計
(1)在圖1中LED直接接單片機的P1口,假設單片機的并行口不夠用,需要擴展接口電路,如通過并行擴展接口電路8255A與LED連接。
(2)利用LED加深對地址譯碼器74LS138、74LS139電路、地址鎖存器74LS373電路的理解,通過輸出不同的地址,觀察LED的亮暗情況。
綜上所述,利用LED流水燈可以設計出許多教學內(nèi)容,既可以提高學生學習興趣,也可以豐富教學內(nèi)容。