微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 平凡单片机教学 第二十三讲 动态扫描显示接口

平凡单片机教学 第二十三讲 动态扫描显示接口

时间:11-22 来源:互联网 点击:

L0,#LOW(65536-2000)

SETB FIRST

SETB SECOND ;关显示

MOV A,#DISPBUFF ;显示缓冲区首地址

ADD A,Counter

MOV R0,A

MOV A,@R0 ;根据计数器的值取相应的显示缓冲区的值

MOV DPTR,#DISPTAB ;字形表首地址

MOVC A,@A+DPTR ;取字形码

MOV P0,A ;将字形码送P0位(段口)

MOV A,Counter ;取计数器的值

JZ DISPFIRST ;如果是0则显示第一位

CLR SECOND ;否则显示第二位

AJMP DISPNEXT

DISPFIRST:

CLR FIRST ;显示第一位

DISPNEXT:

INC Counter ;计数器加1

MOV A,Counter

DEC A ;如果计数器计到2,则让它回0

DEC A

JZ RSTCOUNT

AJMP DISPEXIT

RSTCOUNT:

MOV Counter,#0 ;计数器的值只能是0或1

DISPEXIT:

POP PSW

POP ACC

RETI

DELAY: ;延时130毫秒

PUSH PSW

SETB RS0

MOV R7,#255

D1: MOV R6,#255

D2: NOP

NOP

NOP

NOP

DJNZ R6,D2

DJNZ R7,D1

POP PSW

RET

DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

END

从上面的程序可以看出,和静态显示相比,动态扫描的程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就可以显示更多位数了。下面给出显示程序的流程图。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top