資料包:
點陣_看圖王.jpg (88.67 KB, 下載次數(shù): 106)
下載附件
2018-4-20 08:26 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.jpg (52.64 KB, 下載次數(shù): 99)
下載附件
2018-4-20 15:15 上傳
0.png (171.27 KB, 下載次數(shù): 78)
下載附件
2018-4-20 15:15 上傳
0.jpg (12.66 KB, 下載次數(shù): 81)
下載附件
2018-4-20 15:15 上傳
1 緒論 1.1 前言 LED點陣顯示屏是集微電子技術(shù)、計算機(jī)技術(shù)、信息處理技術(shù)于一體的大型顯示屏系統(tǒng)。它以其色彩鮮艷,動態(tài)范圍廣,亮度高,壽命長,工作穩(wěn)定可靠等優(yōu)點而成為眾多顯示媒體以及戶外作業(yè)顯示的理想選擇。同時也可廣泛應(yīng)用到軍事、車站、賓館、體育、新聞、金融、證券、廣告以及交通運輸?shù)仍S多行業(yè)。目前大多數(shù)的LED點陣顯示系統(tǒng)自帶字庫。其顯示和動態(tài)效果(主要是顯示內(nèi)容的滾動)的實現(xiàn)主要依靠硬件掃描驅(qū)動,該方法雖然比較方便,但顯示只能按照預(yù)先的設(shè)計進(jìn)行。而實際上經(jīng)常會遇到一些特殊要求的動態(tài)顯示,比如電梯運行中指示箭頭的上下移動、某些智能儀表幅值的條形顯示、廣告中廠家的商標(biāo)顯示等。這時一般的顯示系統(tǒng)就很難達(dá)到要求。另外,由于受到存儲器本身的局限,其特殊字符往往難以顯示,同時顯示內(nèi)容也不能隨意更改。 因此就提出了一種利用PC機(jī)和單片機(jī)控制的LED顯示系統(tǒng)通信方法。該方法可以對顯示內(nèi)容進(jìn)行實時控制,從而實現(xiàn)諸如動態(tài)顯示效果。同時用戶也可以在PC機(jī)上進(jìn)行顯示效果的預(yù)覽,顯示內(nèi)容亦可以即時修改。同時它具有發(fā)光率高、使用壽命長、組態(tài)靈活、色彩豐富以及對室內(nèi)外環(huán)境適應(yīng)能力強(qiáng)等優(yōu)點。并廣泛的用于公交汽車、商店、體育場館、車站、學(xué)校、銀行、高速公路等公共場所的信息發(fā)布和廣告宣傳。LED 顯示屏發(fā)展較快,本文講述了基于89C51單片機(jī)8×8 LED漢字點陣滾動顯示的基本原理、硬件組成與設(shè)計、程序編寫與調(diào)試、Proteus軟件仿真等基本環(huán)節(jié)和相關(guān)技術(shù)。 1.2 選題背景 LED電子顯示屏是隨著計算機(jī)及相關(guān)的微電子﹑光電子技術(shù)的迅猛發(fā)展而形成的一種新型信息顯示媒體。它利用發(fā)光二極管構(gòu)成的點陣模塊或像素單元組成可變面積的顯示屏幕,以可靠性高、使用壽命長、環(huán)境適應(yīng)能力強(qiáng)、性能價格比高、使用成本低等特點,在短短的十來年中,迅速成長為平板顯示的主流產(chǎn)品,在信息顯示領(lǐng)域得到了廣泛的應(yīng)用。LED 點陣電子顯示屏是集微電子技術(shù)、計算機(jī)技術(shù)、信息處理技術(shù)于一體的大型顯示屏系統(tǒng)。它以其色彩鮮艷,動態(tài)范圍廣,亮度高,壽命長,工作穩(wěn)定可靠等優(yōu)點而成 為眾多顯示媒體以及戶外作業(yè)顯示的理想選擇。同時也可廣泛應(yīng)用到軍事、車站、賓館、體育、新聞、金融、證券、廣告以及交通運輸?shù)仍S多行業(yè)。 1.3設(shè)計要求 利用一塊點陣數(shù)碼板,按編程者要求實現(xiàn)任意符號的顯示。 1.4 國內(nèi)外的研究概況 目前大多數(shù)的LED點陣顯示系統(tǒng)自帶字庫。其顯示和動態(tài)效果(主要是顯示內(nèi)容的滾動)的實現(xiàn)主要依靠硬件掃描驅(qū)動,該方法雖然比較方便,但顯示只能按照預(yù)先的設(shè)計進(jìn)行。而實際上經(jīng)常會遇到一些特殊要求的動態(tài)顯示,比如電梯運行中指示箭頭的上下移動、某些智能儀表幅值的條形顯示、廣告中廠家的商標(biāo)顯示等。這時一般的顯示系統(tǒng)就很難達(dá)到要求。另外,由于受到存儲器本身的局限,其特殊字符或圖案也往往難以顯示,同時顯示內(nèi)容也不能隨意更改。本文提出一種利用PC機(jī)和單片機(jī)控制的LED顯示系統(tǒng)通訊方法。該方法可以對顯示內(nèi)容(包括漢字和特殊圖符)進(jìn)行實時控制,從而實現(xiàn)諸如閃動、滾動、打字等多種動態(tài)顯示效果。該方法同時還可以調(diào)節(jié)動態(tài)顯示的速度,同時用戶也可以在PC機(jī)上進(jìn)行顯示效果的預(yù)覽,顯示內(nèi)容亦可以即時修改。在我國改革開放之后,特別是進(jìn)入90年代國民經(jīng)濟(jì)高速增長,對公眾場合發(fā)布信息的需求日益強(qiáng)烈,LED顯示屏的出現(xiàn)正好適應(yīng)了這一市場形勢,因而在LED顯示屏的設(shè)計制造技術(shù)與應(yīng)用水平上都得到了迅速的提高,生產(chǎn)也得到了迅速的發(fā)展,并逐步形成產(chǎn)業(yè),成為光電子行業(yè)的新興產(chǎn)業(yè)領(lǐng)域。 1.5此次設(shè)計研究的主要內(nèi)容應(yīng)解決的問題此次設(shè)計研究的主要內(nèi)容是設(shè)計一個符號顯示牌:通過程序控制符號顯示牌,使符號顯示牌,在無按鍵按下時,顯示數(shù)字“0-9”,當(dāng)?shù)谝淮伟聪掳存I時,顯示字母“μ”,當(dāng)?shù)诙伟聪掳存I時顯示漢字“公”。 應(yīng)解決的問題:單片機(jī)P1口的輸出電流不足以驅(qū)動二極管,需要加驅(qū)動,本次研究中以S8050作為驅(qū)動,同時在S8050NPN晶體管基極加4.7K的電阻。實驗前要弄清晶體管三個引腳代表的極性,以免符號顯示牌不亮導(dǎo)致而設(shè)計失敗。
2 總體設(shè)計方案 2.1 硬件電路組成 本產(chǎn)品采用以89C51單片機(jī)為核心芯片的電路來實現(xiàn),主要由89C51芯片、晶振電路、三極管驅(qū)動電路、按鍵控制電路、8×8 LED點陣5部分組成,電路框圖如圖1所示。其中,89C51是一種帶4kB閃爍可編程可擦除只讀存儲器(Falsh Programmable and Erasable Read OnlyMemory,F(xiàn)PEROM)的低電壓、高性能CMOS型8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,工業(yè)標(biāo)準(zhǔn)的MCS一51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,能夠進(jìn)行1 000次寫/擦循環(huán),數(shù)據(jù)保留時間為10年。他是一種高效微控制器,為很多嵌人式控制系統(tǒng)提供了一種靈活性高且價廉的方案。因此,在智能化電子設(shè)計與制作過程中經(jīng)常用到89C51芯片。時鐘電路由89C51的18,19腳的時鐘端(XTAI 1及XTAL2)以及12 MHz晶振X 、電容C2、C3組成,采用片內(nèi)振蕩方式。復(fù)位電路采用簡易的上電復(fù)位電路,主要由電阻R ,R2,電容C ,開關(guān)K 組成,分別接至89C51的RST復(fù)位輸人端。LED點陣顯示屏采用8x8共64個象素的點陣,可通過萬用表檢測發(fā)光二極管的方法測試判斷出該點陣的引腳分布。 我們把行列總線接在單片機(jī)的I/O口,然后把上面分析到的掃描代碼送入總線,就可以得到顯示的字符了。我們在實際應(yīng)用中是將LED點陣的8條列線通過驅(qū)動電路接在P1口,8條行線通過限流電阻接在P0口。單片機(jī)89C51按照設(shè)定的程序在P1和P0接口輸出與內(nèi)部字符對應(yīng)的代碼電平送至LED點陣的行列線(高電平驅(qū)動),從而選中相應(yīng)的象素LED發(fā)光,并利用人眼的視覺暫留特性合成整個字符的顯示。再改變?nèi)”淼刂穼崿F(xiàn)字符的滾動顯示。硬件電路組成框圖如圖5所示。 圖2-1 硬件電路組成框圖 2.2 系統(tǒng)各單元電路設(shè)計 2.2.1 89C51單片機(jī)最小系統(tǒng) 最小系統(tǒng)包括晶體振蕩電路、復(fù)位開關(guān)和電源部分。圖2-2為89C51單片機(jī)的最小系統(tǒng)。 圖2-2 單片機(jī)最小系統(tǒng) 2.2.2 按鍵控制電路 單片機(jī)開始工作時,P2.0是高電平。當(dāng)按鍵按下時,檢測到一個低電平信號,改變P0口輸出信號,控制8×8 LED點陣顯示屏顯示不同字符。
圖2-3 按鍵控制電路 2.2.3 三極管驅(qū)動電路 掃描驅(qū)動電路的功能主要是有P1口輸出高電平使三極管發(fā)射結(jié)導(dǎo)通,發(fā)射結(jié)輸出足夠大的電流使二極管導(dǎo)通。 圖2-4 三極管驅(qū)動電路 2.2.4 8×8 LED點陣介紹 圖(4)為8×8點陣LED外觀及引腳圖,,只要其對應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點亮,則電子模塊中的0口為1,A口為0即可。應(yīng)用時限流電阻可以放在橫軸或列軸。 圖2-5 8×8點陣LED外觀及引腳 (1)把“單片機(jī)系統(tǒng)”區(qū)域中的P0端口用8芯排芯連接到“點陣模塊”區(qū)域中的“A~H”端口上; (2)把“單片機(jī)系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點陣模塊”區(qū)域中的“0~7”端口上; 為了方便于單片機(jī)連接,我們在焊接的過程中特意將0~7接口排列出來作為列,將A~H接口作為行,這樣我們就可以直接將P89C51單片機(jī)的P0口與0~7接口一次連接,將P89C51單片機(jī)的P1口與A~H接口一次連接。要使LED發(fā)亮即使給予數(shù)字端高電平,字母端給予低電平,就能使二極管發(fā)亮。 2.3 字符的點陣顯示原理及字庫代碼獲取方法 我們以UCDOS中文宋體字庫為例,每一個字由8行8列的點陣組成顯示。我們可以把每一個點理解為一個象素,而把每一個字的字形理解為一幅圖像。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在64象素范圍內(nèi)的任何圖形。如查用8位的P89C51單片機(jī)控制,如圖所示 
圖2-6 8×8點陣等效電路 為了弄清楚漢字的點陣組成規(guī)律,首先通過列掃描方法獲取漢字的代碼。首先將8行分成4位的上、下兩部分,把發(fā)光的象素位編為0不發(fā)光的象素位為1的十六進(jìn)制代碼。這樣就把要顯示的“公”字編為如下代碼: 0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf 由這個原理可以看出,無論顯示何種字體或圖像,都可以用這個方法來分析出他的掃描代碼從而顯示在屏幕上。上述方法雖然能夠讓我們弄清楚字符點陣代碼的獲取過程。字符點陣顯示一般有點掃描、行掃描和列掃描3種。為了符合視覺暫留要求,點掃描方法的掃描頻率必須大于16×64—1024 Hz,周期小于1 ms即可。行掃描和列掃描方法的掃描頻率必須大于16×8—128 Hz,周期小于7.8 ms即可。
3 程序設(shè)計
3.1程序流程圖 圖3-1 主程序流程圖 3.2程序設(shè)計 根據(jù)上述所說的程序流程圖,設(shè)計程序如附錄3。
4 調(diào)試及性能分析
4.1系統(tǒng)調(diào)試 4.1.1軟件調(diào)試 首先根據(jù)各單元電路模塊,利用Proteus軟件將總的硬件原理圖繪制好,設(shè)計好各模塊要使用的I/O口,如:8×8點陣LED顯示屏?xí)r候插反,先檢測下,無硬件錯誤后,再進(jìn)行程序編程。 利用C語言的編程方式,將系統(tǒng)要求的基本功能,以及創(chuàng)新功能根據(jù)程序流程圖編寫出來,用Keil軟件調(diào)試無誤后,生成Hex文件。 雙擊Proteus中的P89C51芯片,將Keil生成的Hex加載到芯片內(nèi),進(jìn)行仿真,經(jīng)調(diào)試后所編寫的程序能夠完美實現(xiàn)系統(tǒng)所需的各種功能。 4.1.2硬件調(diào)試 硬件調(diào)試主要是檢測硬件電路是否有短路、斷路、虛焊等。具體步驟及測試結(jié)果如下: (1) 檢查電源與地線是否全部連接上,用萬用表對照電路原理圖測試各導(dǎo)線是否完全連接,對未連接的進(jìn)行修復(fù)。 (2) 參照原理圖,檢查各個器件之間的連接是否連接正確,是否存在虛焊,經(jīng)測試,各連接不存在問題。 (3) 以上兩項檢查并修復(fù)完后,給該硬件電路上電,電源指示燈點亮。 (4) 將燒錄好程序的最小單片機(jī)系統(tǒng)接入各模塊后,各模塊能過正常工作,如:數(shù)碼管正常發(fā)光。 4.2設(shè)計分析 將燒錄好程序的最小單片機(jī)系統(tǒng)與各模塊連接好后,8×8點陣LED顯示屏顯示初始值。按鍵一次之后,顯示屏顯示滾動字符μ,再按鍵一次,顯示屏顯示漢字“公”。 經(jīng)軟件調(diào)試和硬件調(diào)試后,所設(shè)計的系統(tǒng)完美實現(xiàn)了所需的控制要求和創(chuàng)新要求。
總結(jié)
本文設(shè)計一個8×8點陣LED圖文顯示屏。經(jīng)過測試,LED各點亮度均勻,可顯示圖形和文字,且穩(wěn)定清晰無串?dāng)_。本系統(tǒng)具有硬件少、結(jié)構(gòu)簡單、容易實現(xiàn),性能穩(wěn)定可靠等特點。通過查閱資料,了解了LED發(fā)光原理和LED顯示技術(shù)的原理和現(xiàn)狀。在 LED點陣顯示屏的設(shè)計過程中,學(xué)到了很多東西,復(fù)習(xí)了Protel、Proteus、Keil等軟件的基礎(chǔ)應(yīng)用;玖私饬苏麄嵌入式開發(fā)的流程。例如,在進(jìn)行整個設(shè)計之前,應(yīng)該先根據(jù)需求分析,對單片機(jī)進(jìn)行選型,然后對各個硬件模塊進(jìn)行搭試。在畫PCB電路板的時候,要注意基本的布板原則。在焊接電路板的時候,應(yīng)該從最基本的最小系統(tǒng)開始,分模塊,逐個進(jìn)行焊接測試。在對各個硬件模塊進(jìn)行測試時,要保證軟件正確的情況下去測試硬件,要不然發(fā)生錯誤時,不知道到底是哪一方出錯了?傊,這次設(shè)計開發(fā),本人受益非淺,在以后的開發(fā)過程中一定總結(jié)經(jīng)驗,吸取教訓(xùn),為以后的學(xué)習(xí)工作打好基礎(chǔ)。 附錄1 原件清單
附錄2硬件原理圖 附錄3系統(tǒng)PCB圖 附錄4點陣的放置與接線方法:  
附錄5程序清單
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar i,j,k,scan,num,count;
- sbit key=P2^0;
- uchar code table1[]=
- {0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf}; //μ
- uchar code table2[]=
- {0xf7,0xdb,0xad,0xb7,0xbe,0xdd,0xbb,0xf7}; //公
- uchar code table[][8]=
- {{0xff,0xff,0xc3,0xbd,0xbd,0xc3,0xff,0xff}, //0
- {0xff,0xbf,0xbb,0x81,0x80,0xbf,0xbf,0xff}, //1
- {0xff,0xff,0xbb,0x9d,0xad,0xb3,0xff,0xff}, //2
- {0xff,0xff,0xdd,0xbe,0xb6,0xc9,0xff,0xff}, //3
- {0xff,0xef,0xe7,0xeb,0x81,0xef,0xef,0xff}, //4
- {0xff,0xff,0xd1,0xb5,0xb5,0xcd,0xff,0xff}, //5
- {0xff,0xff,0xc1,0xb6,0xb6,0xcd,0xff,0xff}, //6
- {0xff,0xff,0xfd,0xfd,0x8d,0xf5,0xf9,0xff}, //7
- {0xff,0xff,0xc9,0xb6,0xb6,0xc9,0xff,0xff}, //8
- {0xff,0xff,0xd9,0xb6,0xb6,0xc1,0xff,0xff}, //9
- {0xff,0x83,0xed,0xee,0xed,0x83,0xff,0xff}, //A
- {0xff,0xff,0x80,0xb6,0xb6,0xc9,0xff,0xff}, //B
- {0xff,0xc3,0xbd,0xbd,0xbd,0xdb,0xff,0xff}, //C
- {0xff,0xff,0x81,0xbd,0xbd,0xc3,0xff,0xff}, //D
- {0xff,0xff,0x80,0xb6,0xb6,0xb6,0xff,0xff}, //E
- {0xff,0xff,0x80,0xf6,0xf6,0xf6,0xff,0xff} //F
- };
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- key=1;
- num=0;
- while(1)
- {
- if(num==0)
- {
- for(j=0;j<16;j++)
- {
- if(key==0)
- {
- delay(10);
- if(key==0)
- {
- num=1;
- while(!key);
- }
- }
- if(num!=0)
- break;
- for(k=0;k<30;k++)
- {
- scan=0x01;
- for(i=0;i<8;i++)
- {
- P0=table[j][i];
- P1=scan;
- delay(2);
- scan<<=1;
- }
- }
- }
- }
- if(num==1)
- {
- for(j=0;j<8;j++) //8組數(shù)據(jù)
- {
- if(key==0)
- {
- delay(10);
- if(key==0)
- {
- num=2;
- while(!key);
- }
- }
- if(num!=1)
- break;
- for(k=0;k<10;k++)
- {
- scan=0x01; //初始掃描信號
- for(i=8;i>0;i--) //掃描周期
- {
- if(i>j)P0=table1[8+(j-i)];
- else P0=table1[j-i];
- P1=scan;
- delay(2);
- scan<<=1;
- }
- }
- }
- }
- if(num==2)
- {
- if(key==0)
- {
- delay(10);
- if(key==0)
- {
- num=0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
全部資料51hei下載地址(含word格式的設(shè)計報告):
14.點陣8x8.rar
(889.47 KB, 下載次數(shù): 285)
2018-4-20 08:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|