• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      21. 拉幕式數碼顯示技術
      文章長度[] 加入時間[2008/5/30] 更新時間[2025/2/25 15:29:51] 級別[0] [評論] [收藏]
       
      1.  實驗任務
      用AT89S51單片機的P0.0/AD0-P0.7/AD7端口接數碼管的a-h端,8位數碼管的S1-S8通過74LS138譯碼器的Y0-Y7來控制選通每個數碼管的位選端。AT89S51單片機的P1.0-P1.2控制74LS138的A,B,C端子。在8位數碼管上從右向左循環顯示“12345678”。能夠比較平滑地看到拉幕的效果。
      2. 電路原理圖
      圖4.21.1
      3. 系統板上硬件連線
      (1.       把“單片機系統”區域中的P0.0/AD0-P0.7/AD7用8芯排線連接到“動態數碼顯示”區域中的a-h端口上;
      (2.       把“三八譯碼模塊”區域中的Y0-Y7用8芯排線連接到“動態數碼顯示”區域中的S1-S8端口上;
      (3.       把“單片機系統”區域中的P1.0-P1.2端口用3根導線連接到“三八譯碼模塊”區域中的A、B、C“端口上;
      4. 程序設計方法
      (1.       動態數碼顯示技術;如何進行動態掃描,由于一次只能讓一個數碼管顯示,因此,要顯示8位的數據,必須經過讓數碼管一個一個輪流顯示才可以,同時每個數碼管顯示的時間大約在1ms到4ms之間,所以為了保證正確顯示,我必須每隔1ms,就得刷新一個數碼管。而這刷新時間我們采用單片機的定時/計數器T0來控制,每定時1ms對數碼管刷新一次,T0采用方式2。
      (2.       在進行數碼顯示的時候,要對顯示單元開辟8個顯示緩沖區,每個顯示緩沖區裝有顯示的不同數據即可。
      5. 程序框圖
      主程序框圖

      開 始
      顯示緩沖區初始化
      必要參數初始化
      T0初始化,TH0,TL0裝入初值
      T0工作并開中斷
      等待中斷
       


      中斷服務程序

      T0中斷入口
      通過查表方式,獲得顯示代碼送入P0
      位選數據送P1
      位選數據=8嗎?
      位選數據加1
      位選數據=0
      CNT加1
      0.4秒定時到了嗎?
      CNT=9嗎?
      CNT=0
      根據CNT來決定顯示幾位數據
      中斷返回
       

        6. 匯編源程序
      DISPBUF         EQU 30H
      DISPCNT         EQU 38H
      DISPBIT         EQU 39H
      T1CNTA          EQU 3AH
      T1CNTB          EQU 3BH
      CNT             EQU 3CH
                      ORG 00H
                      LJMP START
                      ORG 0BH
                      LJMP INT_T0
      START:          MOV DISPCNT,#8
                      MOV A,#10
                      MOV R1,#DISPBUF
      LP:             MOV @R1,A
                      INC R1
                      DJNZ DISPCNT,LP
                      MOV DISPBIT,#00H
                      MOV T1CNTA,#00H
                      MOV T1CNTB,#00H
                      MOV CNT,#00H
                      MOV TMOD,#01H
                      MOV TH0,#(65536-1000) / 256
                      MOV TL0,#(65536-1000) MOD 256
                      SETB TR0
                      SETB ET0
                      SETB EA
                      SJMP $
      INT_T0:
                      MOV TH0,#(65536-1000) / 256
                      MOV TL0,#(65536-1000) MOD 256
                      MOV A,DISPBIT
                      ADD A,#DISPBUF
                      MOV R0,A
                      MOV A,@R0
                      MOV DPTR,#TABLE
                      MOVC A,@A+DPTR
                      MOV P0,A
                      MOV A,P1
                      ANL A,#0F8H
                      ADD A,DISPBIT
                      MOV P1,A               
                      INC DISPBIT
                      MOV A,DISPBIT
                      CJNE A,#08H,NEXT
                      MOV DISPBIT,#00H
      NEXT:           INC T1CNTA
                      MOV A,T1CNTA
                      CJNE A,#50,LL1
                      MOV T1CNTA,#00H
                      INC T1CNTB
                      MOV A,T1CNTB
                      CJNE A,#8,LL1
                      MOV T1CNTB,#00H
                      INC CNT
                      MOV A,CNT
                      CJNE A,#9,LLX
                      MOV CNT,#00H
                      MOV A,CNT
      LLX:            CJNE A,#01H,NEX1
                      MOV 30H,#8
      LL1:            LJMP DONE
      NEX1:           CJNE A,#02H,NEX2
                      MOV 31H,#8
                      MOV 30H,#8
                      LJMP DONE
      NEX2:           CJNE A,#03H,NEX3
                      MOV 32H,#8
                      MOV 31H,#8
                      MOV 30H,#8
                      LJMP DONE
      NEX3:           CJNE A,#04H,NEX4
                      MOV 33H,#8
                      MOV 32H,#8
                      MOV 31H,#8
                      MOV 30H,#8
                      LJMP DONE
      NEX4:           CJNE A,#05H,NEX5
                      MOV 34H,#8
                      MOV 33H,#8
                      MOV 32H,#8
                      MOV 31H,#8
                      MOV 30H,#8
                      LJMP DONE
      NEX5:           CJNE A,#06H,NEX6
                      MOV 35H,#8
                      MOV 34H,#8
                      MOV 33H,#8
                      MOV 32H,#8
                      MOV 31H,#8
                      MOV 30H,#8
                      LJMP DONE
      NEX6:           CJNE A,#07H,NEX7
                      MOV 36H,#8
                      MOV 35H,#8
                      MOV 34H,#8
                      MOV 33H,#8
                      MOV 32H,#8
                      MOV 31H,#8
                      MOV 30H,#8
                      LJMP DONE
      NEX7:           CJNE A,#08H,NEX8
                      MOV 37H,#8
                      MOV 36H,#8
                      MOV 35H,#8
                      MOV 34H,#8
                      MOV 33H,#8
                      MOV 32H,#8
                      MOV 31H,#8
                      MOV 30H,#8
                      LJMP DONE
      NEX8:           CJNE A,#00H,DONE
                      MOV 37H,#10
                      MOV 36H,#10
                      MOV 35H,#10
                      MOV 34H,#10
                      MOV 33H,#10
                      MOV 32H,#10
                      MOV 31H,#10
                      MOV 30H,#10
      LL:             LJMP DONE
      DONE:           RETI
      TABLE:          DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
                      END
      7. C語言源程序
      #include <AT89X51.H>
      unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
                                     0x66,0x6d,0x7d,0x07,
                                     0x7f,0x6f,0x77,0x7c,
                                     0x39,0x5e,0x79,0x71,0x00};
      unsigned char dispbitcode[]={0xf8,0xf9,0xfa,0xfb,
                                   0xfc,0xfd,0xfe,0xff};
      unsigned char dispbuf[8]={16,16,16,16,16,16,16,16};
      unsigned char dispbitcnt;
      unsigned int t02scnt;
      unsigned char t5mscnt;
      unsigned char u;
      unsigned char i;
      void main(void)
      {
        TMOD=0x02;
        TH0=0x06;
        TL0=0x06;
        TR0=1;
        ET0=1;
        EA=1;
        while(1);
      }
      void t0(void) interrupt 1 using 0
      {
        t5mscnt++;
        if(t5mscnt==4)
          {
            t5mscnt=0;
            P0=dispcode[dispbuf[dispbitcnt]];
            P1=dispbitcode[dispbitcnt];
            dispbitcnt++;
            if(dispbitcnt==8)
              {
                dispbitcnt=0;
              }
          }
        t02scnt++;
        if(t02scnt==1600)
          {
            t02scnt=0;
            u++;
            if(u==9)
              {
                u=0;
              }
            for(i=0;i<8;i++)
              {
                dispbuf[i]=16;
              }
            for(i=0;i<u;i++)
              {
                dispbuf[i]=8;
              }
          }
      }
      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版