找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1785|回复: 4
收起左侧

关于51单片机四位数码管滚动显示0~9的程序问题

[复制链接]
ID:1014417 发表于 2022-3-30 20:51 | 显示全部楼层 |阅读模式
请教一下,为什么我在实物板子上能运行到了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
回复

使用道具 举报

ID:161164 发表于 2022-3-30 23:40 | 显示全部楼层
P0有没有加上拉电阻?
回复

使用道具 举报

ID:123289 发表于 2022-3-31 08:45 | 显示全部楼层
P3_X是位,不是字节,用0、1;不要用FFH.
另外:走单步学会自己调试。
回复

使用道具 举报

ID:860248 发表于 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);
            }
        }
    }
}


回复

使用道具 举报

ID:1013716 发表于 2022-4-1 23:24 | 显示全部楼层
数码管是不显示 还是显示错误 建议静态测试一下 看你这程序是共阳管 P0=0xc0;P3=0xff;试试看.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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