版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要在实际生活中,交通信号灯控制着交通的秩序安全。本微机原理课程设计就是模拟实际十字路口交通灯的运行规则,用汇编语言来设计交通信号灯。本次设计主要是实现对十字路口交通信号灯的控制而进行的编程,用8255A的A口控制东西方向的交通灯,用8255A的B口控制南北方向的交通灯。当程序正常运行时,依次为东西方向的绿灯和南北方向的红灯亮,通过延时程序进行一段延时后,东西方向的绿灯灭后东西方向的黄灯闪3次,随后东西方向的红灯和南北方向的绿灯亮并进行延时,延时后,南北方向的黄灯闪3次,之后同理往复循环。用8255A的C口控制紧急情况时东西、南北方向的红、黄、绿灯的亮灭,通过读C口输入的数据并进行测试查询,
2、从而对紧急情况进行及时处理。十字路口交通信号灯设计充分利用了可编程的并行接口芯片8255A各引脚的功能,选定工作方式0,通过改变控制字来实现交通信号灯的状态转换。另外,通过调用延时子程序来实现交通信号灯某一状态的持续,调用循环子程序来实现对交通信号灯状态循环的控制,通过控制开关来实现紧急情况下各路口红灯全亮的功能。综合各部分功能来实现较为完善的程序,运行程序来模拟十字路口交通信号灯。关键词:可编程的并行接口8255A,延时,循环,测试,1 设计任务描述1.1 设计目的 (1) 查阅可编程并行芯片8255或其他相关资料;(2) 用简单的输入输出端口等硬件,配合延时和控制程序控制灯的亮灭。1.2
3、设计要求(1) 利用微机原理试用箱,采用两组红,黄,绿发光二极管来模拟A,B两路交差路口的信号控制;(2) 按实际交通灯控制规程控制。1.3 增加功能(1) 延时程序。(2) 中断程序。(3) 当路口发生事故时,强行A,B路口红灯全亮。2 设计思路本次微机原理设计的题目是交通信号灯,它是通过对8255芯片和LED发光二极管的连接设置来模拟交通信号灯的控制,使红黄绿三色灯按照正常交通规则亮灭;并应用中断控制器8259对交通灯在发生事故情况下进行强制控制。十字路口交通信号灯的工作原理是在正常情况下以8086/8088的CPU与8255芯片相连接来实现的。8255芯片包括四个口,即A口、B口、C口和
4、控制口。通过对其控制端口写入控制字,来设定8255的工作方式,在本设计中,使8255工作于方式0,将A口和B口都设置为输出,C口设置成输入。其中A口控制南北方向的交通灯, B口控制东西方向的交通灯。当程序正常运行时,依次为东西方向的绿灯和南北方向的红灯亮,通过延时程序进行一段延时后,东西方向的绿灯灭后东西方向的黄灯闪3次,随后东西方向的红灯和南北方向的绿灯亮,延时后,南北方向的黄灯闪3次,之后同理进行循环。当CPU在执行正常程序时,按动KK1通过8259向CPU发出中断请求,CPU先要关中断,把其正在执行的程序压到已定义好的堆栈段当中,将中断程序MIR7的偏移地址和段地址取出放在源变址当中,然
5、后在开中断,执行中断程序,强制东西方向和南北方向的红灯全亮。利用8255的C口接收KK2的单次脉冲来进行还原。中断程序执行完后关中断,让压在堆栈段中的程序出栈,CPU继续执行出栈的程序。3 设计原理流程图交通灯工作流程图 中断服务程序流程图 4 主要器件及其简介4.1 可编程的并行接口82554.1.1 8255的引线图 图4.1.1. 8255引脚图其中主要引脚介绍如下:1)与外部设备端相连的引脚(1)PA0PA7:为A端口的8条输入/输出引脚。(2)PB0PB7:为B端口的8条输入/输出引脚。(3)PC0PC7:为C端口的8条输入/输出引脚。2)与CPU相连的引脚(1)RESET:复位信号
6、,低电平有效。当RESET信号来到时,所有内部寄存器都被清零,同时3个数据端口被自动设为输入端口。(2)D7D0:双向数据信号线,用来传送数据和控制字和系统数据总线相连。(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
7、.1.2 8255内部结构图4.1.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而言,共用一个端口地址
8、相同的控制字寄存器,接收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按位置置位/复位控制字。方式选择
9、控制字的第7位总是1,而端口C按位置位/复位控制字的第7位总是0。所以第7位称为区分两个控制字的标志位。1)方式选择控制字图4.1.3 方式选择控制字2)端口C按位置置位/复位控制字图4.1.4 端口C按位置置位/复位控制字4.1.4 8255的工作方式8255的工作方式主要有工作方式0、工作方式1和工作方式2。其中端口A可以工作在三种方式中的任一种;端口B只能工作在方式0和方式1;端口C通常作为控制信号使用,配合端口A和端口B的工作。在模拟流水线控制的设计中只用到了工作方式0,如表4.1所示。表4.1 8255在方式0下的输入输出组合序号控制字A口C口上半部B口C口下半部180H出出出出28
10、1H出出出入382H出出入出483H出出入入588H出入出出689H出入出入78AH出入入出88BH出入入入990H入出出出1091H入出出入1192H入出入出1293H入出入入1398H入入出出1499H入入出入159AH入入入出169BH入入入入工作方式0,又称为基本工作方式。在此方式下,可分别将A口的8条线,B口的8条线,C口高4位对应的4条线和C口的低四位对应的四条线定义为输入或输出。故它们的输入输出共有16种不同的组合。工作方式1,既选通输入输出方式。在这种方式下,A口和B口仍作为数据的输出口和输入口,同时还要利用C口的某些位作为控制和状态信号。工作方式2,又称双向输入输出方式。这种
11、方式只有8255的口A才有。在A口工作于双向输入输出方式时,要利用C口的5条线才能实现。因此,B口只能工作在工作方式0或工作方式1,而C口剩下的3条线可以作为输入输出线使用或B口方式1下的控制线。4.2 中断控制器82594.2.1 8259的引线图图4.2.1. 8255引脚图1)中断控制器8259外部共有28个引脚:D0-D7是八条数据线,是片选端,是写入端,是读出端。14脚接地,28脚接+5V电源。CAS0-CAS2是级联控制线。IR0-IR7为中断请求输入端。是中断响应输入信号。INT为8259的中断请求输出信号,可以直接接到CPU的INTR输入端。2)中断控制器8259内部中断控制器
12、内部有八大组成部分: 数据总线缓冲器 读写逻辑 级联缓冲器比较器 控制逻辑 中断屏蔽寄存器(IMR) 中断请求寄存器(IRR) 优先级分析器(PR) 中断服务寄存器。4.2.2 8259的内部控制字8259工作之前必须通过CPU来命令它。CPU命令分为两大类:一类是初始化命令字(ICW),主要是为了让8259处于初始化状态;另一类是操作命令字(OCW),使初始化的8259去执行具体的某种操作方式。1)初始化命令字初始化命令字ICW1初始化命令字ICW28086/88模式下,仅用ICW2提供不同中断源的中断向量码。当中断响应时,根据中断向量表获得入口地址。初始化命令字ICW3该命令字用于多片82
13、59的级联。初始化命令字ICW4000SFNMBUFM/SAEOIPM 1:8086/88模式 0:8080/85模式 1:自动EOI 0:非自动结束 0X:非缓冲方法 10:缓冲方式/从属片 11:缓冲方式/主控片 1:特殊全嵌套方式 0:一般嵌套方式2)操作命令字OCW对8259初始化之后,该芯片就进入工作状态,准备好接收IR端进入的中断请求。操作命令字OCW1它用于设置对8259中断的屏蔽操作。该八位的操作字的某一位为1时,它就屏蔽相对应的IR输入。操作命令字OCW2该命令字用来设置优先级是否循环、循环的方式及中断结束的方式。5源程序清单及注释SSTACK SEGMENT STACK ;
14、定义堆栈段 DW 32 DUP(?)SSTACK ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE,SS:SSTACKSTART: MOV AL,89H MOV DX,0646HOUT DX,AL ;将8255控制字设置为10001001 ;A、B口输出 C口输入 工作方式0PUSH DSMOV AX,0000HMOV AX,OFFSET MIR7 ;取中断入口地址MOV SI,003CH ;中断矢量地址MOV SI,AX ;填IRQ7的偏移矢量MOV AX,CS ;段地址MOV SI,003EHMOV SI , AX ;填IRQ7的段地址矢CLIPOP DS;初
15、始化8259MOV AL,13H OUT 20H,AL ;写ICW1 (需要ICW4,单片使用,边沿触发)MOV AL,08H OUT 21H,AL ;写ICW2MOV AL,01H OUT 21H,AL ;写ICW4(从片,非自动EOI,8086/8088)MOV AL,7FH OUT 21H,AL ;写OCW1 开放IR7STI ;将1赋给IF,开中断RED: MOV AL,22HMOV DX,0640HOUT DX,AL ;南北方向红灯亮MOV DX,0642HOUT DX,AL ;东西方向红灯亮CALL DELAY ;调用延时程序DELAYNORMAL: STI MOV AL,88H
16、MOV DX,0642H OUT DX,AL ;东西方向绿灯亮MOV AL,22H MOV DX,0640HOUT DX,AL ;南北方向红灯亮CALL DELAY ;调用延时程序DELAYMOV AL,00HMOV DX,0642HOUT DX,AL ;东西方向绿灯灭CALL DELAY1 ;调用延时程序DELAY1MOV CX,0005H ;将黄灯闪烁次数设为5RECALL1:MOV AL,44H MOV DX,0642H OUT DX,AL ;东西方向黄灯亮 CALL DELAY2 XOR AL,AL OUT DX,AL ;东西方向黄灯灭 CALL DELAY2 ;调用延时程序DELAY
17、2 LOOP RECALL1 MOV AL,88H MOV DX,0640H OUT DX,AL ;南北方向绿灯亮 MOV AL,22H MOV DX,0642H OUT DX,AL ;东西方向红灯亮 CALL DELAY CALL DELAY ;两次调用延时程序DELAY,南北方向设为主干道 MOV AL,00H MOV DX,0640H OUT DX,AL ;南北方向绿灯灭CALL DELAY1 ;调用延时程序DELAY1MOV CX,0005H ;将黄灯闪烁次数设为5RECALL2:MOV AL,44H MOV DX,0640H OUT DX,AL ;南北方向黄灯亮 CALL DELAY
18、2 ;调用延时程序DELAY2 XOR AL,AL OUT DX,AL ;南北方向黄灯灭 CALL DELAY2 ;调用延时程序DELAY2 LOOP RECALL2 JMP NORMAL ;无条件跳转到NORMAL,实现循环MIR7: STI PUSH DS PUSH AX MOV AL,22HMOV DX,0640H OUT DX,AL ;事故发生时强制南北方向红灯亮 MOV DX,0642H OUT DX,AL ;事故发生时强制东西方向红灯亮NEXT: MOV DX, 0644H IN AL, DX TEST AL,01H JZ NEXT MOV AL,20H ;OCW2 关中断 OUT
19、 20H,AL POP AX POP DX STI ;开中断 IRET ;中断返回 DELAY: PUSH CX ;延时程序DELAY MOV BX,008FH T1:MOV CX,1000H T2:NOP NOP LOOP T2 DEC BX CMP BX,0000H JNZ T1 POP CX RETDELAY1: PUSH CX ;延时程序DELAY1 MOV CX,0FFFFH T3:NOP NOP LOOP T3 POP CX RETDELAY2: PUSH CX ;延时程序DELAY2 MOV CX,0F900H T4:PUSH AX POP AX LOOP T4POP CXRET
20、CODE ENDS END START6 实际接线图设计总结短短一周的微机原理课程设计已经过去了。虽然时间短暂,但我学到了很多东西使我更加深刻的理解了我所学的知识,并且能在实际中应用他们,也使我更深的理解了什么是一分耕耘,一分收获!在课程设计以前,可以说我对微机原理似懂非懂,有的时候拿来一个完整的程序都不能完全理解。而现在,我已经完全掌握了以前老师所讲的芯片的主要功能和使用方法。并能用自己的思路设计出想要的程序,这么大的反差就是源于此次课程设计。可以这么说,此次课程设计使我获益匪浅!一分耕耘,一分收获,没有认真的学习,当然不会掌握,没有认真了解芯片的功能,又如何在具体应用中发挥他们应有的作用呢
21、?在课堂上,王老师的耐心细致地讲解使我掌握了这次设计中所选用的最重要芯片8255的主要功能。在课程设计开始时,我首先对正常情况下的交通灯控制进行了编程。对其控制字的编写,根据程序的实际需要,我将10001001赋值给8255控制口,对其工作方式进行了设定。根据实际交通灯的亮灭情况,我对8255进行了相关的编程。为了使交通灯了亮灭情况跟接近实际,我利用延时程序通过对其中参数的设定,完成了交通灯的控制及显示。出于实际情况考虑,我将南北方向设为主干道。根据老师的提示,课程设计的扩展我考虑的是对于紧急事故是需要对交通灯进行强制控制,而要实现这个功能,可以选用中断控制器8259,因此我又对8259进行了相关编程控制。本来以为再课堂上学习的知识已经足够用,可在编写程序的时候才发现自己所学的东西掌握的很不扎实,经常在编写程序时候漏掉一些细节,导致在程序运行时候出现了很多低级错误,多亏同组同学的检查及帮助,我才顺利完成了设计程序的编写。在调试过程中,虽然对程序已经十分熟悉,但还是出现了很多问题,首先是加载不成功。经过修改,其中因为马虎出现的小问题,程序终于通过了编译、链接、加载,但当运行时却怎么都无法显示预期的效果。我百般思索,反复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届四川省西昌市市级名校初三月考试卷(二)生物试题含解析
- 福建省泉州台商投资区重点名校2026届4月初三教学质量测评化学试题含解析
- 2026年防走失定位产品技术对比与选择
- 2026年“2 10 N”服务体系:数据交易所与生态伙伴协同模式设计
- 2026年智能网联汽车自动驾驶数据记录存储规范
- 2026年矿区源网荷储一体化:分布式光伏 储能 采矿负荷
- 2026年教师从知识传授者向学习引导者能力激发者转型路径
- 2025年临床执业《儿科学》专项练习
- 房地产行业项目负责人面试全攻略
- 酒店旅游行业投资计划与实施策略
- 2024-2025年上海中考英语真题及答案解析
- 第6课第1课时呵护花季激扬青春【中职专用】《心理健康与职业生涯》(高教版2023基础模块)
- 道路绿化养护投标方案(技术方案)
- 品牌策划与推广(第3版 数字教材版) 课件全套 人大 第1-9章 品牌的本质及其定位决策-营销活动策划与管理
- 爆破作业人员教育培训制度
- 辊道窑作业标准指导书
- GB/T 24421.1-2023服务业组织标准化工作指南第1部分:总则
- 井巷用全自动全液压凿岩台车设计书
- 蚕桑产业建设汇报材料(四)
- 借调人员协议-三方协议
- 2022版化学检验工高级工考核题库(全真题库)
评论
0/150
提交评论