标题: 这个单片机程序怎么不显示数字? [打印本页]

作者: shenqiwei    时间: 2022-8-31 00:14
标题: 这个单片机程序怎么不显示数字?

2.png (14 KB, 下载次数: 70)

2.png

1.png (89.05 KB, 下载次数: 69)

1.png

3.png (36.16 KB, 下载次数: 123)

3.png

4.png (15.08 KB, 下载次数: 75)

4.png

作者: shenqiwei    时间: 2022-8-31 00:15
不知道什么问题,查不出来

作者: 名字不是重点    时间: 2022-8-31 06:33
本帖最后由 名字不是重点 于 2022-8-31 06:45 编辑

上一贴已说过了:
573的OE被接地了,没有消隐,没有消隐,没有消隐!!!
咋就不听不做呢???
我帮你调试好了,你可以直接用。

////打字太辛苦,画图更难受

#include <reg51.h>
#include <stdio.h>
#include <intrins.h>

sbit d1=P2^0;       //锁存段码
sbit d2=P2^1;      // 锁存位选

unsigned  char dis_buf[8];  //显示缓存
unsigned char dig;            //位选
unsigned code segout[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};    //0--9共阳段码表

void disp_8_num(void); //显示函数

void main(void)     //主程序
{
    unsigned char i;
    while (1)       //主循环
  {
  
    for(i=0;i<8;i++)  dis_buf=i; //缓存刷新:01234567
   
     disp_8_num();  //显示一帧
    }
}

void disp_8_num()
//显示函数,显示8个数字 {
      unsigned char i,j;   
  
     dig=0xfe;  //从第一位开始扫显
      for (i=0;i<8;i++)  //共8个位的数码管
      {
      
        P0=segout[dis_buf];   //送段码
        d1=1;        
        d1=0;
     
       P0=dig;    //送位码      
       d2=1;      
       d2=0;

       j=60;     //简单延时,以稳定显示
       while(j--);

       P0=0xff;    //消隐位码,段码和位码2选1或全选都可以
       d2=1;
       d2=0;
      
       P0=0x00;    //消隐段码
       d1=1;
       d1=0;     
        
       dig= _crol_(dig,1); //准备下一位的位码
        }
  }


作者: yzwzfyz    时间: 2022-8-31 08:29
走单步,自己一步步的调试,看看问题出在哪了,要学会自己调试程序。
作者: wulin    时间: 2022-8-31 08:32
shenqiwei 发表于 2022-8-31 00:15
不知道什么问题,查不出来

楼主抄书的,消隐代码错误,按图例改码。



作者: xianfajushi    时间: 2022-8-31 09:28
用我的数码管驱动绝对不会有任何问题存在,唯有段值阴阳区别,取反即可,看我帖子。




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