|
# X8 t) [. q$ P* o/ _3 A. U程序在哪里?2 r' D- G8 D( H) V7 \, C. i
第一:好好看看你的数码管的管脚,共十脚,为什么呢?每个数码管的八个LED的阴极——八个脚,另外两脚就是每个数码管的共阳了,电路如图
/ L0 H% I4 _9 D4 i" x: X
7 z( B% I$ T! b看清楚了,这两个数码管的阴极是并联在一起的,所以你给段码后,两个数码管显示内容当然是一样的!
, ~5 U. i, y) {; }1 S& h这样做对新手是很难的,但节约了单片机的IO口啊——10个IO口控制两个数码管,12个IO口可以控制四个数码管......用的数码管越多,节约的IO口就越多。
$ f, H. {7 H( J第二:这样的数码管显示方法是:利用视觉暂留现象,开一个数码管,显示一下,就关了,马上开另一个数码管,人眼还没有感觉第一个数码管已经关了,第二个又开了,人就认为——是认为,两个数码管都是亮的,四个、八个数码管都是这样显示的举个例子程序吧:
7 K4 J9 V4 ]# a3 W/ R) T假设:上面这两个数码管是这样和单片机连接的:ABCDEFG和DP接在P0口,A在最低位,DP在最高位;DIG1、DIG2分别接在P20、P21上,那么,显示子函数应该是这样的:
9 b; F) h2 g$ pvoid XS(void)//显示子函数
1 N. n+ A& L1 e' N$ p" [: h{( C3 M4 y8 b& O- y, H* I' p! p
DIG1=1;//开第一个数码管
" y- o; E* o( f7 T/ ]9 G& ? P0=0x55;//这个0x55是我随便写的,表示你要显示的第一个内容+ s1 j3 i& ~8 v, f* T) Z
void Delay10ms();//软件延时
; N8 ? V5 {' O DIG1=0;//关第一个数码管
/ R* b% n; c, z: a4 e3 } DIG2=1;//开第二个数码管& c" k, n' i" p- z7 i4 G
P0=0xaa;//这个0xaa是我随便写的,表示你要显示的第一个内容) Z: V. B T8 k0 D* R8 p' b6 S2 p
void Delay10ms();//软件延时) H" u5 g" ?4 y. u& g; ~
DIG2=0;//关第二个数码管
) K E; v) y. U% \% f}2 q) a2 m# {* L; s* f
$ `% Q$ N% Z K* k' ?. A
你试试看
. P: z ~6 P. v" o. E4 d. o |
|