单片机数字钟显示不出来

本人用89C52做了一个6位LED数码显示数字钟,硬件焊接好了之后,烧入程序了,但是一调试,所有的数码管都只显示1,不知到为什么,按了其他键也没用,求各位大虾帮帮忙,告诉我常见的可能引起这种问题的原因

1、先要排除硬件问题。很简单,首先搞清楚,数码管是否使用正确。是共阳极的还是工阴极的。测试方法也很简单,如果是共阳极的数码管,就在另外一端接地,看数码管亮不亮。共阴极的则想反。最后,用一个最简单的程序,去测试数码管是否工作正常。如果正常,说明,电路没问题。
(以我个人经验,如果电路是你自己做的,对于初学者来说,很可能是电路不正确。)
2、测试程序有没有问题。方法如下,可以找一个同样的电路板,当然要求是肯定好使的。把你的程序在该电路上测试,是否正确。或者,用PROTUS仿真软件进行调试。
(我建议使用前一方案,因为你很可能不知道仿真软件的用法)

给我加分来~!:)
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-14
给你我写的程序,我做实验时候没问题,你自己看看吧
S8279 EQU 0FF82H
D8279 EQU 0FF80H
HOUR EQU 08H ;存放小时十位
HOUR1 EQU 09H ;存放小时个位
H_M EQU 10H
MIN EQU 11H
MIN1 EQU 12H
M_S EQU 13H
SEC EQU 14H
SEC1 EQU 15H

ORG 0000H
LJMP START
ORG 001BH
LJMP T1_INT
ORG 0040H

START:
MOV SP,#60H
LCALL SET_8279
MOV A,#00H
MOV HOUR,A
MOV HOUR1,A
MOV MIN,A
MOV MIN1,A
MOV SEC,A
MOV SEC1,A
MOV A,#80H
MOV H_M,A
MOV M_S,A
CLR C
MOV TH1,#4CH
MOV TL1,#00H
MOV TMOD,#10H
SETB ET1
SETB TR1
SETB EA
MOV R3,#20
LOP:
JNC LOP ;c=1说明到1秒
CLR C
LCALL AJUST ;时钟调整
LCALL SWITCH
LCALL DISPLED
;LCALL CLEAR
AJMP LOP

SET_8279:
LCALL DELAY
MOV DPTR,#S8279
MOV A,#00H
MOVX @DPTR,A
MOV A,#0D3H
MOVX @DPTR,A
RET

DELAY:
PUSH B
MOV B,#10H
DELAY1:
MOV R2,#0FFH
DJNZ R2,$
DJNZ B,DELAY1
POP B
RET

T1_INT:
CLR TR1
MOV TH1,#4CH
MOV TL1,#00H
SETB TR1
DJNZ R3,EXIT
MOV R3,#20
SETB C
EXIT:
RETI

AJUST:
MOV A,SEC
INC A
CJNE A,#60,A1
MOV A,#00H
MOV SEC,A
MOV A,MIN
INC A
CJNE A,#60,A2
MOV A,#00H
MOV MIN,A
MOV A,HOUR
INC A
CJNE A,#24,A3
MOV A,#00H
MOV HOUR,A

A1:
MOV SEC,A
AJMP OVER
A2:
MOV MIN,A
AJMP OVER
A3:
MOV HOUR,A
OVER:
RET

SWITCH: ;将待显示数据转换成显示码
PUSH HOUR
PUSH MIN
PUSH SEC
MOV A,HOUR
MOV B,#10
DIV AB
PUSH ACC
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV 36H,A ;MOV TO HOUR1
POP ACC
MOVC A,@A+DPTR
MOV 37H,A ;MOV TO HOUR

MOV A,MIN
MOV B,#10
DIV AB
PUSH ACC
MOV A,B
MOVC A,@A+DPTR
MOV 33H,A ;MOV TO MIN1
POP ACC
MOVC A,@A+DPTR
MOV 34H,A ;MOV TO MIN

MOV A,SEC
MOV B,#10
DIV AB
PUSH ACC
MOV A,B
MOVC A,@A+DPTR
MOV 30H,A ;MOV TO SEC1
POP ACC
MOVC A,@A+DPTR
MOV 31H,A ;MOV TO SEC
POP SEC
POP MIN
POP HOUR
RET

;DISP: ;设定显示位置
;PUSH R0
;MOV R0,#30H
;MOV R1,#SEC1
;CYC:
;MOV A,@R1
;MOV @R0,A
;INC R0
;DEC R1
;CJNE R0,#38H,CYC
;LCALL DISPLED
;POP R0
;RET

DISPLED:
MOV DPTR,#S8279
MOV A,#90H
MOV R1,#30H
MOV R2,#08H
MOV DPTR,#D8279
LED:
MOV A,@R1
MOVX @DPTR,A
INC R1
DJNZ R2,LED
RET

