当前位置:   article > 正文

微机原理课程设计-模拟十字路口交通信号灯_本次实验要求设计一个设计。设计要求:能够模拟交通路口的交通灯的控制,可以加入数

本次实验要求设计一个设计。设计要求:能够模拟交通路口的交通灯的控制,可以加入数

一、设计任务描述

1.1设计目的

通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础。

1.2 设计要求

     控制LED灯,按照十字路口红绿灯的原理亮灭显示:

  (1) 东西方向车辆放行x秒钟。即东西方向的绿灯和南北方向的红灯同时点亮x秒钟。

 ( 2) x秒钟后,东西方向的绿灯熄灭,黄灯闪烁4次,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。

 (3) 东西方向的黄灯闪烁4次后,转为南北方向放行x秒钟。即东西方向的红灯和南北方向的绿灯同时点亮x秒钟;      

    (4) 南北方向放行x秒钟后,转为南北方向的绿灯熄灭,黄灯闪烁4次,以警示将切换红绿灯。此时东西方向维持红灯点亮。      

  (5)南北方向的黄灯闪烁4次后,再转为东西方向车辆放行秒。如此循环重复。

  (6)当出现紧急情况时将红灯设置为全亮,以限制路况,及时解决交通事故。

 

二、设计思路

本次微机原理设计的题目是交通信号灯,它是通过对8255芯片和LED发光二极管的连接设置来模拟交通信号灯的控制,使红黄绿三色灯按照正常交通规则规律地亮灭。交通信号灯由8255芯片控制的,用发光二极管来模拟实际生活中的交通灯,当出现紧急情况时将红灯设置为全亮,以限制路况,及时解决交通事故;当出现交通高峰期时还可以延长信号灯控制的时间。

8255芯片包括四个口,即A口、B口、C口和一个控制口。通过对其控制端口赋予一定的控制字,来设定8255的工作方式,在本设计中,使8255工作于方式0,即基本输入输出方式,并将A口和B口都设置为输入,C口设置成输出。其中,A口与模拟紧急情况的开关连接,当发生紧急情况时将开关关合,红灯全亮,处理事故;当事故解除后,将开关断开,又恢复正常交通情况。B口控制黄灯的亮灭,黄灯闪烁时,红灯亮,绿灯全灭,闪烁的黄灯的位置与绿灯保持一致。C口控制红绿灯,红绿灯分东西南北四个方向,通过将控制字写入到控制口中,强制使与C口相连的LED显示管亮或灭,也就是模拟了实际情况中交通信号灯的控制。

三:流程图:略

四、主要器件及其简介

4.1 可编程的并行接口8255

  4.1.1  8255的引线图

                                   图4.1 8255引脚图

其中主要引脚介绍如下:

  1. 与外部设备端相连的引脚
  1. PA0~PA7:为A端口的8条输入/输出引脚。
  2. PB0~PB7:为B端口的8条输入/输出引脚。
  3. PC0~PC7:为C端口的8条输入/输出引脚。
  1. 与CPU相连的引脚
    1. RESET:复位信号,高电平有效。当RESET信号来到时,所有内部寄存器都被清零,同时3个数据端口被自动设为输入端口。
    2. D7~D0:双向数据信号线,用来传送数据和控制字
    3. :为片选信号线,当CS有效时,信号RD与信号WR对8255有效。
    4. :为写信号线,CPU通过OUT指令使其有效,与其他信号线一起实现对8255接口的写操作,将数据或状态信息从CPU中写入8255。
    5. :为读出信号线,CPU通过IN指令使其有效,与其他信号线一起实现对8255接口的读操作,将数据或状态信息从8255中读到CPU。
    6. A0、A1:端口选择信号线,8255内部有3个数据端口和1个控制端口,共4个。

 

4.1.2 8255内部结构

图4.2  8255A的内部结构

1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。

2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。

3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。

4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。

4.1.3  8255的控制字

8255有三种工作方式:方式0、方式1、方式2。可以通过在控制端口中设置控制字来决定它的工作方式。8255有两个控制字分别控制分别是:方式选择控制字和端口C按位置置位/复位控制字。方式选择控制字的第7位总是1,而端口C按位置位/复位控制字的第7位总是0。所以第7位称为区分两个控制字的标志位。

1)方式选择控制字

图4.3 方式选择控制字

2)端口C按位置置位/复位控制字

图4.4 端口C按位置置位/复位控制字

8255的工作方式

8255的工作方式主要有工作方式0、工作方式1和工作方式2。其中端口A可以工作在三种方式中的任一种;端口B只能工作在方式0和方式1;端口C通常作为控制信号使用,配合端口A和端口B的工作。在模拟流水线控制的设计中只用到了工作方式0,如表4.1所示。

 

序号

控制字

A口

C口上半部

B口

C口下半部

1

80H

2

81H

3

82H

4

83H

5

88H

6

89H

7

8AH

8

8BH

9

90H

10

91H

11

92H

12

93H

13

98H

14

99H

15

9AH

16

9BH

表4.1 8255在方式0下的输入输出组合

工作方式0,又称为基本工作方式。在此方式下,可分别将A口的8条线,B口的8条线,C口高4位对应的4条线和C口的低四位对应的四条线定义为输入或输出。故它们的输入输出共有16种不同的组合。

