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

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

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

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

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

一起滅就控制它們位選啊,位選全部關(guān)了,他就滅了
作者: lids    時間: 2022-4-19 08:37
設(shè)個標(biāo)志位,在定時1秒使標(biāo)志位取反,標(biāo)志位為1顯示,標(biāo)志位為0就不顯示,就可以了
作者: 人人學(xué)會單片機    時間: 2022-4-19 08:48
開辟一個code 數(shù)組 存儲數(shù)字的字模0~F,那么第16個就寫成全滅。
作者: 人人學(xué)會單片機    時間: 2022-4-19 08:49
然后再開辟一個變量數(shù)組,假設(shè)是5位數(shù)碼管,那么就是5個字節(jié) ,比如需要顯示78526,那么就去調(diào)用上面CODE數(shù)組里面對應(yīng)的值。如果要滅掉某位,就調(diào)用16.
具體的操作 可以觀看《人人學(xué)會單片機》視頻教程第16課。
作者: yzwzfyz    時間: 2022-4-19 09:00
你看下硬件圖,動哪里L(fēng)ED就不亮了,你就用程序M去控制它,讓它不亮,則M就是消失程序。
同樣,在M中,讓它LED亮,則M又是顯示程序了。
認(rèn)真看LED手冊及硬件圖,顯示與消失就是一條指令的事。
作者: goldbirderman    時間: 2022-4-19 10:13
lids 發(fā)表于 2022-4-19 08:37
設(shè)個標(biāo)志位,在定時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    時間: 2022-4-19 10:14
lids 發(fā)表于 2022-4-19 08:37
設(shè)個標(biāo)志位,在定時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    時間: 2022-4-19 10:22
void Timer0(void) interrupt 1 using 1
{
      
}
作者: lids    時間: 2022-4-19 10:33
bit flag;
unsigned int  num;
void Timer0Init(void)                //50毫秒@11.0592MHz
{
       
        TMOD &= 0xF0;                //設(shè)置定時器模式
        TMOD |= 0x01;                //設(shè)置定時器模式
        TL0 = 0x00;                //設(shè)置定時初始值
        TH0 = 0x4C;                //設(shè)置定時初始值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時器0開始計時
        EA=1;
}

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


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

}




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