久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4760|回復: 1
打印 上一主題 下一主題
收起左側

單片機匯編語言智能十字路口交通燈控制器Proteus仿真設計 注釋很詳細

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

1. 設計一個智能十字路口交通燈控制器。
2.用單片機控制控制LED紅、黃、綠指示燈,模擬指示十字路口通行狀態。
3.控制東西、南北方向的十字路口交通信號燈。
4.東西向通行時間為80s,南北向通行時間為60s,緩沖時間為3s。
5.東西方向紅燈時間=南北方向綠燈時間+黃燈緩沖時間,反之亦然。
6.鼓勵新創意,增加新功能。
第二章 系統設計方案2.1設計思路
1.采用AT89S52單片機作為主控芯片及外圍控制芯片,設計十字路口交通燈控制器的硬件電路。
2.采用AT89S52單片機匯編語言,完成十字路口交通燈控制器的軟件編程。
3.采用LED顯示和中斷定時電路,利用定時器T0產生每10ms一次的中斷,每100次中斷為1s。對兩個方向分別顯示紅、綠、黃燈,以及相應的剩余時間(倒計時)。
4.用獨立式按鍵實現特殊車輛(消防車、救護車、警車)通行的控制功能。
5.設置闖紅燈報警功能
2.2方案設計
利用AT89S52單片機完成交通信號燈控制器的設計,該交通信號燈控制器由一條主干道和一條支干道匯合成十字路口,在每個入口處設置紅、綠、黃三色信號燈,數碼管顯示剩余時間
。紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在禁行線外。用紅、綠、黃發光二極管作信號燈,8個共陰極數碼管顯示剩余時間,

