找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3545|回复: 5
收起左侧

单片机十字路口交通灯汇编语言程序与Proteus仿真设计

  [复制链接]
ID:808939 发表于 2021-8-13 20:56 | 显示全部楼层 |阅读模式
本设计以AT89C51单片机为主控模块,主要由按钮开关,数码管,发光二极管组成,利用汇编语言编写程序来模拟对十字路口的交通管理,南北方向亮绿灯10s,然后黄灯亮5次,这个过程东西方向红灯亮15s,之后东西方向亮绿灯10s,然后亮黄灯5s,这个过程南北方向亮红灯15s。各路灯用LED模拟显示,同时用七段数码管显示两路的倒计时时间。利用键盘可修改灯亮时间PC机设置灯亮时间,利用PC与单片机串口通信实现。为防止出现紧急情况(如119,110通过时),该系统还设置了中断,将东西南北方向全是红灯。
1.png

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. ORG  0000H
  2. LJMP  MAIN
  3. ORG  0003H
  4. LJMP  ZHD1
  5. ORG  000BH
  6. LJMP  ZHD2
  7. ORG  0013H
  8. LJMP  ZHD3
  9. ORG  1000H;主程序

  10. MAIN:
  11. MOV  TMOD,#01H;设工作方式
  12. MOV  TL0,#0F0H;设初值,单片机晶振12M,定时10ms
  13. MOV  TH0,#0D8H
  14. SETB  EA;开放总中断
  15. SETB  ET0;开放T0中断
  16. SETB  TR0;启动T0定时
  17. SETB  EX0;开放外中断0
  18. SETB  EX1;开放外中断1
  19. SETB  IT0;设外中断0为边沿触发
  20. CLR  IT1;设外中断1为低电平有效
  21. SETB  PT0

  22. CYCLE:
  23. MOV  R3,#30;
  24. MOV  R0,#10;AB方向绿灯显示时间
  25. MOV  R1,#30;CD方向红灯显示时间
  26. MOV  R4,#15;
  27. MOV  R2,#25;为延时1秒而用;CD红灯AB绿灯
  28. LOOP1:
  29. SETB  P3.4
  30. MOV  P1,#01H
  31. SETB  P1.5;点亮绿灯
  32. SETB  P1.2;点亮红灯
  33. LCALL  DISPLAY;调用显示程序
  34. DJNZ  R2,LOOP1
  35. MOV  R2,#25
  36. DEC  R4
  37. DEC  R1
  38. DEC  R3
  39. DJNZ R0,LOOP1
  40. AJMP LOOP2

  41. LOOP2:
  42. SETB  P3.4
  43. MOV  P1,#01H
  44. SETB  P1.6;点亮黄灯
  45. SETB  P1.2;点亮红灯
  46. LCALL  DISPLAY;调用显示程序
  47. DJNZ  R2,LOOP2
  48. MOV  R2,#25
  49. DEC  R1
  50. DEC  R3
  51. DJNZ R4,LOOP2
  52. AJMP CYCLE1

  53. CYCLE1:
  54. MOV  R0,#10;
  55. MOV  R4,#15;
  56. LOOP3:
  57. SETB  P3.4
  58. MOV  P1,#01H
  59. SETB  P1.7;点亮红灯
  60. SETB  P1.4;点亮绿灯
  61. LCALL  DISPLAY;调用显示程序
  62. DJNZ  R2,LOOP3
  63. MOV  R2,#25
  64. DEC  R4
  65. DEC  R1
  66. DEC  R3
  67. DJNZ R0,LOOP3

  68. LOOP4:
  69. MOV  P1,#01H
  70. SETB  P1.7;点亮红灯
  71. ;SETB  P1.3;点亮黄灯
  72. LLJ1: LCALL  DISPLAY;调用显示程序
  73. DJNZ  R2,LLJ1
  74. SETB  P2.7;点亮红灯
  75. MOV  R2,#25
  76. DEC  R0
  77. DEC  R4
  78. DEC  R3
  79. DJNZ  R1,LOOP4
  80. LJMP  CYCLE;键盘中断程序

  81. ZHD1:  LCALL  DISPLAY
  82. JB   P3.6,Q2
  83. INC  R1
  84. INC  R0
  85. CJNE  R1,#99,TIAO2
  86. MOV  R1,#00H
  87. TIAO2 :CJNE  R0,#99,TIAO3
  88. MOV  R0,#00H

  89. TIAO3:
  90. LCALL  DISPLAY
  91. LCALL  DISPLAY
  92. LCALL  DISPLAY
  93. LCALL  DISPLAY
  94. LCALL  DISPLAY
  95. LCALL  DISPLAY
  96. JNB  P1.0,Z2
  97. Q2 :JB  P3.7,WAIT1
  98. DEC  R1
  99. DEC  R0
  100. CJNE  R1,#00H,TIAO
  101. MOV  R1,#99
  102. TIAO :CJNE  R0,#00H,TIAO1
  103. MOV  R0,#99

  104. TIAO1:
  105. LCALL  DISPLAY
  106. LCALL  DISPLAY
  107. LCALL  DISPLAY
  108. LCALL  DISPLAY
  109. LCALL  DISPLAY
  110. LCALL  DISPLAY
  111. WAIT1 :JNB  P1.0,Z2
  112. WAIT :LJMP  ZHD1
  113. Z2: RETI;时间中断程序

  114. ZHD2: MOV  TL0,#0F0H;重先赋值
  115. MOV  TH0,#0D8H
  116. CLR  P3.4
  117. RETI;应急通道中断程序

  118. ZHD3:MOV  P1,#85H
  119. MOV  P0,#30H
  120. MOV  P2,#30H
  121. JNB  P3.3,ZHD3
  122. RETI;数显显示

  123. DISPLAY:
  124. MOV  A,R3;AB方向时间的显示
  125. MOV  B,#10
  126. DIV  AB;把要显示的数的十位存放在A中,个位存放在B中
  127. ADD  A,#10H;位选通十位
  128. MOV  P0,A;

  129. TI0: JNB  P3.4,TT
  130. SJMP  TI0
  131. TT: SETB  P3.4
  132. MOV  A,B
  133. ADD  A,#20H;位选通个位
  134. MOV  P0,A;显示个位数字
  135. TI1: JNB  P3.4,TT1
  136. SJMP  TI1
  137. TT1: SETB  P3.4;CD方向的显示
  138. MOV  A,R1;CD方向时间的显示
  139. MOV  B,#10
  140. DIV  AB
  141. ADD  A,#10H;位选通十位
  142. MOV  P2,A;显示十位数字
  143. TI2: JNB  P3.4,TT2
  144. SJMP  TI2
  145. TT2: SETB  P3.4
  146. MOV  A,B
  147. ADD  A,#20H;位选通个位
  148. MOV  P2,A;显示个位数字
  149. TI3: JNB  P3.4,TT3
  150. SJMP  TI3
  151. TT3: SETB  P3.4
  152. RET

  153. END
复制代码

所有资料51hei附件下载:
工程及仿真.7z (71.31 KB, 下载次数: 116)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:987143 发表于 2021-12-2 22:34 来自手机 | 显示全部楼层
原理图打开不了是为什么呢
回复

使用道具 举报

ID:262 发表于 2021-12-2 22:57 | 显示全部楼层
可能是因为你版本不对 你看我用Proteus8.8打开了
51hei.gif
回复

使用道具 举报

ID:989093 发表于 2021-12-7 15:07 | 显示全部楼层
您好,下载了您的红绿灯的程序,希望请教一下怎么改红绿灯的时间
回复

使用道具 举报

ID:1082994 发表于 2023-6-9 12:24 | 显示全部楼层
用protues8.9可以运行吗
回复

使用道具 举报

ID:262 发表于 2023-6-9 15:25 | 显示全部楼层
hhxxqqq 发表于 2023-6-9 12:24
用protues8.9可以运行吗

最好是用Proteus8.8 看板凳就是8.8的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表