以前写过一个关于可控流水灯的博文,可见下面的链接:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/5adeb99112822680a877a415.html/
后来有许多网友留言,询问制作硬件电路的方法。
其实,上文中的电路,并不是实际的硬件电路,其中的数码显示器,是使用了 PROTEUS 中的仿真元件。
如果想要制作硬件电路,这个仿真的元件就必须更换为七段译码器芯片,选用 CD4511、74LS48 这些译码器都可以。
如果采用软件译码,也可以省掉译码芯片,这更体现了单片机的智能特点。
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/5ae768514fc2d5620620cba1e71190ef77c66cb7.html
图中使用了共阴的数码管,这是应网友的要求来设计的,其实,采用共阳极的更好一些。
另外,在网友的电路板上,P3.0、P3.1 已经用于串口通信(STC单片机下载程序用),再当做按键输入端,也不适合了,所以,就把两个按键,挪到 P3.4、P3.5 上去了。
图中的元件参数都已经标注清楚,可以按照这些参数(允许在一定范围内变动)购置硬件,焊接电路板。
====================================================
电路进行了局部的改动,原博文中的程序,也要有相应的改动。
改好的程序如下:
ORG 0000H
JMP START
ORG 0003H
JMP X0_INT
ORG 000BH
JMP T0_INT
ORG 0013H
JMP X1_INT
;---------------------------------
START:
MOV TMOD, #51H ;/*01010001 T1计数,T0定时*/
MOV TH0, #HIGH(65536 - 50000) ;50ms@12MHz
MOV TL0, #LOW (65536 - 50000)
MOV TH1, #0
MOV TL1, #0
SETB TR0
SETB TR1
SETB IT0
SETB IT1
MOV IE, #10000111B
MOV R7, #20
MOV 30H, #20
MOV 31H, #0
MOV 32H, #0
MOV P2, #06H ;显示1
SJMP $
;---------------------------------
T0_INT: ;50ms执行一次
MOV TL0, #LOW (65536 - 50000) ;重新写入初始值
MOV TH0, #HIGH(65536 - 50000) ;50ms@12MHz
;------------------
JIA:
JB P3.4, JIAN
JNB P3.4, $
DEC 30H ;加速
MOV A, 30H
JNZ XXX ;不能让它为0
INC 30H
XXX:
;------------------
JIAN:
JB P3.5, XIANSHI
JNB P3.5, $
INC 30H
MOV A, 30H
SUBB A, #80
JC CCC
MOV 30H, #80
CCC:
;------------------
XIANSHI:
DJNZ R7, T0_END
MOV R7, 30H
INC 32H
ANL 32H, #7
;------------------
MOV A, 31H
ANL A, #3
RL A
RL A
RL A
ADD A, 32H
MOV DPTR, #HUA_Y
MOVC A, @A+DPTR
CPL A
MOV P1, A
;------------------
T0_END:
RETI
;---------------------------------
X0_INT: ;设置花型
CALL DL10MS
JB P3.2, X0_END
INC 31H
ANL 31H, #3
MOV A, 31H
MOV DPTR, #TAB
MOVC A, @A + DPTR
MOV P2, A
X0_END:
RETI
TAB:DB 06H, 5BH, 4FH, 66H
;---------------------------------
X1_INT: ;启动/停止
CALL DL10MS
JB P3.3, X0_END
CPL TR0
X1_END:
RETI
;---------------------------------
HUA_Y:
DB 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
DB 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
DB 0x81,0x42,0x24,0x18,0x81,0x42,0x24,0x18
DB 0x18,0x24,0x42,0x81,0x18,0x24,0x42,0x81
;---------------------------------
DL10MS:
MOV R5, #10
MOV R6, #249
DJNZ R6, $
DJNZ R5, $ - 2
RET
;---------------------------------
END
====================================================
大家可以和原文对照比较,看看都做了那些改动。