新聞中心

        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.104case.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不再難懂)


        關鍵詞: 單片機 嵌入式

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平江县| 文昌市| 精河县| 天镇县| 武功县| 沈丘县| 三河市| 汝南县| 揭东县| 雅江县| 油尖旺区| 南安市| 扬州市| 孟津县| 清流县| 古田县| 辽中县| 长乐市| 多伦县| 巴青县| 惠水县| 武平县| 静乐县| 长武县| 石台县| 安新县| 连州市| 冀州市| 阳东县| 阜康市| 岑溪市| 桃园市| 汝南县| 凤庆县| 田东县| 纳雍县| 江北区| 武威市| 舟曲县| 南溪县| 株洲市|