标题: 关于51单片机四位数码管滚动显示0~9的程序问题 [打印本页]

作者: yreki    时间: 2022-3-30 20:51
标题: 关于51单片机四位数码管滚动显示0~9的程序问题
请教一下,为什么我在实物板子上能运行到了Protues仿真里却无法正常运行啊?

代码如下:
#include <REGX52.H>
unsigned char N[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void Delay(unsigned int xms)
{
    unsigned char i, j;
    while(xms--)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);
    }
}

void led (unsigned char Location,Number)
{
    switch(Location)        
    {
        case 1:P3_7=0x00;P3_6=0xFF;P3_5=0xFF;P3_4=0xFF;break;
        case 2:P3_7=0xFF;P3_6=0x00;P3_5=0xFF;P3_4=0xFF;break;
        case 3:P3_7=0xFF;P3_6=0xFF;P3_5=0x00;P3_4=0xFF;break;
        case 4:P3_7=0xFF;P3_6=0xFF;P3_5=0xFF;P3_4=0x00;break;
    }
    P0=N[Number];   
    Delay(1);               
    P0=0xFF;            
}



void main()
{
    unsigned int i,j;
   
    while(1)
    {
      i=0;
            for(i=0;i<7;i++)
        {
            for(j=0;j<100;j++)
            {
        led(1,i+0);   
     led(2,i+1);   
        led(3,i+2);
       led(4,i+3);
               
            }
        }
        }
        
        
}



51hei截图20220330205056.png (145.4 KB, 下载次数: 44)

51hei截图20220330205056.png

作者: lkc8210    时间: 2022-3-30 23:40
P0有没有加上拉电阻?
作者: yzwzfyz    时间: 2022-3-31 08:45
P3_X是位,不是字节,用0、1;不要用FFH.
另外:走单步学会自己调试。
作者: kscheang    时间: 2022-3-31 22:25
由於我用的是普中幵发板, 所以有少许修改, 並將显示做到無缝连续显示, 不会显 6789後马上变為0123

#include <REG52.H>
sbit LSA = P1^0;
sbit LSB = P1^1;
sbit LSC = P1^2;

unsigned char SMG[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0xf9,0xa4,0xb0};

void Delay(unsigned int xms)
{
    unsigned char i, j;
    while(xms--)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);
    }
}

void led (unsigned char Location,Number)
{
    switch(Location)        
    {
        case 1: LSA = 0; LSB = 0; LSC = 0; break;
        case 2: LSA = 1; LSB = 0; LSC = 0; break;
        case 3: LSA = 0; LSB = 1; LSC = 0; break;
        case 4: LSA = 1; LSB = 1; LSC = 0; break;
    }
    P0=~SMG[Number];   
    Delay(1);               
    P0=0x00;            
}



void main()
{
    unsigned int i,j;

    while(1)
    {
      i=0;
        for(i=0;i<10;i++)
        {
            for(j=0;j<100;j++)
            {
                        led(1,i+0);   
                             led(2,i+1);   
                        led(3,i+2);
                               led(4,i+3);
            }
        }
    }
}



作者: freecn    时间: 2022-4-1 23:24
数码管是不显示 还是显示错误 建议静态测试一下 看你这程序是共阳管 P0=0xc0;P3=0xff;试试看.




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1