找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

这个单片机程序怎么不显示数字?

查看数: 1603 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-8-31 00:14

正文摘要:

回复

ID:332444 发表于 2022-8-31 09:28
用我的数码管驱动绝对不会有任何问题存在,唯有段值阴阳区别,取反即可,看我帖子。
ID:213173 发表于 2022-8-31 08:32
shenqiwei 发表于 2022-8-31 00:15
不知道什么问题,查不出来

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


ID:123289 发表于 2022-8-31 08:29
走单步,自己一步步的调试,看看问题出在哪了,要学会自己调试程序。
ID:824490 发表于 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); //准备下一位的位码
        }
  }

ID:278457 发表于 2022-8-31 00:15
不知道什么问题,查不出来

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

Powered by 单片机教程网

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