熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2019-1-11 15:44
正文摘要:本人單片機(jī)小白,只會(huì)用玩同一個(gè)IO口4*4的矩陣。在一個(gè)IO口上可以用十六進(jìn)制設(shè)置4個(gè)引腳高,4個(gè)引腳低,P1=0xF0; 12*3的36個(gè)燈怎么驅(qū)動(dòng),想了一天了跪求大佬 |
兩個(gè)P0總共可以驅(qū)動(dòng)8*8=64個(gè)燈,方式原理與4*4一般 |
動(dòng)態(tài)掃描,Proteus仿真。![]() |
wulin 發(fā)表于 2019-1-11 17:59 大佬牛逼,這么多方法,我還是覺(jué)得這種比較易實(shí)現(xiàn)多種功能組合 |
根據(jù)你的電路用動(dòng)態(tài)掃描方式,列提供數(shù)據(jù),行掃描,頻率在50*12Hz,每次單片機(jī)一個(gè)引腳上只有一個(gè)LED點(diǎn)亮,關(guān)鍵程序的寫(xiě)好,單片機(jī)引腳能承受電流的20MA,要加限流電阻。 |
本帖最后由 wulin 于 2019-1-12 08:00 編輯 最簡(jiǎn)單的方法就像操作數(shù)碼管一樣,設(shè)置unsigned int 數(shù)組控制行,設(shè)置unsigned char 數(shù)組控制列,把不同組的端口組合成一個(gè)unsigned int變量來(lái)操作。參看我以前的回壇友的帖子:“異組端口組成矩陣鍵盤(pán)的讀寫(xiě)操作方法”。也可以按點(diǎn)陣LED方法驅(qū)動(dòng)。 |
可以考慮采用掃描方式控制,只要掃頻大于20Hz,人眼基本就分辨不出來(lái)。 |
其實(shí),這是個(gè)數(shù)學(xué)分解質(zhì)因素的問(wèn)題。 |
如果必須用8個(gè)IO來(lái)做可以這樣:4*3*3。 3*3用6個(gè)IO可以做成9個(gè)驅(qū)動(dòng),這樣的驅(qū)動(dòng)做4組,這4四組用剩下的兩IO做選通,剛好可以有4個(gè)狀態(tài)的選通。不過(guò),3*3之后,如何再被選通要下功夫了。需要增加其它器件,得不償失。 所以幾乎無(wú)人采用這種方式,但作為學(xué)習(xí),你可以按照這個(gè)思路試試。 大多會(huì)采用6*6的方案。即用12個(gè)IO口。 |
相信P0,P2的數(shù)據(jù)你都會(huì)了,P1可以這樣表示:第一行P1=10000000B,第二行P1=01000000B,第三行P1=00100000B |
如法炮制:6高6低。 |
相信P0和P2的數(shù)據(jù)你都會(huì)了,P1你可以這樣:P1=10000000B 表示第一行,P1=01000000B表示第二行,P1=00100000B表示第三行 |
要L1頭一個(gè)燈亮,p10低,p11與p12高,p20高,p21-p27以及p00-p03全低。 要L1第二個(gè)燈亮,p10低,p11與p12高,p21高,p20-p27以及p00-p03全低。 。 。 。 要L2頭一個(gè)燈亮,p11低,p10與p12高,p20高,p21-p27以及p00-p03全低。 。 。 。 以此類推。 |
P1=0xF0是全亮啊,你這36個(gè)LED也是要全亮和全滅嗎? 全亮:P1&=0xf8;P2=0xff;P0|=0xff; 全滅:P1|=0xff;P2=0xff;P0|=0xff; 好久沒(méi)搞51了,都不敢肯定對(duì)不對(duì)。。。 |
Powered by 單片機(jī)教程網(wǎng)