173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

单片机数码管闪一下就黑了

htxw 2023-03-14 资讯中心 24 ℃

单片机中,控制位的数码管的OE为什么一接到地数码管就会闪烁一下,随即熄灭

仅从文字表述, 分析可能的问题:

1. "1和11端连起来连到GND上"之前, "1和11"是否有上拉? 若没有则可能有干扰, 会引起不稳定

2. 锁存器输出与数码管的连接方式, 数码管的驱动方式(共阴/阳, 是否有限流电阻等)

3. 尝试改变时序(11"LE"先于1"/OE"接GND)

4. 研究一下锁存器的DATA SHEET.

为什么数码管没有稳定的亮着,只是全部乱闪了几下就灭了?

你程序有点问题,用下面的程序就可以了,

问题一:延时时间太短,数码管刷新太快,有一直在闪的感觉

问题二:for(num=7;num=0;num--)这个for语句当执行到num=0时,依然成立,往后执行会在执行num--这句,但是已经超出了无符号整形的范围,程序会给num取得 一个补码,当判断num=0;依然成立,程序会进入死循环。

解答完毕,不知是否合理,请自行理解,谢谢!~!~

#includereg52.h

#define uint unsigned int

#define uchar unsigned char

uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar code table2[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

uint num;

void delay(uint z)

{

uint x,y;

for(x=z;x0;x--)

for(y=110;y0;y--);

}

void main()

{

while(1)

{

for(num=8;num0;num--)

{

P0=table2[num-1];

P2=table1[num-1];

delay(200);

P2=0xff;

P0=0xff;

}

}

}

单片机4*4键盘控制四位7段数码管显示00-15问题,十位数字闪一闪后就不亮了,个位数字是对的

你的显示是动态的,必须时时扫描,也就是循环送显示数据,否则就无法正常显示,

#includereg51.h

sbit a=P3^4;

sbit b=P3^5;

sbit c=P3^6;

sbit d=P3^7;

sbit e=P2^0;

sbit f=P2^1;

sbit g=P2^2;

sbit h=P2^3;

sbit i=P2^6;

sbit j=P2^7;

bit flag;

unsigned char flag;

unsigned char code dcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0xff} ;

unsigned char key;

unsigned char t;

unsigned char m,mm;

void delay1ms(unsigned int x){

unsigned char j;

while(x--){

for(j=0;j123;j++){;}

}

}

void t0isr() interrupt 1

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

flag=~flag;

if(flag){e=0;f=0;g=1;h=0;P0=dcode[key/10];}

else {e=0;f=0;g=0;h=1;P0=dcode[key%10];}

}

void main(void){

TMOD=0x01;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

TR0=1;

ET0=1;

EA=1;

while(1) {

P3=0xff;

a=0;

t=P3;

t=t0x0f;

if(t!=0x0f)

{ delay1ms(80);

if (t!=0x0f){

t=P3;

t=t0x0f;

if(t==0x0e){key=0;}

if(t==0x0d){key=1;}

if(t==0x0b){key=2;}

if(t==0x07){key=3;}

}

}

P3=0xff;

b=0;

t=P3;

t=t0x0f;

if (t!=0x0f)

{

delay1ms(80);

if (t!=0x0f){

t=P3;

t=t0x0f;

if(t==0x0e){key=4;}

if(t==0x0d){key=5;}

if(t==0x0b){key=6;}

if (t==0x07){key=7;}

}

}

P3=0xff;

c=0;

t=P3;

t=t0x0f;

if (t!=0x0f)

{

delay1ms(80);

if (t!=0x0f){

t=P3;

t=t0x0f;

if(t==0x0e){key=8;}

if(t==0x0d){key=9;}

if(t==0x0b){key=10;}

if (t==0x07){key=11;}

}

}

P3=0xff;

d=0;

t=P3;

t=t0x0f;

if (t!=0x0f)

{

delay1ms(80);

if (t!=0x0f){

t=P3;

t=t0x0f;

if(t==0x0e){key=12;}

if(t==0x0d){key=13;}

if(t==0x0b){key=14;}

if(t==0x07){key=15;}

}

}

}}

两个数码管接在同一个单片机的端口上为什么会只亮一下就熄灭

程序没有正常执行。要确认二极管和数码管是共阴还是共阳的,然后再决定IO口应该输出高电平还是低电平。

单片机最小系统接上电源后发光二极管和数码管只是闪一下就不亮了

自己应该知道程序是怎么执行的吧?那就让程序步进执行,然后一一测试,看看IO口的变化是否正确,很快就可以知道问题了,应该是程序没有正常执行;再看看灯泡另外一端是否与电源端短路了,否则二极管始终处于截止的状态,所以要确认二极管和数码管是共阴还是共阳的,然后再决定IO口应该输出高电平还是低电平。

单片机数码管闪一下就黑了的介绍到此就结束了,感谢您耐心阅读,谢谢。

本文标签:单片机数码管闪一下就黑了

<