單片機源程序如下:
  1. ;***********************************************
  2. ;***********************************************
  3. ;*********內存、IO口分配************************
  4. SHANSHUO        EQU        20H                ;閃爍標志
  5. JISHU1        EQU        30H                ;計數變量
  6. JISHU2        EQU        31H
  7. TIME_0        EQU        32H                ;中斷變量
  8. TIME_1        EQU        33H                ;
  9. SHUCHU        EQU        P0                ;數碼管段輸出
  10. G_1                BIT        P1.0                ;定義LED
  11. Y_1                BIT        P1.1
  12. R_1                BIT        P1.2
  13. G_2                BIT        P1.3
  14. Y_2                BIT        P1.4
  15. R_2                BIT        P1.5
  16. WEI1                BIT        P2.0                ;數碼管片選
  17. WEI2                BIT        P2.1
  18. WEI3                BIT        P2.2
  19. WEI4                BIT        P2.3

  20. K1       BIT   P3.0      ;緊急按鍵

  21. ;********************************************
  22.         ORG        0000H
  23.         SJMP        START
  24.         ORG        000BH                         ;定時器0中斷入口
  25.         LJMP        T0_0
  26.         ORG        0030H
  27. START:
  28.         MOV        P1,#0                         ;LED高電平有效,清零
  29.         MOV        P2,#0                         ;數碼管片選高電平有效,清零
  30.         CLR        SHANSHUO                 ;閃爍標志清零
  31.         CLR        JISHU1                 ;計數變量清零
  32.         CLR        JISHU2                 ;
  33.         CLR        TIME_0                 ;中斷變量清零
  34.         CLR         TIME_1                 ;
  35.         MOV        TMOD,#01H                 ;定時器0方式1
  36.         MOV        TH0,#3CH                 ;裝初值,50MS
  37.         MOV        TL0,#0B0H                 ;
  38.         SETB        EA                         ;開總中斷
  39.         SETB        ET0                         ;開定時器中斷
  40.         SETB        TR0                         ;啟動定時器
  41. ;***************狀態1*************************
  42. ZT1:                                         
  43.         MOV        P1,#0                         ;LED清零
  44.         MOV        JISHU1,#83                 ;計數裝初值
  45.         MOV        JISHU2,#80                 ;
  46.         MOV        R6,JISHU1                 ;
  47.         MOV        R7,JISHU2                 ;
  48.         SETB        G_1                         ;東西綠燈亮
  49.         SETB        R_2                         ;南北紅燈亮
  50. AA:        CALL        DISPLAY                 ;顯示
  51.         MOV        A,R7                         ;
  52.         CJNE        A,#0,AA                 ;判斷時間是否已到
  53. ;*************狀態2***************************
  54. ZT2:       
  55.         MOV        P1,#0                           ;LED清零
  56.         MOV        JISHU1,#3                 ;計數器重裝初值
  57.         MOV        JISHU2,#3                 ;
  58.         MOV        R6,JISHU1                 ;
  59.         MOV        R7,JISHU2                 ;
  60.         SETB        Y_1                         ;東西黃燈點亮
  61.         SETB        R_2                         ;南北紅燈繼續亮
  62. BB:        JNB        SHANSHUO,CC                 ;判斷閃爍標志位
  63.         SETB        Y_1                         ;是一則點亮黃燈
  64.         AJMP        QW                         ;跳到顯示
  65. CC:        CLR        Y_1                         ;是零則熄滅黃燈,達到閃爍的效果
  66. QW:        CALL        DISPLAY                 ;顯示
  67.         MOV        A,R6                         ;
  68.         CJNE        A,#0,BB                 ;判斷是否到了三秒
  69.         CLR        SHANSHUO                 ;清閃爍
  70. ;*************狀態3***************************
  71. ZT3:
  72.         MOV        P1,#0                         ;LED清零
  73.         MOV        JISHU1,#60                 ;計數器重新裝初值
  74.         MOV        JISHU2,#63                 ;
  75.         MOV        R6,JISHU1                 ;
  76.         MOV        R7,JISHU2                 ;
  77.         SETB        R_1                         ;東西紅燈點亮
  78.         SETB        G_2                         ;南北綠燈點亮
  79. EE:        CALL        DISPLAY                 ;顯示
  80.         MOV        A,R6                         ;
  81.         CJNE        A,#0,EE                  ;判斷時間是否到了
  82. ;*************狀態4***************************
  83. ZT4:       
  84.         MOV        P1,#0                         ;LED清零
  85.         MOV        JISHU1,#3                 ;計數器重新裝初值
  86.         MOV        JISHU2,#3                 ;
  87.         MOV        R6,JISHU1                 ;
  88.         MOV        R7,JISHU2                 ;
  89.         SETB        R_1                         ;東西紅燈點亮
  90.         SETB        Y_2                         ;南北黃燈點亮
  91. FF:        JNB        SHANSHUO,QR                 ;判斷閃爍位是1/0
  92.         SETB        Y_2                         ;1則點亮黃燈
  93.         SJMP        QE                         ;顯示
  94. QR:        CLR        Y_2                         ;0則熄滅黃燈
  95. QE:        CALL        DISPLAY                 ;顯示
  96.         MOV        A,R6                         ;
  97.         CJNE        A,#0,FF                 ;判斷時間到沒
  98.         CLR        SHANSHUO                 ;閃爍清零
  99.         LJMP        START                         ;跳 循環
  100. ;**************中斷子程序*********************
  101. T0_0:
  102.         CLR        EA                         ;關總中斷
  103.         MOV        TH0,#3CH                 ;重新裝初值
  104.         MOV        TL0,#0B0H                 ;
  105.         INC        TIME_0                 ;定時器變量加1
  106.         INC        TIME_1                 ;
  107.         MOV        A,TIME_0                 ;
  108.         CJNE        A,#0AH,NEXT                 ;判斷是否到了500MS
  109.         MOV        TIME_0,#0                 ;到則清變量
  110.         CPL        SHANSHUO                 ;給閃爍位取反
  111.         JB  K1,NEXT                  ; 按鍵K1處理,緊急處理
  112.         MOV   A,P1                        ;讀取當前LED顯示
  113.         MOV        P1,#0                         ;LED清零
  114.         MOV   P0,#0                        ;P0口輸出0
  115.         MOV   P2,#0     ;P2口輸出0,不顯示
  116.         SETB  R_1                        ;點亮紅色指示燈
  117.         SETB  R_2                ;點亮紅色指示燈
  118.         JNB  K1,$                ;等待按鍵松開
  119.         MOV  P1,A        ;P1口LED還原
  120. NEXT:        MOV        A,TIME_1                 ;
  121.         CJNE        A,#20,QUIT                 ;判斷是否到了1S,沒到則退出
  122.         MOV        TIME_1,#0                 ;到則清變量
  123.         DEC        R7                         ;寄存器自減一
  124.         DEC        R6                         ;寄存器自減一
  125. QUIT:        SETB        EA                         ;開總中斷
  126.         RETI                                 ;中斷返回
  127. ;**************顯示子程序*********************
  128. DISPLAY:
  129.         PUSH        ACC                         ;進堆棧
  130.         MOV        A,R7                         ;裝載東西方向顯示緩存值到寄存器A
  131.         MOV        B,#0AH                 ;寄存器B裝載10
  132.         DIV        AB                         ;進制轉換
  133.         MOV        DPTR,#TAB                 ;十位
  134.         MOVC        A,@A+DPTR                 ;查表,獲得東西方向10位上的顯示段碼
  135.         MOV        SHUCHU,A                 ;        顯示段碼輸出到顯示端口
  136.         SETB        WEI1                         ; 10位的數碼管位選信號設置為1,點亮數碼管
  137.         CALL        DELAY1MS                 ; 延時1ms
  138.         CLR        WEI1                         ; 10位的數碼管位選信號設置為0,熄滅數碼管
  139.         MOV        A,B                         ;個位
  140.         MOV        DPTR,#TAB                 ;查表,獲得東西方向個位上的顯示段碼
  141.         MOVC        A,@A+DPTR                 ;
  142.         MOV        SHUCHU,A                 ;顯示段碼輸出到顯示端口
  143.         SETB        WEI2                         ;個位的數碼管位選信號設置為1,點亮數碼管
  144.         CALL        DELAY1MS                 ;延時1ms
  145.         CLR        WEI2                         ;個位的數碼管位選信號設置為0,熄滅數碼管

  146.         MOV        A,R6                         ;裝載東西方向顯示緩存值到寄存器A
  147.         MOV        B,#0AH                 ;寄存器B裝載10
  148.         DIV        AB                         ;進制轉換
  149.         MOV        DPTR,#TAB                 ;十位
  150.         MOVC        A,@A+DPTR                 ;查表,獲得南北方向10位上的顯示段碼
  151.         MOV        SHUCHU,A                 ;顯示段碼輸出到顯示端口
  152.         SETB        WEI3                         ;10位的數碼管位選信號設置為1,點亮數碼管
  153.         CALL        DELAY1MS                 ;延時1ms
  154.         CLR        WEI3                         ;10位的數碼管位選信號設置為0,熄滅數碼管
  155.         MOV        A,B                         ;個位
  156.         MOV        DPTR,#TAB                 ;查表,獲得東西方向個位上的顯示段碼
  157.         MOVC        A,@A+DPTR                 ;
  158.         MOV        SHUCHU,A                 ;顯示段碼輸出到顯示端口
  159.         SETB        WEI4                         ;個位的數碼管位選信號設置為1,點亮數碼管
  160.         CALL        DELAY1MS                 ;延時1ms
  161.         CLR        WEI4                         ;個位的數碼管位選信號設置為0,熄滅數碼管
  162.         POP        ACC                         ;退出堆棧
  163.         RET                                 ;返回
  164. ;**************** 延時 ***********************
  165. DELAY1MS:        ;延時1ms子函數
  166.         MOV R1,#01H
  167.       MOV R2,#0FFH
  168. DD:   DJNZ R2,DD
  169.       DJNZ R1,DD
  170.       RET
  171. ;****************共陽數碼管字符表******************************
  172. TAB:        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H        
  173.         END         
