找回密码
 立即注册

QQ登录

只需一步,快速开始

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

8086+8255交通灯控制课程设计报告

[复制链接]
跳转到指定楼层
楼主
ID:349684 发表于 2018-6-11 18:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
8255共有40个引脚,采用双列直插式封装,各引脚功能如下:

D0--D7:三态双向数据线,与单片机数据总线连接,用来传送数据信息。
CS:片选信号线,低电平有效,表示芯片被选中。
RD:读出信号线,低电平有效,控制数据的读出。
WR:写入信号线,低电平有效,控制数据的写入。
Vcc:+5V电源。
PA0--PA7:A口输入/输出线。
PB0--PB7:B口输入/输出线。
PC0--PC7:C口输入/输出线。
RESET:复位信号线。
A1、A0:地址线,用来选择8255内部端口。
GND:地线。

其控制逻辑为:


交通灯控制课程设计报告
课程名称:微型计算机技术及应用
专    业:电气工程及其自动化
班    级:************
学    号:************
姓    名:************
指导教师: ************
日    期:2013-12-10

              目录
第一章  设计内容的概述
      一. 设计任务内容
      二. 设计要求
第二章  硬件的设计
       一. 设计过程简单分析
       二. 硬件系统工作原理
      三. 硬件原理
   1. 8086各个引脚的连接方法
         2. 时钟发生器8284芯片的说明
第三章 程序设计
  一.流程图
  二.程序代码
  三.硬件清单
  四.芯片资料
    1. 8255介绍
        2.8253介绍
        3. 8282介绍
        4.3—8译码器74LS138介绍
第四章 总结

               

                   第一章 设计内容的概述   

一.设计任务内容                        

    用8255来控制LED灯,用8253来定时,达到交通控制的目的。

二.设计要求

    一开始,(南北用1,3东西为2,4)四个路口都为红灯,然后南北变为绿灯通车东西变为红色,30秒之后后,黄灯变亮,黄灯闪烁5次之后南北变为红灯,东西变为绿灯通车,30秒之后后,黄灯变亮,黄灯闪烁5次之后南北变绿灯,东西变为红灯,重复上述过程。

第二章  硬件的设计

一.设计过程简单分析

     分析:红,黄,绿灯可分别接在8255的A口,B口和C口上,灯的亮灭可直接由8086输出0,1控制。30秒延时及闪烁由8253控制,由闪烁的实现方法可由8253来实现。
    设8253各口地址分别为:设8253基地址即通道0地址为04A0H;通道1为04A2H;通道2为04A4H;命令控制口为04A6H。
黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波, 8255控制或门打开的时间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪烁。
由于计数值最大为65535,1MHZ/65536的值远大于2HZ,所以采用两个计数器级联的方式,8253通道0的clock0输入由分频器产生的1MHZ时钟脉冲,工作在方式 3即方波发生器方式,理论设计输出 周期为0.01s的方波。1MHZ的时钟脉冲其重复周期为T=1/1MHZ=1s,因此通道0的计数初值为10000=2710H。由此方波分别作为clock1和clock2的输入时钟脉冲,所以通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在方式1,计数初值3000=BB8H既30s,计数到则输出一个高电平到8255的PA7口,8255将A口数据输入到8086,8086检测到高电平既完成30s定时。通道2工作在方式3需输出一个1HZ的方波,通过一个或门和8086共同控制黄灯的闪烁,因此也是工作在方波发生器方式,其计数初值为100=64H,将黄灯的状态反馈到8055的端口PB7和PC7,同样输入到8086,8086通过两次检测端口状态可知黄灯的状态变化,计9次状态变化可完成5次闪烁。
三个通道的门控信号都未用,均接+5V即可。
二.硬件系统工作原理
工作原理说明:
    此系统是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。
