一、led點陣發光原理
(1)8*8單色微控制器結構圖如下:
從電路圖中很簡單的就可以看出來,想要點亮點陣中的某乙個led燈。只要使得那個燈所在的行輸出高電平,所在列輸出低電平就好。
(2)51微控制器中一般用74hc595晶元驅動led點陣,微控制器埠直接驅動。因為直接驅動8*8的點陣需要2個io埠(16個io口)、要驅動16*16的點陣需要4個io埠(32個io口)。使用74hc595驅動16*16點陣只需要4個74hc595+3個io口即可(資料口、sclk、rclk)。
74hc595晶元原理圖如下圖:
(3)74hc595的三個關鍵埠為seg、sclk、rclk。ser進行資料的序列輸入,sclk提供移位時鐘,rclk提供鎖存時鐘。sclk是移位時鐘,595晶元內部在每個sclk的上公升沿會對ser引腳進行一次取樣輸入,就向595內部輸入了1位,如此迴圈8次就輸入了8位二進位制。rclk是鎖存時鐘,qa-qh的8位並行輸出訊號在rclk的上公升沿進行一次鎖存更新。
二、例程,點亮16*16led點陣
(1)、程式設計需要單獨操作1個io引腳,譬如要操作p3.4,但是直接寫p3.4的話c語言是不認識的,而必須使用sbit關鍵字來定義乙個引腳。
eg:sbit ser = p3^4;
#include sbit ser = p3^4; // 74hc595的序列輸入端
sbit rclk = p3^5; // 鎖存時鐘
sbit sclk = p3^6; // 移位時鐘
void main(void)
// 至此已經在8個sclk上公升沿把d1的8位依次全部發出去了
// 但是還沒有進行鎖存,所以qa-qh還沒東西
for (i=0; i<8; i++)
// 至此已經把d1和d2都發出去了,並且d1已經被d2擠到第2個595晶元裡面去了
// 但是還沒有進行鎖存,所以qa-qh還沒東西
for (i=0; i<8; i++)
// 至此已經把d1和d2和d3都發出去了,並且d1已經被d2和d3擠到第3個595晶元裡面去了
// 但是還沒有進行鎖存,所以qa-qh還沒東西
for (i=0; i<8; i++)
// 至此已經把d1和d2和d3和d4都發出去了,並且d1已經被d2、d3、d4擠到第4個595晶元裡面去了
// 但是還沒有進行鎖存,所以qa-qh還沒東西
// 截至這裡,4個位元組的資料d1、d2、d3、d4已經順著74hc595的ser->qh'的序列輸入
// 序列輸出路線,已經爬滿了4個74hc595(最先送出去的到了最後沒乙個595中)
// 但是目前為止4個595的qa-qh還都沒有輸出呢,點陣自然不會亮。
// 然後要進行一次鎖存,4個595晶元同時在進行鎖存,各自鎖存住了自己的資料
rclk = 0;
rclk = 1;
// 這兩句之後595就完成了鎖存,d1-d4就會影響4個595晶元的並行輸出端,進而
// 會影響點陣中led的正負極的值,然後led就會亮或者滅。
}
51例程 字模
1 如何記錄組成字的led點陣亮滅資訊 16 16點陣一共有256點,顯示乙個特定的字需要其中有些點亮而另一些不亮,如何記錄哪些點亮哪些點不亮?用字模 字模如何工作?256個點用256個二進位制位表示,1表示這個點亮,0表示不亮。256個點就是256個二進位制位,也就是256 8 32個位元組。所以...
51的LED點陣筆記
今天的學習進度到了led點陣,其實原理和班上同學在操場上用一堆蠟燭擺乙個心字型差不多。用多個led燈通過一定的組合,亮和滅的操作,達到顯示出字或形狀的效果。說到這個,和昨天學習的數碼管原理也一樣,通過led亮和滅的兩種狀態,把七條橫槓和乙個點組合成數字或字母。原理理解不難。難點 1 led點陣最小有...
點陣迴圈 led移位多檔案例程
main.c include system.h include led.h include dz.h extern uchar flag 1ms 在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。void main void 程式的主函式 dz.c include dz.h 把led....