打印
[51单片机]

51萌新请问我的4位数码管为什么不亮

[复制链接]
2460|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lis213|  楼主 | 2022-1-27 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lis213 于 2022-1-27 16:18 编辑

C:\Users\li\Desktop 这个是我自己画的 用的AT89S52 共阴极4位数码管(SR410361K)
P0控制段选 P2控制位选
共阴极数码管不应该是输出低电平亮吗?
但是我把程序烧进去以后,P2.0~P2.3 管脚是4.96V;P0口通过上拉电阻,输出也是4.96V,数码管12个管脚也都是4.96V
想请问各位大神怎么才能亮啊

使用特权

评论回复
评论
cjseng 2022-1-28 00:32 回复TA
检查EA引脚 

相关帖子

沙发
lis213|  楼主 | 2022-1-27 16:14 | 只看该作者
二楼放我的代码:
#include <reg51.h>

void jiayi();
void chufa();
void xianshi();
void delay();

sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;

unsigned char qianwei,baiwei,shiwei, gewei;
unsigned int count=0;
unsigned char code dis[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main()
{
        while(1)
        {
                jiayi();
                chufa();
                xianshi();
        }
}

void chufa()
{
        qianwei=count/1000;
        baiwei=count%1000/100;
        shiwei=count%100/10;
        gewei=count%10;
}

void jiayi()
{
        count=count+1;
        if(count==10000)
                count=0;
}

void delay()
{
        unsigned int i,j;
        for(i=0;i<10;i++)
        {
                for(j=0;j<200;j++);
        }
}

void xianshi()
{
        P2_0=0;
        P0=dis[gewei];
        delay();
        P2_0=1;
       
        P2_1=0;
        P0=dis[shiwei];
        delay();
        P2_1=1;
       
        P2_2=0;
        P0=dis[baiwei];
        delay();
        P2_2=1;
       
        P2_3=0;
        P0=dis[qianwei];
        delay();
        P2_3=1;
}
       

使用特权

评论回复
板凳
LcwSwust| | 2022-1-27 16:51 | 只看该作者
“数码管12个管脚也都是4.96V”这肯定不行啊。
先用万用表二极管档测一下数码管是否能点亮。
while(1)里就只写两句试试看:P2=0;P0=0xFF;

使用特权

评论回复
地板
416369123| | 2022-1-27 17:44 | 只看该作者
4.96V不加限流电阻会不会被烧掉,上拉电阻是多大的,楼上听建议直接让位选拉低,段选置高看看亮不

使用特权

评论回复
5
lis213|  楼主 | 2022-1-27 17:48 | 只看该作者
416369123 发表于 2022-1-27 17:44
4.96V不加限流电阻会不会被烧掉,上拉电阻是多大的,楼上听建议直接让位选拉低,段选置高看看亮不 ...

1K的上拉电阻

使用特权

评论回复
6
416369123| | 2022-1-27 18:02 | 只看该作者
1k的上拉会不会太小,设置成推挽输出看看

使用特权

评论回复
7
xch| | 2022-1-27 18:07 | 只看该作者
P0 口没有锁存输出功能,不能直接用。

使用特权

评论回复
评论
cjseng 2022-1-28 00:31 回复TA
没有上拉而已,怎么不能输出锁存了? 
8
lis213|  楼主 | 2022-1-27 19:02 | 只看该作者
xch 发表于 2022-1-27 18:07
P0 口没有锁存输出功能,不能直接用。

噢噢噢噢 那我换个口看看

使用特权

评论回复
9
cjseng| | 2022-1-28 00:32 | 只看该作者
估计程序根本没运行,检查一下EA引脚

使用特权

评论回复
10
songchenping| | 2022-1-28 08:23 | 只看该作者
刷新率听过吗?保证足够快的刷新频率。

使用特权

评论回复
11
ayb_ice| | 2022-1-28 08:41 | 只看该作者
xch 发表于 2022-1-27 18:07
P0 口没有锁存输出功能,不能直接用。

别乱说,标准51 P0做输出只是要接上接电阻而已,做地址信号才要锁存输出

使用特权

评论回复
12
xch| | 2022-1-28 10:03 | 只看该作者
lis213 发表于 2022-1-27 16:14
二楼放我的代码:
#include  

这程序有错误。但不至于不亮。/EA引脚应当接高电平。

使用特权

评论回复
13
gdszzyq| | 2022-1-28 11:41 | 只看该作者
共阴极数码管是所有发光二极管的阴极接在一起接低电平,某一段需要点亮时阳极高电平就行了,你所有管脚都为高电平当然无法点亮,数码管其实里面就是发光二极管,几个毫安的电流就可点亮,你没发电路图出来,单看你描述就有问题。

使用特权

评论回复
14
gdszzyq| | 2022-1-28 11:48 | 只看该作者
看了下你的程序,每位显示时间那么短肉眼怎么可能看得见,每位怎样都得要显示几十毫秒才切换到下一位吧。

使用特权

评论回复
15
yufuming007| | 2022-1-28 14:49 | 只看该作者
光看程序能看出怎么不亮就神了

使用特权

评论回复
16
gdszzyq| | 2022-1-28 17:56 | 只看该作者
为什么看不出来,你看段码置高电平才多长时间,那点延时够吗,不到1毫秒吧,还没亮就灭了,再循环置高有什么用,如果电路没错,共阴极接低电平,位选也正确的话,把延时加大绝对可以亮,楼主可只点亮一位,把后面的屏蔽掉就知道了

使用特权

评论回复
17
ruanhongyu| | 2022-1-29 15:01 | 只看该作者
万用表测测LED是不是好的。程序运行时测测LED两端电压。

使用特权

评论回复
18
xurexi| | 2022-2-16 12:37 | 只看该作者
用AT89S52,采用共阴数码管,要亮起来,到半夜,所以灯光熄灭,增大眼睛,可以看出一点点及其微弱的亮。还是换共阳的数码管吧!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