• <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支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      25. 點陣式LED“0-9”數字顯示技術
      文章長度[] 加入時間[2008/5/30] 更新時間[2025/3/7 6:16:55] 級別[0] [評論] [收藏]
       
      1. 實驗任務
      利用8X8點陣顯示數字0到9的數字。
      2. 電路原理圖
      圖4.25.1
      3. 硬件系統連線
      (1).  把“單片機系統”區域中的P1端口用8芯排芯連接到“點陣模塊”區域中的“DR1-DR8”端口上;
      (2).  把“單片機系統”區域中的P3端口用8芯排芯連接到“點陣模塊”區域中的“DC1-DC8”端口上;
      4. 程序設計內容
      (1).  數字0-9點陣顯示代碼的形成
      如下圖所示,假設顯示數字“0”
      1 2 3   4 5  6  7  8

      00 00  3E  41  41  41  3E 00
      因此,形成的列代碼為 00H,00H,3EH,41H,41H,3EH,00H,00H;只要把這些代碼分別送到相應的列線上面,即可實現“0”的數字顯示。
      送顯示代碼過程如下所示
      送第一列線代碼到P3端口,同時置第一行線為“0”,其它行線為“1”,延時2ms左右,送第二列線代碼到P3端口,同時置第二行線為“0”,其它行線為“1”,延時2ms左右,如此下去,直到送完最后一列代碼,又從頭開始送。
      數字“1”代碼建立如下圖所示1 2 3   4 5  6  7  8

      其顯示代碼為 00H,00H,00H,00H,21H,7FH,01H,00H
      數字“2”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,27H,45H,45H,45H,39H,00H
      數字“3”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,22H,49H,49H,49H,36H,00H
      數字“4”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,0CH,14H,24H,7FH,04H,00H
      數字“5”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,72H,51H,51H,51H,4EH,00H
      數字“6”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,3EH,49H,49H,49H,26H,00H
      數字“7”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,40H,40H,40H,4FH,70H,00H
      數字“8”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,36H,49H,49H,49H,36H,00H
      數字“9”代碼建立如下圖所示
      1 2 3   4 5  6  7  8

      00H,00H,32H,49H,49H,49H,3EH,00H
      5. 匯編源程序
      TIM           EQU 30H
      CNTA        EQU 31H
      CNTB        EQU 32H
                         ORG 00H
                         LJMP START
                         ORG 0BH
                         LJMP T0X
                         ORG 30H
      START:      MOV TIM,#00H
                         MOV CNTA,#00H
                         MOV CNTB,#00H
                         MOV TMOD,#01H
                         MOV TH0,#(65536-4000)/256
                         MOV TL0,#(65536-4000) MOD 256
                         SETB TR0
                         SETB ET0
                         SETB EA
                         SJMP $
      T0X:
                         MOV TH0,#(65536-4000)/256
                         MOV TL0,#(65536-4000) MOD 256
                         MOV DPTR,#TAB
                         MOV A,CNTA
                         MOVC A,@A+DPTR
                         MOV P3,A
                         MOV DPTR,#DIGIT
                         MOV A,CNTB
                         MOV B,#8
                         MUL AB
                         ADD A,CNTA
                         MOVC A,@A+DPTR
                  MOV P1,A
                         INC CNTA
                         MOV A,CNTA
                         CJNE A,#8,NEXT
                         MOV CNTA,#00H
      NEXT:       INC TIM
                         MOV A,TIM
                         CJNE A,#250,NEX
                         MOV TIM,#00H
                         INC CNTB
                         MOV A,CNTB
                         CJNE A,#10,NEX
                         MOV CNTB,#00H
      NEX:         RETI         
      TAB:                   DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
      DIGIT:       DB 00H,00H,3EH,41H,41H,41H,3EH,00H
                         DB 00H,00H,00H,00H,21H,7FH,01H,00H
                         DB 00H,00H,27H,45H,45H,45H,39H,00H
                         DB 00H,00H,22H,49H,49H,49H,36H,00H
                         DB 00H,00H,0CH,14H,24H,7FH,04H,00H
                         DB 00H,00H,72H,51H,51H,51H,4EH,00H
                         DB 00H,00H,3EH,49H,49H,49H,26H,00H
                         DB 00H,00H,40H,40H,40H,4FH,70H,00H
                         DB 00H,00H,36H,49H,49H,49H,36H,00H
                         DB 00H,00H,32H,49H,49H,49H,3EH,00H
                         END
      6. C語言源程序
      #include <AT89X52.H>
      unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
      unsigned char code digittab[10][8]={         {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},     //0
                                          {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00},     //1
                                          {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},    //2
                                          {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},    //3
                                          {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},     //4
                                          {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00},    //5
                                          {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00},    //6
                                          {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},     //7
                                          {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},    //8
                                          {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}     //9
                                          };
      unsigned int timecount;
      unsigned char cnta;
      unsigned char cntb;
      void main(void)
      {
        TMOD=0x01;
        TH0=(65536-3000)/256;
        TL0=(65536-3000)%256;
        TR0=1;
        ET0=1;
        EA=1;
        while(1)
          {;
          }
      }
      void t0(void) interrupt 1 using 0
      {
        TH0=(65536-3000)/256;
        TL0=(65536-3000)%256;
        P3=tab[cnta];
        P1=digittab[cntb][cnta];
        cnta++;
        if(cnta==8)
          {
            cnta=0;
          }
        timecount++;
        if(timecount==333)
          {
            timecount=0;
            cntb++;
            if(cntb==10)
              {
                cntb=0;
              }
          }
      }
      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嫩草黄片动漫版