[51单片机] 51萌新请问我的4位数码管为什么不亮

[复制链接]
3045|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
想请问各位大神怎么才能亮啊

评论

检查EA引脚  发表于 2022-1-28 00:32
 楼主| 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不加限流电阻会不会被烧掉,上拉电阻是多大的,楼上听建议直接让位选拉低,段选置高看看亮不
 楼主| lis213 发表于 2022-1-27 17:48 | 显示全部楼层
416369123 发表于 2022-1-27 17:44
4.96V不加限流电阻会不会被烧掉,上拉电阻是多大的,楼上听建议直接让位选拉低,段选置高看看亮不 ...

1K的上拉电阻
416369123 发表于 2022-1-27 18:02 | 显示全部楼层
1k的上拉会不会太小,设置成推挽输出看看
xch 发表于 2022-1-27 18:07 | 显示全部楼层
P0 口没有锁存输出功能,不能直接用。

评论

没有上拉而已,怎么不能输出锁存了?  发表于 2022-1-28 00:31
 楼主| lis213 发表于 2022-1-27 19:02 | 显示全部楼层
xch 发表于 2022-1-27 18:07
P0 口没有锁存输出功能,不能直接用。

噢噢噢噢 那我换个口看看
cjseng 发表于 2022-1-28 00:32 | 显示全部楼层
估计程序根本没运行,检查一下EA引脚
songchenping 发表于 2022-1-28 08:23 | 显示全部楼层
刷新率听过吗?保证足够快的刷新频率。
ayb_ice 发表于 2022-1-28 08:41 | 显示全部楼层
xch 发表于 2022-1-27 18:07
P0 口没有锁存输出功能,不能直接用。

别乱说,标准51 P0做输出只是要接上接电阻而已,做地址信号才要锁存输出
xch 发表于 2022-1-28 10:03 | 显示全部楼层
lis213 发表于 2022-1-27 16:14
二楼放我的代码:
#include  

这程序有错误。但不至于不亮。/EA引脚应当接高电平。
gdszzyq 发表于 2022-1-28 11:41 | 显示全部楼层
共阴极数码管是所有发光二极管的阴极接在一起接低电平,某一段需要点亮时阳极高电平就行了,你所有管脚都为高电平当然无法点亮,数码管其实里面就是发光二极管,几个毫安的电流就可点亮,你没发电路图出来,单看你描述就有问题。
gdszzyq 发表于 2022-1-28 11:48 | 显示全部楼层
看了下你的程序,每位显示时间那么短肉眼怎么可能看得见,每位怎样都得要显示几十毫秒才切换到下一位吧。
yufuming007 发表于 2022-1-28 14:49 | 显示全部楼层
光看程序能看出怎么不亮就神了
gdszzyq 发表于 2022-1-28 17:56 来自手机 | 显示全部楼层
为什么看不出来,你看段码置高电平才多长时间,那点延时够吗,不到1毫秒吧,还没亮就灭了,再循环置高有什么用,如果电路没错,共阴极接低电平,位选也正确的话,把延时加大绝对可以亮,楼主可只点亮一位,把后面的屏蔽掉就知道了
ruanhongyu 发表于 2022-1-29 15:01 | 显示全部楼层
万用表测测LED是不是好的。程序运行时测测LED两端电压。
xurexi 发表于 2022-2-16 12:37 | 显示全部楼层
用AT89S52,采用共阴数码管,要亮起来,到半夜,所以灯光熄灭,增大眼睛,可以看出一点点及其微弱的亮。还是换共阳的数码管吧!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部