找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9318|回复: 17
收起左侧

单片机数码管暗的原因

  [复制链接]
ID:321742 发表于 2018-5-21 09:15 | 显示全部楼层 |阅读模式
用的74HC164D:串行转并行,移位寄存器功能。
以下是代码。这代码在别人上的板子上能正常显示,在我的板子上,4个数码管都很暗,但是烧写好的程序就没问题,我没有写好的程序,以下代码如果只显示1个数码管就亮,两个就有点暗,4个时候就很暗了。延时调小也没有明显的变化。
D1-D4数码管COM1-4,shift_data数据发送端,ck时钟端

为啥会暗,有什么办法调高亮度吗?

sbit shift_data  = P2^3;
sbit ck             = P1^7;
sbit D1            = P3^2;
sbit D2            = P3^3;
sbit D3            = P3^4;
sbit D4            = P2^5;


void delay12us(uint Multiple )
{
   while(Multiple--)                        //每步为3us
   {         
        _nop_();
        _nop_();
    }       
}


void numerical_codes_tube(uchar wait_shift_data,uchar number)            //数码管
{
    uchar shiftsum;
    for(shiftsum=0;shiftsum<8;shiftsum++)
    {
        if(wait_shift_data&0x0)   
            shift_data=1;
        else                           
            shift_data=0;
        ck=0;
        ck=1;
        _nop_();
        wait_shift_data=_cror_(wait_shift_data,1);
    }
    switch(number)
    {
        case 0:D1=1;break;
        case 1:D2=1;break;
        case 2:D3=1;break;
        case 3:D4=1;break;
    }
    DELAY_Ms(4);
    D1=D2=D3=D4=0;
}

void display_four_bit_code(uchar iteam_code,uchar iteam_code1,uchar iteam_code2,uchar iteam_code3)
{
    numerical_codes_tube(iteam_code,0);
    numerical_codes_tube(iteam_code1,1);
    numerical_codes_tube(iteam_code2,2);
    numerical_codes_tube(iteam_code3,3);
}

void main()
{
    while(1)
    {
        display_four_bit_code(0x3c,0x3c,0x3c,0x3c);
    }
}                                                                                                                                                                                                 


回复

使用道具 举报

ID:330198 发表于 2018-5-21 10:08 | 显示全部楼层
变暗是电流不够
回复

使用道具 举报

ID:277550 发表于 2018-5-21 14:32 | 显示全部楼层
共阴还是共阳的,公共脚上有限流吧,检查检查
回复

使用道具 举报

ID:164602 发表于 2018-5-21 16:00 | 显示全部楼层
多个数码管显示,是扫描法,你说的现象,就是每次一个数码管亮的时间不够。在程序快速的执行中,数码管的显示,成了类似PWM波的情况,所以,数码管越多,每个分的占空比越小。
解决办法,是在你的一个数码管显示程序中,加上适当的延时,这个要自己试,延时太长,数码管会闪烁,延时太短,就会变暗。
回复

使用道具 举报

ID:321742 发表于 2018-5-21 16:03 | 显示全部楼层

解决了,我也想到是电流不够的。 IO口本来是双向口的,我强设置成推挽输出就搞定了。
回复

使用道具 举报

ID:274129 发表于 2018-5-21 16:32 | 显示全部楼层
是不是电阻接大了
回复

使用道具 举报

ID:331722 发表于 2018-5-21 21:36 | 显示全部楼层
我之前也遇到过,先检查驱动IO口是否设置正确,硬件连接无误的情况下,是不会出现暗的情况。
回复

使用道具 举报

ID:335355 发表于 2018-5-21 23:28 | 显示全部楼层
看下是不是管子的电压和输出的电压不匹配?一般LED 1.8v 20mA就已经很亮了
回复

使用道具 举报

ID:335307 发表于 2018-5-23 00:05 来自手机 | 显示全部楼层
电阻太大,或者电压不稳
回复

使用道具 举报

ID:336243 发表于 2018-5-23 09:03 | 显示全部楼层
可以试着在单片机端口和数码管之间加8550开关器件以增大输入电流
回复

使用道具 举报

ID:336394 发表于 2018-5-23 12:27 | 显示全部楼层
占空比没设对吧
回复

使用道具 举报

ID:336418 发表于 2018-5-23 13:08 | 显示全部楼层
可能是电阻过大,我自己焊单片机和数码管或液晶管脚一般会连一个滑动变阻器
回复

使用道具 举报

ID:336428 发表于 2018-5-23 13:22 来自手机 | 显示全部楼层
延时程序是不是太长了
回复

使用道具 举报

ID:336443 发表于 2018-5-23 13:40 | 显示全部楼层
注意是数码管电流不够,减小限流电阻或者用个开漏输出的管子驱动下
回复

使用道具 举报

ID:336415 发表于 2018-5-23 14:02 | 显示全部楼层
扫描占比!
回复

使用道具 举报

ID:336452 发表于 2018-5-23 14:30 | 显示全部楼层
连接数码管的驱动芯片和单片机口连接,仿真时暗的为什么?
回复

使用道具 举报

ID:336510 发表于 2018-5-23 15:25 | 显示全部楼层
电流不够
回复

使用道具 举报

ID:336642 发表于 2018-5-23 17:03 | 显示全部楼层
电流不够,看一下供电电压是不是不够
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表