8255与多位LED数码管的显示
8255A与多位数码管的显示

微机原理课程设计8255A与多位数码管的显示姓名:曹诗凤学号:12010240520学院:物理电气信息学院专业:通信工程年级:2010级指导老师:李萍完成日期:2012年12月9日基于VHDL语言的16路彩灯控制器[摘要]分析多路彩灯控制器设计原理,采用硬件描述语言VHDL实现多路彩灯控制器的设计,具有可编程性、线路简单、可靠性高等特点,并通过仿真对结果进行了验证。
[关键字]VHDL,彩灯,仿真,控制随着科技的发展,在现代生活中,彩灯作为一种装饰既可以增强人们的感观,起到广告宣传作用,又可以增添节日气氛,为人们的生活增添亮丽。
而EDA技术的应用及VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强。
在这个阶段,人们开始追求贯彻整个系统设计的自动化,进而从繁重的设计工作中彻底解脱出来,把精力集中在创造性的方案与概念构思上,从而可以提高设计效率,缩短产品的研制周期。
整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错的机会。
本文介绍应用美国ALTERA公司的CycloneII平台,使用VHDL硬件描述语言实现的多路彩灯控制器。
一、多路彩灯控制器设计原理设计一个彩灯控制程序器,可以实现十六路彩灯6种花型循环变化,有清零开关,并且可以选择快慢两种节拍。
整个系统共有三个输入信号:控制彩灯节奏快慢的基准时钟信号CLK_IN,系统清零信号CLR,彩灯节奏快慢选择开关CHOSE_KEY;共有16个输出信号LED[15..0],分别用于控制十六路彩灯。
硬件电路的设计要求在彩灯的前端加74373锁存器。
用来对彩灯进行锁存控制。
此彩灯控制系统设定有六种花样变化,这六种花样可以循环切换,设有两种快慢节拍,这两种节拍可以自由选择。
二、多路彩灯控制器的结构框图本控制电路采用VHDL语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化设计。
根据多路彩灯控制器的设计原理,将整个控制器分为两个部分,据此,我们可将整个彩灯控制器CDKZQ分为两大部分:时序控制电路SXKZ和显示控制电路XSKZ,整个系统的组成原理图如图1所示。
基于8255的LED显示串口通信机设计实验报告

基于8255的LED显示串口通信机设计一、设计要求(1)基本要求:1设计一串口通信程序,波特率9600,通过RS232串口自环。
自动循环发送数据串(设计在程序中)接收并存储和显示该数据串2数据串单次发送由按键启动,接收端显示数据串和数据串数、正确接收数和错误数。
3数据串选择发送(预存10种数据串),通过按键选择发送,接收、存储并按序显示。
(2)发挥部分:4数据串滚动显示。
5数据串滚动显示方向和速度可控6单片机与PC机的通信,单片可以发送任意ASCII字符串到PC机,PC机发送数据串到单片机,并在显示器上显示,格式和方法自定。
7设计波特率可变的通信程序,每次按键波特改变一次,对测通信。
8接收侧波特率自动跟踪,当发送端改变波特率后,定时地重复发送一数据串,检测接收端能正确接收和显示数据和波特率值。
二、要求分析根据提供的51单片机的串口通信机的要求,编写相对应的程序,实现其功能,并利用已有的硬件V14开发板来检验和实现基于8255的LED串口通信机功能。
要求熟悉单片机开发工具的使用,学会MeDwin,Keil,Protel等软件的使用方法。
熟悉实验板资源,学会程序的下载和运行,系统硬件调试方法。
用标准测试程序对实验板的各部分资源测试,并记录测试结果,维修不可用资源。
设计一能与PC机通信的串行通信终端.要求:学习使用单片机的内置串行接口,实现两机(单片机与PC机)的多种通信方法。
三、实验板功能模块结构四、总体方案的确定本次课程设计是在理论课程的基础上,目的在于培养我们的动手能力,通过电路设计、理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作,并能结合实际的实验板进行下载测试。
在此基础上根据实验大纲的要求,按“51单片机课程设计选题表” 每两人一题(随机分配),实现其功能。
在考虑本次设计过程中,依据设计基本要求,并且根据所提供的实验板,研究其原理结构图,我们把8255器件用来扩展I/O 口,外接一4X4键盘,以及通过该I/O 口外接一LED 显示器。
微机原理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 口的连接示意图,简要说明。
利用8255A实现LED的流水点亮实验

