8255a1(七段数码管)
微机原理8255A并行接口按键数码管显示讨论报告

讨论课报告学校:上海电机学院 班级:电子13XX 学号:XXXXXXXX 姓名:WX一、题目:通过8255A 并行接口,8086CPU 连接LED 数码管、4X4矩阵键盘。
按下任意键,数码管显示对应键号。
二、硬件设计讨论问题:(1)CPU8086与8255A 的连接问题:● 复用引脚上的数据信号与地址信号如何分离?画出电路连接示意图,解释实现的方法。
答:将8086上的20位复用数据地址引脚分别接数据缓存器和地址锁存器在8086总线周期的T1期间作为存储器/IO 地址总线将地址锁存在地址锁存器中,另外期间作为数据总线将8位数据缓存在数据缓存器中。
缓存器与8255A 数据引脚相连,地址锁存后经过译码与地址线相连。
● 假设8255A 的芯片地址范围为80H~86H (偶地址),利用74LS138译码器实现8255A 芯DENDT/R8086AB/TBALEM/IO WRRD数据缓存 地址锁存地址译码D7~D0A0 A18255A CS WR RDA15~A3A1 A2片的片选控制,画出电路连接示意图,解释译码电路的设计原理。
8086系统有16根数据线,而8255A 只有8根数据线,将8255A 的8条数据线与低8位数据线相连。
此时8255A 的4个端口地址必须为偶地址,即8086寻址8255A 时A0脚必须为低,将8255A 的A0、A1分别接8086的A1、A2脚。
由图可见,8255A 的数据线D7~D0与8086的低8位数据总线D7~D0相连,A0必须总等于0,用地址线的A2、A1来选择片内4个端口。
图中地址线A7接译码器的G1,M/IO 与G2a 相连,A6、A5接或门输入端,或门输出与G2b 相连。
当A7A6A5=100,A4A3A0=000时,Y0=0,选中8255A ,4个端口地址分别为80H 、82H 、84H 和86H ,对应于8255A 的A 口、B 口、C 口和控制寄存器。
(2)LED 数码管与8255A 的连接问题: ● 数码管采用共阴极连接,需要驱动电路,请画出与8255APA 口的连接示意图,简要说明。
计时器

选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。
时、分、秒的数值通过对8255的编程可送到七段数码管上显示。
在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数器2可在方式0下工作。
8255的A口、B口都设为方式0,为基本的输入输出方式。
在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。
时、分、秒分别对应6个存储单元,分别存放时、分、秒的十位和个位。
当中断次数满10次时,将秒的个位加1,同理对分,时亻相应处理。
七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的段码,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示。
基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。
以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz 的时钟信号,要求每隔10ms完成一次扫描键盘的工作。
在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。
本设计由8259A中断控制器、8253定时/计数器、8255A接口芯片、LED数码显示管和两个按键组成。
主要用8259A的IRQ7的中断服务程序完成秒、分、时的运算即计时功能,IRQ6的中断服务程序完成调时、调分功能。
8253用来产生50ms 的脉冲信号作为IRQ7的中断请求信号。
微机原理 可编程接口芯片8255A及应用

第七章
参考程序片断: MOV AL, 10010000B ; 控制字 OUT 0F6H, AL ; 写入控制字 LP: IN AL, 0F0H ; 从A口读入开关状态 OUT 0F2H, AL ; B口控制LED,指示开关状态 CALL DELAY1S JMP LP
思考:
若地址大于FFH,则程序应该怎么改?
dp g f e d c b a
g
d
b
c
DP
g f e d c b a 1
阴 极
0
1
1
0
1
36
1
0
第七章
十六进制数共阴极的七段显示码表
十六进制数字
0 1 2 3 4 5 6
七段显示码
3FH 06H 5BH 4FH 66H 6DH 7DH
十六进制数字
8 9 A b C d E
七段显示码
7FH 6FH 77H 7CH 39H 5EH 79H
内部逻辑 6
端口C (低4位)
B 组B 端口
PC3~PC0
(8位)
PB7~PB0
CPU接口
外设接口
第七章
8255A与系统的连接示意图
7
第七章
3、各部分功能简介
数据端口
A、B、C:可用来和外设传送信息;每
个端口8位,通过编程设定其为输入口或输出口;
工作方式 0 1 8255数据端口功能表 B口 A口 C口
教材第九章内容
第七章
可编程外围接口芯片8255A及其应用
7.1 8255A的工作原理
一、8255A的结构和功能
二、8255A的控制字及初始化编程 三、8255A工作方式和C口状态字
8255A的原理介绍

