74hc138解碼器
輸出端y0-y7
(微控制器原理圖中的led1-led8
)受控於三個輸入端a0~a2
(p22 p23 p24
)
a0 a1 a2
相當於表示了乙個三位二進位制數,a0是最低位,a2是最高位,且對應的ya2
a1a0
y_ya
2a1
a0
呈現低電平(有效電平)
數碼管公共端 -> 位選線
連在一起的段線 -> 段選線
通過控制在不同位選線 不同的段選線通電(段選資料不同)以達到在不同位置顯示不同數字的目的
具體看微控制器原理圖即可
動態顯示其實乙個時刻只點亮乙個數字,在24ms內點亮下乙個就會看成是同時亮的
首先是一段轉碼用的
u8 code smgduan[17]
=;//最高位為小數點,如果需要點亮小數點只需 | (0x80)或是 | 128
然後是顯示用的函式
#include
typedef
unsigned
int u16;
typedef
unsigned
char u8;
sbit lsa = p2^2;
sbit lsb = p2^3;
sbit lsc = p2^4;
u8 code ddnum[17]
=;void
delay
(u16 k)
//k=1 -> 10us
void
dig_display
(u8 i, u8 num, u8 dot)
//ith num from right to left, the num to be displayed, whether to light the dot
if(dot)
p0=(ddnum[num]
|128);
else
p0=ddnum[num]
;delay
(100);
p0=0x00
;}
顯示乙個日期的示例程式(以1926.08.17為例)
#include
typedef
unsigned
int u16;
typedef
unsigned
char u8;
sbit lsa = p2^2;
sbit lsb = p2^3;
sbit lsc = p2^4;
u8 code ddnum[17]
=;void
delay
(u16 k)
//k=1 -> 10us
void
dig_display
(u8 i, u8 num, u8 dot)
//ith num from right to left, the num to be displayed, whether to light the dot
if(dot)
p0=(ddnum[num]
|128);
else
p0=ddnum[num]
;delay
(100);
p0=0x00;}
void
main()
}
一旦理解了還是挺容易的,主要是搞明白哪個口在什麼情況下呈現什麼電 51微控制器 數碼管動態顯示 數碼管鬼影
以郭天祥微控制器為例 wei 指 位 位鎖存 duan 指 段 段鎖存 不好的方式 duan 1 開鎖存 p0 0x45 duan 0 關鎖存好的方式 p0 0x45 duan 1 開鎖存 duan 0 關鎖存p0 0x45 wei 1 wei 0 p0 0x45 duan 1 duan 0 p0 ...
51微控制器數碼管詳解
led數碼管是由多個發光二極體封裝在一起組成 8 字型的器件,引線已在內部連線完成,只需引出它們的各個筆劃,公共電極。led數碼管常用的段數一般為7段,有的另加乙個小數點 led數碼管根據led的接法不同,分為共陽和共陰兩類 1.共陽極數碼管 指八段數碼管的八段發光二極體的陽極 正極 都連在一起,而...
51微控制器攻略 數碼管
使用前先明確數碼管是共陰極接法還是共陽極接法,若是共陰極接法,定義char型按位控制其輸出 共陽極與下圖相反 工作方式分為靜態顯示和動態顯示,靜態顯示數碼管必須段選接八位資料線保持字碼。下圖是共陽極數碼管,通過we控制段,p0控制位,四個數碼管共占用12個i o口,若使用74hc573等鎖存器可簡化...