MAX7219驱动数码管显示完全不对

做毕业设计,卡了2礼拜了,求救。用max7219驱动3个七端数码管,上电全显示8.用了示波器测试,链接数码管公共端的三个脚均有电平变化。制板了2次,应该不会有问题,程序在... 做毕业设计,卡了2礼拜了,求救。用max7219驱动3个七端数码管,上电全显示8. 用了示波器测试,链接数码管公共端的三个脚均有电平变化。制板了2次,应该不会有问题,程序在Proteus中仿真时完全正常显示520,求各位高手帮忙解决问题。汇编程序和PROTEL图如下:

;单片机与HD7279接口定义
CLK EQU P1.0
DIN EQU P1.1
LOAD EQU P1.2

ORG 0000H
LJMP DISP
ORG 0090H ;
;7219初始化
DISP:
MOV A,#09H ;置译码器方式寄存器地址
MOV R7,#0FFH ;选择译码方式
LCALL MAX7219 ;写入

MOV A,#0AH ;置亮度寄存器地址
MOV R7,#05H ;选择占空比
LCALL MAX7219 ;写入

MOV A,#0BH ;置MAX7219显示扫描位数寄存器地址
MOV R7,#02H ;选择3位显示方式
LCALL MAX7219 ;写入

MOV A,#0CH ;置关闭显示寄存器地址
MOV R7,#01H ;选择进入正常工作,00H表示关闭
LCALL MAX7219 ;写入

;显示数据
MOV 30H,#05H
MOV 31H,#02H
MOV 32H,#00H

MAIN: MOV R0,#30H

CLR P1.2 ;
MOV R1,#01H ;指向第0位LED
MOV R3,#03H ;显示器个数
LOOP: MOV A,@R0 ;取显示缓冲区数据
MOV R7,A ;显示2
MOV A,R1 ;LED显示的位地址给A
LCALL MAX7219 ;
INC R0 ;指向下一个显示数据
INC R1 ;指向下一位LED
DJNZ R3,LOOP ;

SJMP MAIN

;MAX7219子程序
MAX7219:
CLR P1.2 ;将LOAD信号拉低
LCALL XH1 ;一位字节送入7219
MOV A,R7 ;
LCALL XH1 ;
NOP
NOP
SETB P1.2 ;产生LOAD上升沿,锁存数据
RET

XH1: MOV R2,#08H ;总共有8位,移8次
NEXT: CLR P1.0 ;将CLK拉低
RLC A ;A中值左移入进位累加器C中
MOV P1.1,C ;给DIN口
NOP
SETB P1.0 ;CLK上升沿,移入数据
NOP
DJNZ R2,NEXT ;没完成则继续
RET

SHORT_DELAY:
MOV 10H,#40 ;10ms
DEL1: MOV 11H,#125
DEL2: DJNZ 11H,DEL2 ;125*2us=0.25ms
DJNZ 10H,DEL1 ;0.25ms*40=10ms
RET

END
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
匿名用户
2010-12-05
展开全部
把复位电路改一下吧。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式