項(xiàng)目2點(diǎn)陣LED電子顯示屏的設(shè)計(jì)(2)教材_第1頁(yè)
項(xiàng)目2點(diǎn)陣LED電子顯示屏的設(shè)計(jì)(2)教材_第2頁(yè)
項(xiàng)目2點(diǎn)陣LED電子顯示屏的設(shè)計(jì)(2)教材_第3頁(yè)
項(xiàng)目2點(diǎn)陣LED電子顯示屏的設(shè)計(jì)(2)教材_第4頁(yè)
項(xiàng)目2點(diǎn)陣LED電子顯示屏的設(shè)計(jì)(2)教材_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、項(xiàng)目2點(diǎn)陣LED電子顯示屏的設(shè)計(jì)2.1項(xiàng)目描述本模塊的主要內(nèi)容是:運(yùn)用漢字點(diǎn)陣顯示技術(shù)、LED點(diǎn)陣顯示器件等設(shè)計(jì)出一個(gè)具有一定實(shí)用價(jià)值的32*16點(diǎn)LED電子顯示屏。該系 統(tǒng)可實(shí)中英文字符信息顯示,可用在公共場(chǎng)合做流動(dòng)信息顯示。 該系 統(tǒng)應(yīng)用了點(diǎn)陣掃描顯示的原理,以美國(guó)ATME公司AT89S51單片機(jī)為 控制芯片,采用“ Proteus+Keil C ”對(duì)LED電子顯示屏進(jìn)行了仿真, 仿真結(jié)果表明:該系統(tǒng)能達(dá)到預(yù)期的性能要求,證明采用軟硬件結(jié)合, 利用單片機(jī)設(shè)計(jì)LED電子顯示屏的方法是可行的。通過(guò)該項(xiàng)目的學(xué)習(xí) 與實(shí)踐,可以讓讀者獲得如下知識(shí)和技能:學(xué)習(xí)LED點(diǎn)陣器件接口技術(shù);學(xué)習(xí)漢字點(diǎn)陣字模提

2、取技術(shù);學(xué)習(xí)LED點(diǎn)陣掃描顯示工作原理和應(yīng)用方法;培養(yǎng)學(xué)生運(yùn)用C51編寫顯示屏動(dòng)態(tài)顯示的能力;2.2知識(shí)準(zhǔn)備要完成出以上要求的LED點(diǎn)陣顯示屏的設(shè)計(jì),需要具備以下一些 相關(guān)的知識(shí)和技能,下面進(jìn)行闡述。2.2.1單片機(jī)輸入輸出端口單片機(jī)對(duì)數(shù)據(jù)有著靈活、強(qiáng)大的運(yùn)算處理能力,但有些數(shù)據(jù)需要 從外部輸入進(jìn)來(lái),并且有一些數(shù)據(jù)處理好之后,要送到外部控制相應(yīng) 器件動(dòng)作。例如,按鍵與指示電路,沒(méi)鍵按下時(shí)是高電平,當(dāng)有鍵按 下時(shí),會(huì)向單片機(jī)發(fā)出低電平信號(hào),單片機(jī)接收到之后,向指示電路 發(fā)出亮燈電平。這樣,單片機(jī)就用到了對(duì)外的基本接口,也就是單片 機(jī)輸入輸出(I/O ) 口。1、I/O端口硬件結(jié)構(gòu)AT89S51單

3、片機(jī)有四組I/O 口,每組為8位,即一個(gè)字節(jié),它們P0,P2,P3的引腳分別是P0,P1,P2,P3 口。由于精簡(jiǎn)單片機(jī)的引腳,為功能復(fù)用或第二功能引腳。各接口的配置情況如圖2.1所示vcc百匚 ADOn-WTAQQMTAQLftftqd (b)P1端口中的一位(a) P0端口中的一位Ahsrnale Output FunctranInpvt runtrllon(d)P3端口中的一位圖2.1單片機(jī)端口內(nèi)電路上圖中可以看出,四個(gè)I/O都是雙向口,既可以做輸出,又可以 做輸入。其中,P1、P2、P3 口有內(nèi)部上拉,做為輸入輸出時(shí)可以直 接使用。P0和P2可以通過(guò)內(nèi)部控制信號(hào)去轉(zhuǎn)換開(kāi)關(guān),使 P0和P

4、2切 換成地址/數(shù)據(jù)的訪問(wèn)外部空間模式。P0做普通I/O 口使用時(shí),為漏極開(kāi)路輸出,需在外部接上拉電 路以便產(chǎn)生高電平。P0 口做數(shù)據(jù)/地址功能使用時(shí),為推挽式輸出。 P0在輸出地址時(shí)間段里,輸出的是低 8位地址,高8位地址由P2 口 輸出。如果P3 口內(nèi)的鎖存器已經(jīng)寫入 1,那么P3還可啟用復(fù)用功能。P3的復(fù)用功能如表3.1所示表2.1 P3 口復(fù)用功能端口引腳復(fù)用功能P3.0RXD (串行接收接口)P3.1TXD (串行發(fā)送接口)P3.2INT0 (外部中斷0)P3.3INT 1 (外部中斷1)P3.4T0 (定時(shí)/計(jì)數(shù)器0外部輸入口)P3.5T1 (定時(shí)/計(jì)數(shù)器1外部輸入口)P3.6RW

