8255键盘扫描与LED数码管显示-实验1-2.

合集下载

运用8255设计的键盘及显示接口-实验报告(含接线图+源程序)

运用8255设计的键盘及显示接口-实验报告(含接线图+源程序)

运用8255设计的键盘及显示接口图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。

将键盘中的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C 口为输入口; PB0—PB7与七段代码显示器连接B口为输出。

程序执行过程如下:识别是否有键按下,方法是使PA0一PA3输出全0,读C 口(行值) 中只要有一位为0,就说明有键按下,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段代码显示器就显示与该键相同的数值。

实验步骤8255接口的应用键盘及显示接线图注:圆圈处是要求接的连线。

(1)按图4接线。

(2)输入源程序,汇编、连接后装入系统。

(3)执行程序后,按一下键盘,7段代码就会显示相应的数字。

程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,3000HMOV AL,00HMOV [SI],AL ;清空存放数据的缓冲区MOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALMOV DI,3003HMOV AL,81H ;8255方式字定义选择0方式,A口为输出;OUT 63H,AL;B口为输出;C口为输入BEGIN: CALL DIS ;显示七段代码管数据的子程序CALL CLEAR ;七段代码管清0子程序CALL CCSCAN ;检测是否有键按下子程序JNZ INK1 ;JMP BEGININK1: CALL DISCALL DALLY ;子程序为延时,消抖动CALL DALLYCALL CLEARCALL CCSCANJNZ INK2JMP BEGININK2: MOV CH,0FEHMOV CL,00HCOLUM: MOV AL,CHOUT 60H,ALIN AL,62HTEST AL,01HJNZ LONEMOV AL,00HJMP KCODELONE: TEST AL,02HJNZ NEXTMOV AL,04HKCODE: ADD AL,CLCALL PUTBUFPUSH AXKON: CALL DISCALL CLEARCALL CCSCANJNZ KONPOP AX NEXT: INC CLMOV AL,CHTEST AL,08HJZ KERRROL AL,1MOV CH,ALJMP COLUM KERR: JMP BEGIN CCSCAN: MOV AL,00HOUT 60H,ALIN AL,62HNOT ALAND AL,03HRET CLEAR: MOV AL,00HOUT 61H,ALRETDIS: PUSH AXMOV SI,3000HMOV DL,0F7HMOV AL,DLAGAIN: OUT 60H,ALMOV AL,[SI]MOV BX,OFFSET TABLE ;取七段代码首址AND AX,00FFHADD BX,AXMOV AL,[BX]OUT 61H,ALCALL DALLYINC SIMOV AL,DLTEST AL,01HJZ OUTROR AL,1MOV DL,ALJMP AGAINOUT: POP AXRETDALLY: PUSH CXMOV CX,0010HT1: MOV AX,0010HT2: DEC AXJNZ T2LOOP T1POP CXRETPUTBUF: MOV SI,DIMOV [SI],ALDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3003H GOBACK: RETCODE ENDSEND START。

实验5(8255并行接口键盘及显示实验)

实验5(8255并行接口键盘及显示实验)

8255接口键盘及显示综合设计实验(曹建文2009年10月10日)一、实验目的1、掌握8255的工作方式及应用编程。

2、自行设计、制作和连接基于8255并行接口的键盘及显示实验电路。

3、实现扫描式矩阵键盘的功能和作用。

二、实验设备PC机1台,TD-PIT实验台1台,实验元器件若干。

三、实验内容1、使用8255实现键盘按键和七段LED数码显示管显示功能。

2、根据实验要求自行设计实验线路图,制作和焊接实验电路板和实验元器件。

3、按照实验要求和实验电路图编写实验程序,使得按下不同的数字按键后数码管显示相应的数字值(4位数码管)。

4、按照实验要求设计和编写实验程序,实现普通计算器的加/减法功能。

四、实验原理1、8255结构及原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。

