国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2025年07月21日(星期一)

2018年07月21日 | 51單片機之?dāng)?shù)碼管顯示實驗

發(fā)布者:綠意盎然 來源: eefocus關(guān)鍵字:51單片機  數(shù)碼管  顯示實驗 手機看文章 掃描二維碼
隨時隨地手機看文章

/* 

名稱:51單片機數(shù)碼管顯示實驗 

說明:對于數(shù)碼管來說,其本質(zhì)上可以理解為按照一定規(guī)則組合的多個二極管。其使用只需按照特定規(guī)則顯示對應(yīng)的二極管即可。要稍微注意一點的就是多個數(shù)碼管的顯示分為靜態(tài)顯示和動態(tài)顯示。靜態(tài)顯示就是每個二極管顯示的內(nèi)容是一樣的,通過片選信號來決定是哪個二極管該顯示。動態(tài)數(shù)碼管,即利用人眼的視覺停留效果,快速掃描,快速顯示每個數(shù)碼管的內(nèi)容,使得每個數(shù)碼管看起來好像是一起顯示的一樣。 

本實驗編寫了幾個數(shù)碼管顯示的簡單程序。在此不做贅述了。


*/


#include


#define uchar unsigned char



//共陽極段碼(a在高位,dp在低位)

uchar code _data[16] = {0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,

                                                0x11,0xC1,0x63,0x85,0x61,0x71

                                                };


//共陽極段碼(a在低位,dp在高位)

uchar code _data1[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,

                                                0x83,0xC6,0xA1,0x86,0x8E

                                                };                                              


//延時函數(shù)

void delay_ms(unsigned int n)

{

    unsigned int i=0,j=0;

    for(i=0;i

        for(j=0;j<123;j++);

}



//一位數(shù)碼管循環(huán)顯示0-F(共陽極)

void OneNixieTube()

{

    uchar i = 0;


    while(1)

    {

            for(i = 0;i<16;++i)

            {

                P2 = _data1[i];         

                delay_ms(1000);

            }




    }

}




//靜態(tài)數(shù)碼管循環(huán)顯示0-8

void StaticNixieTube()

{

    uchar i = 0,temp = 0;

    while(1)

    {

            for(i = 0;i<16;++i)

            {


                //片選部分

                if(i%8 == 0)

                    temp = 0x01;

                else

                    temp = temp<<1;

                P0 = ~temp;                    //P0為片選輸出端口,低電平有效

                //顯示部分

                P2 = ~_data1[i];           //P2為顯示輸出端口



                delay_ms(1000);

            }

    }


}



//動態(tài)數(shù)碼管顯示(0-7,8-F,8個數(shù)碼管分兩次顯示)

void DynamicNixieTube()

{

    uchar i = 0;

    unsigned int delay_time = 0;        //0-7 8-F每段的延時時間


    uchar CS[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};        //片選碼


        while(1)

        {


            if(delay_time++ < 250)

            {

                //0-7段顯示

                for(i = 0;i < 8;++i)

                {

                    P0 = CS[i];

                    P2 = ~_data1[i];


                    delay_ms(1);        //延時極小的時間間隔,人眼察覺不出來


                }

            }

            else if(delay_time++ < 500 )        //???都是循環(huán)250次,為什么0-7段顯示的時間長于8-F段顯示的時間???

            {

                //8-F段顯示

                for(i = 0;i < 8;++i)

                {

                    P0 = CS[i];

                    P2 = ~_data1[i+8];


                    delay_ms(1);        //延時極小的時間間隔,人眼察覺不出來


                }


            }

            else

                delay_time = 0;                 //重新置零


        }

}



//數(shù)碼管顯示指定時間格式為 HH-MM-SS

void DisplayTime(uchar hour,uchar min,uchar sec)

{

    uchar time[8] = {0};

    uchar i = 0,j = 0;

    uchar CS[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};        //片選碼



    //獲取時間的每位信息

    if(hour >= 0 && hour <=23 )

    {

            time[0] = hour / 10;

            time[1] = hour % 10;


            time[2] = ':';

    }



    if(min >= 0 && min <= 59)

    {

        time[3] = min /10;

        time[4] = min % 10;


        time[5] = ':';


    }


    if(sec >= 0 && sec <= 59)

    {

        time[6] = sec / 10;

        time[7] = sec % 10;

    }



    //顯示部分

    for(i = 0;i<7;++i)

    {

            for(i = 0;i < 8;++i)

                {

                    P0 = CS[i];             //片選


                    //顯示時間

                    if(i != 2 && i != 5)

                    {

                        j = time[i];

                        P2 =  ~_data1[j];

                    }

                    else                        //顯示分隔符‘-’

                    {

                        j = 0xBF;

                        P2 = ~j;

                    }


                    delay_ms(1);        //延時極小的時間間隔,人眼察覺不出來


                }

    }




}



int main()

{

    //  OneNixieTube();

    //  StaticNixieTube();

    //DynamicNixieTube()

        //DisplayTime(12,40,56);





    return 0;

}


關(guān)鍵字:51單片機  數(shù)碼管  顯示實驗 引用地址:51單片機之?dāng)?shù)碼管顯示實驗

上一篇:C51之外部中斷
下一篇:51單片機之按鍵實驗

推薦閱讀

Faraday Future(法拉第未來)官方宣布,繼FF美國漢福德工廠之后,又迎來新的里程碑。在生產(chǎn)、研發(fā)團隊不眠不休的努力下,F(xiàn)F 91第一臺白車身提前誕生,向量產(chǎn)繼續(xù)邁進。據(jù)此前報道,該車最快有望于今年8月量產(chǎn)。?白車身(Body in White)即完成焊接但未涂裝之前的車身,不包括四門兩蓋、內(nèi)外飾、電子系統(tǒng)、底盤系統(tǒng)、動力總成等運動件。一般來說,白...
近年來,在人口紅利逐步消退及科技進步的背景下,中國制造業(yè)企業(yè)自動化升級、機器換人的需求逐年攀升。擁有世界工廠之稱的中國,從2013年位列世界工業(yè)機器人市場的No.1,到2017年占據(jù)全球機器人銷售量三分一以上,并連續(xù)五年位居全球之首。中國巨大的需求量吸引了全球工業(yè)機器人廠商的高度聚集與投資。 盡管國產(chǎn)機器人市場需求突飛猛進,但國內(nèi)市場一直...
翻譯自——allaboutcircuits 近日,來自澳大利亞研究人員聲稱,超鋰離子電池可以開發(fā)出適用于高級儲能的新型陰極。 如今,對清潔、廉價、能夠應(yīng)對現(xiàn)代挑戰(zhàn)的新型能源存儲解決方案的需求比以往任何時候都高。我們需要它來幫助管理可再生能源在電網(wǎng)中所占比例不斷上升的難題,使非電網(wǎng)社區(qū)遠(yuǎn)離柴油和化石燃料,并將那些目前無法獲得電力的社區(qū)連接起來。 悉...
泰克示波器試用選件申請步驟:第一步:泰克官網(wǎng)(https://www.tek.com.cn/)找到產(chǎn)品注冊;第二步:注冊一臺泰克示波器設(shè)備;第三步:在第一欄的許可證管理目錄下,打開可試用許可證目錄:第一欄是許可證管理目錄第三欄是個人賬戶下的儀器設(shè)備打開后頁面下有多種設(shè)備試用選件,可根據(jù)需要添加:我們選擇MSO44示波器的子目錄:可以看到,在這里可以激活多種...

史海拾趣

小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved