鱼C论坛

 找回密码
 立即注册
查看: 3426|回复: 7

数码管滚动显示

[复制链接]
发表于 2015-7-19 02:03:11 | 显示全部楼层 |阅读模式
20鱼币
我想让一个6位的共阴极数码管滚动显示一个 123,就是

1 2 3 u u u  ( u 表示什么也不显示 )
u 1 2 3 u u
u u 1 2 3 u
这样的,一直滚动显示

程序该怎么写啊?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-7-19 02:05:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-22 22:01:57 | 显示全部楼层
:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-26 06:36:15 | 显示全部楼层
通过移位位选
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-26 20:38:21 | 显示全部楼层
你需要把你的电路给出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-10 10:38:31 | 显示全部楼层
你需要给出电路,6个数码管肯定要动态扫描,最常用的有38译码器,和锁存器,来动态扫描显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-10 12:04:01 | 显示全部楼层
#include <REGX52.H>
typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 a[6];
code uint8 number123[6] = {0x06,0x5b,0x4f,
                                                 0x00,0x00,0x00};
uint16 counter = 0;
sbit P22 = P2^0;
sbit P21 = P2^1;
sbit P20 = P2^2;
sbit P24 = P2^4;
void refresh();
void int_init();
void timer1_init();
MAIN()
{
        P24 = 1;
        a[0] = 0; a[1] = 1; a[2] = 2; a[3] = 3; a[4] = 4; a[5] = 5;
        timer1_init();
        int_init();

        while(1);
}
void refresh()
{
                static uint8 j=0;
                switch(j)
                {
                case 0:        P20 = 0; P21 = 0; P22 = 0; j++;P1 = number123[a[0]];break;
                case 1:        P20 = 0; P21 = 0; P22 = 1; j++;P1 = number123[a[1]];break;
                case 2:        P20 = 0; P21 = 1; P22 = 0; j++;P1 = number123[a[2]];break;
                case 3:        P20 = 0; P21 = 1; P22 = 1; j++;P1 = number123[a[3]];break;
                case 4:        P20 = 1; P21 = 0; P22 = 0; j++;P1 = number123[a[4]];break;
                case 5:        P20 = 1; P21 = 0; P22 = 1; j=0;P1 = number123[a[5]];break;
                default:break;
                }
}
void timer1_init()               
{
        TMOD |= 0x10;       
        TMOD &= 0xdf;       
        TH1 = 0xFC;       
        TL1 = 0x67;               
        TR1 = 1;
}
void int_init()
{
        ET1 = 1;       
        EA = 1;     
}
void interrupt_timer1() interrupt 3
{
        static uint8 k=0;
        TH1 = 0xFC;       
        TL1 = 0x67;
        counter++;
        if(1000==counter)
        {
                counter = 0;
               
                switch(k)
                {
                        case 0:        a[0] = 0; a[1] = 1; a[2] = 2; a[3] = 3; a[4] = 4; a[5] = 5;break;
                        case 1:        a[0] = 5; a[1] = 0; a[2] = 1; a[3] = 2; a[4] = 3; a[5] = 4;break;
                        case 2:        a[0] = 4; a[1] = 5; a[2] = 0; a[3] = 1; a[4] = 2; a[5] = 3;break;
                        case 3:        a[0] = 3; a[1] = 4; a[2] = 5; a[3] = 0; a[4] = 1; a[5] = 2;break;
                        case 4:        a[0] = 2; a[1] = 3; a[2] = 4; a[3] = 5; a[4] = 0; a[5] = 1;break;
                        case 5:        a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5; a[5] = 0;break;
                        default:break;       
                }
                k++;
                if(6 == k) k=0;
               
        }       
        refresh();                       
}

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
哥斯拉不说话 + 1 + 1 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-23 15:25:15 | 显示全部楼层
:huffy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-23 18:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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