1引言
在大型商場、車站、碼頭、地鐵站以及各類辦事窗口等越來越多的場所需要用led點陣顯示圖形和漢字。led行業(yè)已成為一個快速發(fā)展的新興產(chǎn)業(yè),市場空間巨大,前景廣闊。隨著信息產(chǎn)業(yè)的高速發(fā)展,led顯示作為信息傳播的一種重要手段,已廣泛應用于室內(nèi)外需要進行服務內(nèi)容和服務宗旨宣傳的公眾場所,例如戶內(nèi)外公共場所廣告宣傳、機場車站旅客引導信息、公交車輛報站系統(tǒng)、證券與銀行信息顯示、餐館報價信息豆示、高速公路可變情報板、體育場館比賽轉(zhuǎn)播、樓宇燈飾、交通信號燈、景觀照明等。顯然,led顯示已成為城市亮化、現(xiàn)代化和信息化社會的一個重要標志。
本文基于單片機(at89c51)講述了16×16led漢字點陣顯示的基本原理、硬件組成與設計、程序編譯與下載等基本環(huán)節(jié)和相關技術。
2硬件電路組成及工作原理
本產(chǎn)品擬采用以at89c51單片機為核心芯片的電路來實現(xiàn),主要由at89c51芯片、時鐘電路、復位電路、列掃描驅(qū)動電路(74hc154)、16×16led點陣5部分組成,如圖1所示。
其中,at89c51是一種帶4kb閃爍可編程可擦除只讀存儲器(falshprogrammableanderasablereadonlymemory,fperom)的低電壓、高性能cmos型8位微處理器,俗稱單片機。該器件采用atmel高密度非易失存儲器制造技術制造,與工業(yè)標準的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,能夠進行1000次寫/擦循環(huán),數(shù)據(jù)保留時間為10年。他是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。因此,在智能化電子設計與制作過程中經(jīng)常用到at89c51芯片。
時鐘電路由at89c51的18,19腳的時鐘端(xtall及xtal2)以及12mhz晶振x1、電容c2,c3組成,采用片內(nèi)振蕩方式。
復位電路采用簡易的上電復位電路,主要由電阻r1,r2,電容c1,開關k1組成,分別接至at89c51的rst復位輸入端。
led點陣顯示屏采用16×16共256個象素的點陣,通過萬用表檢測發(fā)光二極管的方法測試判斷出該點陣的引腳分布,如圖2所示。
我們把行列總線接在單片機的io口,然后把上面分析到的掃描代碼送人總線,就可以得到顯示的漢字了。但是若將led點陣的行列端口全部直接接入89s51單片機,則需要使用32條io口,這樣會造成io資源的耗盡,系統(tǒng)也再無擴充的余地。因此,我們在實際應用中只是將led點陣的16條行線直接接在p0口和p2口,至于列選掃描信號則是由4-16線譯碼器74hc154來選擇控制,這樣一來列選控制只使用了單片機的4個io口,節(jié)約了很多io資源,為單片機系統(tǒng)擴充使用功能提供了條件??紤]到p0口必需設置上拉電阻,我們采用4.7kω排電阻作為上拉電阻。
漢字掃描顯示的基本過程是這樣的:通電后由于電阻r1,電容c1的作用,使單片機的rst復位腳電平先高后低,從而達到復位;之后,在c2,c3,x1以及單片機內(nèi)部時鐘電路的作用下,單片機89c51按照設定的程序在p0和p2接口輸出與內(nèi)部漢字對應的代碼電平送至led點陣的行選線(高電平驅(qū)動),同時在p1.1,p1.2,p1.3,p1.4接口輸出列選掃描信號(低電平驅(qū)動),從而選中相應的象素lcd發(fā)光,并利用人眼的視覺暫留特性合成整個漢字的顯示。
3漢字的點陣顯示原理及字庫代碼獲取方法
我們以ucdos中文宋體字庫為例,每一個字由16行16列的點陣組成顯示。即國標漢字庫中的每一個字均由256點陣來表示。我們可以把每一個點理解為一個象素,而把每一個字的字形理解為一幅圖像。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在256象素范圍內(nèi)的任何圖形。如查用8位的at89c51單片機控制,由于單片機的總線為8位,一個字需要拆分為2個部分,如圖3所示。
為了弄清楚漢字的點陣組成規(guī)律,首先通過列掃描方法獲取漢字的代碼。漢字可拆分為上部和下部,上部由8×16點陣組成,下部也由8×16點陣組成。本例通過列掃描方法首先顯示左上角的第一列的上半部分,即第0列的p00~p07口,方向為p00到p07,顯示漢字“大”時,p05點亮,由上往下排列,為:p0.0滅,p0.1滅,p0.2滅p0.3滅,p0.4滅,p0.5亮,p0.6滅,p0.7滅。即二進制00000100,轉(zhuǎn)換為十六進制為04h。上半部第一列完成后,繼續(xù)掃描下半部的第一列,為了接線的方便,我們?nèi)栽O計成由上往下掃描,即從p27向p20方向掃描,從圖3可以看到,這一列全部為不亮,即為00000000,十六進制則為00h。依照這個方法轉(zhuǎn)向第二列、第三列,…,直至第十六列的掃描,一共掃描32個8位,可以得出漢字“大”