8255a1(七段数码管)
- 格式:doc
- 大小:108.00 KB
- 文档页数:3
讨论课报告学校:上海电机学院 班级:电子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的中断请求信号。
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可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由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及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
微原实验:七段数码管一、实验目的掌握接口芯片的编址方法,掌握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六、结论符合预期,输入两个数字,七段数码管显示这两个数字。
微机实验5七段数码管显示实验一、实验目的1、掌握七段LED数码管的结构及工作原理。
2、掌握共阴极LED数码管连接方法、及其静态和动态显示方法。
3、进一步掌握并行接口芯片8255A的使用方法。
二、实验设备微型计算机、单片机仿真器、实验仪;实验连线(若干)。
三、实验原理如图4.9-1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。
通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。
LED数码管中的发光二极管共有两种连接方法:共阴极接法图4.9-1共阳极接法1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。
使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。
实验中使用的LED显示器为共阴极接法2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V。
这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。
七段发光二极管,再加上一个小数点位,共计八段。
因此提供给LED显示器的字形代码正好一个字节。
若a、b、c、d、e、f、g、dp8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。
表4.9-1共阴极LED数码管字形代码四、实验内容动态显示:按图18连接好电路,将8255的A口分别与七段数码管a~g相连,S1接位码驱动,S0接8255C口的PC1,PC0。
编程在两位七段数码管上动态显示00~99,若键盘有键按下则返回DOS。
五、程序代码tackegmenttack'tack'dw32dup(0)tackenddataegmentio8255aequ288hio8255cequ28ahleddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码buffer1db0,0;存放要显示的十位和个位bzdw;位码dataendcodeegmentaumec:code,d:datatart:mova某,datamovd,a某movd某,28bh;将8255设为A口输出moval,80houtd某,almovdi,offetbuffer1;设di为显示缓冲区loop1:movc某,0300h;循环次数loop2:movbh,02lll:movbyteptrbz,bhpuhdidecdiadddi,bzmovbl,[di];bl为要显示的数popdimovbh,0movi,offetledaddi,b某moval,byteptr[i]movd某,io8255coutd某,almoval,byteptrbzmovd某,io8255coutd某,alpuhc某movc某,100delay:loopdelaypopc某moval,00houtd某,almovbh,byteptrbzhrbh,1jnzllllooploop2mova某,wordptr[di]cmpah,09jnzetcmpal,09jnzetmova某,0000mov[di],almov[di+1],ahjmploop1et:movah,01int16h jnee某itmova某,wordptr[di]incalaaa;置led数码表偏移地址为SI;求出对应的led数码;自8255A的口输出;使相应的数码管亮;延时;循环延时;有键按下则转e某itmov[di],al;al为十位mov[di+1],ah;ah中为个位jmploop1 e某it:movd某,io8255amoval,0;关掉数码管显示outd某,almovah,4ch;返回int21hcodeendendtart六、实验总结通过本次试验,我基本上掌握了数码管显示的程序流程,学会编写一些程序调用相应的相应的子程序,显示所需内容,了解了动态扫描显示的程序执行过程,结合定时器的设置和中断的返回,来实现最基本的百分秒显示,从而完成时钟显示,由此,结合前面所学的知识,巩固了数码管显示的知识,增强了我的程序调试能力,为下一步的学习打下了坚实基础。
1 设计内容及目标1.1设计题目用七段LED数码管显示倒计时1.2设计要求(1)用8255控制七段LED数码管。
(2)可选:用8254定时器显示时间。
(3)可选:可通过开关控制暂停计时、继续计时或时间清零。
1.3设计目的通过本学期对微机原理的学习,掌握的知识还停留在理论的上。
但是这是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。
通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。
通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。
2 设计原理2.1设计思路本次课程设计的题目是用七段LED数码管来显示倒计时。
在这个设计中既要用到8255芯片,又要用到8254芯片对脉冲信号进行记数。
设定初始值,每隔一秒,秒钟数字减一,每过60秒分钟个位减一。
根据需要,需选择的芯片有8255、8259和8254。
2.2设计环境与器材(1)PC微机一台。
用于对程序的编写、编译和测试等,同时还需要对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。
(2)微机原理实验箱一台。
此设备必须能提供8254、8255、8259和数码管等必要芯片,并且能通过接受PC机传来的信息,显示出相应的功能,以支持电子时钟的实现。
(3)导线若干条。
用于电路和芯片之间的连接。
2.3电路原理和主要芯片2.3.1电路工作原理首先利用程序硬性规定分、秒的起始时间为9。
然后通过8254计时器分频,并将以分得的频率接通8259中断控制器,进而通过CPU响应可屏蔽中断达到按秒计时的效果。
实验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
教学后记:。