如硬件连接图所示,红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30S定时到。OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本输入输出方式,红绿灯的转换由软件编程实现。
三.硬件原理
由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的线分别与8086CPU的线相连,而将8086的线作为选通信号。如果是按8255A内部地址来看,则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),命令控制口地址为(CS+003H),其中,CS为8255片选信号的首地址;若是按8086CPU地址来看,则8255A的地址是PA口地址即(CS+000H),PB口地址为(CS+002H),PC口地址为(CS+004H),命令控制口地址为(CS+006H)。当CS=0288H,则PA口地址为0288H,PB口地址为028AH,PC口地址为028CH,命令控制口地址为028EH。
1.8086各个引脚的连接方法
(1)引脚:通常用此引线产生片选信号,当为=1,=0编码时,在数据总线低8位和偶地址之间进行字节传送()。
(2)CLK(Clock)时钟信号(输入):CLK为CPU和总线控制器提供基本的定时脉冲。时钟周期是非对称的,当它为有效高电平的时间和时钟周期的比为33%时,提供最佳的内部定时。由8284时钟发生器产生,8086CPU使用的时钟频率,因芯片型号不同,时钟频率不同。这里采用5MHz。
(3)(+5V),GND(地):CPU所需电源=+5V。GND为地线。
(4)QS0ALE(Address Latch Enable)地址锁存允许信号,输出高电平有效,作地址锁存器8282/8283的片选信号,在地址周期状态,ALE有效,表示AB、DB上传送的是地址信息,将它锁存。这是由于AB、DB分时复用所需要的,ALE信号线不能悬空。如图所示,加入2片地址锁存器8282。
(5)RESET:复位信号,输入,高电平有效。8086接到复位信号后,停止现行操作,并初始化段寄存器DS,SS,ES,标志寄存器PSW,指令指针IP和指令队列,而使CS=FFFFH。RESET信号至少保持四个周期以上的高电平,当它变为低电平时(一个下降沿),CPU执行重启过程,8086将从地址FFF0H开始执行指令。通常FFFF0H单元开始的几个单元中存放一条JMP指令,将入口转到引导和装配程序中,从而实现对系统的初始化,引导监控程序或操作系统程序。由于出现突然断电或其它情况时,8086可能正在执行交通灯程序,现有的地址丢失,应按下RESET键重新开始。另外,应将8255A与8086的RESET线相连,保持同步。
(6)MN/(Minimun/MaximuN): 最小、最大工作模式选择信号,输入。此时MN/接+5V,构成单处理器系统,系统控制信号由CPU提供。
接下来,对8282芯片作一下说明:
:8位数据输入;:8位数据输出;STB:选通信号;
:输出允许信号,在不带DMA控制器的8086单处理器系统中,它接地。
其实,这就是8个D触发器。由于只用,所以用两片即可。
2.时钟发生器8284芯片的说明
(1)时钟信号发生器:
=0时,时钟信号输入由X1 、X2 端接上晶体,由晶体振荡器产生时钟信号;
CLK:3分频OSC后的时钟,输出频率4.77MHz,占空比为1/3,大约满足8086CPU的输入频率5MHz、占空比33%的要求。
(2)复位生成电路:
输入的信号来触发内部同步触发器,由此产生信号RESET,送到CPU的RESET端,复位信号由CLK的下降沿同步。此时,端接“电源好“信号,使系统上电后自动复位。
此为最小模式系统,除了8086CPU,I/O接口芯片8255A,定时计数芯片8353外,其它配置如下:
    1片8284A,作为时钟发生器;
2片8282,作为地址锁存器;
2片74LS138,作为地址选通译码器;
1个二输入或非门;1个4输入或非门;1个二输入与非门;4个或门
12个发光二极管;12个限流电阻;1个复位信号开关。
                  第三章 程序设计
一.流程图

                                
三.硬件清单  
   1片8255,作为控制外设
   1片8253,作为数据控制器
   1片8284A,作为时钟发生器;
   2片8282,作为地址锁存器;
   2片74LS138,作为地址选通译码器;
   1个二输入或非门;1个4输入或非门;1个二输入与非门;4个或门
   12个发光二极管;12个限流电阻;1个复位信号开关。
四.芯片资料
  1.8255介绍   
     8255的内部结构
8255A是一个40引脚的双列直插式集成电路芯片
按功能可把8255A分为三个逻辑电路部分,即:口电路、总线接口电路和控制逻辑电路。
(1)口电路
    8255A共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。
数据传送中A口所需的控制信号由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起称之为A组;同样理由把B口和C口低位部分(PC3~PC0)合在一起称之为B组。            
(2)总线接口电路
   总线接口电路用于实现8255A和单片微机的信号连接。其中包括:
(a)数据总线缓冲器
    数据总线缓冲器为8位双向三态缓冲器,可直接和80C51的数据线相连,与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。
(b)读/写控制逻辑
         与读写有关的控制信号有
         CS—片选信号(低电平有效)
         RD—读信号(低电平有效)
         WR—写信号(低电平有效)            
         A0、A1—端口选择信号。8255A共有四个可寻址的端口(即A口、B口、C口和控制寄存器),用二位地址编码即可实现选择。参见下表。
