新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 廣告燈的左移右移

        廣告燈的左移右移

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

        1. 實驗任務

        做單一燈的左移右移,硬件電路如圖4.4.1所示,八個發光二極管L1L8分別接在P1.0P1.7接口上,輸出“0”時,發光二極管亮,開始時P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重復循環。

        2. 電路原理圖

        4.4.1

        3. 系統板上硬件連線

        把“系統”區域中的P1.0P1.78芯排線連接到“八路發光二極管指示模塊”區域中的L1L8端口上,要求:P1.0對應著L1P1.1對應著L2……P1.7對應著L8

        4. 程序設計內容

        我們可以運用輸出端口指令MOV P1AMOV P1,#DATA,只要給累加器值或常數值,然后執行上述的指令,即可達到輸出控制的動作。

        每次送出的數據是不同,具體的數據如下表1所示

        P1.7

        P1.6

        P1.5

        P1.4

        P1.3

        P1.2

        P1.1

        P1.0

        說明

        L8

        L7

        L6

        L5

        L4

        L3

        L2

        L1

        1

        1

        1

        1

        1

        1

        1

        0

        L1

        1

        1

        1

        1

        1

        1

        0

        1

        L2

        1

        1

        1

        1

        1

        0

        1

        1

        L3

        1

        1

        1

        1

        0

        1

        1

        1

        L4

        1

        1

        1

        0

        1

        1

        1

        1

        L5

        1

        1

        0

        1

        1

        1

        1

        1

        L6

        1

        0

        1

        1

        1

        1

        1

        1

        L7

        0

        1

        1

        1

        1

        1

        1

        1

        L8

        1

        5. 程序框圖

        4.4.2

        6. 匯編源程序

        ORG 0

        START: MOV R2,#8

        MOV A,#0FEH

        SETB C

        LOOP: MOV P1,A

        LCALL DELAY

        RLC A

        DJNZ R2,LOOP

        MOV R2,#8

        LOOP1: MOV P1,A

        LCALL DELAY

        RRC A

        DJNZ R2,LOOP1

        LJMP START

        DELAY: MOV R5,#20 ;

        D1: MOV R6,#20

        D2: MOV R7,#248

        DJNZ R7,$

        DJNZ R6,D2

        DJNZ R5,D1

        RET

        END

        7. C語言源程序

        #include AT89X51.H>

        unsigned char i;

        unsigned char temp;

        unsigned char a,b;

        void delay(void)

        {

        unsigned char m,n,s;

        for(m=20;m>0;m--)

        for(n=20;n>0;n--)

        for(s=248;s>0;s--);

        }

        void main(void)

        {

        while(1)

        {

        temp=0xfe;

        P1=temp;

        delay();

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

        {

        a=tempi;

        b=temp>>(8-i);

        P1=a|b;

        delay();

        }

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

        {

        a=temp>>i;

        b=temp(8-i);

        P1=a|b;

        delay();

        }

        }

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新疆| 宕昌县| 弥勒县| 鄂伦春自治旗| 巨野县| 扎鲁特旗| 马龙县| 马鞍山市| 巍山| 汝州市| 南岸区| 昔阳县| 五常市| 开江县| 资兴市| 田东县| 华宁县| 昭通市| 永福县| 新余市| 新和县| 汶川县| 阜南县| 河间市| 平罗县| 汝南县| 张家港市| 敖汉旗| 汕尾市| 桓仁| 慈利县| 奈曼旗| 安丘市| 平利县| 上高县| 峨眉山市| 若羌县| 阜阳市| 荔浦县| 新津县| 丹凤县|