8255的内部结构及引脚如图-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图-2所示。

图-1:8255内部结构及引脚图(a)工作方式控制字(b)c口按位置位/复位控制字图-2:8255控制字格式(1)8255的内部结构如图-1所示,8255的内部结构由以下4个部分组成:(1)输入/输出端口A、B、C 。

这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。

A口和B口是一个独立的8位I/O口。

C口可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。

(2)A组和B组控制电路。

这是两组根据CPU命令控制8255工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255的工作方式,也可以根据编程命令来对C口的指定位进行置位/复位的操作。

键盘及LED显示实验

键盘及LED显示实验

实验三键盘及LED显示实验一、实验内容利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED 显示器显示出来。

二、实验目的及要求(一)实验目的通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。

(二)实验要求1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。

2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。

三、实验条件及要求计算机,C51语言编辑、调试仿真软件及实验箱50台套。

四、实验相关知识点1.C51编程、调试。

2.扩展8255芯片的原理及应用。

3.键盘扫描原理及应用。

4.LED显示器原理及应用。

5.外部中断的应用。

五、实验说明本实验仪提供了8位8段LED显示器,学生可选用任一位LED显示器,只要按地址输出相应的数据,就可以显示所需数码。

六、实验原理图P1口桥接。

八、实验参考流程图1.主程序流程图2.外中断服务程序流程图外部中断0 外部中断1定时器0中断程序,用于消抖动:3.LED显示程序流程图九、C51语言参考源程序#include "reg52.h"unsigned char KeyResult; //存放键值unsigned char buffer[8]; //显示缓冲区bit bKey; //是否有键按下xdata unsigned char P_8255 _at_ 0xf003; //8255的控制口xdata unsigned char PA_8255 _at_ 0xf000; //8255的PA口xdata unsigned char PB_8255 _at_ 0xf001; //8255的PB口xdata unsigned char PC_8255 _at_ 0xf002; //8255的PC口code unsigned char SEG_TAB[] = { //段码0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x0};sbit bLine0 = P3^2;sbit bLine1 = P3^3;//延时1msvoid Delay1ms(){unsigned char i;i = 0;while (--i);}//显示void Display(){unsigned char i = 0x7f;unsigned char j;for (j = 0; j < 8; j++){PA_8255 = i; //扫描PB_8255 = SEG_TAB[buffer[j]]; //段数据i = i / 2 + 0x80;Delay1ms();}}//更新显示缓冲区数据void RefurbishData(){char i;for (i = 7; i >0; i--)buffer[i] = buffer[i-1];buffer[0] = KeyResult;}void Int0Int() interrupt 0{unsigned char i = 0x80;unsigned char KeyResult0 = 0x0;EX0 = 0; //关外部中断0P_8255 = 0x89; //PC口输入bLine0 = 0; //P3.2作行输出while (i){if ((PC_8255 & i) == 0)break;KeyResult0++;i >>= 1;}P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0;bLine0 = 1;if (i){TH0 = 60; //定时中断计数器初值TL0 = 176; //定时50msTR0 = 1;KeyResult = KeyResult0;}IE0 = 0; //清除中断EX0 = 1; //开外部中断0}void Int1Int() interrupt 2{unsigned char i = 0x80;unsigned char KeyResult0 = 8;EX1 = 0; //关外部中断0P_8255 = 0x89; //PC口输入bLine1 = 0; //P3.2作行输出while (i){if ((PC_8255 & i) == 0)break;KeyResult0++;i >>= 1;}P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0;bLine1 = 1;if (i){TH0 = 60; //定时中断计数器初值TL0 = 176; //定时50msTR0 = 1;KeyResult = KeyResult0;}IE1 = 0; //清除中断EX1 = 1; //开外部中断0}//50ms中断服务程序void INT_Timer0(void) interrupt 1{if (((KeyResult < 8) && !bLine0) ||((KeyResult >= 8) && !bLine1)){bKey = 1; //有键按下,键值在KeyResult中}TR0 = 0;}void main(){char i;bKey = 0; //没有键按下TMOD = 1; //定时器0:方式一P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0x0;ET0 = 1; //开定时器0中断EX0 = 1; //开外部中断0EX1 = 1; //开外部中断1IT0 = 1; //边沿触发IT1 = 1; //边沿触发EA = 1; //允许中断for (i = 0; i < 8; i++)buffer[i] = 0x10;// TR0 = 1; //开定时器T0// bRefurbish = 1;while (1){if (bKey){bKey = 0;RefurbishData();}Display(); //调用显示}}十、实验实施步骤1.仔细阅读实验内容及要求,编写C51源程序。

