A-A+

已知图9-7 3位共阳型动态显示电路 显示数(≤255)存在内RAM 50H中 试编制3位动

2022-08-13 22:23:43 问答库 阅读 199 次

问题详情

已知图9-7,3位共阳型动态显示电路,显示数(≤255)存在内RAM 50H中,试编制3位动态扫描显示程序(循环10次)。要求显示程序分为3个子程序:

①显示数转换为百、十、个位显示数字,存在30H~32H;
②显示数字转换为显示字段码(需编写字段码表,显示字段码仍存在30H~32H);
③循环扫描显示子程序。

参考答案

编程如下:
①显示数转换为百、十、个位显示数字。
LDIR1:MOV A,50H ;读显示数
MOV B,#100 ;置除数
DIV AB ;产生百位显示数字
MOV 30H,A ;存百位显示数字
MOV A,B ;读余数
MOV B,#10 ;置除数
DIV AB ;产生十位显示数字
MOV 31H,A ;存百位显示数字
MOV 32H,B ;存个位显示数字
RET ;
②显示数字转换为显示字段码(需编写字段码表)。
LDIR2:MOV DPTR,#TAB ;置共阳字段码表首址
MOV A,30H ;读百位显示数字
MOVC A,@A+DPTR ;转换为百位显示符
MOV 30H,A ;存百位显示符
MOV A,31H ;读十位显示数字
MOVC A,@A+DPTR ;转换为十位显示符
MOV 31H,A ;存十位显示符
MOV A,32H ;读个位显示数字
MOVC A,@A+DPTR ;转换为个位显示符
MOV 32H,A ;存个位显示符
RET ;
TAB:DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H;共阳字段码表
③循环扫描显示子程序。
LDIR3:MOV DPTR,#0F7FFH ;置74377地址
MOV R2,#10 ;置循环显示次数
LD30:SETB P1.0 ;百位停显示
MOV A,30H ;取个位字段码
MOVX @DPR,A ;输出个位字段码
CLR P1.2 ;个位显示
LCALL DY2ms ;调用延时2ms子程序
LD31:SETB P1.2 ;个位停显示
MOV A,31H ;取十位字段码
MOVX @DPTR,A ;输出十位字段码
CLR P1.1 ;十位显示
LCALL DY2ms ;延时2ms
LD32:SFTB P1.1, ;十位停显示
MOV A,32H ;取百位字段码
MOVX @DPTR,A ;输出百位字段码
CLR P1.0 ;百位显示
LCALL DY2ms ;延时2ms
DJNZ R2,LD30 ;判循环显示结束否?未完继续
ORL P1,#00000111B ;3位灭显示
RET ;

考点:电路,动态