简易LED跑马灯设计摘要随着微电子技术的飞速发展,集成电路的集成度和性能提高、价格下降,特别是单片微处理器的出现,对现代社会的进步起到了巨大推进作用,也从各个方面改变了人们的生活,比如目前国内国外都大量使用的霓虹灯广告牌、交通显示信号灯,以及各种车辆、家用电器等普遍使用的指示信号灯,给人们的生活提供了便利。
本文针对广告牌等显示器件中起到至关重要的作用的数字控制信号LED灯显示(跑马灯)进行一个简易的模拟设计。
此实验项目中,使用8255芯片实现16位数码管显示,制作成一个简易的跑马灯,其中要运用386[pc]汇编语言编写相应代码,并且要针对8255的特点设计实验连线图,是对本科接口课程中学习到的软件以及硬件知识的一个综合运用,通过实际上机实验操作,编译设计不同的跑马灯效果。
通过最后的综合实验调试,成功实现了简易跑马灯的效果显示,这是对跑马灯实际应用的一次有益接触,也是对该应用原理的一次初步实践。
【关键词】接口跑马灯 8255芯片 LED灯汇编语言1 LED的应用领域以及LED跑马灯的研究意义▪1.1 LED的应用领域LED的应用领域非常广,包括通讯、消费性电子、汽车、照明、信号灯等,可大体区分为背光源、电子设备与照明、显示屏、汽车交通等五大领域。
◆汽车交通:以汽车內装使用包括了仪表板、音箱等指示灯,及汽车外部(第三刹车灯、左右尾灯、方向灯等),另外还包括交通标志灯。
◆背光源:主要是手机背光光源方面,是SMD型产品应用的最大市场。
◆显示屏: LED显示屏作为一种新兴的显示媒体,随着大规模集成电路和计算机技术的高速发展,得到了飞速发展,它与传统的显示媒体―多彩霓虹灯、象素管电视墙、四色磁翻板相比较,以其亮度高、动态影像显示效果好、故障低、能耗少、使用寿命长、显示内容多样、显示方式丰富、性能价格比高等优势,已广泛应用于各行各业。
◆电子设备与照明:LED以其功耗低,体积小,寿命长的特点,已成为各种电子设备指示灯的首选,目前几乎所有的电子设备都有LED的身影。
▪1.2 LED跑马灯的研究意义本文主要是对LED显示屏应用的一个初步研究,跑马灯是对LED显示屏功能的基础模拟,通过对跑马灯形式的LED显示进行实验模拟,可以对LED的大型应用奠定基础,是将来完成完整LED效果显示设计的初级实践。
LED跑马灯设计正好和本科接口基础设计课程相衔接,运用到了课程中学习到的相关接口知识,是对该课程知识的一个综合运用,有助于加强基础知识的掌握,提升个人实践能力。
2 相关实验芯片及原理的介绍本实验需要器材:8255芯片一块,PC机一台,TD-PIT/TD-PIT-B实验箱一台。
▪2.1 LED灯管的发光以及驱动原理图2.1 发光二极管结构图LED灯管LED(Light Emitting Diode,图2.1),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。
LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
半导体晶片由三部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子,中间通常是1至5个周期的量子阱。
当电流通过导线作用于这个晶片的时候,电子和空穴就会被推向量子阱,在量子阱内电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
而光的波长也就是光的颜色,是由形成P-N结的材料决定的。
在接口试验中通常会用到单色LED灯作信号显示,给LED灯输入数字信号,LED灯会根据信号的不同而显示亮或者灭。
(a)(b)图2.2 LED的两种驱动方式LED灯管有两种不同的驱动方式:(1)阳极接+5V电源,阴极接适当大小的电阻(要求用5V点亮某LED时,则LED必须串接一个电阻,防止过流烧坏),然后接入数字信号,如图2.2(a)输入数字信号0时LED灯亮,输入1时LED灯灭;(2)阴极接地,接适当大小的电阻,然后阳极接入数字信号,如图2.2(b)输入数字信号1时LED灯亮,输入0时LED灯灭[1]。
我们试验用的试验箱中封装的LED电路默认为驱动方式(1),即0输入灯亮。
▪2.2 8255芯片的主要功能特性介绍INTEL8255是一种通用的可编程并行I/O接口芯片(图2.3),是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。
利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。
8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。
可与外设并行进行数据交换。
A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。
该芯片提供三种工作方式,满足本实验对芯片的功能要求[2]。
图2.3 8255内部引脚及结构8255芯片的一些详细特性:(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。
(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口。
它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C 口(低4位,PC0~PC3)。
A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。
8255引脚功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输。
RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。
当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1,A1=1时,控制寄存器被选择。
(a)工作方式控制字 (b)C口按位置位/复位控制字图2.4 工作方式控制字图示8255接口实验中端口地址如下表2.1所示:表2.1 8255接口实验中端口地址表3 具体的实验操作步骤▪3.1 初步确定跑马灯显示方案,针对相应显示方案,使用汇编语言编写跑马灯程序跑马灯显示效果是:一排16位数据管,第一次亮起的是第一位和最后一位,第二次亮起的是第二位和倒数第二位,以此规律类推,总体效果就是一排数据灯从两端向中间滚动显示。
代码如下:MY8255_A EQU 0e060HMY8255_B EQU 0e061HMY8255_C EQU 0e062HMY8255_MODE EQU 0e063H ;此处为端口地址设置,A、B、C口编址分别为60H、61H、62H,控制寄存器编址为63HDATA SEGMENTLA DB ?LB DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA ;8255芯片有A、B、C三口,其中A、B两口分别接8个数据管,对应就分为A、B两组数据管,两组数据管分开独立显示,但是表示出来的效果依然连续START: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODEMOV AL,80H ;设8255方式字10000000,AB均为工作方式0,A口位输出,B口位输出OUT DX,ALMOV DX,MY8255_AMOV AL,FFHOUT DX,AL ;把初态设置为全关,即A组所有灯初态为熄灭MOV AL,7FH ;7FH换成二进制就是0111 1111B,也就是表示A口初始状态是最左边一个灯亮,A组其他7个灯处于熄灭状态OUT DX,ALMOV LA,AL ;给A口赋值后保存在LA中MOV DX,MY8255_BMOV AL,FFHOUT DX,AL ;把初态设置为全关,即B组所有灯初态为熄灭MOV AL,0FEH ;0FEH换算为二进制即为1111 1110B,这与A口初始状态刚好相反,即B组数据灯初始状态是最右边的一个灯亮,其他7个灯保持熄灭状态OUT DX,ALMOV LB,AL ;给B口赋值后保存在LB中CALL DALLYA1: MOV AL,LAROR AL,1 ;对原来保存的A口初始值进行向右移位操作MOV LA,AL ;移位操作后保存MOV DX,MY8255_AOUT DX,AL ;输出显示,A组数码管右移一位灯亮MOV AL,LBROL AL,1 ;对原来保存的B口初始值进行向左移位操作MOV LB,AL ;移位后进行保存MOV DX,MY8255_BOUT DX,AL ;输出显示,B组数码管左移一位灯亮CALL DALLY ;延时控制CALL BREAKJMP A1DALLY: MOV CX,3FFH ;延时控制语句D1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1RET ;延时控制是通过PC机做3FFH*0FFFFH次自减操作,这个操作的持续时间就是数据管维持上一个状态的时间长度,如果这个时间太短,则肉眼无法判断数据管的亮灭,时间太长则没有跑马灯的滚动效果BREAK PROC NEAR ;调用PC监控程序,软中断,按任意键退出程序MOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START[3]编辑完成后保存为文件8255.ASM。
▪3.2 在PC端运用相关编译软件生成可执行程序在这个环节,使用编译软件TDDEBUG.EXE,通过界面提示导入编写好的程序文件8255.ASM,生成8255.OBJ,最终生成可执行程序文件8255.EXE[4]。