找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4820|回复: 2
打印 上一主题 下一主题
收起左侧

单片机交通灯课程设计 含源码与仿真图

[复制链接]
跳转到指定楼层
楼主
一、要求:
时间
6
4
6
4
东西方向
绿灯亮
黄灯亮
红灯亮
南北方向
红灯亮
绿灯亮
黄灯亮
1.交通灯按表格要求,用发光二极管显示。
2.用数码管进行倒计时显示。
3.夜晚时数码管和红、绿灯都不亮,黄灯以1HZ闪烁。
4.用按键转换白天和夜晚的显示方式。
二、设计综述:
利用单片机实现交通灯的控制, 该任务分以下几个方面:
   (1) 实现东西方向和南北方向的红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。
   (2)用数码管显示倒计时。P0端口与P2端口,并给P0口接上上拉电阻。
   (3)实现夜晚黄灯闪烁。这需要人工实现,编程时利用到中断才能达到目的,P3.2口所接按钮为黑夜黄灯闪烁中断,只要按钮按下,那么四个方向红绿灯不亮,黄灯以1HZ闪烁。当情况解除,让时间回到之前继续进行。

三、总电路图:


单片机汇编语言源码:
  1. 程序:
  2.   ORG 0000H
  3.   LJMP MAIN          ;上电,转向主程序
  4.   ORG 0003H
  5.   LJMP HDSS          ;跳转到夜晚黄灯1HZ闪烁程序
  6.   ORG 0030H
  7.   MAIN:
  8.   SETB TR0               ;启动T0
  9.   SETB EA              ;允许CPU中断
  10.   SETB EX0                  ;开放外部中断0
  11.   SETB IT0               ;设外中断0为边沿触发
  12.   MOV TMOD,#01H    ;设置T0工作于模式一
  13.   LCALL DXLNBH                ;调用程序,东西绿灯亮,南北红灯亮
  14.   LCALL DXHNBH                ;调用程序,东西黄灯亮,南北红灯亮
  15.   LCALL NBLDXH                ;调用程序,南北绿灯亮,东西红灯亮
  16.   LCALL        NBHDXH          ;调用程序,南北黄灯亮,东西红灯亮
  17.   AJMP MAIN               
  18. ;东西绿灯亮,南北红灯亮   
  19. DXLNBH: MOV R0,#6
  20. LOOP4: MOV R2,#100           ;设循环次数,定时1s,每隔10ms循环一次,循环100次为1s
  21. LOOP5: MOV TL0,#0F0H                   ;装入计数值低8位
  22.          MOV TH0,#0D8H           ;装入计数值高8位
  23.          JNB TF0,[        DISCUZ_CODE_7        ]nbsp;                          ;T0没有溢出等待
  24.          CLR TF0                           ;产生溢出,清标志位
  25.          DJNZ R2,LOOP5        ; R2不为0,继续循环
  26.          MOV P1,#00H
  27.          SETB P1.3             ;点亮红灯
  28.          SETB P1.1             ;点亮绿灯
  29.          MOV A,R0             ;将R0的值赋予累加器A
  30.          DEC A                  ;累加器A自减
  31.          MOV DPTR,#TAB                 ;查表
  32.          MOVC A,@A+DPTR
  33.          MOV P0,A
  34.          MOV A,R0
  35.          DEC A
  36.          ADD A,#04H
  37.          MOVC A,@A+DPTR
  38.          MOV P2,A        
  39.          DJNZ R0,LOOP4
  40.          RET

  41. ;东西黄灯亮,南北红灯亮
  42. DXHNBH:MOV R0,#4
  43. LOOP7:MOV R2,#100            ;设循环次数,定时1s,每隔10ms循环一次,循环100次为1s
  44. LOOP8:MOV TL0,#0F0H                    ;装入计数值低8位
  45.         MOV TH0,#0D8H                    ;装入计数值高8位
  46.        JNB TF0,[        DISCUZ_CODE_7        ]nbsp;                               ;T0没有溢出等待
  47.        CLR TF0                            ;产生溢出,清标志位
  48.        DJNZ R2,LOOP8
  49.         MOV P1,#00H
  50.         SETB P1.3               ;点亮红灯
  51.        SETB P1.2                 ;点亮黄灯
  52.        MOV A,R0
  53.        DEC A
  54.        MOV DPTR,#TAB
  55.        MOVC A,@A+DPTR
  56.        MOV P0,A
  57.        MOV A,R0
  58.        DEC A
  59.        MOVC A,@A+DPTR
  60.        MOV P2,A
  61.        DJNZ R0,LOOP7
  62.        RET

  63. ;南北绿灯亮,东西红灯亮
  64. NBLDXH:MOV R0,#6        
  65. LOOP10:MOV R2,#100            ;设循环次数,定时1s,每隔10ms循环一次,循环100次为1s
  66. LOOP11:MOV TL0,#0F0H
  67.          MOV TH0,#0D8H
  68.          JNB TF0,$
  69.          CLR TF0
  70.          DJNZ R2,LOOP11
  71.          MOV P1,#00H
  72.          SETB P1.0         ;点亮红灯
  73.          SETB P1.4         ;点亮绿灯
  74.          MOV A,R0
  75.          ADD A,#04H
  76.          DEC A
  77.          MOV DPTR,#TAB
  78.          MOVC A,@A+DPTR
  79.          MOV P0,A
  80.          MOV A,R0
  81.          DEC A
  82.          MOVC A,@A+DPTR
  83.          MOV P2,A
  84.          DJNZ R0,LOOP10
  85.          RET

  86. ;南北黄灯亮,东西红灯
  87. NBHDXH:MOV R0,#4
  88. LOOP13:MOV R2,#100             ;设循环次数,定时1s,每隔10ms循环一次,循环100次为1s
  89. LOOP14:MOV TL0,#0F0H                    ;装入计数值低8位
  90.         MOV TH0,#0D8H                                ;装入计数值高8位
  91.         JNB TF0,[        DISCUZ_CODE_7        ]nbsp;                                    ; T0没有溢出等待
  92.         CLR TF0                                        ;产生溢出,清标志位
  93.        DJNZ R2,LOOP14
  94.        MOV P1,#00H
  95.        SETB P1.0           ;点亮红灯
  96.        SETB P1.5           ;点亮黄灯
  97.        MOV A,R0
  98.        DEC A
  99.        MOV DPTR,#TAB
  100.        MOVC A,@A+DPTR
  101.        MOV P0,A
  102.        MOV A,R0
  103.        DEC A
  104.        MOVC A,@A+DPTR
  105.        MOV P2,A
  106.        DJNZ R0,LOOP13
  107.        RET

  108. ;夜晚黄灯1HZ闪烁
  109. HDSS:MOV P0,#00H                   ;赋初值
  110.        MOV P1,#00H
  111.           MOV P2,#00H
  112. LOOP1:MOV R3,#50                   ;设循环次数,定时1s,每隔20ms循环一次,循环50次为1s
  113. LOOP2: MOV TL0,#0F0H        ;装入计数值低8位        
  114.        MOV TH0,#0D8H                   ;装入计数值高8位
  115.        JNB TF0,[        DISCUZ_CODE_7        ]nbsp;                          ;T0没有溢出等待
  116.        CLR TF0                           ;产生溢出,清标志位
  117.           DJNZ R3,LOOP2                   ;判断R3是否为0
  118.           CPL P1.2                           ;P1.2取反输出
  119.           CPL P1.5                           ;P1.5取反输出
  120.           JNB P3.2,LOOP1                ;判断位变量是否为0
  121.           RETI                                   ;中断返回

  122. TAB:DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH, 77H
  123.   END


复制代码


全部资料51hei下载地址:
交通灯.zip (19.52 KB, 下载次数: 44)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:420804 发表于 2018-11-5 00:33 | 只看该作者
很有价值的一个程序
回复

使用道具 举报

板凳
ID:658751 发表于 2019-12-8 14:32 | 只看该作者
仿真图里咋啥都没有
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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