8255键盘扫描与LED数码管显示-实验1-2

8255键盘扫描与LED数码管显示-实验1-2

读/写控 制部件
B组控制 部件
B组端口 B(8)
I/O PB7~PB0
CS
图9.9 8255编程结构
8255外部引脚

连接系统端的引线: D0~D7:数据线 CS:片选 RD:读控制 WR:写控制 RESET:复位 A1, A0:端口选择
A1 A0 0 0 0 1 1 0 1 1 选择 端口A 端口B 端口C 控制寄存器
PC
A1
A15~A19 地址 译码器
A0
PB CS
LED数码管显示屏 跳线冒 电源电路
8255并行接口 LED1 ~LED6 LED-A~LED-DP
CPU板座
3*8键盘
RL10~RL17 KA10~KA12
复位键
七、实验步骤
1、实验接线 CS0 CS8255(地址为04A0H); PA0~PA7(输入)RL10~RL17(列选择线); PB0~PB7(输出)发光二极管LED-A~LED-DP ; PC0~PC2(输出)KA10~KA12(行选择线) PC3(输出)LED1 2、编程并全速或单步运行。 3、全速运行时按动键盘,观察数码管的变化。 4、编写实验报告。
D0 ~ D7 CS RD WR RESET A1 A0
PA
PB
PC
8255外部引脚

连接外设端的引线:
PA0~PA7
D0 ~ D7 CS RD WR RESET A1 A0
PA
PB0~PB7
PC0~PC7
分别对应PA、PB、 PC三个8位输入/输 出端口
PB
三个端口可通过编程分别指 定为输入或输出口。
2.端口寻址方式
对20H端口的访问格式:直接寻址

键盘扫描及显示设计实验

键盘扫描及显示设计实验

【实验内容】将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。

键盘采用4×4键盘,每个数码管显示值可为0~F 共16个数。

实验具体内容如下:将键盘进行编号,记作0~F,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示本次按键的按键编号。

8255键盘及显示实验参考接线图如图1所示。

【实验步骤】1. 按图1连接线路图;2. 编写实验程序,检查无误后编译、连接并装入系统;3. 运行程序,按下按键,观察数码管的显示,验证程序功能。

