資源描述:
《振興中華點(diǎn)陣事業(yè)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、點(diǎn)矩陣顯示器的應(yīng)用-----兩個(gè)中文字?jǐn)?shù)據(jù)分批顯示并左移?現(xiàn)在市面上已出現(xiàn)很多有關(guān)點(diǎn)矩陣顯示器的商品,如廣告活動(dòng)字幕機(jī)、股票顯示板、活動(dòng)布告欄等。它的優(yōu)點(diǎn)是可按需要的大小、形狀、單色或彩色來組合,可與微處理器連接,做各種廣告性的文字或圖形變化。何謂點(diǎn)矩陣顯示器?其實(shí)它是由LED按矩陣方式排列而得名。點(diǎn)矩陣顯示器的種類,可分為5*7,5*8,6*8,8*8等4種;而按LED發(fā)光變化顏色來分,可分為單色、雙色、三色;按LED的極性排列方式又可分為共陽極與共陰極,而在本文中所介紹的8*8點(diǎn)陣排列為共陰極。8*8點(diǎn)矩陣顯示器在市面上有兩種不同引腳,如下圖:87B1D64AABCD5678 ?EG23H
2、5FC1234EFGH點(diǎn)矩陣顯示器的基本應(yīng)用大家想想,對(duì)于一由N*N個(gè)LED組成的點(diǎn)陣塊,只要讓某些LED亮,就可以組成數(shù)字,英文字、圖形、中文字。但如果用直接點(diǎn)亮的方式,它就可變化成很多的形狀。當(dāng)然不管是哪種形式,哪種圖案的哪些LED該亮都是固定的。以下我主要針對(duì)中文字作一些說明。要顯示中文字,必須由幾個(gè)點(diǎn)矩陣組成才可顯示出一個(gè)漢字。目前最常見的方式有15*14及16*16兩種方式。15*14需要使用5*7的6個(gè),16*16需使用5*8的六個(gè)或8*8的4個(gè)?,F(xiàn)以16*16舉例說明,對(duì)于漢字字形,在網(wǎng)絡(luò)上有好多漢字字型代碼提取工具,可以很方便地找查出中文字的點(diǎn)陣示意圖及點(diǎn)陣代碼。中文字的點(diǎn)陣示
3、意圖在UCDOS中文字體庫中,每一個(gè)字由16行16列的點(diǎn)陣組成顯示。如果用8位單片機(jī)AT89S51或52控制,我們知道此單片機(jī)的總線為8位,一個(gè)中文漢字得拆分為2個(gè)部分。一般我們把它拆為上部和下部,上部由8*16點(diǎn)陣組成,下部也由8*16點(diǎn)陣組成。當(dāng)上半部第一列完成后,繼續(xù)掃描下半部的第一列,同時(shí)也為了我們硬件設(shè)計(jì)的方便,我們采用由上往下掃描。依照這個(gè)辦法,我們對(duì)漢字‘振’進(jìn)行掃描,共掃描32個(gè)8位,可得到掃描代碼為:08H,40H,08H,42H,08H,81H,0FFH,0FEH09H,02H,0AH,0CH,7FH,0F0H,49H,00H49H,0FFH,49H,02H,49H,0E0
4、H,49H,18H59H,14H,0CBH,26H,41H,44H,00H,00H但這只是個(gè)顯示各種字體或圖象的原理,在真正設(shè)計(jì)開發(fā)項(xiàng)目時(shí),我們可以使用漢字字模生成軟件,這樣我們就不必自己去畫表格求代碼,同時(shí)也縮短了我們的開發(fā)時(shí)間。下面就是在此設(shè)計(jì)中即將要顯示出來的‘振興中華電子事業(yè)’八字的豎排代碼和顯示字型在此次8個(gè)字的點(diǎn)陣設(shè)計(jì)中,共使用了16行,32列,如果全部使用單片機(jī)I/O口,恐怕我們1個(gè)單片機(jī)也沒那么多口,而且這樣造成I/O的資源的浪費(fèi),系統(tǒng)也再無擴(kuò)展可言。在此設(shè)計(jì)中,我使用了2個(gè)4~16線譯碼器74LS154來完成列方向的顯示,而行方向16條線接在P0和P2口。列方向由兩片74LS
5、154完成掃描,它由89S51的P1.0~P1.3控制,而驅(qū)動(dòng)部分用32個(gè)A1015[PNP]的三極管完成。在行方向由于P0口沒有上拉電阻,因此在接上4.7*8的上拉排阻。同時(shí)為了提供負(fù)載能力,后面還在P0和P2口后接16個(gè)C1384的NPN三極管驅(qū)動(dòng);而對(duì)74LS154的位選方面采用P1.4口控制,通過1/6片7407模塊按下圖所示接法進(jìn)行位選,分別輪流顯示。每個(gè)畫面2個(gè)字,8個(gè)字分4次顯示,采用向左移動(dòng)的顯示方式依次顯示。硬件電路如下所示:實(shí)現(xiàn)程序如下:{已通過編譯}ORG00HSTART:MOVA,#00H;清除屏幕MOVP0,AMOVP2,ACALLDIS;調(diào)用顯示子程序CALLDEL
6、AY;調(diào)用延時(shí)子程序CALLMOVE;調(diào)用左移子程序JMPSTARTDIS:MOVR2,#04H;每個(gè)畫面2個(gè)字,8個(gè)字分4次顯示MOV20H,#00;取碼指針暫存地址20H初值為00D4:MOVR4,#00H;74LS154掃描指針初值MOVR1,#0FFH;每幕停留的時(shí)間D5:MOVR6,#32;每幕兩個(gè)字,32個(gè)數(shù)據(jù)碼MOVR0,20H;取碼指針存入R0D2:CALLREAD1;調(diào)用取碼子程序INCR4;掃描下一列DJNZR6,D2;顯示1幕?MOVR4,#00;清除74LS154掃描指針為00DJNZR1,D5;每幕停留時(shí)間到了?MOV20H,R0;保留取碼指針存入20H地址DJNZR
7、2,D4;2幕顯示完畢了?RETMOVE:MOV20H,#00;取碼指針暫存地址20H初值為00MOVR4,#00H;74LS154掃描指針初值M1:MOVR1,#0FFH;每幕停留時(shí)間M2:MOVR6,#32;每幕兩個(gè)字,32個(gè)數(shù)據(jù)碼MOVR0,20H;取碼指針存入R0M3:CALLREAD1;調(diào)用取碼子程序INCR4;掃描下一列DJNZR6,M3;顯示1幕?MOVR4,#00;清除74LS15