標題: 來一個數(shù)字移動程序.開始數(shù)字"1"移到最邊,然后"2".... [打印本頁]

作者: 883    時間: 2018-4-15 18:02
標題: 來一個數(shù)字移動程序.開始數(shù)字"1"移到最邊,然后"2"....
#include <reg52.h>

#define DIS_DB P0
#define DIS_WE P1

unsigned char flag100ms = 0;
unsigned char flag = 0;
unsigned char code dischar[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char disbuf[6];

void Play();
void ConfigTime0();

void main()
{
        unsigned char i;

        ConfigTime0();
        while(1)
        {                 
                switch(flag)
                {                       
                        case 0: for (i=0;i<6;i++)
                                                disbuf[i] = 0xff;                                       
                                        if (flag100ms < 6)
                                           disbuf[flag100ms] = dischar[1];
                                        else
                                        {
                                                flag100ms = 0;
                                                flag++;
                                        }                                       
                                        break;
                        case 1: for (i=0;i<5;i++)
                                                disbuf[i] = 0xff;                                       
                                        if (flag100ms < 5)
                                        {
                                                disbuf[flag100ms] = dischar[2];
                                                disbuf[5] = dischar[1];
                                        }
                                        else
                                        {
                                                flag100ms = 0;
                                                flag++;
                                        }                                       
                                        break;
                        case 2: for (i=0;i<4;i++)
                                                disbuf[i] = 0xff;                                       
                                        if (flag100ms < 4)
                                        {
                                                disbuf[flag100ms] = dischar[3];
                                                disbuf[5] = dischar[1];
                                                disbuf[4] = dischar[2];
                                        }
                                        else
                                        {
                                                flag100ms = 0;
                                                flag++;
                                        }                                       
                                        break;
                        case 3: for (i=0;i<3;i++)
                                                disbuf[i] = 0xff;                                       
                                        if (flag100ms < 3)
                                        {
                                                disbuf[flag100ms] = dischar[4];
                                                disbuf[5] = dischar[1];
                                                disbuf[4] = dischar[2];
                                                disbuf[3] = dischar[3];
                                        }
                                        else
                                        {
                                                flag100ms = 0;
                                                flag++;
                                        }                                       
                                        break;
                        case 4: for (i=0;i<2;i++)
                                                disbuf[i] = 0xff;                                       
                                        if (flag100ms < 2)
                                        {
                                                disbuf[flag100ms] = dischar[5];
                                                disbuf[5] = dischar[1];
                                                disbuf[4] = dischar[2];
                                                disbuf[3] = dischar[3];
                                                disbuf[2] = dischar[4];
                                        }
                                        else
                                        {
                                                flag100ms = 0;
                                                flag++;
                                        }                                       
                                        break;
                        case 5:
                                        if (flag100ms < 1 )
                                        {
                                            disbuf[flag100ms] = dischar[6];
                                                disbuf[5] = dischar[1];
                                                disbuf[4] = dischar[2];
                                                disbuf[3] = dischar[3];
                                                disbuf[2] = dischar[4];
                                                disbuf[1] = dischar[5];
                                        }
                                        else
                                        {
                                                flag100ms = 0;
                                                flag = 0;
                                        }                                       
                                        break;
                }                                                                                                                                  
        }                                                                                       
}

void Play()
{
    static unsigned char i;

    DIS_DB = 0xff;
           DIS_DB = disbuf[i];
        DIS_WE = ~(0x01<<i);
        i++;
        if (i == 6)
                i = 0;
}

void ConfigTime0()
{
        TH0 = (65536-1000)/256;
        TL0 = (65536-1000)%256;
        TMOD = 0x01;
        TR0 = 1;
        ET0 = 1;
        EA = 1;
}

void InterruptTime0() interrupt 1
{
        static unsigned char i;

        TH0 = (65536-1000)/256;
        TL0 = (65536-1000)%256;
        Play();       
        i++;
        if (i >= 70)
        {
                i= 0;
                flag100ms++;
        }
}


數(shù)字移動.zip

32.59 KB, 下載次數(shù): 3, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1