找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1447|回复: 0
打印 上一主题 下一主题
收起左侧

来一个数字移动程序.开始数字"1"移到最边,然后"2"....

[复制链接]
跳转到指定楼层
楼主
ID:88481 发表于 2018-4-15 18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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++;
        }
}


数字移动.zip

32.59 KB, 下载次数: 3, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表