本帖最后由 名字不是重点 于 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); //准备下一位的位码
}
}
|