標(biāo)題: 如何編寫單片機(jī)數(shù)碼管數(shù)字顯示和消失的程序? [打印本頁]

作者: goldbirderman    時(shí)間: 2022-4-18 17:06
標(biāo)題: 如何編寫單片機(jī)數(shù)碼管數(shù)字顯示和消失的程序?
由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請(qǐng)教一下大致的實(shí)現(xiàn)方法與思路,理清頭緒后我自己來寫程序去實(shí)現(xiàn),謝謝大家

就是例如顯示13,然后就消失了,然后再顯示,1秒鐘,感激不盡

作者: w1179benp    時(shí)間: 2022-4-19 06:46
別把數(shù)碼管看的那么神秘,它不就是個(gè)LED的組合嗎?LED亮一秒,再滅,不會(huì)嗎?
作者: goldbirderman    時(shí)間: 2022-4-19 08:11
w1179benp 發(fā)表于 2022-4-19 06:46
別把數(shù)碼管看的那么神秘,它不就是個(gè)LED的組合嗎?LED亮一秒,再滅,不會(huì)嗎?

LED是單獨(dú)亮滅,好簡(jiǎn)單,可是數(shù)碼管一起亮,一起滅有點(diǎn)難度
作者: sgly    時(shí)間: 2022-4-19 08:35
goldbirderman 發(fā)表于 2022-4-19 08:11
LED是單獨(dú)亮滅,好簡(jiǎn)單,可是數(shù)碼管一起亮,一起滅有點(diǎn)難度

一起滅就控制它們位選啊,位選全部關(guān)了,他就滅了
作者: lids    時(shí)間: 2022-4-19 08:37
設(shè)個(gè)標(biāo)志位,在定時(shí)1秒使標(biāo)志位取反,標(biāo)志位為1顯示,標(biāo)志位為0就不顯示,就可以了
作者: 人人學(xué)會(huì)單片機(jī)    時(shí)間: 2022-4-19 08:48
開辟一個(gè)code 數(shù)組 存儲(chǔ)數(shù)字的字模0~F,那么第16個(gè)就寫成全滅。
作者: 人人學(xué)會(huì)單片機(jī)    時(shí)間: 2022-4-19 08:49
然后再開辟一個(gè)變量數(shù)組,假設(shè)是5位數(shù)碼管,那么就是5個(gè)字節(jié) ,比如需要顯示78526,那么就去調(diào)用上面CODE數(shù)組里面對(duì)應(yīng)的值。如果要滅掉某位,就調(diào)用16.
具體的操作 可以觀看《人人學(xué)會(huì)單片機(jī)》視頻教程第16課。
作者: yzwzfyz    時(shí)間: 2022-4-19 09:00
你看下硬件圖,動(dòng)哪里L(fēng)ED就不亮了,你就用程序M去控制它,讓它不亮,則M就是消失程序。
同樣,在M中,讓它LED亮,則M又是顯示程序了。
認(rèn)真看LED手冊(cè)及硬件圖,顯示與消失就是一條指令的事。
作者: goldbirderman    時(shí)間: 2022-4-19 10:13
lids 發(fā)表于 2022-4-19 08:37
設(shè)個(gè)標(biāo)志位,在定時(shí)1秒使標(biāo)志位取反,標(biāo)志位為1顯示,標(biāo)志位為0就不顯示,就可以了


void Timer0(void) interrupt 1 using 1
{
     
           unsigned int  num2;
           unsigned int ok;
           unsigned int fish;
          //fish = warnning();
       
         TH0=(65536-50000)/256;        
          TL0=(65536-50000)%256;
         //num++;
          
                
   num2++;
        if(num2 == 100)
                num2 = 0;
            ok++;
        if(ok == 10)
        {
                    ok = 0;
                     //ZUOWEI = !ZUOWEI;
               //YOUWEI = !YOUWEI;
                     warnning();  
                
                            
        }
                               
                          
                       
          
}

作者: goldbirderman    時(shí)間: 2022-4-19 10:14
lids 發(fā)表于 2022-4-19 08:37
設(shè)個(gè)標(biāo)志位,在定時(shí)1秒使標(biāo)志位取反,標(biāo)志位為1顯示,標(biāo)志位為0就不顯示,就可以了

unsigned int warnning(void)
{
            
      ZUOWEI = 0;
       
                        set_seg(warn[0]);
       
                        delay_ms(5);
       
                        ZUOWEI = 1;
       
                        YOUWEI = 0;
       
                        set_seg(warn[1]);
       
                        delay_ms(5);
       
                        YOUWEI = 1;
       
            
}
作者: lids    時(shí)間: 2022-4-19 10:22
void Timer0(void) interrupt 1 using 1
{
      
}
作者: lids    時(shí)間: 2022-4-19 10:33
bit flag;
unsigned int  num;
void Timer0Init(void)                //50毫秒@11.0592MHz
{
       
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TMOD |= 0x01;                //設(shè)置定時(shí)器模式
        TL0 = 0x00;                //設(shè)置定時(shí)初始值
        TH0 = 0x4C;                //設(shè)置定時(shí)初始值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
        EA=1;
}

void main()
{
     Timer0Init();
     while(1)
   {
        if(flag)
        {
         數(shù)碼管顯示
         }
         else
         {
          數(shù)碼管不顯示
          }
    }
}


void Timer0(void) interrupt 1 using 1
{
        TL0 = 0x00;                //設(shè)置定時(shí)初始值
        TH0 = 0x4C;                //設(shè)置定時(shí)初始值
       num++;
       if(num==20)
      {
            num=0;
           flag=!flag;
      }

}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1