RESET—复位信号(高电平有效)。复位之后,控制寄存器清除,各端口被置为输入方式。
读写控制逻辑用于实现8255A的硬件管理:芯片的选择,口的寻址以及规定各端口和单片微机之间的数据传送方向。
(c)控制逻辑电路
     控制逻辑电路包括A组控制和B组控制,合在一起构成8位控制寄存器。用于存放各口的工作方式控制字
8255A工作方式及数据I/O操作
(1)8255A的工作方式
    8255A共有三种工作方式,即方式0、方式1、方式2.
(a)方式0  基本输入/输出方式
   方式0下,可供使用的是两个8位口(A口和B口)及两个4位口(C口高4位部分和低4位部分)。四个口可以是输入和输出的任何组合。
方式0适用于无条件数据传送,也可以把C口的某一位作为状态位,实现查询方式的数据传送。
(b)方式1  选通输入/输出方式
      A口和B口分别用于数据的输入/输出。而C口则作为数据传送的联络信号。具体定义见表7–2。可见A口和B口的联络信号都是三个,如果A或B只有一个口按方式1使用,则剩下的另外13位口线仍然可按方式0使用。如果两个口都按方式1使用,则还剩下2位口线,这两位口线仍然可以进行位状态的输入输出。
方式1适用于查询或中断方式的数据输入/输出。
(c)方式2  双向数据传送方式
     只有A口才能选择这种工作方式,这时A口既能输入数据又能输出数据。在这种方式下需使用C口的五位线作控制线,信号定义如表7–2所示。方式2适用于查询或中断方式的双向数据传送。如果把A口置于方式2下,则B口只能工作于方式0.
(2)数据输入操作
     用于输入操作的联络信号有:
STB(StroBe)—选通脉冲,输入,低电平有效。 当外设送来STB信号时,输入数据装入8255A的锁存器。
IBF(Input Buffer Full) —输入缓冲器满信号,输出,高电平有效。
IBF信号有效,表明数据已装入锁存器,因此它是一个状态信号。
INTR(INTerrupt Request)—中断请求信号,高电平有效,当IBF数据输入过程:当外设准备好数据输入后,发出信号,输入的数据送入缓冲器。然后IBF信号有效。如使用查询方式,则IBF即作为状态信号供查询使用;如使用中断方式,当信号由低变高时,产生INTR信号,向单片微机发出中断。单片微机在响应中断后执行中断服务程序时读入数据,并使INTR信号变低,同时也使IBF信号同时变低。以通知外设准备下一次数据输入。
(3)数据输出操作
用于数据输出操作的联络信号有:
ACK(ACKnowledge)—外设响应信号输入,低电平有效。
当外设取走输出数据,并处理完毕后向单片微机发回的响应信号为高,信号由低变高(后沿)时,中断请求信号有效。向单片微机发出中断请求。
OBF(Output Buffer Full)——输出缓冲器满信号,输出,低电平有效。
当单片微机把输出数据写入8255A锁存器后,该信号有效,并送去启动外设以接收数据。
INTR—中断请求信号,输出,高电平有效。
数据输出过程:外设接收并处理完一组数据后,发回ACK信号。该信号使OBF变高,表明输出缓冲器已空。如使用查询方式,则OBF可作为状态信号供查询使用;如使用中断方式,则当ACK信号结束时,INTR有效,向单片微机发出中断请求。在中断服务过程中,把下一个输出数据写入8255A的输出缓冲器。写入后OBF有效,表明输出数据已到,并以此信号启动外设工作,取走并处理8255A中的输出数据。
表7–2 8255A C口联络信号定义
   
2.8253定时计数器
8253内部可分为6个模块,每个模块的功能如下:
1. 数据总线缓冲器及数据总线D0~D7
2. 读/写控制逻辑及控制引脚

CS*   A1    A0

I/O地址

读操作RD*

写操作WR*
0    0      0
0    0       1
0    1       0
0    1       1
  40H
  41H
  42H
  43H
