目录第一章需求分析1.1 设计目的 (1)1.2 设计任务和要求 (1)1.3 软硬件运行环境及开发工具 (1)第二章概要分析2.1 总体方案和说明 (2)2.2 8255A芯片图 (3)2.3 循环彩灯流程图 (4)第三章详细设计3.1 硬件设计和实现 (5)3.2 实验电路图和说明 (6)3.3 源程序代码 (6)第四章系统调试和操作说明4.1 系统调试 (9)4.2 操作说明 (9)第五章总结体会 (10)参考文献 (10)第一章:需求分析1.1设计目的巩固和加深课堂所学知识;熟悉各种指令的使用及条件;学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;深入了解和掌握8255A在PC机系统的典型接法和8255A的工作方法及使用编程。
1.2设计任务和要求任务:循环彩灯控制系统输出四种参考花型如下:数位为1时表示灯亮1)00000001 左循环2)10000000 右循环3)按10000001,11000011,11100111,11111111 规律递增,全亮后同时闪烁十次,循环不断。
4)按11110000,00001111 交替闪烁。
要求:1.画出硬件原理图(接口芯片和外设部分)和实验连线图;2.功能要求:1)循环彩灯的循环速度可调;2)按键要求①启动/暂停,按K0开关启动系统,按K1开关停止系统工作。
②花型变换,由开关K2、K3进行四种花型切换;1.3软硬件运行环境及开发工具利用TDN86/88实验平台进行硬件电路的连接,在Wmd86软件下进行程序的调试,直到使循环彩灯按照设计要求运行,实验所使用的实验开发平台是Wmd86,使用的编程语言是汇编。
第二章:概要设计2.1 总体方案和说明根据所学内容和对8255A的使用,整个系统硬件采用8086微处理器,和8255A可编程并行接口芯片和8个led彩灯。
Intel 8255A是一种通用的可编程并行接口芯片,由于它是可以编程的,可以通过程序来设置芯片的工作方式,通用性强,使用灵活,可为多种不同的CPU和外设之间提供并行输入/输出的通道;8086微处理器,选择最小工作模式,所有的总线控制信号均由8086产生;8086CPU的地址\数据总线AD15-AD0和地址\状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分离。
可编程并行通信接口芯片8255A:方式0为简单I/O,查询方式,端口A、端口B、端口C均可使用。
方式1为选通I/O,中断方式,端口A、端口B可以使用,选通的输入/输出方式。
方式2为双向I/O,中断方式,只有端口A可以使用,双向的传输方式。
三个8位端口PA、PB、PC端口A(PA口):有一个8位数据输入锁存器和一个8位数据输入锁存/缓冲器;端口B(PB口):有一个8位数据输入锁存器和一个8位数据输入/输出,锁存/缓冲器;端口C(PC口):有一个8位数据输入锁存器和一个8位数据锁存/缓冲器。
通常PA口和PB口用作输入/输出的数据端口,PC口用作控制和状态信息端口。
PC口可以分为两个四位的端口,每个端口包含一个四位锁存器,可分别同PA口和PB口配合使用,用作控制信号(输出)或作为状态信号(输入)。
方式0也叫基本输入/输出方式。
一种方式,不需要应答联络信号,端口A、端口B和端口C的高4位及低4位都可以作为输入或输出端口。
方式0的使用场合有无条件传送和查询传送2种;故根据我们系统设计的要求,综上可知,选择8255A为工作方式0。
然而8255A的3种基本工作方式:由方式选择控制字来决定,D7=1(特征位)表明是设定方式选择控制字;D7=0,则表示是端口C按位置位/复位控制字;端口C分成高4位(PC7~PC4)和低4位(PC3~PC0),可分别设置成输入端口或输出端口;端口C的高4位和端口A配合组成A组,端口C的低4位和端口B配合组成B组。
综上可得此系统需要满足A端口为输出,输出数据给到8个彩灯;端口C为输入,需要检测按键的输入情况。
2.2 8255A芯片图如图所示:RD2.3循环彩灯流程图图如下:39 PA538 PA637 PA7 36 WR28 D629 D540 PA435 RESET 34 D033 D132 D231 D330 D421 PB326 VCC27 D725 PB7 24 PB6 23 PB5 22 PB4PA3 1PA2 2PA1 3PA0 45CS 6GND 7A1 8A0 9PC7 10PC6 11PC5 12PC4 13PC0 14PC1 15PC2 16PC3 17PB0 18PB1 19PC2 208255A开始初始化检测K0 YN图1 8255A芯片图这个实验我是采用K0K1来空间开关的开合关的,用K2K3来切换彩灯花型的变化,上面流程图清楚的表达了整个实验的实现过程。
第三章:详细设计3.1硬件设计和实现8255A 的数据线,片选信号,地址线,读写控制线等和系统总线相连,CS 和译码器的也相连,通过译码器连接到系统总线。
电路使用共阳极接线发,提供低电平时发光二极管发光。
通过软件向8255A 中发送信号,启动系统,使彩灯实现循环的花形。
再使开关可以控制彩灯在我们事先编译的花形中进行切换。
k2和k3的状态为00则00000001左循环,k2和 k3的状态为01则执行10000000右循环,k2和k3的状态为10则执行按10000001, 11000011……11111111规律递增,全亮后同时闪烁十次,循环不断。
k2和k3的状态为11 则执行按11110000,00001111,红绿灯循环闪烁不断。
实验原理图如下:PB0PB1=00 PB0PB1=01 PB0PB1=11PB0PB1=10 检测K1调用左循环调用右循环 调用两边向里规律递增循环调用交替闪烁 延时 N NNN Y Y Y Y 结束 图 2 循环彩灯流程3.2 实验电路图和说明 实验电路图如下:如上图,在8255A 芯片中,PA 口作为输出,工作在0方式下。
PA7---PA0接LED 发光二极管D7—D0。
PB 作为输入端口,工作在0方式下。
PB 口的PB0和PB1接开关K2和K3,控制四种花形。
PC 口的 上C 口作为输入口,PC7和PC6接开关K0和K1,K0启动系统,K1退出程序,停止系统工作。
PB0和PB1控制四种花型的切换,当PB0PB1为00时,灯闪亮为译码器Y3A0 A1 CSD0-D7WRRDRESERTPC7 PC68255A+5V K1 K0PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7D0D7PB0 PB1+5VK2K3A1 A0 WRRD8086CPU图3 实验原理图A5 A9D0-D7 RESERT+5VK0 K1 K2 K3 PC6PC7PB0 PB1 PA0 PA1 PA2PA3 PA4 PA5 PA6 KK UNIT 8255A D0 D1D2 D3 D4D5 D6 SW-LED UNIT 图4 实验电路图左循环,当为01时时右循环,当为10时时两边向里规律递增循环,11为红绿灯交替闪烁循环。
3.3源程序代码如下:SPEED EQU 5000HSTACK SEGMENTDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART:MOV AL,8AH ;8255初始化OUT 63H,ALA0: IN AL,62HTEST AL,40H ;检测开关K0,启动JZ A0EXIT: MOV AX,004CHINT 21HA1: IN AL,62HTEST AL,80H ;检测开关K1,停止JNZ EXITIN AL,61HAND AL,0FH ;屏蔽高四位CMP AL,00H ;AL状态为00HJZ L1 ;调用L1CMP AL,01H ;AL状态为01HJZ L2 ;调用L2CMP AL,02H ;AL状态为02HJZ L3 ;调用L3CMP AL,03H ;AL状态为03HJZ L4 ;调用L4L1: MOV CX,08H ;左移动子程序MOV AL,0FEHL11: OUT 60H,ALCALL DALLY ;左移动子程序ROL AL,1CALL DALLYLOOP L11JMP A1INT 21HL2: MOV CX,08H ;右移动子程序MOV AL,3HL21: OUT 60H,ALCALL DALLY ;调用延时程序ROR AL,1CALL DALLYJMP A1L3: MOV CX,08H ;两边向里规律递增子程序 MOV AL,07EHOUT 60H,ALCALL DALLYMOV AL,03CHOUT 60H,ALCALL DALLYMOV AL,018HOUT 60H,ALCALL DALLYMOV AL,00HOUT 60H,AXCALL DALLYPUSH CXMOV CX,10L31:MOV AL,00HOUT 60H,AXCALL DALLYMOV AL,0FFHOUT 60H,AXCALL DALLYLOOP L31JMP A1POP CXLOOP L3L4: MOV CX,04H ;交替亮灯子程序L41: MOV AL,0FHOUT 60H,ALCALL DALLYMOV AL,0F0HOUT 60H,ALCALL DALLYLOOP L41JMP A1INT 21HDALLY: PUSH CX ;延时子程序PUSH DXMOV CX,SPEED ;延时LOOP5:MOV DX,SPEEDLOOP6:DEC DXJNZ LOOP6POP DXRETCODE ENDSEND START四:系统调试和操作说明4.1 系统调试首先按照实验电路图连接实验线路,确认无误后。
输入编写好的源程序代码,确认没有输入错误以后,编译连接加载程序,在下方会显示程序中出现的错误,找到出错的位置,因为我将PA口作为输出口,PB口作为输入口,PC口高4位作为输入口低4位作为输出口,所以将8255初始化为MOV AL 8AH ,PC6连接K2即01000000H,TEST AL 40H ,PC7连接K3即10000000H,TEST AL 80H ,A口地址为60H,作为输出所以OUT 60H AL,B 口地址为61H,作为输入口所以IN AL 62H。
经过以上的调式,编译加栽后系统能够正常的运行。
4.2操作说明首先输入源程序代码,然后编译连接加载,加载成功后运行。
本系统主要由四个开关控制,分别为K0、K1、K2和K3。
K0置1时启动系统,K1置1时退出系统。
K2和K3的状态为00则00000001左循环,K0和K1的状态为01则执行10000000右循环,K2和K3的状态为10则执行按1000001,11000011……11111111规律递增,全亮后同时闪烁十次,循环不断。