outdx,al
;-
movdx,211h
moval,00000000b
outdx,al
movdx,210h
moval,40h
outdx,al
movdx,211h
moval,00000010b
outdx,al
;A
movdx,211h
moval,00000000b
outdx,al
moval,7fh
outdx,al
movdx,211h
moval,00100000b
outdx,al
;2
movdx,211h
moval,00000000b
outdx,al
movdx,210h
moval,5bh
outdx,al
movdx,211h
moval,00010000b
outdx,al
;5
movdx,211h
movdx,210h
moval,77h
outdx,al
movdx,211h
moval,00000001b
outdx,al
loop lp ;转至lp
jmplop ;跳至lop
hlt ;使处理器处于暂时停机状态.
codeends
end start
在数码管上显示“8255-A”。
三、实验分析
实验要求利用8255芯片8个开关来控制8个LED灯的开关。我们在课堂上学过8255有ABC三个口,可以输入和输入。因此首先可以想到的就是,把PA口A0-A7接8个波动开关K1-K7,并将A口调整为读入。同时将A口读入的信号用B口输出,这样就可以通过拨动开关来控制LED灯的明灭。为了让灯亮的时间足够人眼分辨出来,需要在程序里加入延时语句,其中加零语句就可以实现延时。
实验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口的指定位进行置位/复位的操作。
用8255设计LED显示器接口实验

用8255设计LED显示器接口实验本文结合实验教学需要,介绍了用8255设计LED显示器接口实验的过程。
关键词:微机原理及应用;8255;LED;接口“微机原理及应用”是工科类专业的基础课,该课程比较抽象,因此实验教学起着至关重要的作用。
通过实验学生可以对比较抽象的命令、程序、输入输出接口电路加深理解。
现在仍有许多高校使用北京理工达盛科技有限公司的8086实验箱,但由于受到实验条件的限制,往常的做法是在有限的课堂时间内安排一些旨在验证理论知识的实验内容,较少涉及运用理论知识去解决实际问题。
这样的实验教学不利于发挥学生的学习主动性,不利于培养学生解决实际问题的能力。
如何改革传统的实验教学,如何培养学生的实际应用能力,本文举一个实例,需要教师利用现有的条件设计一些综合实验,让学生独立地去解决这些问题,从中培养能力。
希望本文能起到穿针引线的作用。
1设计LED显示器接口实验8086实验指导书显示器接口实验使用的是8279的显示输出功能,实验内容是在6位LED上循环显示8。
8086实验指导书8255并行口实验使用的是8255芯片,读开关量、输出、LED灯显示,实验讲义上都给出了电路原理图以及参考程序,学生往往是照着实验指导书上连接好线路,输入参考程序,进行程序调试。
大部分时间花在了实验的验证上,这样缺乏主动性和创新性,什么都是现成的。
能否在此基础上拓展一下,用8255芯片来实现显示器接口实验,这样既可取代8279,又可加深对8255的理解和使用。
实验任务:使用8255芯片的PA口作为段寄存器,PB口做为位寄存器,使用6位数码管从右向左逐位显示0~G,即显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G。
连线编程:由学生自己独立连接并独立编程实现,在编程过程中加深对硬件的理解、命令以及涉及的技巧。
2LED 显示器接口实验程序代码code segmentorg 100haa1: mov dx,04a6h ‘8255控制端口地址,大于255用dx做桥梁,小于255直接由端口地址传值mov al,80h ‘8255工作方式控制字out dx,allea bx,data ‘取偏移地址与bx相加aa3: mov ch,0‘显示数字0-------9 ,其中ch内容在变aa4: mov ah,0feh‘即1111 1110 为0时亮,须注意PB0与led接法,灯旋转方向mov si,6‘6个ledaa2: mov al,chxlat ‘查表地址转换指令:=MOV AL,[BX+AL]mov dx,04a0h ‘A口送字形,注意其端口地址out dx,almov al,ahmov dx,04a2h‘B口控制哪一位亮out dx,alrol ah,1 ‘1111 1110 循环左移mov di,0ffffhaa5: dec dijnz aa5 ‘延时,不为0,则decdi ,为0,则dec sidec sijnz aa2 ‘si不为0,则aa2——decsi ,为0,则inc chinc chcmp c h,12‘ch的值从0-18jnz aa4 ‘循环jmp aa3‘又从0开始到Fdata db 3fh,06h,5bh,4fh,66h,6dhdb 7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h,73h,88h,00hcode endsend aa1说明:在实验教学中如何培养能力?首先设计出较好的题目。
8255与多位LED数码管的显示-PPT课件

