油漆中的一只羊 发表于 2020-2-19 16:06:21

单片机两位数码管的控制

我现在控制51单片机上的数码管,是使用不停刷新的方法,但到想要操控数码管显示两位数10到20滚动时却遇到了问题,我无法同时控制两位数码管显示数字,由1到20,求程序解答

Sungne_jer 发表于 2020-2-19 16:22:07

这个问题曾经学过,但是已经忘得差不多了

油漆中的一只羊 发表于 2020-2-23 15:41:55

Sungne_jer 发表于 2020-2-19 16:22
这个问题曾经学过,但是已经忘得差不多了

Sun-C 发表于 2020-2-24 22:12:56

你写过的程序贴一下呗

你们叫我春哥吧 发表于 2020-3-10 22:07:09

数码管同时只能亮一个,看起来一起亮是因为延时时间端,人眼的视觉停留效应。

xjhshshrhhr 发表于 2020-3-16 11:51:31

这是我之前写的一个99秒的计时程序,看能不能帮到你(写的不好,还请见谅)
#include<reg52.h>#define uchar unsigned charuchar code tab[]={0X82,0xE7,0X4A,0X46,0X27,0X16,0X12,0XC7,0X2,0X6};uchar num,num1,i,j,shi,ge,num2;void delay(uchar x){for(i=x;i>0;i--)   for(j=110;j>0;j--);   }                                void main(){        TMOD=0X01;        TH0=(65536-50000)/256;        TL0=(65536-50000)%256;        EA=1;        ET0=1;        TR0=1;        while(1)        {          P0=tab;          P1=0xfe;          delay(5);          P0=tab;          P1=0XFD;          delay(5);        }}void T0_time()interrupt 1{   TH0=(65536-50000)/256;   TL0=(65536-50000)%256;   num1++;   if(num1==20)    {          num1=0;          num++;          if(num==99)          {             num=0;               }        }        shi=num/10;        ge=num%10;   }

xjhshshrhhr 发表于 2020-3-16 11:52:46

额,我发出去咋成这样了...

xiaosdm 发表于 2020-3-28 11:40:02

用位选和段选具体的程序我有一个三位数的你看看

xiaosdm 发表于 2020-3-28 11:42:45

#include<reg52.h>
#define ucharunsignedchar
#define uint   unsignedint
void delay(uint z);

void   display (uchar x);
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;                                                      
char code table[]={0x3f,0x06,0x5b,
                                                                        0x4f,0x66,0x6d,0x7d,
                                                                        0x07,0x7f,0x6f,0x3f,
                                                      0x7c,        0x39,0x5e,0x79,0x71}; /*ìí¼óêyÂë1ü*/
uchar codetablewela[]={0xfe,0xfd,0xfb,0xf7,
                                                                                        0xef,0xdf};
ucharge,shi,bai;
uchar tt=0;
uint temp;
void main()
{
        temp=0;
        TMOD=0X01;
        EA=1;
        TH0=(65536-50000)/256;/*50MS¼Æê±*/
        TL0=(65536-50000)%256;
        ET0=1;/*ê1óö¨ê±Æ÷0*/
        TR0=1;/*¿aÆô¶¨ê±Æ÷0*/
       
                while(1)
                {               
                        if (tt==20)
                        {
                                tt=0;
                        temp++;
                        }
                       
                        display (temp);
               
                       
                }               
}

void delay(uint z)
        {
                uint x,y;
                for(x=0;x<11;x++)
                        {
                        for(y=z;y>0;y--);
                        }       
       
                }
       
       
void   display (ucharx)
                {
               
                                bai=x/100;
                                shi=x%100/10;
                               ge=x%10;
                          dula=1;
                                P0=table;
                                dula=0;
                        P0=0xff;
                                wela=1;
                                P0=0xfe;
                                wela=0;
                                delay(5);
                       
                                        dula=1;
                                P0=table;
                                dula=0;
                        P0=0xff;
                                wela=1;
                                P0=0xfd;
                                wela=0;
                        delay(5);
                          dula=1;
                       P0=table;
                                dula=0;
                                P0=0xff;
                                wela=1;
                                P0=0xfb;
                                wela=0;
                        delay(5);
                }
               
               
                void timer0() interrupt 1
        {
        TH0=(65536-50000)/256;/*50MS¼Æê±*/
        TL0=(65536-50000)%256;
                tt++;
               
               
    }
       

物火卿腾 发表于 2020-4-2 10:15:47

本帖最后由 物火卿腾 于 2020-4-2 10:16 编辑

%5BPhoto%5D这样的行吗?

物火卿腾 发表于 2020-4-4 10:46:50

物火卿腾 发表于 2020-4-2 10:15
这样的行吗?

略过{:10_266:}
页: [1]
查看完整版本: 单片机两位数码管的控制