ダイナミックディジタルディスプレイ


ダイナミックディジタルディスプレイ
  • 関連紹介:
  • 動的デジタルチューブの表示は、人間の視覚的残留によって、同僚が表示していないデジタルチューブを同僚が表示するように見える
  • である.
  • 関連コード:
    #include<reg51.h>
    #include <intrins.h>
    
    /*0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f   */
    unsigned char code num[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    /*        */
    unsigned char mytime[]= {0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00};
    /*138         */
    sbit ls1=P1^2;
    sbit ls2=P1^1;
    sbit ls3=P1^0;
    /*  xms  */
    void delayxms(unsigned int xms)
    {
        unsigned int i,j;
        for(i=0; i<xms; i++)
            for(j=0; j<110; j++);
    }
    /*         */
    void display()
    {
        int i;
        for(i=0; i<8; i++)//    
        {
            switch(i)   //    
            {
            case(0):
                ls1=0,ls2=0,ls3=0;
                break;
            case(1):
                ls1=0,ls2=0,ls3=1;
                break;
            case(2):
                ls1=0,ls2=1,ls3=0;
                break;
            case(3):
                ls1=0,ls2=1,ls3=1;
                break;
            case(4):
                ls1=1,ls2=0,ls3=0;
                break;
            case(5):
                ls1=1,ls2=0,ls3=1;
                break;
            case(6):
                ls1=1,ls2=1,ls3=0;
                break;
            case(7):
                ls1=1,ls2=1,ls3=1;
                break;
            }
            P0=mytime[i];//  : i       i   
            delayxms(1);
            P0=0x00; //  
        }
    }
    
    void main()
    {
        while(1)
            display();
    }