51例程 led點陣

2021-08-10 05:10:16 字數 1644 閱讀 1121

一、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....