數碼管動態顯示:
回想一下lesson4最後那個exam,765432,每隔1s減減,與此同時流水燈,減到764398,停;數碼管閃爍,3s後熄滅,同時數碼管點亮hello
t0/t1定時器,中斷是重點,也設定了標誌位,最開始自己寫程式的時候,主要卡在最後數碼管如何點亮輸出hello這裡。是標誌位沒設定好。
1在中斷裡面判斷跟在主函式裡面判斷是不一樣的,判斷啥?判斷num_du與num_we的值
2消隱與動態顯示效果
wela = 1;
p0 = 0xf7;
wela = 0;
p0 = 0;
dula = 1;
p0 = table_du[a/100];
dula = 0;
delay(2);
wela = 1;
p0 = 0xef;
wela = 0;
p0 = 0;
dula = 1;
p0 = table_du[(a%100)/10];
dula = 0;
delay(2);
(1)這裡的p0 = 0用於dula(段選)開啟的時候p0的上次初始值為0(共陰極數碼管給0x00,即數碼管什麼也不顯示),不然就是wela(位選)開啟的時候送的0xf7這個值
(2)delay(2)在這裡是控制兩個數碼點亮的間隔,即動態顯示效果,看起來就像同時控制幾個數碼管一樣。delay(2)人眼看著已經沒有閃爍感了,delay(5)稍微還有一點;在顯示6位數765432的時候還調小了delay(uchar z)裡面的x值,使其閃爍更快
可以嘗試拉長這個值,比如延時1s/delay(1000),那麼第乙個數碼管點亮1s之後,熄滅,同時第二個數碼管亮;第二個數碼管點亮1s之後,熄滅,同時第3個數碼管亮
矩陣鍵盤:
key_scan()函式,帶return 值的寫法,以前沒有完整寫過,自己寫的時候主要卡在無鍵按下的時候,數碼管上有輸出;然後是鬆手檢測不會寫:
while( temp != 0xf0)
以上就是鬆手檢測的思路:鍵盤按下的時候temp肯定不等於0xf0,while表示式為真,始終在迴圈內部,一旦鬆手,此時讀到p3口的值(因為鬆手了,讀到的p3^7~p3^4全為高)送給temp再與0xf0相與,值肯定就等於0xf0了,此時,while(0xf0 != 0xf0)為假,跳出while迴圈
自己寫的時候,不知道display()寫**?
矩陣鍵盤 數碼管動態顯示
我把矩陣鍵盤和數碼管動態顯示綜合起來寫了個程式。這個 的意思是在一開始8個數碼管什麼也不顯示,因為p0的初始值是0x00,當我們按下矩陣按鍵裡的按鍵時,8個數碼管動態顯示該按鍵的鍵值,直到按下了下乙個按鍵,8個數碼管顯示的內容才可能改變。include 目的是每按下乙個按鍵,8個數碼管就動態顯示對應...
1 數碼管動態顯示
1.數碼管介紹 數碼管其實就是相當於由8個led燈拼成的 當然,有些是7段,你看有些數碼管是不是沒有右下角那個點 那麼數碼管有分共陰跟共陽數碼管 大家都知道 led有兩個極,也就是陰極和陽極。數碼管共陰,也就是把所有組成數碼管的led的陰極都接起來,這不就是共陰嘛,然後你想要點亮數碼管的某一段,就把...
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 ...