<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 數(shù)碼管動態(tài)顯示數(shù)字

          數(shù)碼管動態(tài)顯示數(shù)字

          作者: 時間:2016-12-03 來源:網絡 收藏
          LED數(shù)碼管動態(tài)掃描顯示數(shù)字(C語言)
          #include
          sbit P00 = P0 ^ 0;
          sbit P01 = P0 ^ 1;
          sbit P02 = P0 ^ 2;
          sbit P03 = P0 ^ 3;
          int DATA_LED[11] =
          {
          //0~9的數(shù)碼管段碼 A0H,BBH,62H,2AH,39H,2CH,24H,BAH,20H,28H 根據具體電路而定,不通用
          0xA0,//0
          0xBB,//1
          0x62,//2
          0x2A,//3
          0x39,//4
          0x2C,//5
          0x24,//6
          0xBA,//7
          0x20,//8
          0x28,//9
          0xFF
          };
          void delay(int m)//延時程序,延時m*0.5毫秒
          {
          unsigned int i;
          unsigned int j;
          for (i = 0; i < m; i++)
          {
          for (j = 0; j < 500; j++){}
          }
          }
          void led(int n)//數(shù)碼管顯示及數(shù)據處理程序
          {
          P1 = 0xFF;
          P1 = DATA_LED[n % 10];//個位
          P00 = 0;
          delay(1);
          P00 = 1;
          P1 = 0xFF;
          P1 = DATA_LED[n / 10 % 10];//十位
          P01 = 0;
          delay(1);
          P01 = 1;
          P1 = 0xFF;
          P1 = DATA_LED[n / 100 % 10];//百位
          P02 = 0;
          delay(1);
          P02 = 1;
          P1 = 0xFF;
          P1 = DATA_LED[n / 1000 % 10];//千位
          P03 = 0;
          delay(1);
          P03 = 1;
          }
          void main(void)
          {
          while (1)
          {
          led(404);//顯示數(shù)字404,實際顯示的是0404,需要在led()函數(shù)中判斷,沒有千位的情況,不是讓顯示成0
          }
          }

          原理很簡單,這是LED動態(tài)顯示方式, 當P1為高電平,P0為低電平是,燈就亮。顯示寫成了函數(shù)led(),調用很方便,這個還沒有解決小數(shù)的問題,不過,把原理弄懂了,其他的理解起來就會很快了。

          本文引用地址:http://www.ex-cimer.com/article/201612/325281.htm

          我這里是給P1賦值, 例如P1=0xBB,換成二進制,P1=10111011,可以看出剛好是八位,那P1^0=1;P1^1=1,P1^2=0…… ,不用分別給每個口賦值,把這個理解了就懂了。

          P1 = 0xFF; //每次一定要重新賦值,不然可能會出現(xiàn)顯示全是8的情況


          P1 = DATA_LED[n / 1000 % 10]; //千位的數(shù)字對應的數(shù)碼管段碼


          P03 = 0; //前面有定義 sbit P03 = P0 ^ 3,就是把P0.3接低電平


          delay(1); //采用空循環(huán)執(zhí)行延時1*0.5毫秒,再關閉顯示下一位,利用人眼的視覺滯留,這種動態(tài)變換就感覺不到了,12MHz的晶體振蕩器


          P03 = 1; //每次顯示完了一定要接高電平,不然會顯示成全是8



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();