5、 (訪問(wèn)外部空間時(shí)寫信號(hào))P3.7RD (訪問(wèn)外部空間時(shí)讀信號(hào))2、各I/O端口的訪問(wèn)P0P3 口在芯片內(nèi)的地址處于內(nèi)部特殊寄存器段中,其具體地址如分別為 80h,90h,a0h,b0h。(1)基本輸入輸出各端口做普通I/O進(jìn)行數(shù)據(jù)輸入,需先給相應(yīng)的I/O端口寫入數(shù) 據(jù)“ 1”,然后才能正常讀取外線路引進(jìn)的電平。對(duì)于 P0 口,還需要 接外部上拉。否則,有可能讀不到正確的電平信號(hào)。例如,將P2.0的引腳電平讀到位變量x0中bit x0; /定義一個(gè)位變量P2=P2|1; / 將P2.0置1,其它位數(shù)據(jù)不變x0=0;/ 假設(shè)P2.0的電平為低電平,x0記為0if (P2&1) /讀P2 口,并判

6、斷 P2.0是否為1x0=1; /P2.0是高電平,x0記為1各I/O 口作為普通I/O 口的數(shù)據(jù)輸出時(shí),即時(shí)給I/O賦值即可。 例,P仁0xa0;給P1對(duì)外輸出數(shù)值0xa0。不管是進(jìn)行輸入還是輸出操作,在對(duì)I/O 口進(jìn)行編程時(shí),既可以 使用字節(jié)操作方式,也可以進(jìn)行位操作方式。(2)功能復(fù)用當(dāng)有復(fù)用功能或第二功能要使用I/O 口時(shí),相應(yīng)的I/O引腳就不 能做普通I/O使用,否則會(huì)造成數(shù)據(jù)混亂。如 P3.6、P3.7,在對(duì)外 部RAM訪問(wèn)時(shí),P3.6與P3.7是寫、讀控制線,這時(shí)就不能做普通I/O使用P0 口、P2 口做為地址/數(shù)據(jù)功能使用時(shí),可訪問(wèn)外部程序存儲(chǔ)器 或外部RAM存儲(chǔ)器。在訪問(wèn)外部

7、空間時(shí),在地址輸出階段,P0送出地址的低8位,P2送出地址的高8位,然后單片機(jī)產(chǎn)生ALE(地址鎖 存)信號(hào)控制單片機(jī)外部的地址鎖存器存入地址值。由于在整個(gè)操作 周期內(nèi)P2的地址信號(hào)一直有效,一般不對(duì)P2的地址信號(hào)鎖存。在數(shù) 據(jù)階段,P0輸出或輸入數(shù)據(jù)。3、I/O 口的應(yīng)用實(shí)例1按鍵狀態(tài)指示燈控制。P1 口的P1.0到P1.3接有四個(gè)按鍵,P1.4到P1.7有四個(gè)LED發(fā) 光二極管,當(dāng)P1.0按下時(shí),P1.4所接的發(fā)光二極管點(diǎn)亮。P1.1的鍵 對(duì)應(yīng)P1.5的LED其它的以此類推。實(shí)現(xiàn)方法:P1 口做為普通I/O使用時(shí),有內(nèi)部上拉,可以將按 鍵一端接地,另一端直接引腳上。而發(fā)光二極管的發(fā)光,可以利

