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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ATMEGA16控制74LS164驅(qū)動數(shù)碼管顯示

          ATMEGA16控制74LS164驅(qū)動數(shù)碼管顯示

          作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏

          #include
          #include

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

          #define uchar unsigned char
          #define uint unsigned int

          //共陽極數(shù)碼管端碼編碼

          uchar Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x7b,0x71};

          #define LS164Clk_CLI PORTB&=~BIT(PB0)
          #define LS164Clk_SEI PORTB|=BIT(PB0)
          #define LS164DATA_CLI PORTB&=~BIT(PB1)
          #define LS164FATA_SEI PORTB|=BIT(PB1)

          #define SMGA0_ON PORTA&=~(BIT(PA4))
          #define SMGA0_0FF PORTA|=(BIT(PA4))
          #define SMGA1_ON PORTA&=~(BIT(PA5))
          #define SMGA1_0FF PORTA|=(BIT(PA5))
          #define SMGA2_ON PORTA&=~(BIT(PA6))
          #define SMGA2_0FF PORTA|=(BIT(PA6))
          #define SMGA3_ON PORTA&=~(BIT(PA7))
          #define SMGA3_0FF PORTA|=(BIT(PA7))

          void System_Init(void)
          {
          DDRA|=0XF0;
          PORTA|=0XF0;
          DDRB|=0X03;
          PORTB|=0X03;
          }

          void LS164_SendData(uint data)
          {
          uchar i;
          LS164Clk_SEI;
          for(i=0;i<8;i++)
          {
          if((data&0x80)==0x80)
          LS164FATA_SEI;
          else
          LS164DATA_CLI;
          LS164Clk_CLI;
          NOP();
          LS164Clk_SEI;
          NOP();
          data=data<<1;
          }
          }

          void Display(uint data)
          {
          SMGA0_ON; //開顯示,在左邊第一個數(shù)碼管顯示千位
          LS164_SendData(Table[data/1000]); //取千位
          delay_ms(10); //延時很重要,要是不加,就會看上去全部都是滅的
          SMGA0_0FF; //關顯示

          SMGA1_ON; //開顯示,在左邊第二個數(shù)碼管顯示百位
          LS164_SendData(Table[data00/100]);//取百位
          delay_ms(10); //延時很重要,要是不加,就會看上去全部都是滅的
          SMGA1_0FF; //關顯示

          SMGA2_ON; //開顯示,在左邊第三個數(shù)碼管顯示十位
          LS164_SendData(Table[data0/10]);//取十位
          delay_ms(10); //延時很重要,要是不加,就會看上去全部都是滅的
          SMGA2_0FF; //關顯示

          SMGA3_ON; //開顯示,在左邊第四個個數(shù)碼管顯示個位
          LS164_SendData(Table[data]);//取個位
          delay_ms(10); //延時很重要,要是不加,就會看上去全部都是滅的
          SMGA3_0FF; //關顯示
          }

          void main(void)
          {
          uint data=9956;
          System_Init();
          PORTA=0X30;
          LS164_SendData(Table[0]);
          while(1)
          {
          delay_ms(10);
          data++;
          if(data>9999)
          {
          data=9999;
          while(data--)
          Display(data);//9999-0
          }
          Display(data); //0-9999
          }
          }

          PROTUES仿真圖




          評論


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