走马灯的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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