资源说明:数码管显示0-99, CESASSCS
/***************************************************************************
标题: 数码管的显示
效果: 显示00-99,动态显示+变化显示
作者: 启程电子
******************************************************************************/
;脚功能定义
SMG_q EQU P3.4 ;定义数码管阳级控制脚,千位
SMG_b EQU P3.5 ;定义数码管阳级控制脚,百位
SMG_s EQU P3.7 ;定义数码管阳级控制脚,十位
SMG_g EQU P3.6 ;定义数码管阳级控制脚,个位
;定义数据RAM空间
LDB EQU 36H ;定义一个变量存放显示值
;数据存放
ORG 0100
TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H ;表:共阳数码管 0-9
ORG 0000H
LJMP MAIN
ORG 0200H
MAIN: MOV DPTR,#TABLE
M0: MOV LDB,#0 ;变量复值0
M1: MOV R7,#50 ;两级R7与R6组成12800次刷新,约1秒,如果要精确时间,可以用到定时器,请看例13
M2: MOV R6,#255
M3: CLR SMG_s ;选择十位数码管
MOV A,LDB ;将变量值除以10,商为十位值,余为个位
MOV B,#10 ;
DIV AB ;相除后获得十位和个位的值存放A和B中
MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P0口,显示相应的内容
MOV P0,A
LCALL DELAY ;延时,停留一会,让人眼感触到它的亮度
MOV P0,#0FFH ;清除数码管显示,因是共阳型,所以不是0
SETB SMG_s ;关闭十位数码管
CLR SMG_g ;选择个位数码管
MOV A,B ;个位显示
MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P0口,显示相应的内容
MOV P0,A
LCALL DELAY ;延时,停留一会
MOV P0,#0FFH ;清除数码管显示
SETB SMG_g ;关闭个位数码管
M4: DJNZ R6,M3
DJNZ R7,M2 ;12800次刷新,约1秒
MOV A,LDB
CJNE A,#99,M5 ;如果LDB变量值等于99就回到0开始,因为只有两位数码管,不能显示更多位
LJMP M0
M5: INC LDB
LJMP M1 ;
DELAY: MOV R5,#10 ;此次延时子程序不用很长时间
DJNZ R5,$
RET
END
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。