8、用 P1 口的低電平驅(qū)動(dòng)電流足夠大的特性,來(lái)進(jìn)行驅(qū)動(dòng)。電路設(shè)計(jì)如下:R33Okooooooook.lkk?k-;dodld2dH- E E ErsijftLimJ.LJLiAMJJPO閑MP0 2/ADQKTAL?PO沁3 P0.4/W4 PO.5/AD5RSTP0.7/AD7R2(P2倔PSENP2.3/A11ALEP2.4/A12EAP2.5ZA13 P2.G/A14- P2.咖5P10P3 OffiSCDP1 1P3.1/WP1.2P1.3R3.3AMT1P1JP3.JTOP1.SP3.5/T1IP1.6P36WVRP1.7P3.7/RD23_31A1S9C51J盞弍蘭云去JJ蘭蘭玄蘭k

9、n ooo_S?22?ki o0ak2 0*-a-k3 0oa圖22按鍵狀態(tài)指示燈控制電路圖程序設(shè)計(jì)如下:/實(shí)例1按鍵的狀態(tài)指示燈控制。#in elude sbit key0=P1A0;sbit key1=P1Al;sbit key2=P1A2;sbit key3=P1A3;sbit ledO=P1A4;sbit led 1= P1A5;sbit led2=P1A6;sbit led3=P1A7;void mai n(void)while(1)led0=key0; /key按下為低電平,led為低電平亮led 1= key1; /led2=key2; /led3=key3; /實(shí)例2: RAM

10、T展。在單片機(jī)外部擴(kuò)展32K字節(jié)RAM并編寫程對(duì)其進(jìn)行檢查。實(shí)現(xiàn)方法:P0 P1做地址/數(shù)據(jù)功能使用。對(duì)RAM逐個(gè)字節(jié)寫入數(shù)值Oxaa,然后讀出是否為Oxaa,不相等即為RAM昔誤。電路設(shè)計(jì)如下:ciP33土丄士 土丄MMPD.idOlPD.沁 2陽(yáng)談鄧PD.4i=4WETPD.7/M7ra.i/MF22JAWfsehF2.M11ALE 當(dāng)P7啣地P 訶A14P2?A16Pl Q血呻0F1.fiH l/TXDPUpsjiirroPI 3rsj/ifhtP14 Pl 5円.SHUP1JPITATQdCfil1?21Hf-diHIlflD I 2 3 4 用闍A1A1AIA1Al QPPQ-O-Q

11、Qfi-i 3 4 5 TaII_DOQDDi01m02KIdoKfl5D6oeCf?Q7ACIA1衞局凹“閏總ft-ljlDj&JM 訊KD? ppp PF FrF -o-a-o-a-oppplli?zA10 All mA14Of圖2.3 RAM擴(kuò)展電路圖程序設(shè)計(jì)如下:/實(shí)例2: RAM擴(kuò)展。#in elude #define XBYTE (u nsig ned char volatile xdata *) 0)void error(void)/ram 出錯(cuò)處理程序,自行填寫void mai n(void)un sig ned int add;for(add=0;add J J 5J J j

12、 J J 6 八八了外觀圖T共陰型圖2.4 LED點(diǎn)陣外觀圖2.5 LED共陰共陽(yáng)原理LED點(diǎn)陣顯示器件按能顯示顏色分類,可以單色和彩色顯示器件。 單色LED點(diǎn)陣顯示器件,每一個(gè)窗口內(nèi)只有一只或一種單色發(fā)光二極 管,整個(gè)器件內(nèi)的發(fā)光二極管只能發(fā)出一種色光。 彩色的LED點(diǎn)顯示 器件的每個(gè)窗口內(nèi)有兩種或以上的可發(fā)出不同顏色光的發(fā)光二極管。LED點(diǎn)陣顯示器件按公共端的連接方式分類,可共陰極和共陽(yáng)極 兩種結(jié)構(gòu)。如圖3.5所示,兩個(gè)圖形均為5*7的LED單色點(diǎn)陣顯示器 件。其中,左邊圖為共陰極結(jié)構(gòu)。即把7個(gè)發(fā)光二極管陰極連在一起, 作為一列,共5列。這時(shí)如果需要點(diǎn)亮其中的一個(gè) LED則需要在對(duì) 應(yīng)的行

13、輸入高電平,列輸入低電平,否則不能點(diǎn)亮。比如我們現(xiàn)在要 點(diǎn)亮第4行,第2只LED,則要在點(diǎn)陣塊的9腳加高電平,3腳加低 電平,這時(shí)才能發(fā)光。當(dāng)然還在 2腳或3腳串入限流電阻,以控制 LED的亮度。右邊圖為共陽(yáng)極結(jié)構(gòu)。和共陰極不同的是,對(duì)需要點(diǎn)亮 的LED所在行需加低電平,所在列加高電平。2、字符點(diǎn)陣顯示與字模提取一個(gè)字符若在點(diǎn)陣屏上顯示出來(lái), 那么它就不可能像我們手寫字一樣是連續(xù)的一筆一畫了,而是由一個(gè)點(diǎn)挨一點(diǎn)表示出來(lái),比如在8*8的點(diǎn)陣屏上,點(diǎn)亮顯示出字符 A那么顯示方式可以如圖2.6所示。12 3 4 5 6 7 85嗎首 TCS9IDuI2fiMlb.lB圖2.6字母A點(diǎn)陣圖形圖2.7漢

14、字中點(diǎn)陣圖形在圖中,用實(shí)心圈表示點(diǎn)亮,用空心表示不亮,這樣形成了 A 的點(diǎn)陣圖形。如果用1表示亮,0表示不亮,那么這個(gè)8*8的點(diǎn)陣 來(lái)顯示 A時(shí)的數(shù)據(jù),可以這樣取出。第一行是“00001000”,剛好一個(gè)字節(jié),用十六進(jìn)制表示為0x08。第二行是0x14,后面的按順序?yàn)?0x22, 0x22,0x3E,0x22, 0x22,0x22。這一組 8 個(gè)字節(jié)的信 息就表示字符 A的點(diǎn)陣圖形,這樣的一組信息也稱之為字模。當(dāng) 然還有一種取法就是按列來(lái),第一列為0x00,后面依次為0x00,0x3F,0x48,0x88,0x48,0x3F,0x00??梢?jiàn),按列得到的數(shù)據(jù)與 按行的方式是不同的。這兩種取顯示數(shù)

