【文章摘要】本文运用Protues环境,公开了一种基于8086单片机的汇编语言16×16点阵LED显示屏设计方法。用开关控制开启与关闭;通过74LS138译码;74HC373锁存地址;两片8255A将8086扩展控制点阵LED;同时用另一片8255A控制数码管显示,8253计数器产生脉冲控制数码管延时。最终通过Protues软件的仿真运行,LED显示屏能够完整清晰地显示汉字。
【关键词】Protues;点阵LED;8086单片机;数码管
0 引言
点阵LED显示屏由发光二极管构成,通过每一个二极管的亮灭来控制显示的文字或图片,它被广泛地运用在很多场合,如公交车站、广告牌等。
1 总体功能简介
该LED显示屏系统在protues平台,使用8086单片机,通过开关控制,显示“待机”、“欢迎”、“再见”三组字符,每组之间间隔3秒的延时,断开开关则停止运行。
2 硬件设计
2.1 地址译码及锁存模块
8086单片机通过74LS138地址译码,A3、A4、A5作为74LS138的三个输入,74LS138的输出Y0、Y1、Y2、Y3分别连接三片8255A和一片8253的使能端,通过地址的A3、A4、A5输出控制选通8255A及8253。8086单片机通过74HC373锁存AD0至AD7的地址,控制三片8255A和一片8253的A0、A1控制口。
2.2 8255工作方式的确定
第一片8255A的A、B口用于输出控制LED显示屏,C口悬空;第二片8255A的A、B及C口都用于输出控制LED显示屏;第三片8255A的A口用于输出控制数码管,B口悬空,C口用于输入,受到开关及8253计数器输出脉冲的控制。
2.3 点阵LED显示模块
将四片8×8的LED显示屏拼接在一块,利用第一片8255A的B口输出值进行行扫描。之后利用第一片8255A的A口,第二片8255A的A口、B口、C口分别进行左上、右上、左下和右下8×8的LED显示屏数据的输入。当输入为高电平时,则点亮对应位置的LED灯,显示相应的图形。
2.4 数码管及8253模块
考虑到8253的工作方式,将计数器0设置为方式2比率发生器,方式2是一种具有自动置计数初值N的脉冲发生器。从输出OUT端可以输出连续脉冲信号,脉冲宽度等于时钟脉冲周期,而计数初值N决定了输出端两个负脉冲之间的宽度即输出脉冲周期。将计数器1设置为方式0计数结束中断方式,当控制字写进控制字寄存器确定了方式0时,计数器的输出OUT端保持低电平,一直保持到计数值减 到0。由于计数初值较大,故采用将计数器0的输出与计数器1输入相连接,即两个计数器级联,这样才能产生较长延时效果。
2.5 整体硬件原理图
3 软件设计
3.1 地址初始化
第一片8255A地址:
MY8255_1 EQU 86H
PORTA EQU 80H
PORTB EQU 82H
PORTC EQU 84H
第二片8255A地址:
MY8255_2 EQU 8EH
PORTA1 EQU 88H
PORTB1 EQU 8aH
PORTC1 EQU 8cH
第三片8255A地址:
MY8255_3 EQU 96H
PORTA2 EQU 90H
PORTB2 EQU 92H
PORTC2 EQU 94H
设置8253地址:
MY8253 EQU 9EH
MY8253_C0 EQU 98H
MY8253_C1 EQU 9AH
MY8253_C2 EQU 9CH
3.2 设置工作方式
设置第一片8255A工作方式:A、B口采用方式0,A口输出,B口输出,C口低四位输出。
MOV DX,MY8255_1
MOV AL,80H
OUT DX,AL
设置第二片8255A工作方式:A、B口采用方式0,A口输出,B口输出,C口低四位输出。
MOV DX,MY8255_2
MOV AL,80H
OUT DX,AL
设置第3片8255A工作方式:A、B口采用方式0,A口输出,B口输出,C口低四位输入。
MOV DX,MY8255_3
MOV AL,81H
OUT DX,AL
设定8253计数器0的工作方式为方式2:
MOVDX,MY8253
MOV AL,34H
OUTDX,AL
给计数器0装入初值2000:
MOVDX,MY8253_C0
MOVAX,2000
OUTDX,AL
MOVAL,AH
OUTDX,AL
设定8253计数器1的工作方式为方式0:
MOVDX,MY8253
MOV AL,70H
OUTDX,AL
给计数器1装入初值250
MOVDX,MY8253_C1
MOV AX,250
OUTDX,AL
MOVAL,AH
OUTDX,AL
3.3 点阵LED显示
要得到相应的图形,必须分析图形显示的字码表,该16×16的LED显示屏分为四块256个点,每个点高低电平代表灯的亮灭。同样,将字码分为四个板块,编码顺序为左上角、左下角、右上角、右下角。用二进制数表示极为方便,“1”即代表高电平,使灯点亮,“0”即代表低电平,使灯熄灭。根据想显示的字“待机”、“欢迎”、“再见”编出字码表。
3.4 数码管延时模块
将第三片8255A的A口输出赋值给数码管,再调用延时子程序。部分代码如下:
MOV DX,PORTA2
OUT DX,AL
CALL DELAY
ET
延时子程序里分别给BX、CX寄存器赋值如下:MOV BX,58H
MOV CX,46H,延时的时间大约为1秒。
图1 整体硬件原理图
4 仿真调试结果展示
图2 仿真结果
5 总结
该点阵LED系统的设计将实际硬件设施模拟到软件上使用,方便地检验了代码的正确性。经Protues仿真运行成功,可以投入硬件设施做出实品。