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

    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();

    }

    }

    }

    }



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 沾益县| 九龙城区| 江孜县| 南澳县| 酒泉市| 黄大仙区| 从江县| 闸北区| 巨野县| 泽普县| 竹溪县| 上高县| 封开县| 巴塘县| 恭城| 平果县| 鹤山市| 许昌县| 桦川县| 靖西县| 蓝山县| 岢岚县| 利津县| 景洪市| 萍乡市| 东兰县| 丁青县| 增城市| 平罗县| 寻甸| 丰镇市| 合肥市| 肃北| 沙田区| 隆安县| 广丰县| 宝坻区| 廊坊市| 黑河市| 寻甸| 晋州市|