15、據(jù)均為常用方式,具體使用 哪一種要根據(jù)設(shè)計(jì)出的電路與控制軟件的要求來(lái)決定。一個(gè)點(diǎn)陣顯示屏為了能顯示一屏足夠清晰完整的信息,那么就會(huì)對(duì)顯示屏的點(diǎn)數(shù)提出具體要求。如剛才的例子,顯示屏顯示字符A用的是8*8點(diǎn)陣器件,其實(shí)用5*7的點(diǎn)陣也能達(dá)到人能識(shí)別出 字符 A的目的。為了明了的顯示一個(gè)漢字,我們需要用16*16或更多點(diǎn)數(shù)的點(diǎn)陣來(lái)完成單個(gè)漢字的顯示,如圖2.7所示,就是用16*16點(diǎn)數(shù)的點(diǎn)陣來(lái)顯示漢字“中”的示意圖。當(dāng)我們以橫向取字 模的方式來(lái)獲得數(shù)據(jù)時(shí),第一行的數(shù)據(jù)為“0000 0001 0000 0000”,用兩個(gè)字節(jié)來(lái)表示其十六進(jìn)制值為0x01,0x00,其它15行數(shù)據(jù)可依此類推。這樣不同的字

16、,就有不同的顯示點(diǎn)陣信息,也就有不同 的字模,在使用時(shí)需加以區(qū)分。為了得到不同的字符或漢字的字模,一般常用的方法有兩種, 一是使用字模提取軟件,二是使用集成了常用字符、漢字字模的字 庫(kù)芯片。字模提取軟件,網(wǎng)上有很多,使用者可以根據(jù)自己的需要 下載。使用比較好的字模提取軟件時(shí),有一些參數(shù)可以根據(jù)自己的 需求進(jìn)行設(shè)置改動(dòng)。其中有單個(gè)字符點(diǎn)數(shù),有5*7、16*16、32*32等一些選項(xiàng);字型設(shè)置,可設(shè)置成宋體、楷體等;設(shè)置取模方式, 如橫向、豎向;數(shù)據(jù)信息格式,如C語(yǔ)言格式,匯編語(yǔ)言格式等,以及一些其設(shè)置。常用的集成字模芯片,有GT21/23系列的字庫(kù)芯片,如 GT21L16S23、點(diǎn)陣掃描顯示與接

17、口電路為了在LED點(diǎn)陣器件上看到完整正確的信息,那么LED點(diǎn)陣需 在相應(yīng)的位置點(diǎn)亮LED,而LED點(diǎn)陣器件的結(jié)構(gòu)決定了不能將各行 或各列同時(shí)點(diǎn)亮,需要米用掃描方式來(lái)實(shí)現(xiàn)。掃描方式顯示就將LED 屏上的信息,分成一行一行或一列一列輪流點(diǎn)亮。由于人眼的惰性,掃描整屏所用的時(shí)間要少于或等于20ms,就察覺(jué)不出LED點(diǎn)陣是一行一行輪流點(diǎn)亮出來(lái),而是整屏同時(shí)點(diǎn)亮。也就是說(shuō)每秒鐘掃描整 屏次數(shù)要大于等于50次。如圖3.8,將“A”的顯示過(guò)程分解的表示出來(lái)了圖2.8逐列掃描點(diǎn)陣顯示根據(jù)這個(gè)過(guò)程,我們可以得到圖3.9所示的掃描信號(hào)與每行數(shù)據(jù)配合顯示的過(guò)程。掃描信號(hào)D L 1 L 1 1 1 1D D DD00

18、010D D D D 0 0 0 01 1 1 0 J J J 100掃描顯示笫四列U UUU掃描顯示第T掃描顯示第二列掃描顯示第三列111110 11掃描顯示第五列掃描顯示第六列掃描信號(hào)L 1 L L 0 1 1 1顯D1 1 1 1110 1I 1 1 11110掃描晶示第七列掃描d示笫八列圖2.9掃描顯示時(shí)行列信息假設(shè)點(diǎn)陣器件為共陰極方式的, 這個(gè)顯示過(guò)程分成8步走。第步是給器件的列引腳送入掃描碼01111111,使第一行LED進(jìn)入有效狀態(tài)。同時(shí),行引腳送入第一列的顯示數(shù)據(jù)0x00,由于這一組數(shù)據(jù)內(nèi)沒(méi)有 1,所以整屏沒(méi)有一只LED點(diǎn)亮。否則在第一列的LED 中,所對(duì)應(yīng)的行引腳為 1的就會(huì)

19、發(fā)光。第二步是在第一步顯示一一 段時(shí)間后,先撤掉行引腳數(shù)據(jù),再將列引腳送入掃描信號(hào)10111111, 改行引腳信息為第二列顯示數(shù)據(jù)0x00,進(jìn)行第二列的顯示,同樣沒(méi)有一只LED點(diǎn)亮。第三步時(shí),顯示數(shù)據(jù)為0x3f,第三列將有6個(gè)LED 點(diǎn)亮。后面六步顯示過(guò)程中行列信息如圖所示。八步完成后,再?gòu)?頭循環(huán),以得到整屏效果。于是,根據(jù)這一過(guò)程,我們可以得出相應(yīng)硬件驅(qū)動(dòng)電路,如圖2.10所示。圖中,行顯示信號(hào)由單片機(jī) P1 口通過(guò)三極管直接提供, 行掃描信號(hào)由單片機(jī)P2 口經(jīng)過(guò)緩沖器接到行引腳。單片機(jī)的軟件控 制P1、P2 口的輸出配合工作完成上述過(guò)程。D6D7 VCC顯示信號(hào)D5D4D3D2D1DOH