;CLEAR:
;MOV PSW,#00H
;CLR C
;RET

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,80H ;0,1,2,3,4,5,6,7,8,9,.

END本回答被网友采纳
第2个回答  2008-06-04
先确定是软件问题还是硬件问题
然后编写测试程序,加入按键(中断方式)停止,用万用表测量端口电压
最后,这个现象还跟你采用的显示方式有关
循环方式,中断显存方式等等。还有可能是你显示的太快了,没有延时。
第3个回答  2008-06-04
检查有没有正确编码,要先对数码管结合接法正确编码
第4个回答  2008-06-03
你可以先烧入简单的程序,确定不是硬件问题,然后找出不是硬件问题后,看看你现在的程序!改好仿真完就OK了,希望对你有用

单片机数字钟显示不出来
1、先要排除硬件问题。很简单,首先搞清楚,数码管是否使用正确。是共阳极的还是工阴极的。测试方法也很简单,如果是共阳极的数码管,就在另外一端接地,看数码管亮不亮。共阴极的则想反。最后,用一个最简单的程序,去测试数码管是否工作正常。如果正常,说明,电路没问题。(以我个人经验,如果电路是...

...的原理和相关电路图焊接了一个简单的电子时钟,不能正常显示...
情况一:数字图形显示正常,但数字显示的位置不对;可以检查下引脚的焊接电路,是引脚焊错导致的。情况二:数字图形显示不正常,则是现实模块阴阳极焊接顺序焊接反了。情况三:数字图形和位置显示都正常,但是位置、顺序错乱,该显示的没显示,不应显示的却显示了,则是编程出的程序出错,应检查编程的程序。

c51单片机数字时钟LCD显示时有时候切换到设置时间,屏幕卡住不显示是怎...
很可能程序编写的地方出现乱序或死循环,应该好好检查一下切换设置时间的子程序那一段。

单片机数字钟,有问题,显示乱码,谁给检查下!
显示的情况能不能描述具体一点,先要排除硬件电路的问题。特别注意你的数码管显示是阴级驱动还是阳极驱动的。这关系到dispcode[]的内容。你可以稍微改变一下程序,如下所附注。能不能正常显示1~6的数,以验证是否硬件上的问题?即使是程序上的问题,也便于修改你的显示部分程序,只要能实现正确显示这一...

用51单片机编写数字钟出问题了,求高手解答
你在程序里的"shi""fen""miao"寄存器是按全局变量用的,所以在display()子程序中不要在设置形参了,直接修改这三个寄存器就好了。另外注意定义变量时候的类型uchar和char ...\/\/void display(char shi,char fen,char miao)void display()...\/\/display(shi,fen,miao);display();...附件里有改的...

单片机数字钟,开机时显示12:00:00
1、编写代码:使用所选单片机的编程语言(如C、C++、Python等),编写程序代码来实现数字钟功能。可以使用定时器来计时,并在开机时将显示设置为12:00:00。2、显示控制:连接合适的显示设备(如7段LED显示器、LCD显示屏等),通过控制单片机的输出端口,将正确的数字显示在显示器上。3、初始化设置:...

单片机数码管这个问题怎么解决?
用两个锁存器,限流电阻用8个就好了,即一个排阻就行。数字钟也是用动态扫描的方法实现的,不然的话得多么占资源啊。动态扫描是一个一个点亮的,但由于扫描的速度很快,所以人眼看起来是8个管同时亮的。这是利用了人眼视网膜的视觉暂留性。

新手求教~~~单片机数字钟问题,麻烦帮我解释下这张图
2、图中4位数码管的 数据段选,使用单片机同一排端口,且没有 锁存器隔离,所以只能做 动态显示,那么数码管 的 位选端 就需要 单片机控制,而由于单片机 拉电流(输出电流驱动能力)不足以驱动数码管,所以采用 电源供电的方法,而又需要单片机控制,于是采用 单片机控制 三极管 给数码管 供电。而...

单片机做的数字钟不走怎么办??求解!!!
写一个按键KEY1程序,按下KEY1,就执行write_1302(0x8e,0x00);\/\/让时钟走动 0x8e这个寄存器里面最高位置0,秒走到,正常走时,最高位置1,秒不走到;而第一次开机这个0x8e寄存器里面的最高位默认为1,以后断了5V电,再开机有如下两种情况:1.没有安装后备3V电池,通5V主电后显示默认时间,并且秒依然...

求救:为什么用单片机做的数字时钟,秒走的不均匀,时快时慢。仿真的时候...
ds1302时钟芯片是不断地读取内部数据送到外部显示的,仿真的时候用的是系统时间,如果出现时快时慢,要么是CPU负载100%卡了,要么就是你的显示程序不合理,显示程序没有实时地反应秒的状态。我以前做的都没这情况。显示刷新专门放在一个定时器里定时刷新 ...

相似回答
大家正在搜