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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 定時(shí)器控制數(shù)碼管掃描顯示

          定時(shí)器控制數(shù)碼管掃描顯示

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          ************************************************************************************

          功能:定時(shí)器控制兩位數(shù)碼管掃描顯示
          器件:STC12C5A32S2兩個(gè)數(shù)碼管
          ************************************************************************************/
          #include "config.h "

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

          #defineuintunsigned int
          #defineucharunsignedchar
          #defineulongunsignedlong

          int num;//顯示數(shù)據(jù)
          int FrontDot = 0;//個(gè)位顯示
          int BehindDot = 0;//小數(shù)顯示
          uint xms = 0;//毫秒數(shù)

          uint LEDDATA0[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
          uint LEDDATA1[10] = {0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef};

          // 延時(shí)約(0.001 * n)秒
          void delay(unsigned int n)
          {
          int i;
          ulong msNum = 923;//指令循環(huán)923次為一秒
          for(i = 0; i < n; i++){
          while(msNum--);
          }
          }


          void timer0() interrupt 1
          {
          TH0 = 0xfc;//重要!!第一次計(jì)數(shù)滿后會(huì)從0開始計(jì)數(shù),應(yīng)該在中斷程序中重設(shè)計(jì)數(shù)初值
          TL0 = 0x65;
          xms++;
          if(xms == 1000){
          num++;
          if(num > 99)num = 0;
          FrontDot = num / 10;
          BehindDot = num % 10;
          xms = 0;
          }
          }

          // 定時(shí)器0初始化
          void timer0_init()
          {
          TMOD = 0x01;//設(shè)定定時(shí)器0為工作方式1,中斷只需一次設(shè)定
          TH0 = 0xfc;//設(shè)定計(jì)數(shù)初值
          TL0 = 0x65;
          EA = 1;//開總中斷
          ET0 = 1;//開定時(shí)中斷0
          TR0 = 1;//啟動(dòng)定時(shí)器0,計(jì)數(shù)滿后執(zhí)行中斷服務(wù)程序timer0()
          }

          //主函數(shù)
          void main(void)
          {
          int x=0;
          num = 0;
          P0_0 = 0;
          P0_1 = 0;
          P0_2 = 0;
          P0_3 = 0;
          P0_4 = 0;

          timer0_init();

          for(;;){
          if(x++ > 100)x=0;
          switch(x%2)
          {
          delay(100);
          case 0:
          P0_4 = 0; // 關(guān)閉
          P2 = LEDDATA0[BehindDot]; //設(shè)置數(shù)字
          P0_3 = 1; // 開啟
          break;
          case 1:
          P0_3 = 0;
          P2 = LEDDATA1[FrontDot];
          P0_4 = 1;
          break;
          }
          }
          }

          數(shù)碼管掃描顯示先關(guān)閉不需要顯示的數(shù)碼管,再設(shè)置要顯示的數(shù)碼管的數(shù)字,最后開啟要顯示的數(shù)碼管,不然數(shù)碼管會(huì)顯示有問題

          因?yàn)橄乳_啟要顯示的數(shù)碼管它會(huì)顯示上一次設(shè)置的數(shù)字,在設(shè)置數(shù)字的話,會(huì)有上次的余輝。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();