标题: 单片机四位数码管显示程序问题 [打印本页]

作者: 1970420173    时间: 2022-1-4 16:23
标题: 单片机四位数码管显示程序问题
      我用的是带74hc595编码的四位数码。但是显示时为什么像流水灯一样,不能一起显示,每一个数码管之间也有延时。我加大时间就像流水灯,减少数据他就不停的闪,但是最后一个数码管没什么问题,显示正常,就前面三个。。请各位帮帮忙大佬。



   BH1750temmp=result1750;
                  
       BH1750temmp = Display123[result1750 / 1000];      
               HC595_Send(BH1750temmp);
        SMG_Sele(0);
        delay_ms(5);
                             
        BH1750temmp = Display123[result1750 / 100%10];      
               HC595_Send(BH1750temmp);
        SMG_Sele(1);  //
        delay_ms(5);


        BH1750temmp = Display123[result1750 / 10%10];
        HC595_Send(BH1750temmp);
        SMG_Sele(2);  //
        delay_ms(5);


        BH1750temmp = Display123[result1750 % 10];
        HC595_Send(BH1750temmp);
        SMG_Sele(3);  
        delay_ms(5);







作者: 188610329    时间: 2022-1-4 16:23
用定时器显示,不要用Delay 就没事了

作者: Hephaestus    时间: 2022-1-4 20:20
595的12脚接哪里了,软件上又是怎么处理的,这才是595显示不闪的最核心问题。
作者: 兴安xa    时间: 2022-1-4 22:39
问题可能不是出在这段进位程序,查一下段码表和数码管是否对应,还有位码是不是对的,这是用串口控制锁器的方式,通信线要接对
作者: 1970420173    时间: 2022-1-5 16:54
188610329 发表于 2022-1-4 16:23
用定时器显示,不要用Delay 就没事了

void delay_us(u32 nus)
{               
        u32 temp;                     
        SysTick->LOAD=nus*fac_us;                                 //ê±¼ä¼óÔØ                           
        SysTick->VAL=0x00;                                        //Çå¿Õ¼ÆêyÆ÷
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //¿aê¼μ1êy          
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));        //μè′yê±¼äμ½′ï   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //1رռÆêyÆ÷
        SysTick->VAL =0X00;                                       //Çå¿Õ¼ÆêyÆ÷
}


还是没有用




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1