标题: 八位数码管滚动显示学号,请各位大佬来看看我的单片机程序错在哪里 [打印本页]

作者: opcc    时间: 2020-11-8 22:33
标题: 八位数码管滚动显示学号,请各位大佬来看看我的单片机程序错在哪里
我做的是八位数码管滚动显示学号
学号:1863400125
显示出来的数字不正确,查不出错误的地方
请各位大佬帮忙指出错误

单片机源程序如下:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char                           
#define uint unsigned int
uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x7f,0x6f};
uchar code number[] = {0,0,0,0,1,8,6,3,4,0,0,1,2,5};
uchar code wie[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  //0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
uchar gg,aa,len;
void delay(uint x);
void main()
{
        while(1)
        {
                len=sizeof(number)/sizeof(uchar);
                for (gg=0;gg<len;gg++)
                {
                        for (aa=0;aa<30;aa++)
                        {
                                P2=wie[8];
                                P0=tab[number[gg]];
                                delay(5);
                                P0=0x00;
                                
                                P2=wie[7];
                                P0=tab[number[gg+1]];
                                delay(5);
                                P0=0x00;

                                P2=wie[6];
                                P0=tab[number[gg+2]];
                                delay(5);
                                P0=0x00;
                                
                                P2=wie[5];
                                P0=tab[number[gg+3]];
                                delay(5);
                                P0=0x00;

                                P2=wie[4];
                                P0=tab[number[gg+4]];
                                delay(5);
                                P0=0x00;
                                
                                P2=wie[3];
                                P0=tab[number[gg+5]];
                                delay(5);
                                P0=0x00;

                                P2=wie[2];
                                P0=tab[number[gg+6]];
                                delay(5);
                                P0=0x00;

                                P2=wie[1];
                                P0=tab[number[gg+7]];
                                delay(5);
                                P0=0x00;

                                P2=wie[0];
                                P0=tab[number[gg+8]];
                                delay(5);
                                P0=0x00;
                        }
                }
        }
}                                                                 
void delay(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=100;j>0;j--);
}

222.zip

16.55 KB, 下载次数: 25

仿真电路图


作者: wulin    时间: 2020-11-9 08:32
楼主仔细对比一下就明白错在哪。
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char                           
  4. #define uint unsigned int

  5. uchar code tab[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  6. uchar code wie[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  7. uchar data number[]={10,10,10,10,1,8,6,3,4,0,0,1,2,5};

  8. void delay(uint x);

  9. void main()
  10. {
  11.         uchar i,k,temp;
  12.         uint j;
  13.         while(1)
  14.         {
  15.                 P0=0x00;
  16.                 P2=wie[i];
  17.                 P0=tab[number[i]];
  18.                 i++;
  19.                 i%=8;
  20.                 j++;
  21.                 if(j>=500)
  22.                 {
  23.                         j=0;
  24.                         temp=number[0];
  25.                         for(k=0;k<13;k++)
  26.                         {
  27.                                 number[k]=number[k+1];
  28.                         }
  29.                         number[13]=temp;
  30.                 }
  31.                 delay(1);
  32.         }
  33. }
  34. void delay(uint x)
  35. {
  36.         uint i,j;
  37.         for(i=x;i>0;i--)
  38.                 for(j=120;j>0;j--);
  39. }
复制代码

作者: YHB51H    时间: 2020-11-9 13:32
uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x7f,0x6f};原因是少了一个段码
作者: wsndsk    时间: 2021-7-2 10:09
仿真电路图能以图片形式发一下嘛




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