吴昂
摘要:本文主要探讨和讲述了在DVCC环境下,通过8255并行I/O端口扩展,将LED的流水式显示与数码管的跑马灯应用结合,同时通过程序加以协同控制,达到了LED与数码管同时轮转点亮的效果。硬件电路设计上采用了与数码管数量相对应的“6位分组控制”的形式,简化了程序设计;延时程序采用了寄存器控制可变延时的模式,可灵活同步控制LED与数码管的轮转点亮速率。本文的整体设计已在单片机课程的教学实验环节中多次使用,教学效果反映良好。
关键词:DVCC 8255 延时程序 6位分组控制
一、DVCC系列单片机仿真实验系统简介
DVCC系列单片机仿真实验系统由仿真技术及模块化实验电路结合而成,可用于MCS-51、MCS-96系列单片机的教学实验与仿真开发。该系统模拟用户开发环境,可与PC机联机,实现用户程序的编辑、编译与调试运行。DVCC仿真实验系统配备有8255、8251、8155等单片机常用接口芯片,脉冲发生器,步进电机,继电器,EPROM编程器等多种单片机应用设计辅助单元。本文主要涉及到数码管控制与8255并行I/O端口扩展对LED的控制。
二、详细设计
1.数码管控制
DVCC实验箱提供了6个数码管,其电路连接封装于实验箱内部,无需手动连线,使用极为简单。6个数码管的字形口地址为0FF22H,位选口地址为0FF21H;由16位寄存器DPTR或8位寄存器R0、R1控制皆可。
2.8255并行I/O端口扩展对LED的控制
DVCC实验箱提供了共12个LED,可直接通过MCS-51单片机I/O口(如P1)控制,也可由外围芯片(如8255)扩展控制,需通过插针线手动连接。在基本LED的流水式显示实验中,可选择MCS-51单片机P1口控制8个LED由进行;若需要控制所有12个LED,则需要由P1口和P2口共同控制。但是,如果将12个LED的流水式显示与数码管的跑马灯应用结合,则P2口必须用作数码管等外围设备的高8位地址位,无法和P1口共同控制LED,所以需要将12个LED的控制交由扩展芯片(如8255)完成。此时,需要合理分配使用3个地址寄存器(即DPTR、R0和R1),才能有效同时控制12个LED与6个数码管。本文选取DPTR动态控制8255的控制口、数码管的字形口与位选口,R0和R1分别控制8255的A口和B口(默认地址高8位为0FFH)。
3.六位分组控制
在确定8255的A口和B口控制LED后,需要从A口和B口共16位中选取12位逐一控制12个LED,本文选取了PA0~PA5和PB0~PB5共12位分别控制LED1~LED12,即“六位分组控制”。
将12个LED“六位分组控制”,分成2组,正好与6个数码管在数量上对应。这种分配方案的最大好处是可用1个寄存器(如累加器)同时控制一组LED与6个数码管,然后再用该寄存器控制另一组LED与6个数码管。反映在程序中则以对称的形式表现,代码的两部分完全对应,简洁易懂(可参见本文最后的程序清单)。
4.8255的A口与B口切换控制
将12个LED“六位分组控制”形成两组后,由于在流水式显示中任意时刻只使用两组中的某一组,所以用一个寄存器控制即可。不过,这里需要有一个切换开关,指示寄存器当前控制的是两组寄存器中的哪一组,即选用PA口连接还是PB口连接的LED。比较直观的解决方法是设置一个标志位作为开关,本文选取的程序状态字PSW中的用户自定义标志F0。
三、程序清单
ORG 0000H
MOV SP,#60H
CLR F0
MOV DPTR,#0FF2BH ;設置8255控制口地址
MOV A,#80H
MOVX @DPTR,A ;设置8255工作方式
MOV DPTR,#0FF22H ;设置数码管字形口地址
MOV A,#80H
MOVX @DPTR,A ;选定字形为数字"8"
MOV DPTR,#0FF21H ;设置数码管位选口地址
MOV R0,#29H ;设置A口地址
MOV R1,#2AH ;设置B口地址
ST:MOV A,#01H
CPL F0 ;置换开关F0
NEXT:JNB F0,L1
MOVX @DPTR,A ;选定数码管字位
MOVX @R0,A ;选定A口使用位
PUSH ACC ;保存A口使用位
CLR A
MOVX @R1,A ;将B口清零
POP ACC ;载入A口使用位
MOV R7,#25H
LCALL DELAY ;调用延时
AJMP L2
L1:MOVX @DPTR,A ;选定数码管字位
MOVX @R1,A ;选定B口使用位
PUSH ACC ;保存B口使用位
CLR A
MOVX @R0,A ;将A口清零
POP ACC ;载入B口使用位
MOV R7,#25H
LCALL DELAY ;调用延时
L2:RL A
JB ACC.6,ST
AJMP NEXT
DELAY: PUSH 07H
DELAY1: PUSH 07H
DELAY2: PUSH 07H
DELAY3: DJNZ R7,DELAY3
POP 07H
DJNZ R7,DELAY2
POP 07H
DJNZ R7,DELAY1
POP 07H
DJNZ R7,DELAY
RET
END
参考文献:
[1]胡辉.单片机原理与应用[M].中国水利水电出版社,2011-02.
[2]东南大学计算机科学与工程系.DVCC系列单片机微机仿真实验系统[M].启动计算机厂有限公司