找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

來一個數(shù)字移動程序.開始數(shù)字"1"移到最邊,然后"2"....

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:88481 發(fā)表于 2018-4-15 18:02 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#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

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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