51单片机实现简单的电子表中遇到的问题,求大神解答
这是老师给我们下达的课程设计要求,图中的7SEG是共阳极的
但是因为我们学校今年采购的7SEG是共阴极,现在我不知道具体电路该怎么画……
还有,在PROTEUS中放太多东西的话,会提示CPU EXCESSIVE LOAD,7SEG根本就刷新不过来,直接就没显示了
这是我现在的电路图,去掉了多余的电阻和三极管,等焊接的时候会加上去的
求教大神:
1.PROTEUS中的三极管反应太慢了怎么办?
2.三极管是正向放大,我如果再在后面加上一个74LS04非门(因为7SEG是共阴极),还用不用加其他的电阻什么了?
3.放太多组件PROTEUS提示 CPU EXCESSIVE LOAD后7SEG就没显示了,去掉组件就能正常显示,这是我的代码问题还是大家都这样?
4.有没有办法在不加74LS04的情况下用三极管实现反向放大驱动?
最后~拜谢各路大神……
共阳极是P0口驱动位码,P1口驱动段码就好,不用加放大。共阴极就要加放大,不加直接驱动会很暗。共阴极的这个应该是位码接低电平,段码接高电平时,选中某一位亮,应该在段码加三极管放大吧。
1.PROTEUS数码管如果用扫描方式的话占CPU100%,这个问题一直在伴随着,我平时仿真的时候通常把晶振调到1M以下就可明显好转
2.位扫描不用加74LS04非门,直接把IO口接到数码管上,不加电阻;段扫描保持现状,但程序字段码要变成共阴的。
3.问题同1,请注意数码管不要放在main函数里执行,放中断里效果能好些
4.问题同2。
希望能帮到你。
晶振1Hz也会提示Excessive loaded啊>.<
现在老师规定一定要用三极管,请问我该怎么连呢?B,E,C分别该怎么连啊= = 我不是电气专业的……只是这学期开了单片机课程
数码管的刷新代码要不停重复执行的啊……不然怎么在每个位置显示不同的数字呢?
奉上我的代码,求大神指正
ORG 0000H
AJMP INITSYSTEM
ORG 000BH
AJMP TICK
ORG 0050H
INITSYSTEM:
SW EQU P1.7
DP EQU P2
EN EQU P3
NUM_1 EQU 20H
NUM_2 EQU 21H
NUM_3 EQU 22H
NUM_4 EQU 23H
NUM_5 EQU 24H
NUM_6 EQU 25H
COUNT EQU R1
HOURH EQU R2
HOURL EQU R3
MINH EQU R4
MINL EQU R5
SECH EQU R6
SECL EQU R7
MOV TMOD,#01H ;设定计时器
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB EA
SETB ET0
ACALL RESET
MOV DPTR,#NUM
AJMP READY
READY:
JB SW,$
MAIN:
MOV A,#01H
FLASHLED:;DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MOV DP,#0H
MOV EN,A
MOV DP,NUM_1
RL A
MOV EN,#0H
MOV DP,#0H
MOV EN,A
MOV DP,NUM_2
RL A
MOV EN,#0H
MOV DP,#0H
MOV EN,A
MOV DP,NUM_3
RL A
MOV EN,#0H
MOV DP,#0H
MOV EN,A
MOV DP,NUM_4
RL A
MOV EN,#0H
MOV DP,#0H
MOV EN,A
MOV DP,NUM_5
RL A
MOV EN,#0H
MOV DP,#0H
MOV EN,A
MOV DP,NUM_6
RL A
MOV EN,#0H
AJMP READY
TICK:
INC COUNT
CJNE COUNT,#0AH,TICKOVER
MOV COUNT,#0H
INC SECL
CJNE SECL,#0AH,TICKOVER
MOV SECL,#0H
INC SECH
CJNE SECH,#06H,TICKOVER
MOV SECH,#0H
INC MINL
CJNE MINL,#0AH,TICKOVER
MOV MINL,#0H
INC MINH
CJNE MINH,#06H,TICKOVER
MOV MINH,#0H
CJNE HOURH,#02H,NOT20
INC HOURL
CJNE HOURL,#04H,TICKOVER
ACALL RESET
SJMP TICKOVER
NOT20:
INC HOURL
CJNE HOURL,#0AH,TICKOVER
MOV HOURL,#0H
INC HOURH
TICKOVER:
MOV A,HOURH
MOVC A,@A+DPTR
MOV NUM_1,A
MOV A,HOURL
MOVC A,@A+DPTR
MOV NUM_2,A
MOV A,MINH
MOVC A,@A+DPTR
MOV NUM_3,A
MOV A,MINL
MOVC A,@A+DPTR
MOV NUM_4,A
MOV A,SECH
MOVC A,@A+DPTR
MOV NUM_5,A
MOV A,SECL
MOVC A,@A+DPTR
MOV NUM_6,A
RETI
RESET:
MOV HOURH,#0H
MOV HOURL,#0H
MOV MINH,#0H
MOV MINL,#0H
MOV SECH,#0H
MOV SECL,#0H
RET
NUM:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
复制下来!自己好好学习!