LED数码管显示跳屏线冒 电源电路
LED1 ~LED6 LED-A~LED-DP
8255并行接口
CPU板座
复位键
六、实验步骤
1、实验接线
本实验中8255的地址分配如下:
端口A
04A0H
端口B
04A2H
端口C
04A4H
控制口
04A6H
CS0CS8255 (输出)PA0~PA7 LED-A~LED-DP(段控) (输出)PB0~PB5 LED-1~LED-6(位控)
四、实验设备
MUT—Ⅲ型实验箱、8086CPU模块。
五、8255与8086及8255与键盘的电路连接
D0~D7
IOW 系
统
IOR
总
线
A2
A1
A15~A19
DB
地址 译码器
8255
D0~D7 PA WR
RD
PC
A1
A0
PB CS
LED-A~LED-DP
(段控)
LED-1~LED-6
(位控)
动态扫描显示字形码
rol
bl,1 ; bl=1111 1110B循环左移,使下个位控有效
loop disp
jmp
start1
delay: mov cx,43h ;延时程序,将此数改为最大观察结果
delay1: nop
nop
loop delay1
ret
segcod db 3fh,06h,5bh,4fh,66h,77h
code ends
位
0:端口C(PC7~PC4)输出
1:端口A输入
0:端口A输出
00:端口A方式0
01:端口A方式1
多位LED显示系统的设计,利用8255 8253 8086

HEFEI UNIVERSITY微机原理与接口技术课程设计系别自动化题目多位LED显示系统的设计班级学号姓名完成时间 2011年12月29日多位LED显示系统的设计摘要:《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,会使我们学会系统地综合运用所学的理论知识,提高我们在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。
培养我们实事求是和严肃认真的工作态度。
通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。
集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计,我们要熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
关键字:时间显示,计数器,定时器一、设计目的1)了解LED显示器的结构及工作原理。
2)掌握多位LED显示器的接口技术及动态显示原理。
二、设计原理与内容1.设计内容在实验台的六位LED显示器上显示分和秒,每秒钟变化一次。
2. 设计要求编写程序,使六位LED显示器显示时钟的分值和秒值三、总体设计根据设计要求,初步思路如下:1)计时单元由定时/计数器8253的通道0来实现。
定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数,从而实现24小时制定时。
实验2:8255七段数码管静动态显示

微机实验报告书学号:姓名:班级:同组名单:实验日期: 2012.12.21实验题目:七段数码管的静态显示实验目标:掌握数码管显示数字的原理(功能:键盘输入一位十进制数字(0~9),用七段数码管显示。
)解题思路:1.静态显示:按图 10(a)连接好电路,将8255的A口PA0-PA6分别与七段数码管的断码驱动输入端a-g项链,位码驱动输入端S1接+5V,S0、dp接地。
编程从键盘输入一位十进制数字,在七段数码管上显示出来。
2.动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。
编程在两个数码管上显示“56”。
程序框图:静态显示见图11(a),动态显示见图11(b)。
关键问题分析(静态显示):1、按键判断和程序结束判断按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在0-9之间即可。
用以下程序即可:cmp al,'0'jl exit ; jl,条件转移指令,即在小于时转移cmp al,'9'jg exit ;jg, 条件转移指令,即在大于时转移程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。
程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。
2、七段码显示。
实验指导书中给出了七段码的字型代码。
这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。
前提是必须将七段码字型编成数码表以字符串的形式写进程序中。
3、数字键ASCII码与数值间的转换。
因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现:sub al,30h程序清单:静态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov al,80h ;10000000B,控制字PA以方式0输出out dx,alzby: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;如若小于0,则跳转到exit退出程序cmp al,'9' ;是否大于9jg exit ; 如若大于9,则跳转到exit退出程序sub al,30h ;将所得字符的ASCII码减30H,数字键ascii码同数值转换mov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp zby ;转zbyexit: mov ah,4ch ;返回DOSint 21hcode endsend start动态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+28ahio8255b equ ioport+28bhio8255c equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80h ;10000000B,控制字PA以方式0输出out dx,almov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02zby: mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl为要显示的数pop dimov al,0mov dx,io8255aout dx,almov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]mov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay: loop delay ;延时mov bh,byte ptr bzshr bh,1jnz zbymov dx,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov dx,io8255amov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回int 21hcode endsend start运行结果:静态显示:在键盘上输入一个0-9的任意数字,会显示在数码管上。
利用8255A实现拨动开关和LED流水点亮实验

