新聞中心

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

        }

        }

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 伊川县| 博兴县| 留坝县| 琼结县| 禹州市| 博湖县| 伊春市| 金山区| 沂水县| 西盟| 依兰县| 紫金县| 沿河| 汽车| 白沙| 德令哈市| 丰县| 东至县| 库伦旗| 牙克石市| 方山县| 唐山市| 墨脱县| 资阳市| 连城县| 景谷| 溆浦县| 平山县| 古丈县| 侯马市| 松潘县| 延吉市| 海南省| 洮南市| 临桂县| 镇安县| 东丰县| 金溪县| 贵定县| 明星| 盐城市|