20、1+4k4414電電電k電1L4444掃描信號(hào)圖2.10 8*8點(diǎn)陣驅(qū)動(dòng)電路圖從上面設(shè)計(jì)可知,一塊 8*8的LED點(diǎn)陣顯示器需單獨(dú)占用16 根端口線,也就是說(shuō)需要占用單片機(jī)的2個(gè)字節(jié)并行端口。這樣相對(duì)MC51單片機(jī)而言,端口資源是比較少的。在顯示信息需要同時(shí)使用多塊LED點(diǎn)陣器件時(shí),需要采用并聯(lián)或串聯(lián)鎖存芯片進(jìn)行擴(kuò) 展。匚p1202舊3I64175lbG157148139121011OC1Qf1 VCC Jao4Q .GND5Q Set(a) 74ls373aoR7Q6Q6D5D .1E Ji j.D D Q Q D D1 2 3 4-1 2 3 4 5 79 ljlj 匚 ILQLJCnd

21、BicDE*CK oG一mm- GI54J321-d 9 k(b) 74IS595圖 2.11并行、串行鎖存器圖3.11為常用的并行、串行鎖存器。(a)圖為8位并聯(lián)數(shù)據(jù) 鎖存器芯片,型號(hào)為 74LS373當(dāng)74LS373的C端有效時(shí),從輸入 端來(lái)的數(shù)據(jù)將鎖存到74LS373,當(dāng)0C端有效時(shí),鎖存的信息并行輸 出。B圖為8位數(shù)據(jù)串行鎖存器芯片74LS595,它為兩級(jí)鎖存芯片。 通過(guò)數(shù)據(jù)串行移位時(shí)鐘 SRC,將SER引腳的數(shù)據(jù)串行移位存入第一 級(jí)鎖存器。RCK有效時(shí)(高電平),將第一級(jí)鎖存器的數(shù)據(jù)復(fù)制到第 二級(jí)鎖存器,G門控信號(hào)有效時(shí)(低電平),數(shù)據(jù)并行輸出。4、LED點(diǎn)陣顯示器件接口實(shí)例實(shí)例3:

22、用5*7的LED點(diǎn)陣器件顯示數(shù)字“ 6”本例用5*7的LED點(diǎn)陣器件顯示數(shù)字“6”,接口電路如圖3.5所 示(采用共陽(yáng)極LED點(diǎn)陣器件)。實(shí)現(xiàn)方法:圖2.12中LED點(diǎn)陣的列信息由單片機(jī)P0引腳提供做 掃描信號(hào),掃描信號(hào)低電平時(shí)LED被點(diǎn)亮,然后由P1 口輸出電平控 制顯示的內(nèi)容,數(shù)字” 6”的字模信息如表6所示。表3.2.1 5*7點(diǎn)陣顯示數(shù)字6信息表列行12345100110 丁201000310000411110510001610001701110字模信息只有七位,不足的一位,在高位補(bǔ)0,用十六進(jìn)制方法表示為:0x1e,0x29,0x49,0x49,0x06。由于LED點(diǎn)陣器件是共陽(yáng)的方

23、式的,當(dāng)列引腳接掃描信號(hào)時(shí),是高電平有效,行引腳接顯示數(shù)據(jù),為低電平點(diǎn)亮。表2.2.1信息表使用高電平點(diǎn)亮,為正確顯示出來(lái),需要對(duì)的數(shù)據(jù)先進(jìn)行取反操作再輸出顯示。電路設(shè)計(jì)如下:1OuFClHIR9C3tunX7AL2RTP覿癥P0.WjM PDUAU P0 7JAP7f2仙 P2-M1DP3EN 辱 EAF2.M11F2.715P4 Q殆阿xpP1 1 P11F3.1/1I7D P3.2rtNTOMSW.3flMT1P-1會(huì)P3.4T0P1J5PI沖ey岬P1 7F-3.7/RDJ1El4TGRQ2n l 罰寸 O U U O URP1RE&PACK-BIk圖2.12 5*7LED 點(diǎn)陣與單片

24、機(jī)的接口電路 程序設(shè)計(jì)如下:/實(shí)例3 :用5*7的LED點(diǎn)陣器件顯示數(shù)字“ 6 ”#in elude #in elude #defi ne led_C P0#defi ne led_R P2#defi ne LED_OFF 0#defi ne LED_ON 1sbit led_CO=led_CP;sbit led_C1=led_CA1;sbit led_C2=led_CA2;sbit led_C3=led_CA3;sbit led_C4=led_CA4;unsigned char code tab=0x1e,0x29,0x49,0x49,0x06; void delay (un sig ned

25、 char tm)un sig ned char i;for(;tm0;tm_)for(i=240;i0;i-);void mai n(void)/初始化led_C=LED_OFF;關(guān)閉所有掃描,即關(guān)閉顯示while(1)/顯示第一列l(wèi)ed_C=LED_OFF; /關(guān)閉所有掃描,即關(guān)閉顯示 led_R=tab0;led_CO=LED_ON; 第一列有效delay(8); / 延時(shí)大約 4ms/顯示第二列l(wèi)ed_C=LED_OFF;/關(guān)閉所有掃描 led_R=tab1;led_C仁LED_ON; /第二列有效delay(8); / 延時(shí)大約 4ms/顯示第三列l(wèi)ed_C=LED_OFF;/關(guān)閉所