【程序代码】MY8255_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_CON EQU 0606HSSTACK SEGMENT STACKDW 16 DUP(?)SSTACK ENDSDA TA SEGMENTDTABLE DB 3FH,06H,5BH,4FHDB 66H,6DH,7DH,07HDB 7FH,6FH,77H,7CHDB 39H,5EH,79H,71Htable1 db 0dfh,0efh,0f7h,0fbh,0fdh,0fehcount db 0hDA TA ENDODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV SI,3000HMOV AL,03HMOV [SI],AL ;清显示缓冲MOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALMOV [SI+4],ALMOV [SI+5],ALMOV DI,3005HMOV DX,MY8255_CON ;写8255控制字MOV AL,81HOUT DX,ALBEGIN: CALL DIS ;调用显示子程序CALL CLEAR ;清屏CALL CCSCAN ;扫描JNZ INK1JMP BEGININK1: CALL DISCALL DALL YCALL DALL YCALL CLEARCALL CCSCANJNZ INK2 ;有键按下,转到INK2JMP BEGIN;========================================;确定按下键的位置;========================================INK2: MOV CH,0FEHMOV CL,00HCOLUM: MOV AL,CHMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXL1: TEST AL,01H ;is L1?JNZ L2MOV AL,00H ;L1JMP KCODEL2: TEST AL,02H ;is L2?JNZ L3MOV AL,04H ;L2JMP KCODEL3: TEST AL,04H ;is L3?JNZ L4MOV AL,08H ;L3JMP KCODEL4: TEST AL,08H ;is L4?JNZ NEXTMOV AL,0CH ;L4KCODE: ADD AL,CLCALL PUTBUFPUSH AXKON: CALL DISCALL CLEARCALL CCSCANJNZ KONPOP AXNEXT: INC CLMOV AL,CHTEST AL,08HJZ KERRROL AL,1MOV CH,ALJMP COLUMKERR: JMP BEGIN;======================================== ;键盘扫描子程序;======================================== CCSCAN: MOV AL,00HMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXNOT ALAND AL, 0fh;call DISRET;======================================== ;清屏子程序;======================================== CLEAR: MOV DX,MY8255_BMOV AL,00HOUT DX,ALRET;======================================== ;显示子程序;========================================DIS: PUSH AXMOV SI,3000HMOV DL,0DFHMOV AL,DLmov count,0hAGAIN: PUSH DXMOV DX,MY8255_AOUT DX,ALMOV AL,[SI]MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,[BX]MOV DX,MY8255_BOUT DX,ALCALL DALL YINC SIPOP DXMOV AL,DLTEST AL,01HJZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1: POP AXRET;====== 延时子程序======DALL Y: PUSH CXMOV CX,0006HT1: MOV AX,009FHT2: DEC AXJNZ T2LOOP T1POP CXRET;======================================== ;存键盘值到相应位的缓冲中;======================================== PUTBUF:push dimov di,3000hmov si,diMOV [SI],10h ;清显示缓冲MOV [SI+1],10hMOV [SI+2],10hMOV [SI+3],10hMOV [SI+4],10hMOV [SI+5],10hpop diMOV SI,DIMOV [SI],ALDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3005H GOBACK: RETCODE ENDSEND START。

8255扫描键盘、显示实验

8255扫描键盘、显示实验

实验九8255扫描键盘、显示实验一.实验要求利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。

8255PA口做键盘输入线,PB口作扫描线。

二.实验目的1.掌握8255编程方法。

2.掌握扫描键盘和显示的编程方法。

三.实验电路及连线CS8255接8500H,则命令字地址为8506H,PA口地址为8500H,PB口地址为8502H,PC口地址为8504H。

CS8279接8700H,则8279的状态口地址为8701H; 8279的数据口地址为8700H;模块中的十个短路套都套在8255侧。

四.实验说明在PA口与PB口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。

显示部分由8279控制,由7407驱动8位数码管显示。

