课程设计报告(红绿灯微机原理)(共19页).doc
精选优质文档-倾情为你奉上 微机原理与接口技术课程设计报告 题目 十字路口交通灯设计 系 别 年 级 09 专业 班 级 学号 学生姓名 指导教师 职 称 讲 师 设计时间 2011.12.27 专心-专注-专业目 录第一章 系统设计1.1题目要求(PS下面有些看不清楚地,你只要用word2003打开就可以看到了,)一、任务:掌握通过8255A并行口传输数据的方法,以控制发光二级管的亮与灭。二、要求:用8255做输出口,控制十二个发光管亮灭,模拟交通灯管理。1.2 方案论证方案一:1.在某一南北方向和东西方向的十字路口,每个方向都有红,黄,绿三色交通信号灯,要求信号灯按下列规则变化:(1)首先使某一方向绿灯亮,另一方向红灯亮。当出现下述情况之一时,开始变灯:其一是红灯已亮30S;其二是红灯路口停留的车辆已达五辆。(2)变灯应遵循的规律:首先使绿灯闪烁5S(注:0.5S灭,0.5S亮,重复5次),接着绿灯灭,黄灯亮5S后,使得黄灯灭,红灯亮,紧接着使另一方向的红灯变为绿灯。在一个方向由绿灯变红灯的过程中,另一方向的红灯保持不变。初始化8255的工作方式东西方向红绿灯工作南北方向红绿灯工作初始化8253的工作方式图1-18255A和8253工作流程图2.画出硬件框图,编写控制程序。提示:用8253来实现定时和检测车辆。用8255A某一断口的6根线控制交通灯。对于检测车辆,假设另有传感器电路进行配合,此传感器电路每当有一辆车时,会发出一个脉冲信号。图1-2交通灯硬件控制框图方案二:(1) 通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯,以模拟交通路灯的管理。(2) 要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口1、3路口为南北方向2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口的方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后,重复上述过程。(3) 程序中设定好8255A的工作模式及三个端口均工作在方式0,并处于输出状态。(4) 各发光二级管共阳极,使其点亮应使8255A相应端口的位清0.初始化8255的工作方式东西方向红绿灯工作南北方向红绿灯工作图1-3红绿灯工作流程图1.3实施方案 经小组讨论后决定采用第二个方案,因为设计出来的程序是产品,是要出售,面向用户的,用户一般所需求的东西是物美价廉的,因此,方便,简单,低价格是设计所需要考虑的。方案二比方案一少用一个8253芯片,而且代码也相差不大,符合上述考虑,因此决定使用方案二。1.4 原理及说明在本次课程设计当中,本次设计采用的是软件定时(即通过汇编指令)实现的。而灯的亮与灭以及闪烁是用8255的B口和C口控制的,工作方式0,B口和C口均为输出。并行接口是以数据的字节的单位与I/O设备或控制对象之间传递信息。CPU和接口之间的数据传送是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5单电源供电,能在以下三种方式下工作:方式0基本输入/输出方式。方式1选通输入/输出方式。方式2双向选通工作方式。由于实验中所用到的发光二级管是共阳极的,如图2-1所示,所以在为8255的B口和C口写数据时,对应的每一位有:0代表灯亮,1代表灯灭。 第二章 硬件设计2.1硬件结构交通灯在每天的变化规律并不相同,此课程设为了简化,只考虑了交通灯正常时的变化规律,即有如下规律变化:程序一开始,四个方向的灯全为红灯,接着变为黄灯闪烁,然后东西方向为红灯,南北方向为绿灯但不显示倒计时时间,倒计时间结束后,交通灯变成黄灯,闪烁几次后,东西方向变成绿灯,南北变成红灯,再变成黄灯,如此按交通灯的变化规则交替变化,采用的是为各个灯设置固定的亮持续时间。将8255A的RE和WR非信号端分别与8086的两个端口相对应连接起来,8255A的数据线和8086的数据端口相连接,RE和WR非信号都是8086发出的控制信号,当进行读数据时,从8255A传送到8086,如果为写信号时,由8086写向8255A。PC端口的低四位(PC0-PC3)分别设置为1,2,3,4路口的红灯;PC端口高四位(PC4-PC7)分别设置为1,2,3,4路口的绿灯;PB端口的高四位(PC4-PC7),分别置为1,2,3,4路口的黄灯。图2-1 实验原理硬件结构图2.2 硬件单元电路及相关说明2.2.1 8086的功能引脚图图2-2 8086引脚图通用引脚:1. GND(地)和Vcc电源。Vcc引脚接+5V电源, GND引脚接地。2. AD15AD0(Address Data Bus)地址/数据复用引脚,双向、三态。3. A19/S6A16/S3(Address/Status)地址/状态复用引脚,输出、三态。4. BHE/S7(Bus High Enable/Status)高8位数据线允许/状态复用引脚,输出、三态。5NMI(Non-Maskable Interrupt)非屏蔽中断请求引脚,输入,不受IF影响。6INTR(Interrupt Request)可屏蔽中断请求引脚,输入、高电平有效。7RD(Read)读信号,输出、三态、低电平有效。8CLK(Clock)时钟输入引脚。9RESET(Reset)复位引脚,输入、高电平有效。至少需要4个时钟周期的高电平。10READY(Ready)准备好引脚,输入、高电平有效。11.TEST(Test)测试引脚,输入、低电平有效,和WAIT指令结合使用。12.MN/MX(Minimum/Maximum Mode Control)最小/最大模式控制引脚,输入。2.2.2可编程并行通信接口芯片8255A1.8255的内部逻辑结构图2-3 8255内部逻辑结构图从图中可知,8255A由以下三部分组成:(1) 外设接口部分(数据端口A、B、C)1) 端口A。端口A内部包含一个8位数据输入锁存器和一个8位数据输出锁存/缓冲器。2) 端口B。端口B内部包含一个8位数据输入缓冲器和一个8位数据输出锁存/缓冲器。3) 端口C。端口C内部包含一个8位数据输入缓冲器和一个8位数据输出锁存/缓冲器。通过向芯片写入方式选择控制字,端口C可以被分成两个4位端口。(2) 内部逻辑(A组和B组控制电路)这两组控制电路,根据芯片内部的控制寄存器内容(存放着CPU输出的方式选择控制字)和“读/写控制逻辑”发出的读/写命令,控制两组端口的工作方式和读/写操作。A组控制电路控制端口A、端口C高4位(PC7PC4)。B组控制电路控制端口B、端口C低4位(PC3PC0)。(3)CPU接口部分1) 读/写控制逻辑电路 地址线A1和A0、CS(片选)、RD(读控制)、WR(写控制)、RESET(复位)信号的组合,用来控制8255A进行数据信息、状态信息和控制信息的传输。2) 数据总线缓冲器 它是一个8位的双向三态数据缓冲器,它是8255A与CPU数据总线的接口,所有数据的输入/输出,以及CPU用输出指令向8255A发出的控制字和用输入指令向8255A发出的控制字和用输入指令从8255A读入的外设状态信息,都是通过这个缓冲器传送的。2. 8255A的控制字1) 方式选择控制字D7D6D5D4D3D2D1D0特征位A组方式00=方式001=方式110=方式211=不用PA0=输出1=输入PC470=输出1=输入B组方式0=方式01=方式1PB0=输出1=输入PB0=输出1=输入PC030=输出1=输入注:8255A有三种工作方式方式0基本的输入/输出方式特点:a) 两个8位端口A、B及两个4位端口(端口C的高4位、低4位)中的任一端口,均可以作为输入端口或输出端口,且各端口均是独立的。b) 四个端口的输入或输出,可以有16种不同的组合,故可以适用于多种用途。c) 各端口输入时无锁存,输出时有锁存。方式1选通的输入/输出方式特点:a) 两个8位数据输入/输出端口(均带锁存功能)A和B,在端口C 的配合下工作。b) 端口C中有3位用于端口A的输入/输出控制,另有三位用于端口B的输入/输出控制,并且均提供中断逻辑。c) 若只有一个数据端口工作在方式1,那么另一个数据端口及端口C余下的五位可工作于方式0;若两个数据端口都工作于方式1,那么端口C余下的两位仍可由程序指定作为输入或输出位,也可进行置位/复位操作。方式2双向传输方式 特点: 只有A口可以工作在双向方式当A口工作在双向方式时,B口可以工作在基本型I/O(不需要联络线),也可以工作在选通型I/O(使用PC0、1、2做联络线)2) 端口C置位/复位控制字0D6D5D4D3D2D1D0 端口C置位、复位标志 任意值 端口C位选择 0复位,1置位第三章 软件设计3.1 设计流程图图3-1交通灯设计流程图3.2 交通灯波形图当南北方向绿灯亮时,东西方向红灯亮,当南北方向绿灯亮10秒后,南北方向黄灯亮,2秒后,转为东西方向绿灯亮,南北方向红灯亮,红灯亮12秒过程中,东西方向绿灯亮10秒后转为黄灯亮,黄灯亮2秒。南北向红灯黄灯绿灯12s10s15s东西向红灯黄灯绿灯15s10s图3-3 红绿灯工作波形图3.3模块分析(流程图与部分核心代码及相关说明)3.3.1 8255A工作方式初始化及读取B端口的数据通过PC端口初始化8255A芯片,使A,B,C三个端口都处于输出状态,读取端口B的工作状态,将东西方向和南北方向的黄灯都处于熄灭状态,红灯处于工作状态。MOV AL,82H MOV DX,IOCONPT ;写8255的控制字OUT DX,ALMOV DX,IOBPT ;读取B口的状态 IN AL,DXMOV BYTE PTR DS:0601H,ALMOV DX,IOCONPTMOV AL,80H ;写8255的控制字为80HOUT DX,AL 图3-1 8255A初始化3.3.2 南北方向红绿灯工作情况点亮1,3口(南北方向)的绿灯,2,4口的红灯继续点亮,经过一段时间后,熄灭1,3口的绿灯,黄灯开始闪烁。MOV DX,IOCPT MOV AL,B;写端口C MOV CX,8 ;起延时作用OUT DX,ALCALL DELAY1 ;延时CALL DELAY1OR AL,0F0H;AL高八位置1,熄灭1,3口绿灯 图3-2南北方向红绿灯工作3.3.3 东西方向红绿灯工作情况2,4口(东西方向)的黄灯点亮,接着绿灯点亮,1,3口的红灯点亮,2,4口黄灯闪烁,红灯全亮。MOV DX,IOBPT MOV AL,DS:0601HAND AL,B ;写端口B,将B6,B4置0 OUT DX,ALCALL DELAY2OR AL,B ;PC7、PC5置0,即2、4路口黄灯亮OUT DX,AL LOOP IOLED1 图 3-3东西方向红绿灯的工作MOV DX,IOCPTMOV AL,0F0H OUT DX,AL CALL DELAY2MOV AL,B ;C口为0F0H即红灯亮,绿灯灭OUT DX,AL第四章 系统调试 4.1调试手段 软件调试:调试工具:dice80881.利用dice8088完成代码的编辑,编译与连接(执行菜单项:“调试”,“编译程序”)。2.编译连接通过的程序通过RS323串口装载置实验硬件系统中(执行菜单项:“调试”-“编译程序”)。此操作必须在PC机与实验箱通信正常连接的前提下进行(在dice8088应用程序中状态栏中有联机信息);造成联机时报的原因有:串口线未连接(重新连接串口线);通信数据出错(关闭试验箱电源和dice8088应用程序,然后先打开实验箱电源,再执行dice8088应用程序);硬件系统哦那个处于非接收状态(只有在实验箱上的第一位数码管显示P. 时方可装载程序,可通过按实验箱上的复位按钮使其恢复到P.状态);3.运用程序:方法一、通过dice8088应用程序控制实验箱中得程序运用(执行菜单项;”调试”-“连续运行”);方法二、通过实验箱的小键盘运行程序,先在P.状态下输入代码起始地址(本程序的起始地址为:11B0),后按小键盘上的执行按钮(EX),此时数码管的最高位显示程序运行提示符“”。在“”提示符下,PC机时无法实现对实验箱进行程序装载的,只有使实验箱恢复到“P.”方可装载;4.2 调试过程中的问题1) A,B,C三个端口如何分配红绿灯2) 如何读取8255A三个端口的内容3) 8255A的B端口没有赋初始值,程序怎么运行4) 对于红绿灯的延时不清楚4.3解决办法1) 问题一:A,B,C三个端口如何分配红绿灯 解决方案:PC端口的低四位(PC0-PC3)分别设置为1,2,3,4路口的红灯;PC端口高四位(PC4-PC7)分别设置为1,2,3,4路口的绿灯;PB端口的高四位(PC4-PC7)分别置为1,2,3,4路口的黄灯。2) 问题二:如何读取8255A三个端口的内容解决方案:MOV DX,IOBPT ;读取B口的数据 IN AL,DX3) 问题三:8255A的B端口没有赋初始值,程序怎么运行解决方案:我们只需要B端口的高四位,所以MOV DX,IOBPTMOV AL,DS:0601HOR AL,0F0H ;黄灯全灭OUT DX,AL4) 问题四:对于红绿灯的延时不清楚解决方案: PUSH AX PUSH CX MOV CX,0030H第五章 总 结在微机原理实验考试结束后的一周时间里,我们进行了微机原理的课程设计。以前从没有学过关于汇编语言的知识,到学习VB,C语言等汇编语言,再到这次的微型计算机原理,每次做课程设计,都充满着挑战和趣味。微型计算机原理起初学起来就感觉很有难度,。当知道要进行课程设计的时候,心里面感觉有些害怕和担心,担心自己不会或者做不好。但是当选完题目并且听过老师讲解该课题设计思路的时候,空白的脑子里浮现出了种种思路,并不断的尝试,最终尽自己最大的努力,把该课程做到最好。再该课程中有很多自己的感受,我相信有很多同学都会和我有一样的感受,那就是感觉汇编语言很神奇,充满着趣味。我们从刚开始的害怕,到实验中看到一些实验现象后变的很高兴,到最后变成了享受,看着自己做出来的东西,心里面的感觉真的很好。微机原理课程设计跟其他汇编语言课程设计有共同的地方,那就是不仅加深和巩固了我们的课本知识,而且增强了我们自己的动脑,动手能力。在设计中,我们总是处于“学会了一些新知识,弄清了一些原来保留的问题”的循环中,直到课程结束时,才把保留的问题都弄清楚。这次实验并不是很难,主要的困难来自于对程序的理解,经过我们小组四个人的不懈努力,以及老师的耐心指导,我们最后对实验的原理有了清晰的认识。虽然我们没有把实验箱上的每个模块都用到,但是大体了解了各模块的作用和用法。虽然实验箱只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。而且实验也教会我们在团队中要善于与人相处,与人共事,为以后出去工作与人合作打下一定的基础。参考文献1汤书森主编,微机原理接口技术实验与实践教程清华大学出版社 2008.72刘红玲,赵梅主编,微机原理与接口技术实用教程电子工业出版社 2008.13彭虎主编,微机原理与接口技术学习指导第二版 电子工业出版社 2008.44朱金钧,麻新旗主编,微型计算机原理及应用技术第二版 机械工业出版城 2011.75陈立元,范逸之,廖锦棋.Visual Basic2005与自动化系统监控M.北京:清华大学出版社.2008课程设计独创性声明: 本课程设计参照实验指导书为基础,通过小组讨论研究所得。学生签名: 徐翔 钱晨凯 倪丹艳 王虹霖 指导教师评语:课程设计成绩: 指导教师签名: 教研室意见: 教研室主任签名: