- 單片機C語言程序設計實訓100例
- 彭偉編著
- 442字
- 2018-12-27 05:12:02
3.4 花樣流水燈
在上一案例中,LED只能按某種單調的規律顯示,無法實現復雜多變的花樣顯示。本例中兩組LED連接在P0和P2端口,它們按預先設定的花樣變換顯示。
本例電路如圖3-4所示。
程序設計調試與實訓:
本例將設計的花樣預設在兩個數組中,它們分別與兩組LED對應,各數組中的每個字節對應一種顯示組合,程序循環讀取數組中的顯示組合并送往端口,實現自定義花樣的自由顯示。
本例P0、P2端口對應的花樣數組所占空間較大,且預設后相對固定,因此Pattern_P0,Pattern_P2的存儲類型均設為code,由于電路中LED共陽連接,初始時將P0、P2均設為0xFF,在開始時將它們全部關閉。
讀者可以自行調整數組內容,改變數組大小,實現自定義的花樣顯示。

圖3-4 花樣流水燈電路
源程序代碼:
//----------------------------------------------------------------- // 名稱: 花樣流水燈 //----------------------------------------------------------------- // 說明: 16只LED分兩組按預設的多種花樣變換顯示。 //----------------------------------------------------------------- #include <reg51.h> #define uchar unsigned char #define uint unsigned int uchar code Pattern_P0[] = { 0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE7,0xDB,0xBD,0x7E,0xBD,0xDB,0xE7,0xFF,0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF, 0xAA,0x55,0x18,0xFF,0xF0,0x0F,0x00,0xFF,0xF8,0xF1,0xE3,0xC7,0x8F,0x1F,0x3F,0x7F, 0x7F,0x3F,0x1F,0x8F,0xC7,0xE3,0xF1,0xF8,0xFF,0x00,0x00,0xFF,0xFF,0x0F,0xF0,0xFF, 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE, 0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE, 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF }; uchar code Pattern_P2[] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,0xFF, 0xE7,0xDB,0xBD,0x7E,0xBD,0xDB,0xE7,0xFF,0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF, 0xAA,0x55,0x18,0xFF,0xF0,0x0F,0x00,0xFF,0xF8,0xF1,0xE3,0xC7,0x8F,0x1F,0x3F,0x7F, 0x7F,0x3F,0x1F,0x8F,0xC7,0xE3,0xF1,0xF8,0xFF,0x00,0x00,0xFF,0xFF,0x0F,0xF0,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00, 0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF }; //----------------------------------------------------------------- // 延時 //----------------------------------------------------------------- void DelayMS(uint x) { uchar t; while(x--) for(t = 0; t < 120; t++); } //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- void main() { uchar i; while(1) { //從數組中讀取數據送至P0端口和P2端口顯示 for(i = 0; i < 136; i++) { P0 = Pattern_P0[i]; P2 = Pattern_P2[i]; DelayMS(100); } } }
推薦閱讀
- 企業級Java EE架構設計精深實踐
- Delphi程序設計基礎:教程、實驗、習題
- 高效微控制器C語言編程
- 少年輕松趣編程:用Scratch創作自己的小游戲
- Web交互界面設計與制作(微課版)
- Python 3破冰人工智能:從入門到實戰
- Python機器學習之金融風險管理
- CRYENGINE Game Development Blueprints
- Illustrator CS6設計與應用任務教程
- Deep Learning with R Cookbook
- OpenCV 3 Blueprints
- Hacking Android
- C語言從入門到精通
- Mastering Apache Camel
- Building Clouds with Windows Azure Pack