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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機C編程(十五 74HC595控制四位數碼管)

          51單片機C編程(十五 74HC595控制四位數碼管)

          作者: 時間:2016-11-27 來源:網絡 收藏


          #include
          #include

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

          #define uchar unsigned char
          #define uint unsigned int

          uchar code DAT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10};
          sbit SDATA_595=P1^0;//串行數據輸入
          sbit SCLK_595=P1^1;//移位時鐘脈沖
          sbit RCK_595=P1^2;//輸出鎖存器控制脈沖

          sbit P20=P2^0;
          sbit P21=P2^1;
          sbit P22=P2^2;
          sbit P23=P2^3;
          sbit P24=P2^4;
          sbit P25=P2^5;
          sbit P26=P2^6;
          sbit P27=P2^7;
          sbit P30=P3^0;
          sbit P31=P3^1;

          uchar temp;

          void delay(int ms)
          {
          int k;
          while(ms--)
          {
          for(k=0;k<250;k++)
          {
          _nop_();
          _nop_();

          }
          }
          }

          void WR_595(void)//將顯示數據送入74HC595內部移位寄存器
          {
          uchar j;
          for(j=0;j<8;j++)
          {
          temp=temp<<1;
          SDATA_595=CY;
          SCLK_595=1;
          _nop_();
          _nop_();
          SCLK_595=0;
          }
          }

          void OUT_595(void)//將移位寄存器內的數據所存到輸出寄存器并顯示
          {
          RCK_595=0;
          _nop_();
          _nop_();
          RCK_595=1;//上升沿將數據送入輸出鎖存器
          _nop_();
          _nop_();
          _nop_();
          RCK_595=0;
          }

          void key_scan()
          {
          if(P20==0)
          {
          while(P20==0);
          temp=DAT[1];
          WR_595();
          OUT_595();
          }
          if(P21==0)
          {
          while(P21==0);
          temp=DAT[2];
          WR_595();
          OUT_595();
          }
          if(P22==0)
          {
          while(P22==0);
          temp=DAT[3];
          WR_595();
          OUT_595();
          }
          if(P23==0)
          {
          while(P23==0);
          temp=DAT[4];
          WR_595();
          OUT_595();
          }
          if(P24==0)
          {
          while(P24==0);
          temp=DAT[5];
          WR_595();
          OUT_595();
          }
          if(P25==0)
          {
          while(P25==0);
          temp=DAT[6];
          WR_595();
          OUT_595();
          }
          if(P26==0)
          {
          while(P26==0);
          temp=DAT[7];
          WR_595();
          OUT_595();
          }
          if(P27==0)
          {
          while(P27==0);
          temp=DAT[8];
          WR_595();
          OUT_595();
          }
          if(P30==0)
          {
          while(P30==0);
          temp=DAT[9];
          WR_595();
          OUT_595();
          }
          if(P31==0)
          {
          while(P31==0);
          temp=DAT[0];
          WR_595();
          OUT_595();
          }
          }

          void main()
          {
          SCLK_595=0;
          RCK_595=1;
          while(1)
          {
          key_scan();
          //uchar i;
          //for(i=0;i<10;i++)
          //{
          // temp=DAT[i];//取顯示數據
          //WR_595();
          //OUT_595();
          //delay(200);
          //}
          }
          }



          評論


          技術專區(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); })();