新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用單片機控制的閃爍燈

        用單片機控制的閃爍燈

        作者: 時間:2012-02-12 來源:網絡 收藏

        1.實驗任務
        如圖所示:在P1.0端口上接一個發光二極管L1,使L1在不停地一亮一滅,一亮一滅的時間間隔為0.2秒。
        2.電路原理圖
        用單片機控制的閃爍燈電路圖Flash light

        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.程序框圖

        本文引用地址:http://www.104case.com/article/172127.htm

        未命名.jpg
        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();
        }
        }



        關鍵詞: 閃爍 控制 單片機

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永定县| 洪湖市| 闻喜县| 南木林县| 涡阳县| 襄垣县| 伊吾县| 南陵县| 于都县| 张家界市| 灵武市| 台东县| 东台市| 政和县| 黑河市| 石狮市| 建阳市| 太仓市| 五家渠市| 姚安县| 古丈县| 崇明县| 红桥区| 花垣县| 延寿县| 通州区| 沁阳市| 藁城市| 内乡县| 台北市| 双桥区| 拜城县| 新民市| 黄冈市| 岳普湖县| 涞源县| 英德市| 五家渠市| 北辰区| 阜新市| 洪洞县|