官术网_书友最值得收藏!

5.2 直接驅(qū)動LED顯示

5.1節(jié)介紹了單片機系統(tǒng)中的輸入部分內(nèi)容,本節(jié)將講述單片機系統(tǒng)另外一個重要的部分:輸出模塊。

5.2.1 實例說明

在一個系統(tǒng)中,輸入和輸出是最基本也是最重要的組成部分,輸入部分實現(xiàn)了人們對系統(tǒng)的控制,而輸出則向人們展示了系統(tǒng)目前的工作狀態(tài)。輸出部分有很多種,本節(jié)將講述一種基本的輸出模塊,即LED數(shù)碼管。讀者通過本節(jié)內(nèi)容的學(xué)習(xí),將了解LED數(shù)碼管的工作原理和硬件電路連接方式,同時掌握LED數(shù)碼管的軟件編寫流程。

5.2.2 LED數(shù)碼管知識

LED數(shù)碼管其實就是由一組LED燈組成的,共包括a、b、c、d、e、f、g、dp八位,其中a~g七位組合可以顯示0~9的任意數(shù)字,dp位用于顯示小數(shù)點。

LED數(shù)碼管又分為共陰極和共陽極兩種,所謂共陰極就是把8個發(fā)光二極管的陰極連接到一起,通過一個公共引腳接到電源地;而共陽極則是所有陽極連接到一起接到電源的正極。在本例中采用的是共陰極LED數(shù)碼管。

另外,為了限制通過發(fā)光二極管的電流,保護二極管不被燒毀,在每個二極管的輸入端串聯(lián)了一個限流電阻,阻值一般為5kΩ。

5.2.3 硬件電路設(shè)計

LED數(shù)碼管顯示電路原理圖如圖5-3、圖5-5所示,電路連接較簡單。其中,圖5-3是單片機部分的復(fù)位和晶振電路圖;圖5-5則是LED數(shù)碼管的接線圖。由于PIC每個引腳可以提供25mA的驅(qū)動電流,所以可以用直接驅(qū)動LED數(shù)碼管顯示。

圖5-5 LED數(shù)碼管的接線圖

5.2.4 軟件設(shè)計

直接驅(qū)動單個LED數(shù)碼管程序相對較簡單,因為本例中只驅(qū)動了一個數(shù)碼管,不需要再添加控制位來選擇向哪個數(shù)碼管輸入顯示數(shù)據(jù)。在實際應(yīng)用中若需要用到幾個數(shù)碼管同時顯示,則可以再加入專門驅(qū)動LED數(shù)碼管的芯片,例如,串入并出的移位寄存器74LS164以及SPI接口的移位寄存器74HC595等。用戶可以根據(jù)設(shè)計系統(tǒng)時的不同資源情況進行選擇。

本程序設(shè)計流程圖如圖5-6所示,其中RB口是PIC單片機的一個8位端口,在本程序執(zhí)行過程中需設(shè)置RB口為輸出。

圖5-6 程序設(shè)計流程

程序代碼與注釋如下:

      #include    <pic.h>
      #include    <pic1687x.h>
      __CONFIG(WDTDIS & HS & LVPDIS & DEBUGDIS);
      //*該程序用于在LED上依次循環(huán)顯示0~9
      static volatile unsigned char table[11]={0xc0,0xf9,0xa4,0xb0,
                                  0x99,0x92,0x82,0XD8, 0x80,0x90,0xff};
      void delay(void)
      {   int x,y;
          for(x=0;x<100;x++)
            for(y=0;y<1000;y++);
      }
      //*主程序*/
      main()
      {
          unsigned    char  i,data;
          TRISB=0;    //設(shè)置RB口為輸出
          while(1)
          {
            for(i=0;i<10;i++)           //*連續(xù)發(fā)送8個數(shù)據(jù)*/
            {
                      data=table[i];  //*通過數(shù)組的轉(zhuǎn)換獲得待顯示的段碼*/
                      RB=(data);      //*發(fā)送顯示段碼顯示*/
                      delay();        //延時
            }
      }
      }

5.2.5 實例總結(jié)

本節(jié)實現(xiàn)了如何直接驅(qū)動LED顯示。通過本節(jié)內(nèi)容的學(xué)習(xí),讀者應(yīng)掌握LED數(shù)碼管的硬件電路設(shè)計和程序的編寫方法。LED數(shù)碼管是單片機系統(tǒng)中常常用到的一種簡單的顯示系統(tǒng),在實際應(yīng)用中,用戶需要根據(jù)系統(tǒng)的實際情況和具體要求靈活應(yīng)用,選擇合適的LED數(shù)碼管個數(shù)及驅(qū)動方式。

主站蜘蛛池模板: 安达市| 禄劝| 绥中县| 大冶市| 北宁市| 库尔勒市| 泰和县| 汉沽区| 名山县| 库伦旗| 朔州市| 木兰县| 浠水县| 林芝县| 南丰县| 彰武县| 丰原市| 图片| 团风县| 营口市| 阿克苏市| 祥云县| 潢川县| 城市| 上饶市| 阿拉尔市| 鞍山市| 波密县| 横峰县| 任丘市| 高阳县| 新巴尔虎左旗| 永仁县| 壶关县| 南和县| 江都市| 巴东县| 滨州市| 北票市| 鄯善县| 博爱县|