新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 8X8 LED點陣顯示技術

        8X8 LED點陣顯示技術

        作者: 時間:2011-02-27 來源:網絡 收藏

        1. 實驗任務

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

        2. 電路原理圖

        4.24.1

        3. 硬件電路連線

        (1). 把“系統”區域中的P1端口用8芯排芯連接到“點陣模塊”區域中的“DR1DR8”端口上;

        (2). 把“系統”區域中的P3端口用8芯排芯連接到“點陣模塊”區域中的“DC1DC8”端口上;

        4. 程序設計內容

        (1). 8X8 點陣LED工作原理說明

        8X8點陣LED結構如下圖所示

        從圖4.24.2中可以看出,8X8點陣共需要64個發光二極管組成,且每個發光二極管是放置在行線和列線的交叉點上,當對應的某一列置1電平,某一行置0電平,則相應的二極管就亮;因此要實現一根柱形的亮法,如圖49所示,對應的一列為一根豎柱,或者對應的一行為一根橫柱,因此實現柱的亮的方法如下所述:

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

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

        5. 匯編源程序

        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

        6. C語言源程序

        #include AT89X52.H>

        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;j3;j++) //from left to right 3 time

        {

        for(i=0;i8;i++)

        {

        P3=taba[i];

        P1=0xff;

        delay1();

        }

        }

        for(j=0;j3;j++) //from right to left 3 time

        {

        for(i=0;i8;i++)

        {

        P3=taba[7-i];

        P1=0xff;

        delay1();

        }

        }

        for(j=0;j3;j++) //from top to bottom 3 time

        {

        for(i=0;i8;i++)

        {

        P3=0x00;

        P1=tabb[7-i];

        delay1();

        }

        }

        for(j=0;j3;j++) //from bottom to top 3 time

        {

        for(i=0;i8;i++)

        {

        P3=0x00;

        P1=tabb[i];

        delay1();

        }

        }

        }

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 清水河县| 齐齐哈尔市| 封丘县| 玛纳斯县| 乌鲁木齐市| 宁阳县| 耿马| 阜新市| 柳州市| 黑水县| 武平县| 宣恩县| 黄龙县| 满城县| 绥芬河市| 大冶市| 西平县| 成武县| 将乐县| 师宗县| 砚山县| 上林县| 张家港市| 林甸县| 鄂托克旗| 黄骅市| 巫溪县| 绥棱县| 洛扎县| 方城县| 本溪| 新泰市| 金平| 双城市| 桃源县| 阿克陶县| 太和县| 华坪县| 镇安县| 河津市| 宁海县|