• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 學習方法與實踐 > 51單片機8*8點陣LED顯示原理及程序

    51單片機8*8點陣LED顯示原理及程序

    作者:高健 時間:2008-03-28 來源:國外電子元器件 收藏

              在8X8點陣LED上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環下去。

           1. 程序設計內容
        
           8X8點陣LED工作原理說明 :8X8點陣共需要64個發光二極管組成,且每個發光二極管是放置在行線和列線的交叉點上,當對應的某一列置1電平,某一行置0電平,則相應的二極管就亮;因此要實現一根柱形的亮法,如圖49所示,對應的一列為一根豎柱,或者對應的一行為一根橫柱,因此實現柱的亮的方法如下所述:

           一根豎柱:對應的列置1,而行則采用掃描的方法來實現。 
           一根橫柱:對應的行置0,而列則采用掃描的方法來實現。 

           2. 硬件電路
     

    本文引用地址:http://www.czjhyjcfj.com/article/80855.htm

     

          3.匯編源程序
    ORG 00H
    START: NOP
    MOV R3,#3
    LOP2: MOV R4,#8
    MOV R2,#0
    LOP1: MOV P1,#0FFH
    MOV DPTR,#TABA
    MOV A,R2
    MOVC A,@A+DPTR
    MOV P3,A
    INC R2
    LCALL DELAY
    DJNZ R4,LOP1
    DJNZ R3,LOP2

     

    MOV R3,#3
    LOP4: MOV R4,#8
    MOV R2,#7
    LOP3: MOV P1,#0FFH
    MOV DPTR,#TABA
    MOV A,R2
    MOVC A,@A+DPTR
    MOV P3,A
    DEC R2
    LCALL DELAY
    DJNZ R4,LOP3
    DJNZ R3,LOP4

     

    MOV R3,#3
    LOP6: MOV R4,#8
    MOV R2,#0
    LOP5: MOV P3,#00H
    MOV DPTR,#TABB
    MOV A,R2
    MOVC A,@A+DPTR
    MOV P1,A
    INC R2
    LCALL DELAY
    DJNZ R4,LOP5
    DJNZ R3,LOP6

     

    MOV R3,#3
    LOP8: MOV R4,#8
    MOV R2,#7
    LOP7: MOV P3,#00H
    MOV DPTR,#TABB
    MOV A,R2
    MOVC A,@A+DPTR
    MOV P1,A
    DEC R2
    LCALL DELAY
    DJNZ R4,LOP7
    DJNZ R3,LOP8
    LJMP START

     

    DELAY: MOV R5,#10
    D2: MOV R6,#20
    D1: MOV R7,#248
    DJNZ R7,$
    DJNZ R6,D1
    DJNZ R5,D2
    RET

     

    TABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
    TABB: DB 01H,02H,04H,08H,10H,20H,40H,80H
    END

     

           4.C51語言源程序
    #include

     

    unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
    unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

     

    void delay(void)
    {
      unsigned char i,j;
      for(i=10;i>0;i--)
      for(j=248;j>0;j--);
    }

     

    void delay1(void)
    {
      unsigned char i,j,k;
      for(k=10;k>0;k--)
      for(i=20;i>0;i--)
      for(j=248;j>0;j--);
    }

     

    void main(void)
    {
      unsigned char i,j;
      while(1)
      {
        for(j=0;j<3;j++)  //from left to right 3 time
        {
          for(i=0;i<8;i++)
          {
            P3=taba[i];
            P1=0xff;
            delay1();
          }
        }
        for(j=0;j<3;j++)  //from right to left 3 time
        {
          for(i=0;i<8;i++)
          {
            P3=taba[7-i];
            P1=0xff;
            delay1();
          }
        }
        for(j=0;j<3;j++)  //from top to bottom 3 time
        {
          for(i=0;i<8;i++)
          {
            P3=0x00;
            P1=tabb[7-i];
            delay1();
          }
        }
        for(j=0;j<3;j++)  //from bottom to top 3 time
        {
          for(i=0;i<8;i++)
          {
            P3=0x00;
            P1=tabb[i];
            delay1();
          }
        }
      }
    }

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


    關鍵詞: 單片機 嵌入式

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 新密市| 峨山| 临夏县| 塘沽区| 庐江县| 会同县| 乌兰县| 鹤庆县| 夹江县| 革吉县| 三河市| 洛阳市| 久治县| 景谷| 拜城县| 读书| 康保县| 陆良县| 大理市| 承德市| 尼勒克县| 娱乐| 天长市| 钟祥市| 陕西省| 会泽县| 沙河市| 休宁县| 正安县| 武宣县| 淳化县| 洛扎县| 铜川市| 枣庄市| 保康县| 寿宁县| 寿阳县| 临沂市| 临高县| 长宁区| 辽阳县|