五.实验程序框图主程序框图读键显示部分框图六.实验程序:D8255 EQU 8506H ;8255状态/数据口地址D8255A EQU 8500H ;8255 PA口地址D8255B EQU 8502H ;8255 PB口地址Z8279 EQU 8701H ;8279状态口地址D8279 EQU 8700H ;8279数据口地址DISPTR EQU 08H ;当前显示位置KEYVAL EQU 09H ;读到的键码ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HLCALL DELAY ;延时MOV DISPTR,#30H ;显示缓冲区头指针MOV DPTR,#D8255MOV A,#90H ;置8255状态;方式0,PB,PC口输出,PA口输入MOVX DPTR,AMOV DPTR,#Z8279 ;置8279命令字MOV A,#0D3HMOVX DPTR,A ;清LED显示MOV A,#00HMOVX DPTR,AMOV A,#38HMOVX DPTR,AMOV A,#0D1HKB_DIS:LCALL RD_KB ;读键盘MOV A,#0FFHCJNE A,KEYVAL,DISBUF ;判读到键SJMP KB_DIS ;没有则继续读键DISBUF:LCALL DISP ;把键移入显存LCALL DELAY ;延时消抖LCALL DELAYSJMP KB_DISDISP: ;显存依次前移MOV R1,#31H ;在最后加入新键值MOVE:MOV A,R1DEC R1MOV R1,AINC R1INC R1CJNE R1,#38H,MOVEMOV 37H,KEYVALMOV KEYVAL,#0FFHMOV DPTR,#Z8279MOV A,#90HMOVX DPTR,AMOV R0,#08HMOV R1,#30HMOV DPTR,#D8279LP: MOV A,R1MOVX DPTR,AINC R1DJNZ R0,LPRETRD_KB: ;键盘扫描MOV A,#02H ;扫描第一行MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#00HCJNE A,#0FFH,KEYCAL ;判键是否按下MOV A,#01H ;扫描第二行MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#08HCJNE A,#0FFH,KEYCALSJMP NOKEY ;无键按下KEYCAL: ;计算键码MOV R0,#08HSHIFT:RRC AJNC CALCINC R1DJNZ R0,SHIFTCALC: ;换算显示码MOV DPTR,#DL_DATMOV A,R1MOVC A,A+DPTRMOV KEYVAL,ARETNOKEY: MOV KEYVAL,#0FFH ;返回无键标志RETDELAY: MOV R0,#0H ;延时子程序DELAY1: MOV R1,#0HDJNZ R1,$DJNZ R0,DELAY1RETDL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,FEND实验十8279显示实验一.实验要求编制程序,利用8279及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。

键盘扫描显示实验报告

键盘扫描显示实验报告

一、实验目的1. 理解键盘扫描的基本原理,掌握键盘扫描的方法。

2. 掌握数码管显示的基本原理,实现键盘扫描信息的实时显示。

3. 熟悉8255并行接口芯片在键盘扫描和数码管显示中的应用。

二、实验原理1. 键盘扫描原理:键盘扫描是指通过硬件电路对键盘按键进行检测,并将按键信息转换为可识别的数字信号的过程。

本实验采用行列式键盘,通过扫描键盘的行线和列线,判断按键是否被按下。

2. 数码管显示原理:数码管是一种用来显示数字和字符的显示器,由多个发光二极管(LED)组成。

本实验采用七段数码管,通过控制各个段(A、B、C、D、E、F、G)的亮灭,显示相应的数字或字符。

3. 8255并行接口芯片:8255是一款通用的并行接口芯片,具有三个8位并行I/O口(PA、PB、PC),可用于键盘扫描和数码管显示的控制。

三、实验设备1. 实验平台:PC机、8255并行接口芯片、行列式键盘、七段数码管、面包板、导线等。

2. 软件环境:汇编语言编程软件、仿真软件等。

四、实验步骤1. 硬件连接:将8255并行接口芯片、行列式键盘、七段数码管连接到实验平台上,按照电路图进行连线。

2. 编写程序:使用汇编语言编写键盘扫描和数码管显示的程序。

(1)初始化8255并行接口芯片:设置PA口为输出端口,PB口为输出端口,PC口为输入端口。

(2)扫描键盘:通过PC口读取键盘的行线状态,判断是否有按键被按下。

若检测到按键被按下,读取对应的列线状态,确定按键的位置。

(3)数码管显示:根据按键的位置,控制数码管的段(A、B、C、D、E、F、G)的亮灭,显示相应的数字。

3. 仿真调试:使用仿真软件对程序进行调试,确保程序能够正确扫描键盘和显示数字。

五、实验结果与分析1. 实验结果:成功实现了键盘扫描和数码管显示的功能。

当按下键盘上的任意按键时,数码管上会显示对应的数字。

2. 分析:(1)键盘扫描部分:通过读取PC口的行线状态,判断是否有按键被按下。