读计数器0
读计数器1
读计数器2
无操作
写计数器0
写计数器1
写计数器2
写控制字
3. 控制字寄存器
在初始化编程时,CPU写入方式控制字到控制字寄存器中,用以选择计数通道及其相应的工作方式。
8253的控制字:
8253的工作方式也是有控制字来决定,其控制字意义如下
4. 计数通道0、计数通道1、计数通道2
3个计数通道内部结构完全相同。每个计数通道都由一个16位计数初值寄存器、一个16位减法计数器和一个16位计数值锁存器组成
计数初值存于预置寄存器,在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值。
计数器的3个引脚说明:
(1)CLK时钟输入信号
在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
(2) GATE门控输入信号
控制计数器工作,可分成电平控制和上升沿控制两种类型
(3) OUT计数器输出信号
当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号
8253有6种工作方式,由方式控制字确定
区分这6种工作方式的主要标志由3点:一是输出波形不同;二是启动计数器的触发方式不同;三是计数过程中门控信号GATE对计数器操作的控制不同。
1..方式0--低电平输出(GATE信号上升沿继续计数)
2.方式1--低电平输出(GATE信号上升沿重新计数)
3.方式2--周期性脉冲输出
4.方式3--周期性方波输出
OUT输出低电平,装入计数值n后,OUT立即跳变为高电平。如果当前GATE为高电平,则立即开始减“1”计数,OUT保持为高电平,若n为偶数,则当计数值减到n/2时,OUT跳变为低电平,一直保持到计数值为“0”,系统才重新置入计数值n,实现循环计数。这时OUT端输出周期为n×CLK周期,占空比为1:1的方波序列:若n为奇数,则OUT端输出周期为n×CLK周期,占空比(n+1)/2 : (n-1)/2的近似方波序列。
5.方式4--单次负脉冲输出(软件触发)
6.方式5--单次负脉冲输出(硬件触发)
每种工作方式的设置过程类似:
⑴ 设定工作方式
⑵ 设定计数初值
〔 ⑶ 硬件启动 〕
⑷ 计数初值进入减1计数器
⑸ 每输入一个时钟计数器减1的计数过程
⑹ 计数过程结束
3.8282
:8位数据输入;:8位数据输出;STB:选通信号;
:输出允许信号,在不带DMA控制器的8086单处理器系统中,它接地。
其实,这就是8个D触发器。由于只用,所以用两片即可。
4.3—8译码器74LS138
    74LS138译码器引脚图,逻辑图及功能表如下
   
                     第四章 总结
