數碼管是一種半導體發光器件,由發光二極體組成,數碼管可分為七段數碼管和八段數碼管,八段數碼管體七段數碼管多了乙個發起光二極體,也就是右下的那乙個小數點。
按照發光二極體的連線方式,分為共陽極數碼管和共陰數碼管。共陽極數碼管就是將所有的發光二極體的陽極接在一起,形成乙個公共的陽極,共陰數碼管就是將所有二極體的陰極,連線到一起形成乙個公共的陰極。
要想使數碼管發光,就要用驅動晶元來驅動,通常可分為靜態驅動和動態驅動。
靜態驅動就是用乙個io口來控制乙個數碼管的一段,這種方式簡單粗暴,不過會浪費很多io口,比如驅動5個數碼管就需要40個io口。另一種方式是動態驅動。動態驅動,就是採用迴圈掃瞄的方式,每乙個數碼管的斷選都接同樣的數字,然後控制它的位選,來選擇不同的數碼管,也就是說被選擇的數碼管顯示的內容是一樣的,不過數碼管的顯示時間很短,一般為1~2個毫秒,由於人的視覺暫留現象就會發現數碼管還在亮,通俗點就是騙過自己的眼睛,通過分時輪流控制各個數碼管的公共端,就可以使各個數碼管輪流顯示。
國信長天微控制器實訓平台的8個數碼管採用兩個74hc573鎖存器對微控制器的p0可輸出訊號進行鎖存,來增強驅動能力( p0口的輸出訊號非常的弱小,不足以驅動數碼管,所以要用驅動晶元,驅動晶元就像乙個控制器一樣用小訊號來控制大電流,這個大電流的**就是驅動晶元接的電源),u7的鎖定輸入就是段選,u8的鎖存輸入是位選
實現秒錶功能
#include
unsigned
char ucsec=0;
unsigned
int uinum=0;
void
cls_buzz()
//關閉蜂鳴器
unsigned
char smg =
;//"u" "-" " " "."
void
smg_display
(unsigned
char ucdig,
unsigned
char ucseg)
//位選 段選
void
delay1ms()
while
(--i);}
void
smg_disp()
void
timer0init
(void
)//1毫秒@12.000mhz
//定時器中斷服務函式
void
timer1
() interrupt 1}}
void
main()
}
void
smg_display
(unsigned
char ucdig,
unsigned
char ucseg)
//位選 段選
smg [ ]=;為陣列函式,當 [ ]裡面一次放入數字,從0開始。例如, [ 0 ]是中的第乙個,[1]是的第二個。
p0=
1<<
(ucdig-1)
;//選擇數碼管
假如ucdig=1,ucdig-1=0;1<
假如ucdig=3,ucdig-1=2;1<
p0=
0xff
;//消影
delay1ms()
;//消影
因為數碼管顯示時間只有1~2ms,當連續顯示時,由於視覺暫留會同時看到兩個數值,顯示現象變成了影子,可以複製我的程式把消影注釋掉,看看效果。 藍橋杯微控制器學習之動態數碼管
由於藍橋杯的特殊設定,具體請看我的初始化解釋,所以藍橋杯的不同數字展示是和其他數碼管有區別的,因為藍橋杯的暫存器比較少,所以就是需要另乙個知識來實現這個不同數字顯現問題。也就是不停轉換位選來顯現不同位置上的數字,通過分流輪流控制各個數碼管的com端,這就是動態驅動 在一定時間範圍內,儘管不是同時顯示...
CT107D藍橋杯動態數碼管例項(4)
今天我給大家講一下ct107d藍橋杯數碼管的顯示。我們之間找電路吧 這個可以看到,我們直接控制y7c口,向p0口送資料 我們控制y6c口選擇使用哪個數碼管,乙個是8個 我們找到y6c和y7c就好了 這個很熟悉了吧,好了,上使用方法 p2 p2 0x1f 0xc0 開啟y6 p0 0x01 選第乙個 ...
藍橋杯微控制器設計與開發 數碼管
開發板所使用的數碼管為共陽數碼管,所以數碼管的碼字一定要知道,不知道也要會推。uchar code nixie 共陽數碼管碼字 共陽數碼管0 f的碼字如上 所示 y6c控制數碼管的位選端 y7c控制數碼管的段選端 標頭檔案包含 include include 管腳宣告 變數型別宣告 typedef ...