工作方式1,既选通输入输出方式。在这种方式下,A口和B口仍作为数据的输出口和输入口,同时还要利用C口的某些位作为控制和状态信号。

工作方式2,又称双向输入输出方式。这种方式只有8255的口A才有。在A口工作于双向输入输出方式时,要利用C口的5条线才能实现。因此,B口只能工作在工作方式0或工作方式1,而C口剩下的3条线可以作为输入输出线使用或B口方式1下的控制线。

五:实际硬件接线图

六:程序

  1. DATA SEGMENT ;数据段定义
  2. XX DB 0
  3. DATA ENDS ;数据段定义结束
  4. SSTACK SEGMENT STACK ;堆栈段定义
  5. DW 50 DUP(?)
  6. SSTACK ENDS ;堆栈段定义结束
  7. CODE SEGMENT ;代码段定义
  8. ASSUME CS:CODE,DS:DATA,SS:SSTACK
  9. START: MOV AX,DATA
  10. MOV DS,AX
  11. MOV DX,06C6H ;8255初始化:控制口地址送DX
  12. MOV AL,90H ;工作方式选择,A入B出
  13. OUT DX,AL ;控制字送入控制口
  14. L1: MOV DX,06C4H ;C口地址送入DX
  15. MOV AL,10100101B
  16. OUT DX,AL ;24红灯亮,13绿灯亮
  17. CALL DELAY2 ;红绿灯延时时间
  18. CMP XX,1
  19. JZ PAUSE ;检查是否有紧急情况
  20. AND AL,10100000B
  21. OUT DX,AL ;24红灯亮,熄灭绿灯
  22. MOV CX,0004H ;设置循环次数,即黄灯闪的次数
  23. L2: MOV DX,06C2H ;B口地址送入DX,控制黄灯
  24. MOV AL,00000101B
  25. OUT DX,AL ;13黄灯亮
  26. CALL DELAY1 ;调用DELAY1
  27. AND AL,00000000B
  28. OUT DX,AL ;熄灭黄灯
  29. CALL DELAY1 ;调用DELAY1
  30. CMP XX,1
  31. JZ PAUSE ;检查是否有紧急情况
  32. LOOP L2
  33. MOV DX,06C4H ;C口地址送入DX
  34. MOV AL,01011010B ;13红灯亮,24绿灯亮
  35. OUT DX,AL
  36. CALL DELAY2
  37. MOV CX,0004H ;设置循环次数,即黄灯闪的次数
  38. L3: MOV DX,06C2H ;B口地址送入DX
  39. MOV AL,00001010B
  40. OUT DX,AL ;24黄灯亮
  41. CALL DELAY1 ;调用DELAY1
  42. AND AL,00000000B
  43. OUT DX,AL ;熄灭黄灯
  44. CALL DELAY1 ;调用DELAY1
  45. CMP XX,1
  46. JZ PAUSE ;检查是否有紧急情况
  47. LOOP L3
  48. PAUSE: MOV DX,06C0H ;A口地址送入DX
  49. IN AL,DX ;读A口数据
  50. TEST AL,80H ;测试最高位是否为1,最高位模拟紧急情况
  51. ;1为紧急情况,0为一般情况
  52. JZ L1 ;为0紧急情况结束,红绿灯重新正常工作
  53. MOV DX,06C4H ;C口地址送入DX
  54. MOV AL,11110000B
  55. OUT DX,AL ;紧急情况,红灯全亮
  56. JMP PAUSE ;紧急情况时,红灯一直保持全亮
  57. DELAY1 PROC NEAR ;DELAY1定义
  58. PUSH CX
  59. PUSH DX
  60. PUSH AX ;压入堆栈,保存数据
  61. MOV XX,0 ;为XX赋值0,只有在非紧急情况需要延时
  62. MOV CX,8000H ;设置循环次数,控制延时时间
  63. L4: MOV DX,06C0H ;A口地址送人DX
  64. IN AL,DX ;读A口数据
  65. TEST AL,80H ;测试最高位,检查是否有紧急情况
  66. JZ L5 ;为0循环执行L4,有非0跳出程序返回,
  67. ;之后进入PAUSE检查是否有紧急情况
  68. MOV XX,1 ;为XX赋值1,出现紧急情况
  69. JMP L6 ;无条件转移到L6
  70. L5: LOOP L4 ;循环执行L4
  71. L6: POP AX
  72. POP DX
  73. POP CX ;弹出保存的数据
  74. RET ;返回
  75. DELAY1 ENDP ;DELAY1定义结束
  76. DELAY2 PROC NEAR ;DELAY2定义
  77. PUSH CX
  78. PUSH DX
  79. PUSH AX ;压入堆栈,保存数据
  80. MOV CX,0010H
  81. L7: CALL DELAY1 ;调用DELAY1
  82. LOOP L7 ;循环执行L8
  83. POP AX
  84. POP DX
  85. POP CX ;弹出保存的数据
  86. RET ;返回
  87. DELAY2 ENDP ;DELAY2定义结束
  88. CODE ENDS ;代码段定义结束
  89. END START ;程序结束

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/495043
推荐阅读
相关标签
  

闽ICP备14008679号