找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1221|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)數(shù)碼管顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include <reg52.h>

#define uchar unsigned char        //宏定義
#define uint  unsigned int         //宏定義
#define DELAY_TIME 2                 //將常量定義為宏,方便修改代碼
sbit we = P2^7;                                //數(shù)碼管位選鎖存器接口
sbit du = P2^6;                                //數(shù)碼管段選鎖存器接口
//數(shù)碼管段選表
uchar code leddata[]={
                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                0x77,  //"A"
                0x7C,  //"B"
                0x39,  //"C"
                0x5E,  //"D"
                0x79,  //"E"
                0x71,  //"F"
                0x76,  //"H"
                0x38,  //"L"
                0x37,  //"n"
                0x3E,  //"u"
                0x73,  //"P"
                0x5C,  //"o"
                0x40,  //"-"
                0x00,  //熄滅
                0x00  //自定義
                          };
//毫秒級(jí)延時(shí)函數(shù)
void delay(uint z)
{
        uint x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}

void main()
{
                while(1)
                {

                        P0 = 0xfe;//1111 1110 第一位數(shù)碼管顯示,注意數(shù)碼管的排序,P0.0對(duì)應(yīng)連接的是左邊第一位數(shù)碼管
                        we = 1;                //打開(kāi)位選
                        we = 0;                //關(guān)閉位選

                        P0 = leddata[1];
                        du = 1;                //打開(kāi)段選
                        du = 0;                //關(guān)閉段選
                        delay(DELAY_TIME);//延時(shí)

                        P0 = 0xfd;        //1111 1101 只選通第二位數(shù)碼管
                        we = 1;                //打開(kāi)位選
                        we = 0;                //關(guān)閉位選

                        P0 = leddata[2]; //顯示2
                        du = 1;                        //打開(kāi)段選
                        du = 0;                        //關(guān)閉段選
                        delay(DELAY_TIME);//延時(shí)

                        P0 = 0xfb;        // 1111 1011只選通第三位數(shù)碼管
                        we = 1;                //打開(kāi)位選
                        we = 0;                //關(guān)閉位選

                        P0 = leddata[3];        //顯示3
                        du = 1;                                //打開(kāi)段選
                        du = 0;                                //關(guān)閉段選
                        delay(DELAY_TIME);        //延時(shí)

                        P0 = 0xf7;        //1111 0111 只選通第四位數(shù)碼管
                        we = 1;                //打開(kāi)位選
                        we = 0;                //關(guān)閉位選

                        P0 = leddata[4]; //顯示4
                        du = 1;                        //打開(kāi)段選
                        du = 0;                        //關(guān)閉段選
                        delay(DELAY_TIME);//延時(shí)

                        P0 = 0xef;        //1110 1111 只選通第五位數(shù)碼管
                        we = 1;                //打開(kāi)位選
                        we = 0;                //關(guān)閉位選

                        P0 = leddata[5]; //顯示5
                        du = 1;                        //打開(kāi)段選
                        du = 0;                        //關(guān)閉段選
                        delay(DELAY_TIME);//延時(shí)

                        P0 = 0xdf;                //1101 1111 只選通第六位數(shù)碼管
                        we = 1;                        //打開(kāi)位選
                        we = 0;                        //關(guān)閉位選

                        P0 = leddata[6];        //顯示6
                        du = 1;                                //打開(kāi)段選
                        du = 0;                                //關(guān)閉段選
                        delay(DELAY_TIME);        //延時(shí)

                        we = 1;                        //打開(kāi)位選
                        P0 = 0xbf;                //1011 1111 只選通第七位數(shù)碼管
                        we = 0;                        //關(guān)閉位選

                        P0 = leddata[7];        //顯示7
                        du = 1;                                //打開(kāi)段選
                        du = 0;                                //關(guān)閉段選
                        delay(DELAY_TIME);        //延時(shí)

                        P0 = 0x7f;                        //0111 1111 只選通第八位數(shù)碼管
                        we = 1;                                //打開(kāi)位選
                        we = 0;                                //關(guān)閉位選

                        P0 = leddata[8];        //顯示8
                        du = 1;                                //打開(kāi)段選
                        du = 0;                                //關(guān)閉段選
                        delay(DELAY_TIME);        //延時(shí)        
                }
}


P@JH%QEX`~O%_YKNS}LVV6P.png (142.25 KB, 下載次數(shù): 48)

數(shù)碼管原理圖

數(shù)碼管原理圖
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表