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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430單片機(jī)實(shí)踐篇-數(shù)碼管顯示-74HC595動(dòng)態(tài)掃描

          MSP430單片機(jī)實(shí)踐篇-數(shù)碼管顯示-74HC595動(dòng)態(tài)掃描

          作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          一、學(xué)習(xí)要點(diǎn):
          利用74HC595進(jìn)行數(shù)碼管顯示,可以只占用3個(gè)單片機(jī)的I/O口就能完成數(shù)碼管顯示的功能。動(dòng)態(tài)掃描方式則進(jìn)一步節(jié)省了硬件資源,只使用2個(gè)74HC595就能顯示多達(dá)8位數(shù)碼管。
          二、程序執(zhí)行效果:
          本實(shí)驗(yàn)所需使用的硬件電路為2個(gè)試驗(yàn)板:MSP430F135核心實(shí)驗(yàn)板+8位數(shù)碼管動(dòng)態(tài)掃描顯示模塊
          將MSP430F135核心實(shí)驗(yàn)板上的P5.4、P5.2、P5.0分別與8位數(shù)碼管動(dòng)態(tài)掃描顯示模塊上的 LATCH、CLK、 DOUT連接,并將8位數(shù)碼管動(dòng)態(tài)掃描顯示模塊上的GND、VCC連接好。如下圖
          P5.0—— DOUTP5.2——CLKP5.4—— LATCH

          如下圖所示:在8位數(shù)碼管動(dòng)態(tài)掃描顯示模塊上的8個(gè)數(shù)碼管上顯示數(shù)字 4 3 2 1。本例中只使用了其中的4位數(shù)碼管,讀者可進(jìn)行簡單的更改使其顯示達(dá)到8位。

          三、原理講解:
          查看8位數(shù)碼管動(dòng)態(tài)掃描顯示模塊的原理。如圖所示,2片74HC595分別用于段碼與位碼的輸出。實(shí)驗(yàn)板上數(shù)碼管為共陽,因此當(dāng)位碼為1、段碼為0時(shí)點(diǎn)亮。
          動(dòng)態(tài)掃描的原理:輸出第1位的位碼,緊接著輸出該位要顯示的段碼,然后使LATCH由0跳變到1使74HC595鎖存并輸出數(shù)據(jù),此時(shí)第1位將顯示,其它位全部都不顯示。 延時(shí)一段時(shí)間。輸出第2位的位碼,緊接著輸出該位要顯示的段碼,然后使LATCH由0跳變到1使74HC595鎖存并輸出數(shù)據(jù),此時(shí)第2位將顯示,其它位全部都不顯示。 延時(shí)一段時(shí)間。輸出第3位的位碼,緊接著輸出該位要顯示的段碼,然后使LATCH由0跳變到1使74HC595鎖存并輸出數(shù)據(jù),此時(shí)第3位將顯示,其它位全部都不顯示。 延時(shí)一段時(shí)間。。。。輸出第8位的位碼,緊接著輸出該位要顯示的段碼,然后使LATCH由0跳變到1使74HC595鎖存并輸出數(shù)據(jù),此時(shí)第8位將顯示,其它位全部都不顯示。 延時(shí)一段時(shí)間。如此循環(huán)往復(fù),實(shí)現(xiàn)8位數(shù)碼管顯示的效果。
          四、操作步驟:
          (1)按照IAR MSP430 項(xiàng)目建立與JTAG仿真設(shè)置所講方法建立名稱為 M13x LED 595 的項(xiàng)目。(2)將如下程序拷貝粘貼到main.c文件中。
          //*******************************************************************************//// 描述; 在TY-DIS1(8位數(shù)碼管顯示模塊)上動(dòng)態(tài)掃描顯示 4321// ACLK= n/a, MCLK= SMCLK= default DCO ~ 800k//// 硬件連接:如下圖// MSP430F13x// -----------------// /|| XIN|- // | | |// --|RST XOUT|-// | |// | P5.0|-->LED_DOUT// | P5.2|-->LED_CLK// | P5.4|-->LED_LATCH//// 時(shí)間:2007年10月// 硬件電路:MSP430F135核心實(shí)驗(yàn)板-I型 + TY-DIS1(8位數(shù)碼管顯示模塊)// 硬件連接: //// 調(diào)試器:MSP430FET全系列JTAG仿真器// 調(diào)試軟件: IAR Embedded Workbench Version: 3.41A 編譯//******************************************************************************
          #include <msp430x13x.h>
          //4位LED數(shù)碼管顯示子程序
          void LED_595(char SMG1,char SMG2,char SMG3,char SMG4);
          //74HC595串行輸出子程序
          void Led_out(unsigned char X);
          //LED數(shù)碼管段碼轉(zhuǎn)換表
          const unsigned char LED_0_F[];
          void main(void)
          {WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
          P5DIR =0; //P5口全部設(shè)為輸入口
          P5SEL =0; //將P5口所有的管腳設(shè)置為一般I/O口
          //將P5.0 P5.2 P5.4設(shè)置為輸出方向
          P5DIR |= BIT0;P5DIR |= BIT2;P5DIR |= BIT4;
          for (;;) {LED_595(4,3,2,1);//調(diào)用顯示子程序(改變參數(shù)表,改變顯示內(nèi)容)
          }
          }
          //------------------------------------------------------
          // 4位LED數(shù)碼管顯示子程序//
          // 人口參數(shù):SMG1,SMG2,SMG3,SMG4——待顯示的數(shù)據(jù)
          //void LED_595(char SMG1,char SMG2,char SMG3,char SMG4)
          {char z;//最高位(最左側(cè))LED數(shù)碼管顯示---------------------
          z = LED_0_F[SMG1];
          Led_out(z); //段碼輸出
          z = 0xFE; //位碼
          Led_out(z); //位碼輸出
          P5OUT &=~(BIT4); //顯示輸出
          P5OUT |=BIT4;
          //--------------------------------------------------
          _NOP(); // 斷點(diǎn)設(shè)置(觀察watch)
          //次高位(左數(shù)第2個(gè))LED數(shù)碼管顯示---------------------
          z = LED_0_F[SMG2];
          Led_out(z); //段碼輸出
          z = 0xFD; //位碼
          Led_out(z); //位碼輸出
          P5OUT &=~(BIT4); //顯示輸出
          P5OUT |=BIT4;
          //--------------------------------------------------
          _NOP(); // 斷點(diǎn)設(shè)置(觀察watch)
          //次低位(左數(shù)第3位)LED數(shù)碼管顯示--------------------
          z = LED_0_F[SMG3];Led_out(z); //段碼輸出
          z = 0xFB; //位碼
          Led_out(z); //位碼輸出
          P5OUT &=~(BIT4); //顯示輸出
          P5OUT |=BIT4;//--------------------------------------------------
          _NOP(); // 斷點(diǎn)設(shè)置(觀察watch)
          //最低位(左數(shù)第4位)LED數(shù)碼管顯示---------------------
          z = LED_0_F[SMG4];Led_out(z); //段碼輸出
          z = 0xF7; //位碼
          Led_out(z); //位碼輸出
          P5OUT &=~(BIT4); //顯示輸出
          P5OUT |=BIT4;//--------------------------------------------------
          _NOP(); // 斷點(diǎn)設(shè)置(觀察watch)
          }
          //------------------------------------------------------
          // 用于74HC595的LED串行移位子程序//
          // 人口參數(shù):X——待輸出的數(shù)據(jù)//
          void Led_out(unsigned char X)
          {unsigned char i;for(i=8;i>0;i--)
          {if (X&0x80) P5OUT |=BIT0;
          else P5OUT &=~(BIT0);X<<=1;
          P5OUT &= ~(BIT2); //P5.2管腳輸出低電平
          P5OUT |= BIT2; //P5.2管腳輸出高電平
          }
          }
          //------------------------------------------------------
          // LED段碼轉(zhuǎn)換表0——F
          //------------------------------------------------------
          const unsigned char LED_0_F[] =
          {// 0 1 2 3 4 5 6 7 8 9 A b c d E F 不顯示 - o(18)H(19)h(20)C(21)0(22)n(23)
          0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8e,0xFF,0xbf,0xa3,0x89,0x8b,0xc6,0xc0,0xab
          };
          (3)按照IAR MSP430 項(xiàng)目編譯與JTAG仿真調(diào)試所講述方法進(jìn)行項(xiàng)目編譯與JTAG調(diào)試運(yùn)行,即可看到程序運(yùn)行效果。


          評(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); })();