汪燕
摘要:針對單片機原理課程中數碼管動態顯示方式的教學難點,設計了一種可通過按鍵改變掃描頻率的教具,直觀展示了動態掃描的工作原理。教具以8051單片機為核心,涵蓋了系統的軟硬件設計和數碼管的動態驅動原理。該教具與單片機原理課程聯系緊密,使用簡單,能激發學生學習興趣,促進學生能力牽移。
關鍵詞:數碼管;教具;單片機;動態掃描
中圖分類號:G642.423 文獻標識碼:A 文章編號:1007-9416(2018)04-0141-03
數碼管的顯示分為靜態驅動方式和動態掃描方式。靜態驅動的方法使用了單片機較多的I/O口,一般將需要顯示的內容存儲在寄存器中,接線方式直觀,理解較為簡單。在顯示模塊設計或基于單片機的簡單應用中,一般采用動態掃描方法驅動多位數碼管,學生理解與編程有一定的困難[1-3]。為配合課堂教育改革,將翻轉課堂引入教學實踐,需要引導學生探究數碼管的顯示方式,掌握數碼管的動態驅動方式,我們設計了數碼管動態顯示教具[4-6]。
1 總體設計
該教具的硬件由單片機STC89C52為核心,I/O口擴展了4位8字數碼管、按鍵和有源蜂鳴器構成[7]。通過按鍵的按壓可以動態改變掃描頻率,通過蜂鳴器發出聲音提醒掃描頻率發生了改變,系統結構如圖1所示。
在STC89C52最小系統板的基礎上,在P0口和P2口擴展了4位共陽極8字數碼管,采用掃描方式驅動,掃描的頻率由間隔時間決定。初始狀態,掃描頻率為每秒2次,可以清晰看到4位數碼管依次被點亮。當觸發按鍵時,數碼管的掃描頻率將增加,同時蜂鳴器發聲,提示頻率已經修改。每按一次按鍵,掃描會加快一倍,共10級,當掃描頻率接近25次/秒時,4位數碼管的數字將穩定顯示[8]。
2 硬件設計
如圖1,STC單片機最小系統共擴展了3個I/O器件。圖1中的按鍵對應于圖2的K1。圖1中的蜂鳴器對應于圖2中的P3.7引腳的擴展部分:R2、R3、S8550、Buzzer。4位共陽極數碼管模塊對應于圖2的右上角的限流電阻RN1(阻值為510歐姆的排阻)、74LS245和4只0.5英寸的共陽極數碼管。74LS245是雙向總數驅動芯片,用于增強單片機P2口的驅動能力。圖2中數碼管下方“ABCDEFG”為字型碼驅動引腳,“DP”為小數點驅動;“1234”為4個數碼管的字選線,共陽極接法。當P2接高電平時,通過U2的驅動,可以直接驅動0.5英寸的數碼管。當P2.0為高電平,P0口輸出低電平,將點亮第1位數碼管,P2.1為高電平時,將點亮第2位數碼管,依次類推。P0口送不同的字型碼即可顯示不同的字符[8]。制作印刷電路板(PCB)布線時,將數碼管的字型碼驅動和位線盡量在PCB的同一面上,并且將“字型碼驅動”和“位選”放在絲印層上,以方便學生研究學習。
3 軟件設計
動態掃描利用了人眼的視覺暫留效應,時間大約是0.1~0.4ms,一般刷新率取24以上,即每秒鐘每個數碼管必須被點亮24次以上,人眼才能看到穩定的圖像[9]。顯然掃描是不能中斷的,假如有4位數碼管需要驅動,掃描的最大間隔是1/24/4,即10ms,如果單片機在掃描時需要處理其它事件,中斷的時間必須小于這個值,否則顯示就不穩定。本教具設計了一個按鍵K1,用于改變掃描頻率;設計了一個有源蜂鳴器,用來提示頻率發生了改變。按鍵不能采用掃描的方式讀取,而是采用了外部中斷的方式,節省了執行時間。蜂鳴器的打開時間采用定時器來控制,按鍵中斷啟動定時器,打開蜂鳴器。定時器時間一到,由定時中斷關閉蜂鳴器。軟件開發基于Keil C51,設計階段采用Proteus仿真,軟件處理流程如圖3所示。
3.1 數碼管的動態掃描方式
掃描流程[10]如圖3(a)所示。
數碼管的字型碼為:
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
}; //0-9,A-F
掃描間隔采用數組預定義:
unsigned char intVal[]={250,200,100,50,25,12,10,9,8,7};//掃描間隔
數碼管顯示的字符序號放在數組lcd中:
Unsigned char lcd[]={1,2,3,4}; //初始顯示為"1,2,3,4"
圖3(a)中“送位選”指的是依次送P2.0, P2.1, P2.2, P2.3高電平,即依次點亮1至4位數碼管,當掃描的頻率超過人眼的視覺暫留時間后,即可看到穩定的數字顯示。
3.2 按鍵K1的觸發,修改掃描頻率
K1按鍵采用外部中斷方式觸發[11]。中斷服務程序將修改數碼管的掃描間隔:250,200,100,50,25,12,10,9,8,7,單位為毫秒。每按一次,掃描間隔減少約一半。為看清動態顯示過程,后面的幾次間隔逐漸減小。為了吸引學生的注意,每按一次按鍵,讓蜂鳴器發出聲音。蜂鳴器采用有源蜂鳴器,P3.7輸出低電平,驅動三極管Q1工作于飽和態,BUZ1發聲。K1按鍵中斷服務程序中同時啟動定時器T0,在T0定時器溢出中斷中關閉蜂鳴器,達到發聲的短延時。
3.3 蜂鳴器發聲,提示頻率改變
在T0定時器中斷服務程序[12]中令P3.7為高電平,三極管Q1工作于截止態,BUZ1停止發聲。由于按鍵和蜂鳴器處理采用了中斷和定時器的方法,語句執行時間極短,不影響數碼管的動態掃描效果。
4 結語
數碼管動態顯示是單片機的重要輸出方式,本設計以8051最小系統為基礎,擴展了按鍵輸入和蜂鳴器輸出模塊,調用了外部中斷和定時器中斷,將各個知識點有機地聯系在一起,形成了一套集聲光電一體的教學演示模板,清晰展示了數碼管動態顯示原理,激發了學生學習興趣,方便了教師的使用,提高了實驗課程的教學效果。
參考文獻
[1]楊穎.以學生為本創新電子技術實驗課教學[J].實驗室研究與探索,2010,29(6):80-83.
[2]朱名強.基于自制教學裝置或教具的教學改革研究[J].北京城市學院學報,2014(5):55-58.
[3]賈萍,丁向榮,胡美蘭.“教、學、做”一體化單片機教學實驗平臺的設計與應用[J].實驗技術與管理,2012,29(6):139-142.
[4]王志強,管恩京,鞏秀鋼,等.高校的混合式CDIO教學——以“高校單片機原理”課程為例[J].現代教育技術,2016,26(9):113-119.
[5]周冠玲,馮占英,李戰.“單片機原理及應用”課程教學改革的探討[J].中國電化教育,2012,(6):105-107.
[6]樓然苗,王世來.單片機實踐教學改革與應用型人才培養[J].中國大學教學,2009,(3):80-81.
[7]于斌.單片機原理與接口技術[M].北京:人民郵電出版社,2008:156-158.
[8]趙亮.跟我學51單片機(五)——單片機動態掃描驅動數碼管[J].電子制作,2011,(5):75-78.
[9]楊果仁,蔡順燕.從“視覺暫留”看LED數碼管動態顯示[J].數字技術與應用,2013,(12):79-79.
[10]戴佳,戴衛恒.51單片機C語言應用程序實例精講[M].北京:電子工業出版社,2007:108-110.
[11]王超,朱鵬遠.基于Proteus的單片機中斷電路的設計與仿真[J].實驗技術與管理,2017,34(7):136-140.
[12]秦玉蒙,王婭男,邱春玲.一種高效軟件定時器的設計與實現[J].實驗室研究與探索,2015,34(9):94-97.