- 單片機C語言程序設計實訓100例
- 彭偉編著
- 467字
- 2018-12-27 05:12:01
3.2 從左到右的流水燈
本例連接P0端口的8只LED從左到右循環滾動點亮,產生走馬燈效果。
本例電路如圖3-2所示。

圖3-2 從左到右的流水燈電路
程序設計調試與實訓:
本例中的8只LED連接在P0端口,LED陰極指向P0,陽極通過限流電阻接+5V,由于LED接在P0端口,而P0內部無上拉電阻,因此LED只能按圖3-2所示來連接,8只電阻同時起限流和上拉作用。如果將它們全部接在P1、P2或P3端口,讀者還可以將所有LED反接,陽極指向端口,陰極通過限流電阻后共同接地,這樣連接后再相應修改程序,仍可以出現相同的運行效果。
程序將P0端口初值設為0xFE(11111110),由于電路中LED是共陽連接的,該初值會使第0只LED被點亮,當11111110向左循環移位時,即可使8只LED從左向右形成循環走馬燈效果。循環左移由函數_crol_完成,注意添加頭文件intrins.h。
讀者可修改本例代碼,實現LED循環右移顯示的效果(循環右移函數為_cror_)。
源程序代碼:
//----------------------------------------------------------------- // 名稱: 從左到右的流水燈 //----------------------------------------------------------------- // 說明: 接在P0端口的8只LED從左到右循環依次點亮,產生走馬燈效果。 //----------------------------------------------------------------- #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //----------------------------------------------------------------- // 延時 //----------------------------------------------------------------- void DelayMS(uint x) { uchar t; while(x--) { for(t = 0; t < 120; t++); } } //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- void main() { P0 = 0xFE; while(1) { P0 = _crol_(P0,1); //P0端口的值向左循環移動1位 DelayMS(150); } }
推薦閱讀
- 樂高機器人設計技巧:EV3結構設計與編程指導
- Mastering OpenCV 4
- Python GUI Programming Cookbook
- PHP+MySQL網站開發項目式教程
- Reactive Android Programming
- Learning SciPy for Numerical and Scientific Computing(Second Edition)
- BeagleBone Robotic Projects(Second Edition)
- SQL Server 2016 從入門到實戰(視頻教學版)
- Robot Framework Test Automation
- Head First Kotlin程序設計
- MongoDB Cookbook
- Google Maps JavaScript API Cookbook
- Mastering Magento Theme Design
- 3ds Max瘋狂設計學院
- Neo4j High Performance