在这多设计交通灯系统的过程中,我深深体会到了理论和实际的差距。在做关于交通灯系统设计中我查阅很多这方面的资料,了解一些芯片的功能,比如说要了解8086芯片中各个引脚的功能,怎么样去使用8255这个可编程并行接口芯片,怎么样使用8253来定时及输出一定频率的脉冲,怎么样用8282这个地址锁存器来存储高位地址和低位地址以及交通有哪些规则.我在已有的理论基础上,明白了制作实物的一般过程。
整个设计过程,开始最大的问题是不知道从哪里下手,从哪里开始切入,后来通过查资料明白了这个问题。再后来就是编程,尤其是芯片初始化,整了很多次,最后还是在同学的帮助下完成的。其实,准确的说不是我一个人独自完成的,在许多地方,我的同学都提出了宝贵的意见,再次感谢他们。

  1.       DATA SEGMENT; 设置数据段,以及端口地址分配
  2.         PORTA EQU 218H
  3.         PORTB EQU 219H
  4.         PORTC EQU 21AH
  5.         PTCON8255 EQU 21BH
  6.         PORT0  EQU 238H
  7.         PORT1  EQU 239H
  8.         PORT2  EQU 240H
  9.         PTCON8253 EQU 241H
  10. DATA ENDS
  11. CODE SEGMENT
  12.     ASSUME DS:DATA,CS:CODE
  13. INIT:    MOV AX,DATA
  14.          MOV DS,AX
  15.          MOV DX, PTCON8253
  16.          MOV AL,36H
  17.          OUT DX,AL
  18.          MOV DX,PORT0
  19.          MOV AX,2710H
  20.          OUT DX,AL
  21.          MOV AL,AH
  22.          OUT DX,AL;    通道0工作方式3 周期0.01s
  23.         MOV DX, PTCON8253
  24.          MOV AL,71H
  25.          OUT DX,AL;通道1工作方式1
  26.          MOV DX, PTCON8253
  27.          MOV AL,96H
  28.          OUT DX,AL
  29.          MOV DX,PORT2
  30.          MOV AL,64H
  31.          OUT DX,AL;     通道2工作方式3 周期1s 8253初始化完成
  32.          MOV DX, PTCON8255
  33.          MOV AL,80H
  34.          OUT DX,AL;8255初始化 A,B,C口均工作在方式0
  35.          MOV DX,PORTA
  36.          MOV AL,0
  37.          OUT DX,AL
  38.          MOV DX,PORTB
  39.          MOV AL,0FH
  40.          OUT DX,AL
  41.          MOV DX,PORTC
  42.         MOV AL,0FH
  43.         OUT DX,AL;灯初始化完成
  44. STA:    MOV DX,PORTA
  45.         MOV AL,0A0H
  46.         OUT DX,AL
  47.         MOV DX,PORTB
  48.         MOV AL,0F0H
  49.         OUT DX,AL
  50.         MOV DX,PORTC
  51.         MOV AL,50H
  52.         OUT DX,AL;1,3绿灯亮,2,4红灯亮
  53.         MOV DX,PORT1
  54.         MOV AX,0BB8H
  55.         OUT DX,AL
  56.         MOV AL,AH
  57.         OUT DX,AL;8253通道1赋值 开始计时
  58. SCAN1:  MOV AL,0
  59.         MOV DX,PTCON8255
  60.         MOV AL,90H
  61.         OUT DX,AL
  62.         MOV DX,PORTA
  63.         IN AL,DX
  64.         AND AL,0FH
  65.         CMP AL,1
  66.         JNZ SCAN1;扫描PA7口
  67. FLA1:   MOV DX, PTCON8255
  68.         MOV AL,80H
  69.         OUT DX,AL
  70.         MOV DX,PORTC
  71.         MOV AL,0F0H
  72.         OUT DX,AL
  73.         MOV DX,PORTB
  74.         MOV AL,50H
  75.         OUT DX,AL
  76.         MOV CX,0
  77. TEST1: MOV DX,PTCON8255;检测PB7
  78.         MOV AL,82H
  79.         OUT DX,AL
  80.         MOV DX,PORTB
  81.         IN AL,DX
  82.         AND AL,0FH
  83.         MOV AH,AL
  84.         MOV DX,PTCON8255
  85.         MOV AL,82H
  86.         OUT DX,AL
  87.         MOV DX,PORTB
  88.         IN AL,DX
  89.         AND AL,0FH
  90.         XOR AL,AH
  91.         ADD  CL,AL
  92.         CMP CL,9
  93.         JNZ TEST1;闪烁5次
  94.         MOV DX, PTCON8255
  95.         MOV AL,80H
  96.         OUT DX,AL
  97.         MOV DX,PORTA
  98.         MOV AL,50H
  99.         OUT DX,AL
  100.         MOV DX,PORTB
  101.         MOV AL,0F0H
  102.         OUT DX,AL
  103.         MOV DX,PORTC
  104.         MOV AL,0A0H;1,3红灯亮,2,4绿灯亮
  105.         MOV DX,PORT1
  106.         MOV AX,0BB8H
  107.         OUT DX,AL
  108.         MOV AL,AH
  109.         OUT DX,AL;8253通道1赋值 开始计时
  110. SCAN2: MOV AL,0
  111.         MOV DX,PTCON8255
  112.         MOV AL,90H
  113.         OUT DX,AL
  114.         MOV DX,PORTA
  115.         IN AL,DX
  116.         AND AL,0FH
  117.         CMP AL,1
  118.         JNZ SCAN2
  119. FLA2:   MOV DX, PTCON8255
  120.         MOV AL,80H
  121.         OUT DX,AL
  122.         MOV DX,PORTC
  123.         MOV AL,0F0H
  124.         OUT DX,AL
  125.         MOV DX,PORTB
  126.         MOV AL,0A0H
  127.         OUT DX,AL
  128. TEST2:  MOV DX,PTCON8255
  129.          MOV AL,88H
  130.          OUT DX,AL
  131.          MOV DX,PORTC
  132.          IN AL,DX
  133.          AND AL,0FH
  134.          MOV AH,AL
  135.          MOV DX,PTCON8255
  136.          MOV AL,88H
  137.          OUT DX,AL
  138.          MOV DX,PORTC
  139.          IN AL,DX
  140.          AND AL,0FH
  141.          XOR AL,AH
  142.          ADD  CL,AL
  143.          CMP CL,9
  144.        JNZ TEST2;闪烁5次
  145.         CODE   ENDS                                          
  146.        END STA   
复制代码



完整的Word格式文档51黑下载地址:
微机8086-8255-交通灯-课程设计.doc (284 KB, 下载次数: 42)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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