26、有掃描 led_R=tab2;led_C2=LED_ON;delay(8); / 延時(shí)大約 4ms/顯示第四列l(wèi)ed_C=LED_OFF;/關(guān)閉所有掃描 led_R=tab3;led_C3=LED_ON;delay(8); / 延時(shí)大約 4ms/顯示第五列l(wèi)ed_C=LED_OFF;/關(guān)閉所有掃描 led_R=tab4;led_C4=LED_ON;delay(8); / 延時(shí)大約 4ms實(shí)例4:用8*8LED點(diǎn)陣器件顯示數(shù)字“ 678”實(shí)現(xiàn)方法:圖3.13為單片機(jī)驅(qū)動(dòng)三塊8*8的共陰極LED點(diǎn)陣器 件顯示數(shù)字“ 678”的電路。電路圖中,仍采用單片機(jī)P0 口做列掃描 信號(hào),三塊LED點(diǎn)陣的行信

27、號(hào)分別接P1、P2、P3 口,由P1 口來(lái)提供 第一塊LED的顯示數(shù)據(jù)內(nèi)容,P2 口提供第二塊LED的數(shù)據(jù),P3 口對(duì) 接第三塊。因此,三塊LED點(diǎn)陣所使用列掃描信號(hào)雖然是相同的,但 顯示的內(nèi)容卻是不同。但這種方式由于過(guò)多地占用了單片機(jī)端口資 源,在實(shí)際應(yīng)用中,遠(yuǎn)遠(yuǎn)不只三塊8*8的LED點(diǎn)字,所以不實(shí)用,而 是采用擴(kuò)展I/O 口的方式實(shí)現(xiàn)。電路設(shè)計(jì)如下:RP1U1BQtJS5 3S8b8QSS3SSEj3c:B35 8Sboooooao1XF口 _1 2iFi1芮AUPDUMDDP0.1IAD1!P02IAD2P0 3W3PQ4iAT4P0.5M6PflJsiAreItS IIPO.TiW?P

28、F USEPJ1JIA3P22TA10PS&JP2.MHALEF2.4iA2EAP2.5iA13W2iM4P2.7i5PI 1P3.1/DP1 2 PMP3劉啊1P3.W1P1AP3 /T0PI 5FSJWT1!PI JP3 了帝-jyT.1.!J.37=35VM3Q R3 r. 00U l fM m |V tiULLL LLL LL LLC M 7 J M ! H IT K E IX: E EL IL0Q2 l13 Q4 05 TQ3 7 |8 IFTG2Z2 J =N22ZL J mZ2ZZ JmE2Z JPV2Z2Z JFFCZ22 JFtCZZ2 JIdllOSb.圖2.13 3 塊8

29、*8LED點(diǎn)陣顯示電路程序設(shè)計(jì)如下:/實(shí)例4 :用8*8LED點(diǎn)陣器件顯示數(shù)字“ 678”#in elude #in elude #defi ne led_C P0#defi ne led_RB0 P2#defi ne led_RB1 P3#defi ne led_RB2 P1#defi ne LED_OFF 0#defi ne LED_ON 1un sig ned char code tab38=0xFF,0xC7,0xAB,0xAB,0xAB,0xAB,0xDF,0xFF,/*6,0*/0xFF,0xF3,0xFB,0x8B,0xEB,0xF3,0xFB,0xFF,/*7,1*/0xFF,

30、0xD3,0xAB,0xAB,0xAB,0xAB,0xD3,0xFF,/*8,2*/; /共陽(yáng)極字模,取陽(yáng)碼void delay (un sig ned char tm) / 一個(gè)延時(shí)單位大約 0.5ms,12M晶振un sig ned char i;for(;tm0;tm_)for(i=240;i0;i-);void mai n(void)unsigned char i,j;led_C=LED_OFF;/關(guān)閉所有掃描while(1)j=OxO1;for(i=0;i8;i+)led_C=LED_OFF; /關(guān)閉所有掃描led_RB0=tab0i;led_RB1=tab1i;led_RB2=ta

31、b2i;led_C=j;j=j1;delay(4); /延時(shí)大約 2ms實(shí)例5:用四塊8*8的LED點(diǎn)陣顯示“ 1234”實(shí)現(xiàn)方法:上例雖然實(shí)現(xiàn)顯示不同數(shù)字的功能,但浪費(fèi)端口資源嚴(yán)重,故在實(shí)現(xiàn)顯示內(nèi)容點(diǎn)數(shù)多、LED點(diǎn)陣塊多的情況采用擴(kuò)展I/O 的方式進(jìn)行顯示。如圖3.14所示的電路,使用了四74ls373鎖存器 的方式來(lái)擴(kuò)展I/O 口,以解決單片機(jī)I/O端口資源少的問(wèn)題。電路設(shè)計(jì)如下:o或IDk曲 03U1血1他MipLi.weR5TTO丙向砸FT34 甌Pi 血 血應(yīng) pj j.ifilDPiiiAJi 旳wig PlftWSPIQ Pll.lR.TjiAISRjJuRXDPl ?FgZJI

