數碼管動態顯示,顯示從1到9,每一位顯示一個數字 (單片機)


//object: 動態顯示數碼管,從1顯示到9
//writer:mike
//time: 2020,11,14

#include<reg52.h>


sbit wei = P2^7;
sbit du = P2^6;
//數組的類型指的是每一個元素的類型, code則指定存儲在代碼區    ,而非code 指存戶在內存中。
unsigned int code data1[10] = {
0x3F,//0
0x06,//1
0x5B,//2
0x4F,//3
0x66,//4
0x6D,//5
0x7D,//6
0x07,//7
0x7F,//8
0x6F//9
};
void delay(unsigned int);
void main()
{
    while(1)
    {
    //首先打開位選
    wei = 1;
    P0 = 0xfe;  //讓第一位顯示
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //顯示數字1
    P0 = data1[1];
    //關閉段選
    du = 0;

    //點亮第一位之后,延時一段時間
    delay(1);

    //針對第二位數碼管
    //打開位選
    wei = 1;
    //設置位選
    P0 = 0xfd;
    //關閉位選
    wei = 0;


    //打開段選
    du = 1;
    //設置段選
    P0 = data1[2];
    //關閉段選
    du = 0;
    delay(1);

    //針對第三位數碼管
    //打開位選
    wei = 1;
    //設置位選
    P0 = 0xfb;
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //設置段選
    P0 = data1[3];
    //關閉段選
    du = 0;
   delay(1);
        //針對第四位數碼管
    //打開位選
    wei = 1;
    //設置位選
    P0 = 0xf7;
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //設置段選
    P0 = data1[4];
    //關閉段選
    du = 0;
    delay(1);
    
    //針對第五位數碼管
    //打開位選
    wei = 1;
    //設置位選
    P0 = 0xef;
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //設置段選
    P0 = data1[5];
    //關閉段選
    du = 0;
   delay(1);
        
    //針對第六位數碼管
    //打開位選
    wei = 1;
    //設置位選
    P0 = 0xdf;
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //設置段選
    P0 = data1[6];
    //關閉段選
    du = 0;
    delay(1);
    
    //針對第七位數碼管
    //打開位選
    wei = 1;
    //設置位選
    P0 = 0xbf;
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //設置段選
    P0 = data1[7];
    //關閉段選
    du = 0;
    delay(1);
    
    //針對第八位數碼管
    //打開位選
    wei = 1;
    //設置位選
    P0 = 0x7f;
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //設置段選
    P0 = data1[8];
    //關閉段選
    du = 0;
    delay(1);
/*    //針對第九位數碼管
    //打開位選
    wei = 1;
    //設置位選
    wei = 0xff;
    //關閉位選
    wei = 0;

    //打開段選
    du = 1;
    //設置段選
    du = data1[9];
    //關閉段選
    du = 0;


*/    
    
    
    
    }

}

void delay(unsigned int x)
{
    unsigned a, b;
    for(a=x;a>0;a--)
    {
        for(b=120;b>0;b--);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM