熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-1-14 17:58
正文摘要:單片機(jī)源程序如下: #include <reg51.h> //定義74HC595控制管腳 sbit SCK=P3^6; sbit RCK=P3^5; sbit SER=P3^4; unsigned char matrixLED1[8]={0x00,0x38,0x38,0x38,0xfe,0x7c,0x38,0x10};//LED點(diǎn) ... |
代碼簡(jiǎn)潔源于精妙嚴(yán)謹(jǐn)推敲,看電路寫(xiě)代碼,看代碼連接電路,看電路改代碼,看代碼改電路都是基礎(chǔ),初學(xué)單片機(jī)時(shí),雖然自己有想法能寫(xiě)出來(lái),也希望能多看看別人是如何寫(xiě)的,于是周游論壇,遍覽群書(shū),訪(fǎng)師尋友只是看看,自己歷練才能達(dá)到想要的結(jié)果。級(jí)聯(lián)595演示只有一個(gè)8*8數(shù)據(jù),數(shù)組不再添加任何值,實(shí)現(xiàn)數(shù)據(jù)出現(xiàn)數(shù)據(jù)消失,90度轉(zhuǎn)向,實(shí)現(xiàn)4個(gè)方向花樣。 |
1.gif (562.88 KB, 下載次數(shù): 30)
![]() |
wulin提供代碼,可能需要修改點(diǎn)陣LED的接線(xiàn)圖,要把器件反轉(zhuǎn)180度后,照?qǐng)D連接。這個(gè)需要特別注意。 |
如果想使用595,那么修改一下代碼,增加595部分(紅色文字代碼)的處理即可: P2=rows[i+j]; col_data(rows[i+j]); P0=(1<<j)^255; 電路修改為: ![]() 經(jīng)測(cè)試,是一樣的效果 |
這是我修改后的代碼,沒(méi)有使用595,用P2口代替了 #include <reg51.h> //定義74HC595控制管腳 sbit SCK=P3^6; sbit RCK=P3^5; sbit SER=P3^4; unsigned char rows[24]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x1c,0x3e,0x7f,0x1c,0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void delay(unsigned int a) { while(a--); } void col_data(unsigned char dat) { unsigned char i=0; //循環(huán)8次即可將一個(gè)字節(jié)寫(xiě)入寄存器中 for(i=0;i<8;i++) { SER=dat>>7;//!優(yōu)先傳輸一個(gè)字節(jié)中的高位 dat<<=1; SCK=0; delay(1); SCK=1; delay(1); //上升沿時(shí)數(shù)據(jù)移位 } RCK=0; delay(1); RCK=1; } void main() { unsigned char i,j; while(1) { for(i=0;i<16;i++) { for(j=0;j<8;j++) { P2=rows[i+j]; P0=(1<<j)^255; delay(1300); P0=255; } } } } |
![]()
|
suncat0504 發(fā)表于 2022-1-14 19:49 額。道理懂,但是我就是不太會(huì)改。我這就是掃描列,然后讓列移動(dòng)。 |
最簡(jiǎn)單的方法,就是把 8x8的箭頭圖,變成 16x8 ,其中8x8還是你原來(lái)的箭頭,另外的8x8 為全0,然后讓它 滾起來(lái)。 |
你先搞清楚思路。顯示滾動(dòng)其實(shí)就是利用時(shí)間差,靜態(tài)顯示數(shù)據(jù),形成動(dòng)態(tài)的圖案。這個(gè)時(shí)間差,你可以根據(jù)實(shí)驗(yàn)結(jié)果來(lái)調(diào)整。在某一個(gè)時(shí)刻A圖,間隔一定時(shí)間后,顯示B圖;再次間隔一定時(shí)間顯示C圖...... 具體就是這個(gè)思路。按照這個(gè)思路,如果想在箭頭后清除畫(huà)面,就是發(fā)送能讓LED滅掉的數(shù)據(jù)而已?茨闾峁┑碾娐穲D,應(yīng)該是在顯示箭頭后的數(shù)據(jù)中,向P0口發(fā)送全1數(shù)據(jù)即可。即P0=0xFF; |
我想讓移動(dòng)后無(wú)圖案的數(shù)組清0,應(yīng)該就能熄滅,但不知道怎么弄 |
Powered by 單片機(jī)教程網(wǎng)