用我的数码管驱动绝对不会有任何问题存在,唯有段值阴阳区别,取反即可,看我帖子。 |
shenqiwei 发表于 2022-8-31 00:15 楼主抄书的,消隐代码错误,按图例改码。 ![]() |
走单步,自己一步步的调试,看看问题出在哪了,要学会自己调试程序。 |
本帖最后由 名字不是重点 于 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); //准备下一位的位码 } } |
不知道什么问题,查不出来 |