实验二:利用8255A实现拨动开关和LED流水点亮实验安全0901 王宇航 09283020实验报告1.实验目的:该实验的目的在于掌握8255A和微机接口的连接方法,了解8255A的基本的工作原理和编程方法。
掌握使用8255并行接口连接拨动开关,控制LED显示输出的技术。
2.实验步骤:按图3-2将8255端口A与8位拨动开关连接,8255端口B与8位LED连接,选择8255 为方式0工作,编程序完成LED实时显示开关状态的功能,即每位LED对应一位开关状态。
开关往下拨动,对应LED灭,开关往上拨动,对应LED点亮。
当执行程序后LED按K1-K8初始设定的值点亮,并向右流动(8255A工作在方式0)。
同时在6位数码管显示:8255-1编程涉及8255端口地址有四个,由于8255片选信号线与地址译码区的200~2FH连接,即8255的I/O偏移地址为0~3,加上前一个实验所获知的I/O基址,两者相加之后才是最终访问8255的I/O地址。
注意,该地址一定是一个16位数,所以I/O操作要使用IN AL,DX 和OUT DX, AL指令。
3.实验代码:code segment ;定义代码段assume cs:codestart:;初始化,设置A口B口的工作方式mov dx,203h ;8255命令口地址mov al,10010000b ;控制字out dx,al;让数码管显示8255-A;显示A口输入的数并循环移位xor ax,ax ;将ax清零mov bl,0lop:;自定义的标号mov dx,200h ;给dx赋值(送到寄存器中)in al,dx ;将200h送给寄存器al;m ov dx,201h;o ut dx,al ;把al的值送给dx端口;j mp lop ;段内转移cmp al,ah ;al和ah进行比较jz next ;跳转到nextmov ah,almov bl,ahrol bl,1 ;不带进位循环左移1位next:ror bl,1 ;不带进位循环右移1位mov al,blmov dx,201hout dx,almov cx,3fffhlp: ; 从lp到最后都是表示显示8255-A这个字,它的作用是实现灯的延时,即保证灯的闪烁时间不至于过快,如果去除的话在人眼的视觉暂留情况下将可能产生连续不断的灯光闪烁,使得间隔时间太短。
实验四 8255与LED数码管的显示

实验四8255a与LED数码管的显示一. 实验目的掌握8255A的编程原理与LED数码管的显示方法。
二. 实验环境硬件环境:奔3以上处理器,512MB以上内存空间软件环境:windowsXP以上操作系统,emu8086编译环境,Proteus7.5sp3。
三.实验内容与完成情况1.仿真电路图2.实验原理(1)8255A可编程I/O接口芯片具有三种工作方式:方式0(简单的输入输出方式)、方式1(选通式输入/输出方式)和方式2(双向数据传送方式)。
它分别能够控制把CPU的控制命令或输出数据送至相应的端口,也可以控制把外设的状态信息或输入的数据通过相应端口送至CPU。
(2)8255芯片具有三个数据端口A、B和C。
每个端口都为8位,可以由编程来选择作为输入端口或输出端口。
在一般情况下,常利用A、B两个端口来完成与外设之间的数据交换过程,而利用C端口来完成与外设的状态控制信息的交换过程。
3.实验过程首先打开电源,由8086向8255a发出指令,选定8255的工作方式,然后,读A口数据,高四位清零,取LED灯偏移地址。
当4个按钮的开关情况发生变化时,电信号的变化被读入8255a,经一系列的信号处理,从B口输出到LED灯显示数字。
4.编程调试程序data segment; add your data here!PORTD EQU 66H ;CPU-8255控制寄存器PORTA EQU 60H ;8086 A1接8255 A0;A2 接8255A1PORTB EQU 62HPORTC EQU 64HREGIS EQU 10010000B ;A IN, B OUT,AB口工作方式0LED DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,77H,7cH,39H,5eH,79H,71H data endsstack segmentdw 128 dup(0)stack endscode segmentASSUME CS:code, DS:dataBEGIN:MOV DX,PORTD ;设置8255工作方式MOV AL,REGIS ;control byteOUT DX,ALG1: MOV DX,PORTAIN AL,DX ;读A口数据AND AL,00001111B ;高四位清零;数码管译码MOV BX,OFFSET LEDXLAT ;取LED表;-------------PUSH CXMOV CX,40H ;延时DELAY:LOOP DELAYPOP CX;-------------MOV DX,PORTBOUT DX,ALJMP G1code endsend BEGIN ; set entry point and stop the assembler.四.出现的问题1.不知道如何选定8255a的A,B,C三个端口的工作状态;2.对74ls183的电信号处理机制不清楚。
单片机扩展8255控制LED数码管动态显示仿真教学