32、HTiPIJ3P5.泗TPl 4fl 4-TuPLS附匹pi e削T_liRPInQ1 CC t CO t A T CO t CG t ; t CO IPMit22 JPN2L22 JPNii221PNiiiZ 1PhJ22 1Phiii;1Pb22221PhJi22 1833CSBSCBGa0SESGS3GGSE5C:BSSCtBBCF21P2IP2 剛P2+ P2J irja P2?IJU2*TFSC!li圖2.14 鎖存器擴(kuò)展LED點(diǎn)陣顯示電路程序設(shè)計(jì)如下:II實(shí)例5:用四塊8*8的LED點(diǎn)陣顯示“ 1234”#in elude #in elude #defi ne led_C P0#d

33、efi ne led_R P2#defi ne led_LE P3#defi ne LED_OFF 0#defi ne LED_ON 1#defi ne LS373_OFF 0#defi ne LS373_ON 1sbit led_LE0=led_LEA0;sbit led_LE1=led_LEA1;sbit led_LE2=led_LEA2;sbit led_LE3=led_LEA3;un sig ned char code tab48=0xFF,0xB7,0xB7,0x83,0xBF,0xBF,0xFF,0xFF,/*1,0*/0xFF,0xB7,0x9B,0x9B,0x9B,0xAB,0

34、x93,0xFF,/*2,1*/0xFF,0xD7,0xBB,0xB3,0xB3,0xAB,0xCB,0xFF,/*3,2*/0xFF,0xEF,0xD7,0xDB,0x9B,0x81,0xFF,0xFF,/*4,3*/ ; /共陽(yáng)極字模,取陽(yáng)碼void delay (un sig ned char tm) / 一個(gè)延時(shí)單位大約 0.5ms,12M晶振un sig ned char i;for(;tm0;tm_)for(i=240;i0;i-);void mai n(void)unsigned char i,j;led_C=LED_OFF;關(guān)閉所有掃描led_LE=LS373_OFF;whil

35、e(1)j=OxO1;for(i=0;i8;i+)led_C=LED_OFF; /關(guān)閉所有掃描 led_R=tabOi; led_LE0=LS373_ON;led_LE0=LS373_OFF;led_R=tab1i;led_LE1=LS373_ON; led_LE1=LS373_OFF;led_R=tab2i;led_LE2=LS373_ON; led_LE2=LS373_OFF;led_R=tab3i;led_LE3=LS373_ON;led_LE3=LS373_OFF;led_C=j;j=j1;delay(4); /延時(shí)大約 2ms2.3任務(wù)實(shí)現(xiàn)2.3.1系統(tǒng)方案設(shè)計(jì)由8片8*8的LED點(diǎn)

36、陣顯示器件組成顯示屏,形成32列16行的 排布,由單片機(jī)控制其顯示“學(xué)習(xí)單片機(jī)。”。每個(gè)漢字字模為16*16 點(diǎn),顯示屏不能一屏全顯示出來(lái),因此需要滾動(dòng)顯示來(lái)實(shí)現(xiàn)。系統(tǒng)擬采用“ MCU譯碼/驅(qū)動(dòng)+鎖存/限流+LED點(diǎn)陣”的總體設(shè) 計(jì)方案,系統(tǒng)框圖如圖3.15所示。凹 數(shù)據(jù) 鎖存單片機(jī)行掃描佶號(hào)掃描譯碼驅(qū)動(dòng)LLED點(diǎn)陣電路圖2.15 LED點(diǎn)陣顯示屏系統(tǒng)框圖2.3.2系統(tǒng)硬件電路設(shè)計(jì)圖2.16 LED點(diǎn)陣顯示屏電路原理圖nn1gUBl!B:ln皿工“ aBBVI產(chǎn)HU宇mQgwlm nhe:盟賈冒巒“盟誥S finniss2.3.3系統(tǒng)工作原理本系統(tǒng)中的LED點(diǎn)陣顯示屏由8塊8*8的LED點(diǎn)陣塊

37、組成, AT89S51為本系統(tǒng)的核心器件,由 P0送出顯示數(shù)據(jù),然后由四個(gè)鎖 存器接收,送到LED的32根列線上,P1 口的低四位接74HC154譯碼 器做行地址譯碼,從譯碼器出來(lái)的 16根地址線經(jīng)過(guò)緩沖驅(qū)動(dòng),接到 LED點(diǎn)陣屏的行掃描線。系統(tǒng)在程序中存入了“我愛(ài)單片機(jī)! ”幾個(gè)漢字的字模數(shù)據(jù),開(kāi) 機(jī)后,便通過(guò)行掃描與列數(shù)據(jù)協(xié)調(diào)控制,顯示出來(lái)。幾個(gè)漢字不能全 部一次顯示出來(lái),通向左滾動(dòng)的方式顯示出來(lái)。字模提取。本項(xiàng)目“我愛(ài)單片機(jī)! ”幾個(gè)漢字的字模數(shù)據(jù)的提取, 是通過(guò)網(wǎng)上下載的免費(fèi)的字模提取軟件實(shí)現(xiàn)的, 其提取時(shí)的主要參數(shù) 設(shè)置有:?jiǎn)蝹€(gè)漢字點(diǎn)數(shù)為16*16 ;字體為宋體;提取方式為模向;數(shù) 據(jù)

