微机原理与接口技术 课程设计

  • 格式:doc
  • 大小:242.10 KB
  • 文档页数:21

下载文档原格式

  / 21
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要

霓虹灯主要是通过8255A对LED亮灭状态的控制,和8254定时/计数器的定时功能实现霓虹灯闪烁控制系统,外设是红、绿、黄三种颜色的发光二极管,在程序自动控制下,按照不同规律闪烁同时由数码管显示相应的闪烁方式。

关键字: 8255A 8254 LED 数码管

一、设计的任务和要求

设计霓虹灯闪烁控制系统,是外设的红、绿、黄三种颜色的发光二极管,在开关的控制下或者在程序自动控制下,按照不同规律闪烁。

要求发光二极管的亮、灭变化有一定的规律;发光二极管变化规律要求有多种状态。

二、设计小组成员及分工

本次课设由冀任共同完成,在课设中遇到的问题四个人共同思考解决。

三、总体设计

1、8254用于定时:定时/计数器0与定时器/计数器1共同构成100ms的定时器,确定执行相邻闪烁方式的间隔时间。

2.8255A用于控制LED的状态和数码管显示:PA0接8254的输出,B口接数码管,显示对应的闪烁方式,C口输出控制LED的状态。

3、六种闪烁方式:

方式1:从左向右依次点亮8个LED灯,数码管显示1

方式2:从右向左依次点亮8个LED灯,数码管显示2

方式3:从左向右依次点亮4个的红灯、2个黄灯和2个绿灯,数码管显示3 方式4:从左向右两个两个的点亮8个LED灯,数码管显示4

方式5:从两边向中间依次点亮8个LED灯,数码管显示5

方式6:按红、绿、黄顺序点亮相同颜色的灯,数码管显示6

1、芯片介绍

(1)芯片8255A

8255A是具有3个8位并行I/O口3种工作方式的可编程并行接口芯片。8255共有40个引脚,采用双列直插式封装。

D0--D7:三态双向数据线,与单片机数据总线连接,用来传送数据信息。

CS:片选信号线,低电平有效,表示芯片被选中。

RD:读出信号线,低电平有效,控制数据的读出。

WR:写入信号线,低电平有效,控制数据的写入。

Vcc:+5V电源。

PA0--PA7:A口输入/输出线。

PB0--PB7:B口输入/输出线。

PC0--PC7:C口输入/输出线。

RESET:复位信号线。

A1、A0:地址线,用来选择8255内部端口。

GND:地线。

三种工作状态:

1) 工作方式 0 :这是 8255A 中各端口的基本输入 / 输出方式。它只完成简单的并行输入 / 输出操作, CPU 可从指定端口输入信息,也可向指定端口输出信息,如果三个端口均处于工作方式 0 ,则可由工作方式控制字定义 16 种工作方式的组合。

2) 工作方式 1 :被称作选通输入 / 输出方式。在这种工作方式下,数据输入 / 输出操作要在选通信号控制下完成。

3) 工作方式 2 :被称作带选通的双向传送方式。 8255A 中只允许端口 A 处于工作方式 2 ,可用来在两台处理机之间实现双向并行通信。其有关的控制信号由端口 C 提供,并可向 CPU 发出中断请求信号。

(2)芯片8254

8254 芯片是可编程定时/计数器芯片,片内有3个独立的16位计数器,每个计数器可编程设定为6中不同的工作方式。

8254的引脚图和引脚说明

8254芯片的工作方式:

8254芯片共有六种工作方式,分别对应与六种不同的用途。

1)方式0:计数结束产生中断。

2)方式1:可重触发单稳方式。

3)方式2:分频器。

4)方式3:方波发生器。

5)方式4:软件触发计数。

6)方式5:硬件触发计数。

2、硬件连接图

五、软件编程 1、软件流程图

开始

数码管显示1,点亮L7灯

CX=19(循环19次)

点亮L0灯 8254定时器1置初值10,定时100mS

N

开始

PC0=1

8254计数器1,方式0,只读写低八位。

(1)8254定时程序

结束

延时

AL 给8255C 口

(2)方式1

Y 循环结束?

结束 AL 左移

N

Y

(3)主程序

2、汇编语言源程序

DATA SEGMENT IOPORT EQU 0D880H-280H

IO8255A EQU IOPORT+280H

IO8255B EQU IOPORT+281H

IO8255C EQU IOPORT+282H

IO8255T EQU IOPORT+283H

IO82540 EQU IOPORT+288H

IO82541 EQU IOPORT+289H

IO8254K EQU IOPORT+28BH ;地址

PB DB ?

DATA ENDS

STACK SEGMENT STACK

S TA DW 50 DUP(?)

TOP EQU LENGTH STA

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ;定义代码段

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV DX,IO8255T ; 8255控制字为81H,端口C低四位为输入

MOV AL,10000001B

OUT DX,AL

MOV DX,IO8255C ;读端口C数据并保存

IN AL,DX

MOV PB,AL

MOV DX,IO8255T ;8255设控制字为90H

MOV AL,90H ; (端口A输入,端口B和C输出)

OUT DX,AL

MOV DX,IO8254K ;定时器0,方式三,先读写低八位,再读写高八位

MOV AL,36H

OUT DX,AL ;输入时钟,1MHZ

MOV DX,IO82540

MOV AX, 10000 ;初值10000,输出时钟周期10MS

OUT DX,AL

NOP

NOP

MOV AL,AH

OUT DX,AL

MOV DX,IO8254K ;计数器1,方式0,只读写低八位

MOV AL,50H

OUT DX,AL

CHXU1: MOV DX,IO8255B

MOV AL,06H

OUT DX,AL ;数码管显示1

MOV CX,17 ;循环17次