IBFA
STB
①
IBF
② ③ ⑤ ④
INTR
RD 来自外设的 输入数据 方式1的输入时序
2) 方式1输出
这时PC3、PC6和PC7作A口的应答信号,PC0、PC1和PC2作B 口的应答信号。余下的PC4和PC5可作输入或输出线。 方式1输出 (A口)
PA7~PA0 INTEA PC6 PC7 & PC3 INTRA WR o 8 ACKA OBFA
方式1 (A口)
PA7~PA0 INTEA
8
STBA
PC4
PC5
INTE -中断允许信号。是控制 8255A能否向CPU发中断请 求信号,它没有外部引脚, INTEA、INTEB是由用户对 PC4、PC2按位置位实现的。
&
PC3
RD o PC6 PC7
INTR-中断请求信号,高电平有 效。是8255A向CPU发出的 INTRA 请求中断信号,要求CPU服 务。当 IBF =1、STB =1且 I/O线 INTE =1时,INTR =1。
o o 读/写 控制 逻辑 o
至控制 寄存器 至数据端口
(五) 端口寻址
8255A端口选择表
A1 A0 RD 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 1 1 1 1 WR 1 1 1 0 0 0 0 CS 0 0 0 0 0 0 0 端口 A 端口 B 端口 C 数据总线 数据总线 数据总线 数据总线 功能 数据总线 数据总线 数据总线 端口 A 端口 B 端口 C 控制字寄存器
&
A B C G2A G2B G1
Y0 Y1 Y2
CS
LS138
LED显示器的字形代码表存放在TABLE单元开始的内存中. TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H DB 80H, 98H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH
8255扫描键盘、显示程序

MOV R0,#08H
MOV R1,#30H
MOV DPTR,#D8279
LP: MOV A,@R1
MOVX @DPTR,A
INC R1
DJNZ R0,LP
RET
RD_KB: ;键盘扫描
MOV A,#02H ;扫描第一行
MOV DPTR,#D8255B
MOV DPTR,#Z8279 ;置8279命令字
MOV A,#0D3H
MOVX @DPTR,A ;清LED显示
MOV A,#00H
MOVX @DPTR,A
MOV A,#38H
MOVX @DPTR,A
MOV A,#0D1H
KB_DIS:
LCALL RD_KB ;读键盘
8255扫描键盘、显示程序
利用8255可编程并行口做一个扫描键盘实验,
把按键输入的键码,显示在由8279控制的七段数码管上。
8255PA口做键盘输入线,PB口作扫描线。
D8255 EQU 8506H ;8255状态/数据口地址
D8255A EQU 8500H ;8255 PA口地址
MOV DPTR,#DL_DAT
MOV A,R1
MOVC A,@A+DPTR
MOV KEYVAL,A
RET
NOKEY: MOV KEYVAL,#0FFH ;返回无键标志
RET
DELAY: MOV R0,#0H ;延时子程序
DELAY1: MOV R1,#0H
DJNZ R1,$
DJNZ R0,DELAY1
RET
DL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7
8255A应用举例

4 8255A应用举例在很多应用系统中,用LED作状态指示器具有电路简单、功耗低、寿命长、响应速度快等特点。
LED显示器是由若干个发光二极管组成显示字段的显示器件,应用系统中通常使用7段LED显示器,如图8-15所示。
b)c)a)共阴型b)共阳型c)管脚分布图8-15 七段数码管以共阳极为例,各LED公共阳极接电源,如果向控制端a,b,c, …,g,dp送入00000011信号,则该显示器显示“0”字型。
控制显示各数码加在数码管上的二进制数据称为段码,显示各数码共阴和共阳七段LED数码管所对应的段码见表8-3。
表8-3 七段LED数码管的段码下面用8255A 作为LED 数码管及4位开关与CPU 的接口,要求按照开关的二进制编码状态,显示相应的数码。
如图8-16所示。
图8-16 80x86CPU 通过8255A 同开关与7段LED 显示器的接口设当开关K3、K2、K1、K0未合上时,各开关控制的位线为高电平1;开关接通时,各开关控制的位线为低电平0。
各开关状态、数字及LED 段码的关系如表8-4所示。
表8-4 开关状态、数字及LED 段码的关系例如:当K2未合上,K3、K1、K0均合上接通时状态为0100,表示数字4,显示代码应为99H。
设8255A端口地址为0FFFAH、0FFFBH、0FFFCH、0FFFDH。
源程序如下:DATA SEGMENTXSHDM DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80HDB 98H, 88H, 83H, 0C6H, 0A1H, 86H, 8EHCNT DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE , DS:DA TASTART: MOV AX,DA TAMOV DS,AX;以上为源程序结构通用部分.;下面为8255A初始化程序块MOV AL,82HMOV DX,0FFFDHOUT DX,ALLOP: MOV DL,0FBHIN AL,DX ;读B口AND AL,0FHMOV BX,OFFSET XSHDMXLATMOV DL,0FAHOUT DX,AL ;写入A口CALL DELAYJMP LOPMOV AH, 4CHINT 21HDELAY PROCMOV DX,0500HLOP1: MOV CX,0FFHLOP2: NOPNOPLOOP LOP2DEC DXJNZ LOP1RETDELAY ENDPCODE ENDSEND START。
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及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
微原实验3——七段数码管显示

