㈠ 若51單片機P1口接了8個LED,編寫程序完成跑馬燈程序要求大約1秒變化一次
在設計一個51單片機控制8個LED的跑馬燈程序時,假設晶振頻率為12MHz,P1口用於控制8個LED,採用低電平點亮LED的方式。程序的目標是使得LED每隔大約1秒變化一次,即實現跑馬燈效果。
程序首先配置定時器1,使其工作於方式1,這是一個16位定時器,能夠提供更長的定時范圍。具體配置代碼為:TMOD |= 0X10。接下來設置定時器1的初值,以實現每500微秒的定時周期。TH1和TL1的值分別為0XFE和0X0C,代表定時時間。
為了實現每秒變化一次的跑馬燈效果,程序設置了定時器1中斷服務函數。該函數每500微秒執行一次,通過累加YSJS變數來記錄時間。當YSJS達到2000時,表示已經過去了1秒。此時,P1口的輸出值將根據LED變數的變化來更新,實現LED的跑馬燈效果。
LED變數通過左移操作來實現跑馬燈效果,每次中斷時LED左移一位。當LED變數達到0XFF時,即所有LED都被點亮後,重新將LED設置為0XFE,確保LED可以繼續循環點亮。具體代碼為:LED = LED << 1; LED = LED | 1; 這樣,LED將依次點亮,實現跑馬燈效果。
為了確保定時器1能夠正常工作,程序還設置了定時器1的中斷使能,並開啟總中斷。主函數中使用了一個無限循環,等待定時器1中斷的發生。當定時器1發生中斷時,程序將執行定時器1中斷服務函數,從而實現LED的跑馬燈效果。
通過上述配置和編程,51單片機可以控制8個LED實現跑馬燈效果,每隔大約1秒變化一次,達到預期的效果。
㈡ 單片機走馬燈總結怎麼寫就100字左右
最近無意間看到了涉及到跑馬燈效果的代碼,於是在網上查閱了很多資料,在這里對自己看的一些文章進行一下總結,順便加上自己的一些體會。
首先我們要實現走馬燈這樣一個效果,通常來說都是在TextView這個控制項中來實現的,而且其中的文字一定是單行顯示,如果多行顯示,那走馬燈效果也就失去了存在的意義。另外,在EditText中使用走馬燈沒有必要,也不合理,實際上對於EditText來說android:ellipsize這個屬性只有對於設置在android:hint中的文字
的時候是有用的,而且android:ellipsize="marquee"這個用法不能用在EditText控制項上。對於在EditText用戶輸入的文字,android:ellipsize這個屬性沒有用處。關於EditText
設置android:ellipsize的相關用法以後再講,在這里也算留個標記,以防自己忘了。
㈢ 51單片機跑馬燈電路圖(左右來回循環),8個led燈分別接在P2口,c程序、模擬圖如下。電路並未出現預期效果
電路:
一般的單片機 和 TTL集成電路晶元,都是灌電流能力強,拉電流能力極弱。
為此,應該用輸出低電平,來帶動負載。
而你的電路,是用高電平帶動LED發光的,模擬,也許還行;實際的電路,LED是不會亮的。