proteus 仿真单片机 两位数码管动态扫描显示乱码

使用两位数码管显示器,利用扫描方式循环显示两位数00~99;程序:SMG3.ASMSTART:MOVR0,#0MOVDPTR,#TABLELOOP:ACALLDISPLA... 使用两位数码管显示器,利用扫描方式循环显示两位数00~99

;程序:SMG3.ASM
START: MOV R0, #0
MOV DPTR, #TABLE
LOOP: ACALL DISPLAY
INC R0
CJNE R0,#100,LOOP
JMP START
DISPLAY: MOV A,R0
MOV B, #10
DIV AB
MOV R1, A
MOV R2, B
MOV R3, #50
LOOP1: MOV A, R2
ACALL CHANG
CLR P2.0
ACALL DLY10mS
SETB P2.0
MOV A, R1
ACALL CHANG
CLR P2.1
ACALL DLY10mS
SETB P2.1
DJNZ R3,LOOP1
RET
CHANG: MOVC A,@A+DPTR
MOV P0,A
RET
DLY10mS: mov r6,#20
D1: MOV R7,#248
DJNZ R7, $
DJNZ R6, D1
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H
DB 99H, 92H, 82H, 0F8H
DB 80H, 90H, 88H, 83H
DB 0C6H, 0A1H, 86H, 8EH
END
展开
 我来答
jianghe706
2012-05-06 · TA获得超过5145个赞
知道大有可为答主
回答量:2213
采纳率:77%
帮助的人:817万
展开全部
你的问题可能如下:
一、大概是动态扫描的时间间隔太长了,通常动态扫描的时间间隔在1-2ms时间,如果时间太长就会出现闪烁的现象。从你的程序看,你的扫描时间间隔好象是10ms!
二、每次循环的次数要足够多,如用1ms时间间隔扫描,你有二个字符要循环,则循环500次,一共是2*500=1000秒,这样才能看清你的显示的内容。如果你只循环10次,显示的时间太短,看不清,就是你说的乱码了!!!
还有,由于PROTEUS仿真的界面实际上是一个动画,默认时是每秒20帧,如果你的显示刚好和这个时间不协调,就可能出现你说的乱码。
总之,你先把显示的刷新时间改为1ms试一下,如果没问题就可以了,还有问题再说吧!
47okey
2012-05-06 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2418万
展开全部
程序没问题。proteus的动态显示1~10MS都正常。
估计问题出在preoteus仿真上。因为软件对三极管支持的不太好,所以显示不正常。
试试去掉三极管,同时改下代码为先高电平点亮,延时,再低电平熄灭。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式