微原实验:七段数码管一、实验目的掌握接口芯片的编址方法,掌握8255的初始化设置,及数码管显示原理,掌握段控及位控的概念。
二、实验内容①连接地址译码器与8255的连线及8255与数码管的连线;②在数据段中存放0到9的字型码;③从微机键盘输入2个数字的ASCII码,在输入过程中检查如非数字键的重新输入;④然后将输入的ASCII码变成相应的数字,再利用换码指令XLAT查表得到的相应的字型码;⑤将字型码送到8255输出口所接的数码管显示。
四、硬件连线实验箱上设有两个共阴极七段数码管及驱动电路,如下图示,段码为同相驱动器,位码为反向驱动器,从段码与位码的驱动器输入端(段码输入端:a、b、c、d、e、f、dp,位码输入端:s1、s2)输入不同的代码即可显示不同数字或符号。
连接电路时,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1,S0接8255C口的PC1,PC0。
连线时:CS——288H~28FH,PA0——a,PA1——b,PA2——c,PA3——d,PA4——ePA5——f,PA6——g,dp——GND,PC0——S0,PC1——S1四、程序流程图五、实验程序stack segment stackdw 100 dup(?)stack ends;data segmentx1 db 2 dup(0)val db 3fh,06h,5bh,4fh,66h,6dh,7dh,7fh porta equ 0ef00h-280h+288hportb equ 0ef00h-280h+289hportc equ 0ef00h-280h+28ahportcrl equ 0ef00h-280h+28bhdata ends;code segmentassume cs:code,ss:stackmain procmov ax,datamov ds,axmov al,10000010bmov dx,portcrlout dx,almov si,offset x1mov cx,2next1: call keyinand al,0fhmov si,[al]inc siloop next1mov si,offset x1mov bx,offset valnext: mov dx,portamov al,[si]out dx,almov dx,portcmov al,10bout dx,alcall delaymov dx,portamov al,[si+1]xlatout dx,almov dx,portcmov al,01bout dx,alcall delaymov dl,0ffhmov ah,6int 21hjz nextmov ah,4chint 21hmain endp;delay procpush bxpush cxmov bx,100mov cx,0next2: loop next2 dec bxjnz next2pop cxpop bxret;keyin procagain: mov ah,8int 21hcmp al,30hjb againcmp al,39hja againpush axmov dl,almov ah,2int 21hpop axkeyin endp;code endsend main六、结论符合预期,输入两个数字,七段数码管显示这两个数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4七段数码管
教具、教学素材准备:实验箱,多媒体
教学方法:网络讲授与实作
教学时数:2
一、实验目的
掌握数码管显示数字的原理
二、实验原理和内容
按图22连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动
输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。
编程
从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
三、编程
1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码,位码加反相驱动器,位码输入端高电平选中。
2、七段数码管的字型代码表如下表:
data segment
ioport equ 0d400h-0280h
io8255a equ ioport+288h
io8255b equ ioport+28bh
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,0ah,'Input a num(0--9h):',0dh,0ah,'$' data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov dx,io8255b;使8255的A口为输出方式mov ax,80h
out dx,alsss:mov dx,offset mesg1;显示提示信息mov ah,09h
int 21h
mov ah,01;从键盘接收字符
int 21h
cmp al,'0';是否小于0
jl exit;若是则退出
cmp al,'9';是否大于9
jg exit;若是则退出
sub al,30h;将所得字符的ASCII码减30H mov bx,offset led;bx为数码表的起始地址xlat;求出相应的段码
mov dx,io8255a;从8255的A口输出
out dx,al
jmp sss;转SSS
exit:mov ah,4ch;返回DOS
int 21h
code ends
end start
教学后记:。