- 單片機C語言程序設計實訓100例
- 彭偉編著
- 452字
- 2018-12-27 05:12:03
3.6 單只數碼管循環顯示0~9
本例運行時,電路中的單只數碼管會循環顯示0,1,2,…,9。
本例電路如圖3-6所示。

圖3-6 單只數碼管循環顯示0~9電路
程序設計調試與實訓:
本例的單只共陰數碼管連接在P0端口,電路中必須添加上拉電阻。當P0端口相應引腳為1時,對應數碼管段點亮。程序中預設了數字0~9的段碼,0~9的段碼按固定時間間隔循環發送到P0端口,產生數字循環顯示效果。
本例源程序預設的數字段碼表存放在數組DSY_CODE中,由于段碼表是固定的,因此存儲類型可設為code。由于本例給出的段碼表是針對共陽數碼管的,但電路中使用的卻是共陰數碼管,因此在段碼送至P0端口顯示時要將其取反。
讀者可將本例段碼表改為共陰數碼管段碼表,使程序實現相同功能。
源程序代碼:
//----------------------------------------------------------------- // 名稱: 單只數碼管循環顯示0~9 //----------------------------------------------------------------- // 說明: 主程序中的循環語句反復將0~9的段碼送至P0端口,使數字0~9 // 循環顯示。 //----------------------------------------------------------------- #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //0~9的數碼管段碼,最后一個為關閉 uchar code DSY_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, 0xff}; //----------------------------------------------------------------- // 延時 //----------------------------------------------------------------- void DelayMS(uint x) { uchar t; while(x--) for(t = 0; t < 120; t++); } //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- void main() { uchar i = 0; P0 = 0x00; while(1) { P0 = ~DSY_CODE[i]; i = (i+1) % 10; DelayMS(180); } }
推薦閱讀
- Facebook Application Development with Graph API Cookbook
- Flutter開發實戰詳解
- TypeScript入門與實戰
- Programming ArcGIS 10.1 with Python Cookbook
- Clojure for Domain:specific Languages
- Visual Basic程序設計教程
- Mastering Linux Security and Hardening
- Distributed Computing in Java 9
- 從零開始學Android開發
- Exploring SE for Android
- Building Business Websites with Squarespace 7(Second Edition)
- 軟件測試分析與實踐
- Java程序設計實用教程(第2版)
- C語言從入門到精通(視頻實戰版)
- Raspberry Pi開發實戰