復制代碼

所有資料51hei附件下載:
Keil和Proteus源程序.zip (139.59 KB, 下載次數: 96)
十字路口交通燈.docx (609.41 KB, 下載次數: 67)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:95059 發表于 2021-7-21 15:15 | 只看該作者
下載下來沒有工程仿真文件
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产中文字幕 | 成人一区二区视频 | 美女久久久久久久 | 一区二区高清 | 日韩在线欧美 | 一二区视频| 91天堂| 欧美一级二级三级视频 | 国产人成精品一区二区三 | 老牛影视av一区二区在线观看 | 亚洲欧美日韩国产综合 | 黄色片网此 | 正在播放国产精品 | 国产精品久久久久一区二区三区 | 91.色| 米奇狠狠鲁 | 日韩a| 韩国av网站在线观看 | 18av在线播放 | 羞羞视频在线观免费观看 | av黄色在线 | 亚洲精品一区中文字幕 | 久久99精品久久 | 伊人网99 | 久久久久久久久久久久久91 | 91香蕉视频在线观看 | 天天操天天射综合网 | 日韩欧美成人精品 | 欧美精品v国产精品v日韩精品 | 久久久免费在线观看 | 日韩在线观看一区二区三区 | 国产我和子的乱视频网站 | 免费大黄视频 | 欧美日韩视频在线 | 欧美一区二区三区高清视频 | 久久久亚洲综合 | 亚洲品质自拍视频 | 69av网| 日韩国产在线 | 久久久久久免费毛片精品 | 国产日韩免费观看 |