38、為陽(yáng)碼;格式為C51格式。234系統(tǒng)軟件設(shè)計(jì)1、設(shè)計(jì)思路本任務(wù)采用了 74HC154譯碼器輸出控制掃描信號(hào),譯碼前為四位 數(shù)據(jù),譯碼后成16根掃描線,有效的掃描線為低電平。掃描顯示一 屏?xí)r間要控制在20ms以內(nèi),對(duì)于每根掃描線而言,要控制在 1.25ms 以內(nèi)。32*16的LED點(diǎn)陣屏的點(diǎn)數(shù)較少,要顯示多個(gè)漢字時(shí),需滾動(dòng)顯 示。滾動(dòng)顯示時(shí),需要對(duì)屏幕的顯示內(nèi)空進(jìn)行移動(dòng)。在程序設(shè)計(jì)時(shí)要 考慮到移到速度,以適合人眼觀感。在數(shù)據(jù)移動(dòng)時(shí),需要采用一些算 法進(jìn)行快速處理。這里將會(huì)用到共用體的數(shù)據(jù)類型, 以方便數(shù)據(jù)的迅速處理。2、流程圖幵始初始化更新顯示緩沖區(qū)數(shù)據(jù)LED點(diǎn) 陣顯示(a)主程序流程圖圖 2.

39、17 LED入口關(guān)顯示*鎖存待顯示數(shù)據(jù)*LED 燈延時(shí)行值加一V行值15 -岡JY ,丨行值=0返回(b) LED點(diǎn)陣顯示一行子程序點(diǎn)陣顯示屏程序流程圖/*LED DISPLAY PROGRAM*LZB Desig n Code*3、程序清單*/*#in clude sbit en=P1A4;sbit led0=P2A0;sbit led1=P2A1;sbit led2=P2A2;sbit led3=P2A3;#defi ne led_ on() en=0;#defi ne led_off() en=1;union w_charun sig ned char Ion g_b4;un sig n

40、ed int Ion g_i2;un sig ned long int Ion g_l;un sig ned char d_buff232;un sig ned char row_s;un sig ned char code zimo632=/*-文字:我-*/*-新宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x04,0x40,0x0E,0x50,0x78,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08, 0x44,0x0A,0x44,0x0C,0x48,0x18,0x30,0x68,0x22,0x08,0x52,0x08,0

41、x8A,0x2B,0x06,0x10,0x02,/*-文字:愛(ài)-*/*-新宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x08,0x01,0xFC,0x7E,0x10,0x22,0x10,0x11,0x20,0x7F,0xFE,0x42,0x02,0x82, 0x04,0x7F,0xF8,0x04,0x00,0x07,0xF0,0x0A,0x10,0x11,0x20,0x20,0xC0,0x43,0x30,0x1C,0x0E,/*-文字:?jiǎn)?*/*-新宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x10,0x10,0x08,0x20,0x04,0x40,0

42、x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,/*-文字:片-*/*-新宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x仆,0xFC,0x10,0x00,0x10,0x00,0x10,0x00,0x1F,0xE0,0x10,0x20,0x10,0x20,0x10,0x20,

43、0x20,0x20,0x20,0x20,0x40,0x20,/*-文字:機(jī)-*/*-新宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x10,0x00,0x11,0xF0,0x11,0x10,0x11,0x10,0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,0x55,0x10,0x55,0x10,0x91,0x10,0x11,0x12,0x11,0x12,0x12,0x12,0x12,0x0E,0x14,0x00,/*- 文字:!-*/*- 新宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x00,0x10,0x00,0x10

44、,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,;void mov_buff( un sig ned char);void display。;void delay();void main (void)unsigned char i,j;/In itialise our variablesrow_s=0;P2=0;while(1)for(j=0;j96;j+)mov_buff

45、(j);for(i=0;i64;i+)display();for(i=0;i64;i+)display。; for(i=0;i64;i+)display();void mov_buff( un sig ned char lie)un sig ned char i,j,k,l;union w_char w_buff,w_buff1;i=lie/16;j=lie-i*16; for(k=0;k16;k+)if(i6)w_buff.lo ng_b0=zimoik*2;w_buff.lo ng_b1=zimoik*2+1;elsew_buff.lo ng_bO=O;w_buff.lo ng_b1=O;

46、if(i+16)w_buff.lo ng_b2=zimoi+1k*2; w_buff.lo ng_b3=zimoi+1k*2+1;elsew_buff.lo ng_b2=0;w_buff.lo ng_b3=0;if(i+20x7f) w_buff.lo ng_b3+;w_buff1.lo ng1*=2;d_buff0k*2=w_buff.lo ng_b0; d_buff0k*2+1=w_buff.lo ng_b1;d_buff1k*2=w_buff.lo ng_b2; d_buff1k*2+1=w_buff.lo ng_b3;void display。P仁 row_s|0x10; /off scanP0=d_buff0row_s*2;led3=1;led3=0;P0=d_buff0row_s*2+1;led2=1;led2=0;P0=d_buff1row_s*2;led1=1;led 仁0;P0=d_buff1row_s*2+1;led0=1;led0=0;led_ on();dela

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論