新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 1. 閃爍燈

        1. 閃爍燈

        作者: 時間:2016-11-18 來源:網絡 收藏
        1.實驗任務
        如圖4.1.1所示:在P1.0端口上接一個發光二極管L1,使L1在不停地一亮一滅,一亮一滅的時間間隔為0.2秒。
        2.電路原理

        圖4.1.1
        3.系統板上硬件連線
        把“單片機系統”區域中的P1.0端口用導線連接到“八路發光二極管指示模塊”區域中的L1端口上。
        4.程序設計內容
        (1).延時程序的設計方法
        作為單片機的指令的執行的時間是很短,數量大微秒級,因此,我們要求的閃爍時間間隔為0.2秒,相對于微秒來說,相差太大,所以我們在執行某一指令時,插入延時程序,來達到我們的要求,但這樣的延時程序是如何設計呢?下面具體介紹其原理:

        如圖4.1.1所示的石英晶體為12MHz,因此,1個機器周期為1微
        MOVR6,#202個2
        D1:MOVR7,#2482個22+2×248=49820×
        DJNZR7,$2個2×248(498
        DJNZR6,D12個2×20=4010002
        因此,上面的延時程序時間為10.002ms。
        由以上可知,當R6=10、R7=248時,延時5ms,R6=20、R7=248時,延時10ms,以此為基本的計時單位。如本實驗要求0.2秒=200ms,10ms×R5=200ms,則R5=20,延時子程序如下:
        DELAY:MOVR5,#20
        D1:MOVR6,#20
        D2:MOVR7,#248
        DJNZR7,$
        DJNZR6,D2
        DJNZR5,D1
        RET
        (2).輸出控制
        如圖1所示,當P1.0端口輸出高電平,即P1.0=1時,根據發光二極管的單向導電性可知,這時發光二極管L1熄滅;當P1.0端口輸出低電平,即P1.0=0時,發光二極管L1亮;我們可以使用SETBP1.0指令使P1.0端口輸出高電平,使用CLRP1.0指令使P1.0端口輸出低電平。
        5.程序框圖
        如圖4.1.2所示





        圖4.1.2


        6.匯編源程序
        ORG0
        START:CLRP1.0
        LCALLDELAY
        SETBP1.0
        LCALLDELAY
        LJMPSTART
        DELAY:MOVR5,#20;延時子程序,延時0.2秒
        D1:MOVR6,#20
        D2:MOVR7,#248
        DJNZR7,$
        DJNZR6,D2
        DJNZR5,D1
        RET
        END

        7.C語言源程序
        #include
        sbitL1=P1^0;

        voiddelay02s(void)//延時0.2秒子程序
        {
        unsignedchari,j,k;
        for(i=20;i>0;i--)
        for(j=20;j>0;j--)
        for(k=248;k>0;k--);
        }
        voidmain(void)
        {
        while(1)
        {
        L1=0;
        delay02s();
        L1=1;
        delay02s();
        }
        }


        關鍵詞: 閃爍燈單片機系

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 习水县| 镇雄县| 新巴尔虎左旗| 新昌县| 神农架林区| 获嘉县| 贡觉县| 宁波市| 济宁市| 永济市| 连城县| 仙桃市| 虞城县| 江油市| 湄潭县| 荣昌县| 巴楚县| 乌拉特前旗| 博白县| 永顺县| 濉溪县| 晋江市| 乐亭县| 保山市| 叙永县| 万载县| 石河子市| 工布江达县| 平安县| 柘城县| 和顺县| 随州市| 嘉义市| 桑植县| 清原| 海宁市| 洛阳市| 会东县| 宁南县| 都兰县| 建水县|