当检测到按键被按下时,读取PB口的列线状态,确定按键的位置。

微机原理键盘扫描及显示完整实验报

微机原理键盘扫描及显示完整实验报

实验9键盘扫描及显示实验
实验时间2019年12月18日
实验类型■验证性□设计性□综合性
1.实验目的
了解键盘扫描及数码显示的基本原理,熟悉8255的编程。

2.实验内容及过程(主要内容、操作步骤)
将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。

键盘采用4X4键盘,每个数码管显示值可为0~F 共16个数。

实验具体内容如下:将键盘进行编号,记作0~F,当按下其中-一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。

3.测试数据及实验结果
4.实验分析及总结(主要考察内容)
通过本次实验,我理解了键盘扫描及数码显示的基本原理,通过理解分析程序,自己对程序进行了一些总结和修改,并进行了验证,进一步掌握了微机接口的学习方法。

教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结
1/ 1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注意:
1.数导线(21根),检查实验箱是否正常
2.下次实验时间是第**周
实验1 8255键盘扫描与LED数码管显示实验 一、复习8255及端口的寻址方式 1.8255相关知识 8255功能特性
三个独立的8位并行输入/输出端口,各端口均
具有数据输入、输出能力;
三种工作方式:0基本、1选通、2双向; 可通过编程设置各端口的工作方式和数据传送
OUT DX,AL ;将AL的内容输出到地址为200H的端口

编程 1 :把8255 工作方式设定为: A 口指定为方式 0 , 输入, C 口为输出; B 口指定为方式 0 ,输出;设 8255控制字寄存器端口地址为04a6H。 分析:根据题目得工作方式命令代码是10010000B或
90H。


8255工作方式控制字格式
1 D6 D5 D4 D3 D2 D1 D0 1:端口C(PC3~PC0)输入 0:端口C(PC3~PC0)输出 方 式 控 制 字 标 志 位 1:端口B输入 0:端口B输出 1:端口B方式1 0:端口B方式0 1:端口C(PC7~PC4)输入 0:端口C(PC7~PC4)输出 1:端口A输入 0:端口A输出 00:端口A方式0 01:端口A方式1 1X:端口A方式2
五、实验设备
MUT—Ⅲ型实验箱、8086CPU模块。
六、8255与8086及8255与键盘的电路连接
8255
D0~D7
系 统 总 线 IOW IOR A2 DB D0~D7 WR RD A1 PC KA10~KA12 (行选择线) LED1(位控) LED-A~LED-DP (段控) PA
RL10~RL17 (列选择线)
D0 ~ D7 CS RD WR RESET A1 A0
PA
PB
PC
8255外部引脚

连接外设端的引线:
PA0~PA7

D0 ~ D7 CS RD WR RESET A1 A0
PA
PB0~PB7
PC0~PC7
分别对应PA、PB、 PC三个8位输入/输 出端口
PB
三个端口可通过编程分别指 定为输入或输出口。
初始化程序段为: dx,04a6h ;控制寄存器地址 ax,90h ;设置为A口输入,;B口输出,C输出
mov mov
out
dx,ax
;8255初始化
3. LED数码管
共阴极的情况下定义字形码: FECDBA9876543210
h—小数点
分类:
共阳极: 公共端接 高电平“H” 发光段接 低电平“L”
本实验中8255的地址分配如下: 端口A 04A0H 端口B 04A2H 端口C 04A4H 控制口 04A6H
八、实验程序流程图
采用行扫描 法检测
九 、编写实验报告
包括实验预习内容,实验目的,实验内容, 实验步骤和正确的程序代码 。 注意: 1、编程前先在E盘目录下建一个文件夹,并取 一个英名名字,即名字中不能有汉字和数字。编完 程序将其存于该目录下。 2、做实验之前先取下跳线冒。 3、做完实验将实验箱右上角的CPU板卸下,再 关实验箱。
方向(入/出/双向)。
8255的内部结构
A组控制 部件 A组端口 A(8) I/O PA7~PA0
双向数据总线 D7~D0
8位内部 数据总 线缓冲 器 数据总线
A组端口 C上半部 (4)
I/O PC7~PC4
B组端口 C上半部 下半部 (4) RD WR A1 A0 RESET
I/O PC3~PC0
读/写控 制部件
B组控制 部件
B组端口 B(8)
I/O PB7~PB0
CS
图9.9 8255编程结构
8255外部引脚

