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

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于8051單片機的雙機通信設計

    基于8051單片機的雙機通信設計

    作者: 時間:2011-09-20 來源:網絡 收藏

    一、 系統功能要求:
    1. 設計任務在一十字路口設置交通燈,并用單片機對其進行合理的控制。
    時間方向 控制要求
    白天 東西 綠燈 黃燈 紅燈 南北 紅燈 綠燈 黃燈
    晚上 東西 黃燈 南北 紅燈
    2.總體設計方案現在流行的一種設計為兩主干線相交的十字路。本設計采用一主干道(南北方向),一從干道(東西方向)的路口,即主干道的通行時間為從干道的2倍。在正常情況下,兩干道的交通燈按圖1進行轉換,并以倒計數的方式將剩余時間顯示在每個干道對應的兩位LED上;另發揮部分為當出現緊急情況時,路口的交通燈全為紅燈,緊急情況解除時,恢復到原來的狀態。
    二、 總體設計方案提示:
    1.假設一個十字路口為東西南北走向。初始狀態0為東西紅燈,南北紅燈。然后轉狀態1東西綠燈通車,南北紅燈。過一段時間轉狀態。
    2.東西綠燈滅,黃燈閃爍幾次,南北仍然紅燈。再轉狀態。
    3.南北綠燈通車,東西紅燈。過一段時間轉狀態。
    4.南北綠燈滅,閃幾次黃燈,延時幾秒,東西仍然紅燈。最后循環至狀態1。
    三.硬件設計
    電路原理圖如下:


     

    四、軟件設計
    1、 流程圖



    2、程序設計
    ORG 0000H
    MOV P0,#00H ;確保P0為低電位
    lJMP MAIN0
    ORG 0030H
    MAIN0: MOV 30H,#08H
    MOV R6,#00H
    MOV R7,#00H
    MOV DPTR,#TABLE ;取數碼管的譯碼
    MOV TMOD,#01H ;設計定時方式及時間
    MOV TL0,#0CDH
    MOV TH0,#0BH
    SETB TR0
    MOV IE,#00H
    MAIN: MOV P1,#0F3H ;南北綠燈,東西紅燈
    MOV R6,#1EH ;紅燈30s倒計時
    MOV R7,#19H ;綠燈25s倒計時
    MAIN1:CALL DELAY ;1S延時子程序
    JB P0.1,REL1 ;判斷是否有東西方向按鈕按下
    CJNE R7,#00H,MAIN1 ;判斷綠燈25s是否倒計完
    MOV P1,#0F5H ;南北黃燈,東西紅燈
    MAIN2:CALL DELAY
    MOV R7,#00H ;紅燈繼續倒計時,黃燈閃爍,保持0s
    CPL P1.1 ;黃燈閃爍
    CJNE R6,#00H,MAIN2 ;判斷紅燈是否倒計時完
    MOV P1,#0DEH ;南北紅燈,東西綠燈
    MOV R7,#1EH
    MOV R6,#19H
    MAIN3:CALL DELAY
    JB P0.0,REL2
    CJNE R6,#00H,MAIN3
    MOV P1,#0EEH
    MAIN4:CALL DELAY
    MOV R6,#00H
    CPL P1.4
    CJNE R7,#00H,MAIN4
    JMP MAIN
    REL1:MOV P1,#0F5H ;東西方向按鈕按下,南北方向強制由綠燈變成黃燈警告
    MOV R6,#05H
    MOV R7,#00H
    JMP MAIN2
    REL2:MOV P1,#0EEH ;南北方向按鈕按下,東西方向強制由綠燈變成黃燈警告
    MOV R7,#05H
    MOV R6,#00H
    JMP MAIN4
    ;1s延時子程序
    DELAY:MOV A,R6 ;進行南北方向倒計時時間的十進制調整
    MOV B,#0AH
    DIV AB
    MOVC A,@A+DPTR ;找尋相應的數碼管代碼
    MOV P2,#01H
    MOV P3,A ;輸出個位
    MOV R4,#4 ;降低動態顯示頻率
    LOOP2:MOV R3,#125
    LOOP3:DJNZ R3,LOOP3
    DJNZ R4,LOOP2
    MOV A,B
    MOVC A,@A+DPTR
    MOV P2,#02H ;輸出十位
    MOV P3,A
    MOV R4,#4
    LOOP4:MOV R3,#125
    LOOP5:DJNZ R3,LOOP5
    DJNZ R4,LOOP4
    MOV A,R7 ;進行東西方向倒計時時間的十進制調整
    MOV B,#0AH
    DIV AB
    MOVC A,@A+DPTR
    MOV P2,#04H
    MOV P3,A
    MOV R4,#4
    LOOP6:MOV R3,#125
    LOOP7:DJNZ R3,LOOP7
    DJNZ R4,LOOP6
    MOV A,B
    MOVC A,@A+DPTR
    MOV P2,#08H
    MOV P3,A
    MOV R4,#4
    LOOP8:MOV R3,#125
    LOOP9:DJNZ R3,LOOP9
    DJNZ R4,LOOP8
    JBC TF0,LOOP ;判斷是否計滿125ms
    AJMP DELAY
    LOOP:MOV TL0,#0CDH ;計滿125ms重新給定時器賦值
    MOV TH0,#0BH
    MOV A,30H
    DEC A
    MOV 30H,A
    JNZ DELAY ;判斷是否計滿8次125ms,即1s
    DEC R6 ;計滿1s,東西倒計時減1,南北倒計時減1
    DEC R7
    MOV 30H,#08H ;重新1s次數,重新計時
    RET
    TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;相應數值的數碼管代碼
    DB 92H,82H,0F8H,80H,90H
    END



    關鍵詞: 8051 雙機通信

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 诏安县| 兴仁县| 和硕县| 大丰市| 舟山市| 青河县| 宜阳县| 蒙自县| 柏乡县| 大石桥市| 萨嘎县| 崇左市| 南澳县| 闵行区| 赤城县| 彭州市| 威海市| 桃园县| 焦作市| 岚皋县| 肇源县| 九龙县| 冀州市| 汉寿县| 通许县| 盐池县| 肃北| 五峰| 固安县| 新疆| 乌兰县| 华坪县| 隆安县| 尚志市| 竹山县| 新巴尔虎左旗| 大港区| 淄博市| 武义县| 孟津县| 广宁县|