欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機想實現(xiàn)兩位數(shù)碼管00-FF,兩個數(shù)字好像不能同時顯示似的,請大神幫忙看看程序 [打印本頁]

作者: zhujiangzhang    時間: 2020-9-21 08:13
標題: 單片機想實現(xiàn)兩位數(shù)碼管00-FF,兩個數(shù)字好像不能同時顯示似的,請大神幫忙看看程序
本人初學(xué)51單片機(用的慧靜電子HL-1 89C52開發(fā)板),只會數(shù)碼管0-9顯示,兩位,三位顯示不會玩,自己寫數(shù)碼管00-FF程序如下,D0-D7對應(yīng)單片機P0^0-P0^7,這個程序功能是可以實現(xiàn),但是數(shù)碼管變成先顯示10位,消失,再顯示個位,兩個數(shù)字好像不能同時顯示似的,希望高人指點,幫忙看看程序那里不對,謝謝!

1.png (84.52 KB, 下載次數(shù): 85)

1.png

B.png (13.26 KB, 下載次數(shù): 77)

B.png

作者: wulin    時間: 2020-9-21 08:13
樓主這樣寫個位只能顯示10毫秒,十位顯示約1秒,視覺只能看的十位,個位微亮或看不到。改一下:
  1. #include<reg52.h>

  2. #define uint  unsigned int
  3. #define uchar unsigned char

  4. sbit dula=P2^6;
  5. sbit wela=P2^7;

  6. unsigned char code table[]={//共陰數(shù)碼管段碼"0~f-."
  7.                 0x3f,0x06,0x5b,0x4f,
  8.                 0x66,0x6d,0x7d,0x07,
  9.                 0x7f,0x6f,0x77,0x7c,
  10.                 0x39,0x5e,0x79,0x71,0x40,0x80};

  11. void delayms(uint xms)
  12. {
  13.         uint i,j;
  14.         for(i=xms;i>0;i--)
  15.                 for(j=110;j>0;j--);
  16. }

  17. void main()
  18. {
  19.         unsigned char i,j,k[2];
  20.         dula=0;
  21.         wela=0;
  22.         while(1)
  23.         {
  24.                 k[0]=table[j/16];
  25.                 k[1]=table[j%16];
  26.                 P0=0x00;dula=1;dula=0;//消隱
  27.                 if(i%2==0)// i=偶數(shù)顯示十位
  28.                 {
  29.                         P0=0xef;wela=1;wela=0;
  30.                         P0=k[0];dula=1;dula=0;               
  31.                 }
  32.                 else                // i=奇數(shù)數(shù)顯示個位
  33.                 {
  34.                         P0=0xdf;wela=1;wela=0;
  35.                         P0=k[1];dula=1;dula=0;               
  36.                 }
  37.                 i++;
  38.                 if(i>=200)//約1s
  39.                 {
  40.                         i=0;                       
  41.                         if(++j>=255)
  42.                                 j=0;
  43.                 }
  44.                 delayms(5);
  45.         }
  46. }

復(fù)制代碼

作者: zhujiangzhang    時間: 2020-9-21 21:36
本帖最后由 zhujiangzhang 于 2020-9-21 21:45 編輯
wulin 發(fā)表于 2020-9-21 14:51
樓主這樣寫個位只能顯示10毫秒,十位顯示約1秒,視覺只能看的十位,個位微亮或看不到。改一下:

太棒了,真可以實現(xiàn)了,大概思路是什么?
              
作者: wulin    時間: 2020-9-22 05:58
zhujiangzhang 發(fā)表于 2020-9-21 21:36
太棒了,真可以實現(xiàn)了,大概思路是什么?

所謂動態(tài)顯示就是逐位分時顯示。受delayms(5)限制,主循環(huán)周期被約束在約5ms,也就是前5ms顯示十位,后5ms顯示個位,如此反復(fù)。由于速度很塊,人眼視覺殘留效應(yīng)感覺是同時顯示。如果顯示的位數(shù)多,每位顯示的時間要縮短,只要掌握 位數(shù)*每位顯示的時間<20ms,就不會感到閃爍。




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