连接系统端的引线: D0~D7:数据线 CS:片选 RD:读控制 WR:写控制 RESET:复位 A1, A0:端口选择
A1 A0 0 0 0 1 1 0 1 1 选择 端口A 端口B 端口C 控制寄存器
A1
A15~A19 地址 译码器
A0
PB CS
LED数码管显示屏 跳线冒 电源电路
8255并行接口 LED1 ~LED6 LED-A~LED-DP
CPU板座
3*8键盘
RL10~RL17 KA10~KA12
复位键
七、实验步骤
1、实验接线 CS0 CS8255(地址为04A0H); PA0~PA7(输入)RL10~RL17(列选择线); PB0~PB7(输出)发光二极管LED-A~LED-DP ; PC0~PC2(输出)KA10~KA12(行选择线) PC3(输出)LED1 2、编程并全速或单步运行。 3、全速运行时按动键盘,观察数码管的变化。 4、编写实验报告。
十、实验程序
assume cs:code code segment org 100h start: mov dx,04a6h ;控制寄存器地址 mov ax,90h ;设置为A口输入,;B口输出,C输出 out dx,ax ;8255初始化 check0: ; check0检测是否有健被按下 mov ax,00h ;C口的PC0、PC1、PC2作为行选择线 mov dx,04a4h ;C口地址 out dx,ax ; 写入C口内容00H,即令所有行为低电平 mov dx,04a0h ;A口地址 in ax,dx ;读入A口的内容 cmp al,0ffh ;判定是否有列线为低电平 je check0 ;没有,无闭合键,则循环等待 mov cx,05ffh ;延迟常数,可以修改来改变延时时间 delay: loop delay ;有,则延迟清除抖动,当cx=0时则停止该 循环
PC
8255的初始化

方式0:基本输入/输出方式 方式1:选通方式 方式2:双向方式(仅A口)
8255工作前必须初始化,初始化时需设置:
工作方式
数据传送方向
输入 输出
置0(低电平) 置1(高电平)
PC口各数据线的状态(必要时)

通过向8255的控制口写入控制字实现:
方式控制字* 用于控制8255各端口的工作方式和数据传输方向 位控字 控制PC端口在方式0(输出)时每一根输出线的状态
a b c d e f g
+5V
共阴极: 公共端接 低电平“L” 发光段接 高电平“H”
A b c d e f g
*
二、键盘工作原理及键的识别方式
1 .键盘的工作原理
键盘的结构
2 .键的识别——行扫描
PC0 PC1 PC2
1
2
3
三、实验目的
掌握8255的编程原理及使用方法
四、实验内容
用8255扩展扫描3X8行列式键盘,由一位LED数码管 显示。 1、设计出8255与8086接口对应硬件电路,并完成相 应的连接; 2、调试对应8255、键盘、及数码管硬件接口电路及 相应接口软件 3、当用键盘输入时在数码管上显示相应值; 4、完成习题的内容。
2.端口寻址方式
对20H端口的访问格式:直接寻址
IN AL,20H ;从地址为20H的端口输入一个字节到AL
OUT 20H,AL ;将AL的内容输出到地址为20H的端口
对200H端口的访问格式:间接寻址 MOV DX,200H ;将端口地址送DX寄存器 IN AL,DX ;从地址为200H的端口输入一个字节到AL
相关文档
最新文档