矩陣led顯示,採用**掃瞄,可以實現多級調亮度,動態掃瞄所有led燈亮度同一,不會出現一組led燈點亮的個數不同導致亮度不同,8*8矩陣的單個led燈閃爍(犧牲了亮度,整體亮度會下降乙個級別,但是如果io口的驅動能力比較好的的話是不影響的)
**掃瞄思路:
第一級掃瞄位掃瞄:一段數碼管或者一行led 每個燈都執行相同的時間
第二級掃瞄段掃瞄:當掃瞄完一段之後,將段號或者行號加一,掃瞄下一段
第**亮度掃瞄:當掃瞄完所有段之後亮度cnt加一,從新開始位掃瞄
/* led分布
12 3
45 6
7
*///陽極 碼 陰極取反
// 0~f 數碼管 ,不帶點
const u8 table1=
;// 0~f 數碼管 ,帶點
const u8 table2=
;
定時器中斷中 2ms一次,使用了乙個變數用於判斷led是否需要閃爍
if
(250
==count_2ms_blinking)
void
led_scan
(void
)/*當前掃瞄段號對應bit置1 bit[7:1]*/
ledpositive |
=0x01
<<
(display_section);if
((++display_bit)
< led_bit_sum)
//二級掃瞄 位掃瞄
display_bit=0;
if((++display_section)
< ledgroupsum)
//**掃瞄 亮度掃瞄
display_section=0;
//掃瞄完一輪
//多級調光 if(
(++display_duty)
>= bright_max_rate)
}
51 定時器掃瞄矩陣鍵盤 數碼管顯示
大二的時候學完51寫的乙個綜合程式。用定時器中斷掃瞄行,即行已知 再在主程式中判斷列 得到的行列值帶入顯示函式display 按下鍵顯示,鬆開取消顯示。涉及原理理解,邏輯比較混亂,可讀性低。includeunsigned char i,j,l,r,add 0,temp 注意微控制器的行列對應的引腳 ...
定時器數碼管時鐘
mai.c handlebars include system.h include key.h extern uchar flag 1ms 在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。void main void 程式的主函式 在這裡插入 片key.c include key.h...
定時器控制數碼管2011 1 24
1.利用定時器 計數器t1產生定時時鐘,由p1口控制8個發光二極體,使8個指示燈依次一次一次閃動,閃動頻率為10次 秒,迴圈 2.用定時器以間隔500ms在6位數碼管依次顯示0,1,2,3,c,d,e,f,重複 include include define uchar unsigned char s...