找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2643|回复: 3
打印 上一主题 下一主题
收起左侧

八位数码管滚动显示学号,请各位大佬来看看我的单片机程序错在哪里

[复制链接]
跳转到指定楼层
楼主
ID:840757 发表于 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

仿真电路图

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 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. }
复制代码
回复

使用道具 举报

板凳
ID:76318 发表于 2020-11-9 13:32 | 只看该作者
uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x7f,0x6f};原因是少了一个段码
回复

使用道具 举报

地板
ID:947196 发表于 2021-7-2 10:09 | 只看该作者
仿真电路图能以图片形式发一下嘛
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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