|
吐血分享!!!這可是我了一個(gè)多月的研究成果。16×16LED顯示屏的制作,雖然這已不是所謂的“新鮮事物”,淘寶上也有在賣,但這是我自己的作品!另外我又在點(diǎn)陣顯示的基礎(chǔ)上加了一個(gè)蜂鳴器,用來(lái)輸出聲音,比較方便。。。
先說(shuō)一下為什么會(huì)做這個(gè),我是在網(wǎng)上看到一個(gè)視頻,是講一個(gè)老外制作了一個(gè)8×8×8的立體LED,也叫光立方?吹奈沂菬嵫序v,也想自己制作一個(gè),但限于自己的知識(shí)有限,而且我所學(xué)習(xí)的51單片機(jī)根本達(dá)不到控制光立方的計(jì)算速度,所以,就想先做一個(gè)平面的練練手,等以后再向光立方發(fā)展!
先說(shuō)一下此次制作的花費(fèi)(此處為我自己在淘寶網(wǎng)上購(gòu)買時(shí)的報(bào)價(jià)):
LED(5mm) 280×0.1=28元(一般會(huì)多買上十幾二十個(gè)的,萬(wàn)一與壞的不就悲劇咯……);
74LS154(二手) 1×4.5=4.5元;
74HC595 2×0.65=1.3元;
萬(wàn)能板 (18×30cm)1×8.3=8.3元;
再其他的像晶振、三極管、電容電阻的就都幾分或幾毛錢一個(gè),很便宜的。所以總共是也就60元左右吧……
好了,廢話少說(shuō),下面就讓我們進(jìn)行制作吧!
16×16點(diǎn)陣顧名思義就是16×16也就是256個(gè)LED,而用51單片機(jī)控制的話,并不是像我之前所想的簡(jiǎn)單的用單片機(jī)上的32個(gè)I/O接口,16個(gè)控制行,16個(gè)控制列。因?yàn)閱纹瑱C(jī)每個(gè)P口總的輸出電流是有一定限制的,而點(diǎn)亮一個(gè)LED的電流在3—10MA,要是一行或一列LED都點(diǎn)亮的話,初步估計(jì)是20MA×16=320MA,單片機(jī)是承受不了的。所以就得用到三極管的放大作用了,用8550就可以實(shí)現(xiàn)對(duì)LED進(jìn)行驅(qū)動(dòng)。
當(dāng)然在對(duì)LED的操作并不是簡(jiǎn)單的用I/O接口去控制亮、滅,因?yàn)槲覀兿胱屗梢燥@示文字、符號(hào)甚至動(dòng)畫,簡(jiǎn)單的靜態(tài)顯示是遠(yuǎn)遠(yuǎn)達(dá)不到我們的要求的,這就得用動(dòng)態(tài)顯示。動(dòng)態(tài)掃描的意思簡(jiǎn)單地說(shuō)就是逐行輪流點(diǎn)亮,具體就16×16的點(diǎn)陣來(lái)說(shuō),我們把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第一行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第一行使其燃亮一定的時(shí)間,然后熄滅;再送出第二行的數(shù)據(jù)并鎖存,然后選通第二行使其燃亮相同的時(shí)間,然后熄滅;…… 第十六行之后又重新燃亮第一行,這樣反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺(jué)暫留現(xiàn)象,我們就能看到顯示屏上穩(wěn)定的圖形了。
在采用掃描方式進(jìn)行顯示時(shí),每行有一個(gè)行驅(qū)動(dòng)器,各行的同名列共用一個(gè)列驅(qū)動(dòng)器。顯示數(shù)據(jù)通常存儲(chǔ)在單片機(jī)的存儲(chǔ)器中,按8位一個(gè)字節(jié)的形式順序排放。顯示時(shí)要把一行中各列的數(shù)據(jù)都傳送到相應(yīng)的列驅(qū)動(dòng)器上去,這就存在一個(gè)顯示數(shù)據(jù)傳輸?shù)膯?wèn)題。采用串行傳輸?shù)姆椒ǎ刂齐娐房梢灾挥靡桓盘?hào)線,將列數(shù)據(jù)一位一位傳往列驅(qū)動(dòng)器,在硬件方面無(wú)疑是十分簡(jiǎn)單、經(jīng)濟(jì)的。但是,串行傳輸過(guò)程較長(zhǎng),數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動(dòng)器,只有當(dāng)一行的各列數(shù)據(jù)都已傳輸?shù)轿恢,這一行的各列才能并行地進(jìn)行顯示。這樣,對(duì)于一行的顯示過(guò)程就可以分解成列數(shù)據(jù)準(zhǔn)備(傳輸)和列數(shù)據(jù)顯示兩個(gè)部分。這樣一來(lái),時(shí)間就有點(diǎn)長(zhǎng)了,會(huì)對(duì)LED的亮度產(chǎn)生影響。
解決串行傳輸中列數(shù)據(jù)準(zhǔn)備和列數(shù)據(jù)顯示的時(shí)間矛盾問(wèn)題,可以采用重疊處理的方法,即在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù)。為了達(dá)到重疊處理的目的,列數(shù)據(jù)的顯示就需要具有鎖存功能。經(jīng)過(guò)上述分析,可以歸納出列驅(qū)動(dòng)器電路應(yīng)具備的主要功能。對(duì)于列數(shù)據(jù)準(zhǔn)備來(lái)說(shuō),它應(yīng)能實(shí)現(xiàn)串入并出的移位功能;對(duì)于列數(shù)據(jù)顯示來(lái)說(shuō),應(yīng)具有并行鎖存的功能。這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入并行鎖存器進(jìn)行顯示時(shí),串并移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù),而不會(huì)影響本行的顯示。所以在行控制上選用74LS154,在列控制上選用74HC595。下面我們來(lái)說(shuō)一下這兩個(gè)芯片的功能與用法。關(guān)于這兩個(gè)芯片的具體資料由于受篇幅的影響就不在此細(xì)說(shuō)了,可以上網(wǎng)搜索,有中文資料。這里只是大體說(shuō)一下。
74LS154是4/16線譯碼器,由74LS154譯碼后生成16條行選通信號(hào)線,再經(jīng)過(guò)驅(qū)動(dòng)器驅(qū)動(dòng)對(duì)應(yīng)的行線,一條行線要帶動(dòng)16列的LED進(jìn)行顯示,這樣就可以實(shí)現(xiàn)對(duì)行的控制了,當(dāng)然還要考慮電流的問(wèn)題啦,也就是加三極管8550。
74HC595是比較復(fù)雜的,詳細(xì)說(shuō)一下吧。的輸入側(cè)有8個(gè)串行移位寄存器,每個(gè)移位寄存器的輸出都連接一個(gè)輸出鎖存器。引腳14是串行數(shù)據(jù)的輸入端。引腳11是移位寄存器的移位時(shí)鐘脈沖,在其上升沿發(fā)生移位,并將14引腳的下一個(gè)數(shù)據(jù)打入最低位。移位后的各位信號(hào)出現(xiàn)在各移位寄存器的輸出端,也就是輸出鎖存器的輸入端。12引腳是輸出鎖存器的打入信號(hào),其上升沿將移位寄存器的輸出打入到輸出鎖存器。引腳13是輸出三態(tài)門的開(kāi)放信號(hào),只有當(dāng)其為低時(shí)鎖存器的輸出才開(kāi)放,否則為高阻態(tài)。10引腳是移位寄存器的清零輸入端,當(dāng)其為低時(shí)移位寄存器的輸出全部為零。由于11引腳和12引腳兩個(gè)信號(hào)是互相獨(dú)立的,所以能夠做到輸入串行移位與輸出鎖存互不干擾。芯片的輸出端為Q0~Q7,最高位Q7可作為多片74HC595級(jí)聯(lián)應(yīng)用時(shí),向上一級(jí)的級(jí)聯(lián)輸出。但因QH受輸出鎖存器打入控制,所以還從輸出鎖存器前引出了Q7',這里作為與移位寄存器完全同步的級(jí)聯(lián)輸出,已完成2塊595的串聯(lián)使用。
下面說(shuō)一下硬件連接圖。因?yàn)閷?shí)物我還沒(méi)做出來(lái),等實(shí)物完成后再后續(xù)上傳程序吧、、、
總電路圖:
因?yàn)镈XP篇幅太大,不清楚,下面是各個(gè)部分的硬件連接圖。
單片機(jī)最小系統(tǒng):
晶振采用24MHZ的,以此來(lái)獲得更高的刷新頻率,使顯示更加穩(wěn)定。
74LS154連接圖:
這里74LS154對(duì)LED進(jìn)行行控制。
74HC595連接圖:
這里74HC595對(duì)LED進(jìn)行列控制。
好了,整個(gè)的理論制作過(guò)程就是這些了,等原件到了我把實(shí)物焊接好以后,還會(huì)有后續(xù)的程序上傳。會(huì)有驚喜喲!
未完待續(xù)…………
|
|