資源描述:
《單片機原理及應用 教學課件 作者 匡忠輝 第3章--廣告燈控制---簡單程序設計.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第三章、廣告燈控制---簡單程序設計3.0你知道嗎3.1功能要求3.2任務分析3.3發(fā)光二極管LED3.4發(fā)光二極管LED與單片機接口電路設計3.5廣告燈程序設計走在城市街道,我們經(jīng)??吹礁鞣N琳瑯滿目、色彩斑瀾的廣告燈,你知道這些廣告燈效果是如何產(chǎn)生的嗎?在這一章中,我們將通過控制8個發(fā)光二極管實現(xiàn)多種廣告燈效果來說明其產(chǎn)生方法你知道嗎?回目錄3.1功能要求一.基本要求控制一個發(fā)光二極管LED定時閃爍。二.發(fā)揮部分控制8個發(fā)光二極管LED產(chǎn)生“跑馬燈”效果。3.2任務分析要完成此任務,主要需解決如下三方面問題:1)發(fā)光二極管LED工作原理;2)8個發(fā)光二極管LE
2、D與單片機接口電路設計;3)發(fā)光二極管LED顯示程序設計回目錄3.3發(fā)光二極管LED發(fā)光二極管的電參數(shù)與普通二極管大致相同,也是一個PN結,同樣具有正向導通,反向截止的特性。發(fā)光二極管的伏安特性曲線如下圖。與普通二極管相比,發(fā)光二極管主要有如下兩點不同1.發(fā)光二極管正向導通電壓要比普通二極管高2.發(fā)光二極管反向擊穿電壓比普通二極管低發(fā)光二極管實物圖3.3.1發(fā)光二極管LED工作特性3.3.2發(fā)光二極管LED驅動電路由發(fā)光二極管LED的工作特性可知,LED工作電流較大,而MCS-51單片機I/O口引腳負載能力有限,不能直接驅動LED,需要增加LED驅動電路。低電平
3、有效高電平有效高電平有效低電平有效(a)三極管驅動電路(b)集成驅動器電路回目錄3.4發(fā)光二極管LED與單片機接口電路設計1)74LS245工作特性/E(19腳)DIR(1腳)總線驅動方向01A→B00B→A1X不工作其中19腳/E為芯片工作使能端,只有該引腳電平為有效電平(低電平)時,74LS245才會工作;1腳DIR為總線驅動方向選擇端,2)發(fā)光二極管LED與單片機接口電路圖回目錄3.5廣告燈程序設計3.5.1單個LED閃爍假設讓LED燈D1進行單燈閃爍,由圖3-5可知,當P1.0輸出高電平時,D1熄滅;當P1.0輸出低電平時,D1點亮。欲使D1閃爍,則P1
4、.0輸出必須為高低電平交替出現(xiàn)的矩形波(或方波),假設D1閃爍的周期為0.2s(每個周期內100ms亮,100ms滅),則程序流程圖如圖3-6所示LED_BLINK:SETBP1.0;P1.0=1,D1滅LCALLDELAY_100MS;延時100msCLRP1.0;P1.0=0,D1亮LCALLDELAY_100MS;延時100msLJMPLED_BLINK;跳到LED_BLINK程序清單如下:DELAY_100MS:MOVR3,#100;2usLOOP1:MOVR4,#250;2usLOOP2:DJNZR4,LOOP2;4us如果R4-1≠0,則跳到LOOP
5、2DJNZR3,LOOP1;4us如果R3-1≠0,則跳到LOOP1RET;4us延時子程序如下:3.5.2跑馬燈程序設計實現(xiàn)跑馬燈效果,即要求循環(huán)移位點亮LED,每次只點亮一個LED,LED點亮的順序為:D1→D2→D3→D4→D5→D6→D7→D8→D1…,D8被點亮之后又移位點亮D1,這樣循環(huán)往復,實現(xiàn)跑馬燈效果。顯示結果D8D7D6D5D4D3D2D1P1輸出值二進制碼P1輸出值十六進制碼○○○○○○○●11111110FEH○○○○○○●○11111101FDH○○○○○●○○11111011FBH○○○○●○○○11110111F7H○○○●○○○○
6、11101111EFH○○●○○○○○11011111DFH○●○○○○○○10111111BFH●○○○○○○○011111117FH方法一.數(shù)據(jù)傳送法程序清單如下:LED_LOOP:MOVP1,#0FEH;點亮第1個LEDLCALLDELAY_100MS;延時100msMOVP1,#0FDH;點亮第2個LEDLCALLDELAY_100MS;延時100msMOVP1,#0FBH;點亮第3個LEDLCALLDELAY_100MS;延時100msMOVP1,#0F7H;點亮第4個LEDLCALLDELAY_100MS;延時100msMOVP1,#0EFH;點亮第
7、5個LEDLCALLDELAY_100MS;延時100msMOVP1,#0DFH;點亮第6個LEDLCALLDELAY_100MS;延時100msMOVP1,#0BFH;點亮第7個LEDLCALLDELAY_100MS;延時100msMOVP1,#07FH;點亮第8個LEDLCALLDELAY_100MS;延時100msLJMPLED_LOOP;跳回去循環(huán)。MOVA,#0FEH;先將點亮第1個LED的初值送給ALOOP:MOVP1,A;點亮一位LEDLCALLDELAY_100MS;延時100msRLA;左移一位,為下次顯示作準備LJMPLOOP;跳回去循環(huán)程序
8、清單如下:方法二.移位指