哥斯拉不说话 发表于 2015-7-19 02:03:11

数码管滚动显示

我想让一个6位的共阴极数码管滚动显示一个 123,就是

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

程序该怎么写啊?

哥斯拉不说话 发表于 2015-7-19 02:05:54

@沉思的牛

默.默 发表于 2015-7-22 22:01:57

:handshake

沉思的牛 发表于 2015-7-26 06:36:15

通过移位位选

沉思的牛 发表于 2015-7-26 20:38:21

你需要把你的电路给出来

tplove 发表于 2015-11-10 10:38:31

你需要给出电路,6个数码管肯定要动态扫描,最常用的有38译码器,和锁存器,来动态扫描显示

tplove 发表于 2015-11-10 12:04:01

#include <REGX52.H>
typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 a;
code uint8 number123 = {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; a = 1; a = 2; a = 3; a = 4; a = 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];break;
                case 1:        P20 = 0; P21 = 0; P22 = 1; j++;P1 = number123];break;
                case 2:        P20 = 0; P21 = 1; P22 = 0; j++;P1 = number123];break;
                case 3:        P20 = 0; P21 = 1; P22 = 1; j++;P1 = number123];break;
                case 4:        P20 = 1; P21 = 0; P22 = 0; j++;P1 = number123];break;
                case 5:        P20 = 1; P21 = 0; P22 = 1; j=0;P1 = number123];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; a = 1; a = 2; a = 3; a = 4; a = 5;break;
                        case 1:        a = 5; a = 0; a = 1; a = 2; a = 3; a = 4;break;
                        case 2:        a = 4; a = 5; a = 0; a = 1; a = 2; a = 3;break;
                        case 3:        a = 3; a = 4; a = 5; a = 0; a = 1; a = 2;break;
                        case 4:        a = 2; a = 3; a = 4; a = 5; a = 0; a = 1;break;
                        case 5:        a = 1; a = 2; a = 3; a = 4; a = 5; a = 0;break;
                        default:break;       
                }
                k++;
                if(6 == k) k=0;
               
        }       
        refresh();                       
}

/./ 发表于 2015-12-23 15:25:15

:huffy:
页: [1]
查看完整版本: 数码管滚动显示