走马灯的设计与实现

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

走马灯的设计与实现

一实验目的

通过走马灯的设计与制作,深入了解与掌握利用可编程8255A进行开关量控制的原理与方法。

二实验要求

1.产生8种彩灯(8位LED)的走马灯花样;

2.键控(或拨码开关控制)发光实验。键控是在键盘上定义8个数字键(0~7),每按1个数字键,使LED的1位发光,按Q或q键,停止发光。拨码开关控制,是通过改变各位开关,来进行控制, 使LED的1位发光,按Q或q键,停止发光。

三实验内容

1.进行走马灯的系统电路硬件设计,画出电路原理图;

2.安装或焊接元器件;

3.进行走马灯的控制程序设计(采用ASM语言);

4.系统联调,提交一个符合上述3种要求的走马灯的作品。

四实验原理

8255A是一种通过可编程并行I/O接口芯片。广泛用于几乎所有系列的微机系统中,8255A具有三个带锁存或缓冲的数据端口,可与外设并行进行数据交换,8255A有多种操作方式,通用性较强,可为CPU与外设之间提供输入/输出通道。8255A和各端口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换,使用条件传输方式时可用“联络”线进行控制。在实验中,我们运用8255为CPU与外设之间提供输入输出输出通道来实现对走马灯花样变换的控制。

走马灯驱动模块电路原理如图1所示。模块包括8个LED彩灯、两个74LS04、和两个个排阻。用LED可以观测在不同按键输入下,走马灯花样的变化效果。

如图1所示我们利用软件输入信号,通过8255端口扩展芯片和74LS04芯片,调节输出端口的电平变化,来控制共阳极的LED灯的亮与灭,实现走马灯花样变化。

图1 走马灯驱动模块电路原理图五试验设备

1.PC兼容机

2.Windows 98以上

3.MFID多功能微机实验平台(含PCI总线驱动板)

4.MFPCI98集成开发环境

5.面包板或外设功能模块板

6.安装或焊接工具

六元器件清单

元器件清单如表1所示。

表1 实验元器件清单

七实验步骤

7.1硬件连线

根据图1的实验原电路图,走马灯电路结构电路接线如图2所示。

VCC

R1

图2 走马灯电路结构电路接线图

接线说明:8255A 共有三个8位端口A 口、B 口和C 口。其中A 口和B 口为输出端

口,C口为输入端口。在本电路中,A口8个输出管脚PA7-PA0分别接8个并联的LED 彩灯反馈走马灯的发光方式;B口8个管脚PB7-PB0分别接8个并联的开关控制选择走马灯的发光方式。C口接输入控制电路,PC2管脚接控制电路中放大器的6管脚,PC6接控制电路中放大器的3管脚,PC7管脚接电源,其余管脚悬空。

7.2硬件检测

为了安全起见,先用万用表检测8255A的端口中的阳极与接地极以及其它端口是中有短路现象,检测确认线路安全之后再接到实验箱上,以免烧坏硬件。

7.3程序设计

根据实验原理与实验电路,初步写出程序的步骤,再绘制出完整的流程图,然后根据流程图编写汇编程序。流程图和程序见报告后的附录。

7.4调试运行

打开MF2KP微机实验集成开发环境,在“文件”菜单下粘贴自己编写的ASM文件进行调试与运行。

八实验现象与说明

运行程序,通过键盘输入,输入数字1~8时8个LED灯,按照程序设定的方式进行花样变化,运行完一个周期后停止等待键盘的再次输入,输入不同的数字LED的变化花样不同,输入的不是数字也不是字母Q或q时,显示错误信息,等待键盘输入正确信息,当输入字母Q或q时退出程序。

九实验小结与心得体会附录一:

程序流程图

附录二:

程序代码:

;************************************************************************* ; zmd.asm 走马灯(灯光变幻)程序* ; 内容:用键盘输入数字键1-8控制走马灯变幻方式,按"Q"或者"q"退出* ; 运行步骤: 1.按下数字键1-8控制走马灯进行8种不同的花样闪烁* ; 2.按下"q"或者"Q",退出* ; 3.按下了除数字键1-8以及"q"和"Q"之外的字母,显示输入错误提示* ; 4.可重复进行直到按"q"或"Q"退出* ;************************************************************************* sseg segment para stack 'stack'

dw 200 dup (?)

sseg ends

dseg segment para public 'data'

message db 'press the number key from 1 to 8 and display various light- patterns!';提示信息db 0ah,0dh

db 'if you want to quit, please hit ''q'' or ''Q''!',0ah,0dh,'$'

message1 db 0ah,0dh,'you have pressed a wrong key !',0ah,0dh

db 0ah,0dh,'$'

num dw 0 ;初始化数字变量为0 data1 db 0aah,55h,0aah,55h,0aah,55h,0aah,55h ;八种不同的灯光变幻组合data2 db 01h,02h,04h,08h,10h,20h,40h,80h

data3 db 80h,20h,08h,02h,40h,10h,04h,01h

data4 db 01h,04h,10h,40h,02h,08h,20h,80h

data5 db 0c0h,30h,0ch,03h,0c0h,30h,0ch,03h

data6 db 03h,0ch,30h,0c0h,03h,0ch,30h,0c0h

data7 db 81h,42h,24h,18h,81h,42h,24h,18h

data8 db 18h,24h,42h,81h,18h,24h,42h,81h

dseg ends

cseg segment para public 'code'

assume ss:sseg,cs:cseg,ds:dseg

m proc far

start:

mov ax,ds

push ax

mov ax,00h

push ax ;保留程序数据段地址

mov dx,303h ;取8255的控制端口的地址

mov al,83h ;初始化8255的A口为输出模式

out dx,al

exut: mov dx,seg message

mov ds,dx

mov dx,offset message

相关文档
最新文档