个位选 引脚分 别连接 数码管 的公共端 ,位选 引脚 以
足够快 的扫描速 度配 合段码 引脚控制 若干个数 码管
逐个循 环显 示 ,给人 的感觉是 这若干 个数码 管 同时
9 6期 )
济 南 职 业 学 院 学 报
F e b . 2 0 1 3 No . 1( S e r i a l N o . 9 6
单 片机扩展 8 2 5 5 控制 L E D 数码管动态 显示 仿真教学
刘 文 光 张 铭 铭
( 1 . 济 南职 业 学院 ,山东 济 南 2 5 0 1 0 3 ; 2 . 青岛 市 中心医 院 ,山东 青岛 2 6 6 0 4 2 )
8 2 5 5 数据 线 D O — D 7与 5 l 单片机 P 0口相 连 ;8 2 5 5 两根地 址 线 Al 和A 0 可 通过 7 4 L S 3 7 3 与5 l 单 片机
眼的视 觉暂 留现 象和数码 管 的余辉效 应 n ,用 若干
P O . 1 和P 0 . 0相 连 ;8 2 5 5片选 信 号 引脚 低 电平 有 效
关键词 :8 2 5 5 ;时序 图 ;动态显示 ;仿 真教 学 中图分类号 i G7 1 文献标识码 :A 文章编号 i 1 6 7 3 -4 2 7 0( 2 0 1 3) 0 1 —0 0 8 2 —O 3
一
、
引言
用需要与外 设相连 ;8 2 5 5的复位 引脚 高 电平有 效 、 VC C接 电源 、G N D接地 。教师在讲解这部分内容时 需要着重阐明如何通过寻址设定 8 2 5 5的控制 字和读
8255和LED数码管显示实验

实验八 8255和LED数码管显示实验二、实验电路实验电路如图2及图3所示。
图2 静态显示电路图3 动态显示电路五、实验项目1.静态显示:按图2连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
程序框图、源代码(含注释)及实验结果如下:1、静态显示;0-9程序:data segmentioport equ2400h-280hio8255a equ ioport+288hio8255ctr equ ioport+28bhled db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255ctr ;使8255的A口为输出方式mov ax,80hout dx,alsss: mov dx,offset mesg1 ;显示提示信息mov ah,9int21hmov ah,1;从键盘接收字符int21hcmp al,'0' ;是否小于0jb exit ;若是则退出cmp al,'9' ;是否大于9ja exit ;若是则退出sub al,30h;将所得字符的ASCII码减30Hmov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp sss ;转SSSexit: mov ax,4c00h;返回int21hcode endsend start2.动态显示(选做):按图3连接好电路,七段数码管段码连接不变,位码驱动输入端S1S0接8255C口的PC1、PC0。
实验五8255和LED数码管显示实验

1.实验5静态显示实验参考程序如下:data segmentled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb 7fh,67h,77h,7ch,39h, 5eh,79h,71hmesg1 db 0dh,0ah,'input a num(0-9)from keyboar:', 0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,28bhmov al,80hout dx,almov dx,288hmov ax,00hout dx,alss0: mov dx,offset mesg1mov ah,09hint 21hmov ah,1int 21hcmp al,27jz ss3cmp al,61hjb ss1sub al,39jmp ss2ss1: cmp al,41hjb ss2sub al,7ss2: and al,0fhmov bx,offset ledxlatmov dx,288hout dx,aljmp ss0ss3: mov ah,4chint 21hcode endsend start2.实验5动态显示参考程序如下:code segmentassume cs:codestart: mov dx,28bhmov al,80hout dx,alss0: mov dx,28ahmov al,00hout dx,almov dx,288hmov al,06hout dx,almov dx,28ahmov al,08hout dx,alcall delaymov dx,28ahmov al,00hout dx,almov dx,288hmov al,5bhout dx,almov dx,28ahmov al,04hout dx,alcall delaymov dx,28ahmov al,00hout dx,almov dx,288hmov al,4fhout dx,almov dx,28ahmov al,02hout dx,alcall delaymov dx,28ahmov al,00hout dx,almov dx,288hmov al,66hout dx,almov dx,28ahmov al,01hout dx,alcall delayjmp ss0mov ah,4chint 21hdelay proc near ;延时子程序mov cx,100n1: loop n1retdelay endpcode endsend start附图1:如下所示,在实验台上设有四/两个共阴极七段数码管显示及驱动电路,段码为同相驱动器(输入1时对应的段亮),位码为反相驱动器(输入1时对应的数码管亮),从段码与位码的驱动器输入端(段码输入端:a、b、c、d、e、f、g、dp,位码输入端:s1、s2)输入不同的代码即可显示不同的数字或符号。
8255键盘扫描与LED数码管显示

十、实验程序
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时则停止该 循环
OUT DX,AL ;将AL的内容输出到地址为200H的端口
编程 1 :把8255 工作方式设定为: A 口指定为方式 0 , 输入, C 口为输出; B 口指定为方式 0 ,输出;设 8255控制字寄存器端口地址为04a6H。 分析:根据题目得工作方式命令代码是10010000B或
90H。
五、实验设备
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 (列选择线)
本实验中8255的地址分配如下: 端口A 04A0H 端口B 04A2H 端口C 04A4H 控制口 04A6H
实验一、LED显示控制、82C55A并行接口数码管显示控制实验

实验⼀、LED显⽰控制、82C55A并⾏接⼝数码管显⽰控制实验实验1 LED显⽰控制、82C55A并⾏接⼝数码管显⽰控制⼀、实验⽬的和内容1.掌握三态门,锁存器构成简单I/O端⼝的原理及应⽤2.完成流⽔灯及其控制的编程实验3.进⼀步掌握8255的使⽤原理4.掌握动态LED数码显⽰的原理5.完成动态LED数码显⽰的编程实验(LED显⽰控制部分)⼆、实验电路及说明实验电路图1,2,3所⽰,74ALS273锁存器的输出控制LED发光管的亮暗(1:亮0:暗)74ALS273的CLK被⼀些地址线所控制,它的地址为60H(16进制) ADD7, ADD6, ADD5, ADD4, ADD3, ADD2, ADD1, ADD00 1 1 0 0 0 0 0只有这时7430与⾮门才输出低电平(⼋段LED是阴极型)在DOS下,它的真实地址为PCI接⼝板的I/O地址加上60H为真实地址。
如PCI 的I/O起始地址0为E000H , I/O起始地址1为E400H。
74ALS273的地址为E460H。
注意:PCI板卡分配了2块I/O空间,I/O空间0是分配给PCI板卡内部寄存器使⽤的,即9052专⽤,空间⼤⼩128BYTE。
I/O空间1是分配给PCI板卡⽤户电路使⽤的,其⼤⼩为256BYTE。
流⽔灯原理如下:K1、K2是⼋位拔动开关(位于区域F)的左边第1、2位。
K1=K2=H 发光管从上到下移位K1=L,K2=H 发光管从下到上移位KI=H,K2=L 发光管全部闪烁K1=K2=L-退出注:ON⽅向为L,OFF⽅向为HK1、K2为主板上J41数码拔动开关的1、2位。
图1图2图3三、程序⽅框图从上->下框图四、程序代码录⼊程序时,请特别注意”1”与英⽂字母”l”的区别,⽂件的扩展名为C,即⽂件名⼀定是??-??.C。
在每个源程序的开头必须加上如下的注解,并按各⼈实际填写。
/*源程序的⽂件名:实验序号(01-08)-实验组号(01-24).C实验名称:___________________________实验组号:___________________________学⽣姓名及学号:____________ ____________*/#include#include#include “PCIcard.h”int d1=0,m_bit=0x1;void main(){int err,rio,flagm;int m_k0();void m_k1();void m_k2();void m_k3();err=findPCIcard();if (err!=0){printf("The PCI card isn't found\n");flagm=0;}err=getPCIbase0();iobase0=iobase0&0xfffc;//从PCI配置空间读⼊的与地址空间有关的数据其bit 0位为1,printf("IOBase0=%xH\n",iobase0);//表明此空间为IO空间参与PCI总线地址译码err=getPCIbase1();iobase1=iobase1&0xfffc;printf("IOBase1=%xH\n",iobase1);err=getPCImembase1();err=getPCImembase0();membase0=membase0+membase1<<16;//左移16位,将⾼位地址变换成双字中的⾼位字printf("MEMBase0=%lxH\n",membase0);err=getPCIIRQ();printf("PCI IRQ = %d\n",err);//////////////////////////////////ioadd1=ioadd1+iobase1; //获取步进电机驱动端⼝地址flagm=1; printf("Press K1 and K2 to low to exit.\n"); //选择正、反转或退出do //主循环{rio=inportb(ioadd1); //从IO端⼝读⼊数据rio=rio&0x3; //保留低两位switch(rio) //判断数据并做相应处理{case 0: //为0时LED全亮flagm=m_k0();break;case 1: //为1时LED全部闪烁m_k1();break;case 2: //为2时LED从下到上循环点亮m_k2();break;case 3: //为3时LED从上到下循环点亮m_k3();break;default:break;}}while (flagm==1);//////////////////////////////////////return;}int m_k0() //LED全亮并退出程序{int flagk;flagk=0;return (flagk);}void m_k1() //LED闪烁{void delay1();if (d1==0));}else{outportb(ioadd1,0x0);}return;}void m_k2() //LED从下到上循环点亮{ void delay1();int temp;m_bit=m_bit|1;outportb(ioadd1,m_bit);delay1();return;}void m_k3() //LED从上到下循环点亮{ void delay1();int temp;temp=m_bitm_bit=m_bitm_bit=m_bit|0x80;outportb(ioadd1,m_bit);delay1();return;}void delay1() //延时{int i,j,a=0;for (i=1;i<=5000;i++){for (j=1;j<=10000;j++){a=a+0;}}return;}将PCIcard.h 与上述的C源程序存放在同⼀⽬录下, PCIcard.h的内容如下:#include#include#includeunsigned long int iobase0,iobase1,membase0,membase1;unsigned long int interrupt_line,ioadd1=0x60;unsigned char bh;unsigned char bl;int findPCIcard(void); //找寻PCI卡的总线号及设备号及功能号int getPCIbase0(void); //获得PCI卡的IO0的地址int getPCIbase1(void);int getPCImembase0(void);int getPCImembase1(void);int getPCIIRQ(void);struct dx{int dl;int dh;} mydx;int findPCIcard(void) //找寻PCI卡的总线号及设备号及功能号{union REGS regs;regs.h.ah=0xb1;regs.h.al=0x02; //寻找指定⼚商和设备号的PCI卡的位置regs.x.cx=0x8376;regs.x.dx=0x10eb; //输⼊要寻找的⼚商号和设备号regs.x.si=0x00; //输⼊要寻找的PCI卡索引号int86(0x1a,®s,®s); //调⽤指定的X86中断bl=regs.h.bl; //返回的设备号⾼5位,低3位为功能号bh=regs.h.bh; //返回的总线号return(regs.h.ah); //返回状态}int getPCIbase0(void) //获得PCI卡的IO0的地址{union REGS regs; //定义⽤C语⾔调⽤BIOS中断所⽤的寄存器组合regs.h.ah=0xb1; //调⽤PCI BIOS中断regs.h.al=0x09; //配置空间⽤字的⽅式读⼊regs.x.di=0x14; //PCI配置空间中基地址0的地址regs.h.bl=bl; //要读⼊配置空间的PCI卡的设备号和功能号regs.h.bh=bh; //要读⼊配置空间的PCI卡的总线号int86(0x1a,®s,®s); //调⽤指定的X86中断iobase0=regs.x.cx; //CX为返回的IO0的基地址return(regs.h.ah); //返回状态}int getPCIbase1(void){union REGS regs; //同上regs.h.ah=0xb1;regs.h.al=0x09;regs.x.di=0x1c; //PCI配置空间基地址1的地址regs.h.bl=bl;regs.h.bh=bh;int86(0x1a,®s,®s);iobase1=regs.x.cx;return(regs.h.ah);}int getPCImembase0(void){union REGS regs; //同上regs.h.ah=0xb1;regs.h.al=0x09;regs.x.di=0x18; //PCI配置空间存储器基地址0的低位地址regs.h.bl=bl; regs.h.bh=bh;int86(0x1a,®s,®s);membase0=regs.x.cx;return(regs.h.ah);}int getPCImembase1(void){union REGS regs; //同上regs.h.ah=0xb1;regs.h.al=0x09;regs.x.di=0x1a; //PCI配置空间存储器基地址0的⾼位地址regs.h.bl=bl; regs.h.bh=bh;int86(0x1a,®s,®s);membase1=regs.x.cx;return(regs.h.ah);}int getPCIIRQ(void){union REGS regs; //同上regs.h.ah=0xb1;regs.h.al=0x09;regs.x.di=0x3c; //PCI配置空间中断线的地址regs.h.bl=bl;regs.h.bh=bh;int86(0x1a,®s,®s);interrupt_line=regs.x.cx;return(regs.h.cl);}五、思考题:1、在图1中,从数据端⼝送出”1”使LED亮,还是使LED灭?2、将K1L、K2L这⼀点亮退出功能修改为:⾃上⽽下⼀个⼀个点亮,然后⾃下⽽上⼀个⼀个熄灭,循环不断。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、编程并全速或单步运行。 3、全速运行时按动键盘,观察数码管的变化。 4、编写实验报告。
七、实验程序流程图 初始化8255
取字形码
显示输出
九、实验程序
assume cs:code code segment org 100h start: nop nop start1: mov cx,08h ;设置循环次数 mov bx,00feh ;bh=0000 0000,bl=1111 1110B mov dx, 04a6h ;控制寄存器地址 mov ax,80h ;设置为A口输出,B口输出 out dx, ax ;8255的初始化 disp: mov di, offset segcod ;取偏移地址送入di寄存器 mov dx, 04a0h ;A口地址 mov al, bh ;aL=0000 0000 mov ah, 00h ;ah=0000 0000 add di, ax ;得到第一个变量(字形码)3fh的偏移地址 mov al, cs:[di] ;将3fh送入al寄存器 out dx, al ;将字形码从A口输出
四、实验设备
MUT—Ⅲ型实验箱、8086CPU模块。
五、8255与8086及8255与键盘的电路连接
8255
D0~D7 DB D0~D7 PA
LED-A~LED-DP
系 统 总 线
Байду номын сангаас
IOW IOR A2
WR
RD A1 PC
(段控)
A1
A15~A19 地址 译码器
A0
PB CS
LED-1~LED-6
(位控)
I/O PB7~PB0
CS
图9.9 8285编程结构
8255外部引脚
连接系统端的引线: D0~D7:数据线 CS:片选 RD:读控制 WR:写控制 RESET:复位 A1, A0:端口选择
A1 A0 0 0 0 1 1 0 1 1 选择 端口A 端口B 端口C 控制寄存器
D0 ~ D7 CS RD WR RESET A1 A0
OUT DX,AL ;将AL的内容输出到地址为200H的端口
掌握8255A的编程原理与多位LED数码管的显示方法。
二、实验目的 三、实验内容
把待显示字符的LED代码组成一个七段代码表,存放在 存储器中。通过对8255编写程序在多位LED数码管上显 示输出。 1、设计出8255与8086接口对应硬件电路,并完成相应 的连接 2、设计出8255与LED数码管的对应硬件接口电路,并 完成相应的连接 3、编写程序,在数码管上显示相应字符或数字 4、写出习题部分要求的程序
本实验中8255的地址分配如下: 端口A 04A0H 端口B 04A2H 端口C 04A4H 控制口 04A6H
mov dx, 04a2h ;B口地址 mov al, bl ;al=1111 1110B out dx, al ; al的内容从B口输出,使LED1有效 push cx ; 循环次数入栈保护 call delay pop cx ; 循环次数出栈 inc bh ;bh内容加1,指向第二个字形码 rol bl,1 ; bl=1111 1110B循环左移,使下个位控有效 loop disp jmp start1 delay: mov cx,43h ;延时程序,将此数改为最大观察结果 delay1: nop nop loop delay1 ret segcod db 3fh,06h,5bh,4fh,66h,77h code ends end start
8255工作前必须初始化,初始化时需设置:
工作方式
数据传送方向
输入 输出
通过向8255写入方式控制字实现:
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
2.端口寻址方式
对20H端口的访问格式:直接寻址
IN AL,20H ;从地址为20H的端口输入一个字节到AL
OUT 20H,AL ;将AL的内容输出到地址为20H的端口
对200H端口的访问格式:间接寻址 MOV DX,200H ;将端口地址送DX寄存器 IN AL,DX ;从地址为200H的端口输入一个字节到AL
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)
八、修改程序 将自己学号的最后6位同时显示出来
注意: 1、编程前先在E盘目录下建一个文件夹,并取 一个英名名字,即名字中不能有汉字和数字。编完 程序将其存于该目录下。 2、做实验之前先取下跳线冒。 3、做完实验将实验箱右上角的CPU板卸下,再 关实验箱。
动态扫描显示字形码
LED数码管显示屏 跳线冒 电源电路
8255并行接口 LED1 ~LED6 LED-A~LED-DP
CPU板座
复位键
六、实验步骤
1、实验接线
本实验中8255的地址分配如下: 端口A 04A0H 端口B 04A2H 端口C 04A4H 控制口 04A6H
CS0CS8255 (输出)PA0~PA7 LED-A~LED-DP(段控) (输出)PB0~PB5 LED-1~LED-6(位控)
实验2 8255与多位LED数码管的显示实验
一、复习8255 1.8255相关知识
8255功能特性
三个独立的8位并行输入/输出端口,各端口均
具有数据数据输入、输出能力;
三种工作方式:0基本、1选通、2双向; 可通过编程设置各端口的工作方式和数据传送
方向(入/出/双向)。
8255的内部结构
PA
PB
PC
8255外部引脚
连接外设端的引线:
PA0~PA7
D0 ~ D7 CS RD WR RESET A1 A0
PA
PB0~PB7
PC0~PC7
分别对应PA、PB、 PC三个8位输入/输 出端口
PB
三个端口可通过编程分别指 定为输入或输出口。
PC
8255的初始化
方式0:基本输入/输出方式 方式1:选通方式 方式2:双向方式(仅A口)