中國(guó)醫(yī)科大學(xué) 王 研
LED顯示屏以其超大畫(huà)面、超強(qiáng)視覺(jué)、亮度高、壽命長(zhǎng)以及靈活多變的顯示方式等優(yōu)勢(shì),成為目前國(guó)際上使用廣泛的顯示系統(tǒng)。隨著信息產(chǎn)業(yè)的高速發(fā)展,LED顯示作為信息傳播的一種重要手段,已廣泛應(yīng)用于金融證券、銀行利率、商業(yè)廣告、文化娛樂(lè)等室內(nèi)外需要進(jìn)行服務(wù)內(nèi)容和服務(wù)宗旨宣傳的公眾場(chǎng)所。顯然,LED顯示已成為現(xiàn)代化和信息化社會(huì)的一個(gè)重要標(biāo)志。有著巨大的社會(huì)效益和豐厚的經(jīng)濟(jì)效益。研究利用單片機(jī)控制LED的文字顯示對(duì)于學(xué)習(xí)單片機(jī)的基本原理和程序設(shè)計(jì)具有重要的作用和意義。
圖1 設(shè)計(jì)總體框圖
圖2 AT89S51單片機(jī)PDIP40封裝外形圖及最小應(yīng)用系統(tǒng)電路
根據(jù)國(guó)際標(biāo)準(zhǔn)字庫(kù)的要求,每一個(gè)漢字由16行16列的點(diǎn)陣組成,即國(guó)標(biāo)漢字庫(kù)中的每一個(gè)字均由256個(gè)點(diǎn)陣來(lái)表示。我們可以把每一個(gè)點(diǎn)理解為一個(gè)象素,而把每一個(gè)字的字形理解為一幅圖像。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字,也可以顯示在256象素范圍內(nèi)的任何圖形。通過(guò)字庫(kù)軟件可自動(dòng)生成十六進(jìn)制數(shù)據(jù)的漢字代碼。把內(nèi)碼數(shù)據(jù)復(fù)制到程序中由計(jì)算機(jī)傳給單片機(jī),再經(jīng)單片機(jī)內(nèi)部程序的控制將接收到的漢字內(nèi)碼轉(zhuǎn)換成16*16的點(diǎn)陣結(jié)構(gòu),然后就可以送到在LED顯示屏上動(dòng)態(tài)顯示了。
根據(jù)LED顯示屏顯示漢字的基本原理,設(shè)計(jì)出系統(tǒng)框圖。由于單片機(jī)的總線為8位,一個(gè)字需要拆分為2個(gè)部分,所以需要兩個(gè)存儲(chǔ)器存放。
其中PC機(jī)用于查詢漢字內(nèi)碼,并把內(nèi)碼傳給接口芯片,由接口芯片完成從RS232向TTL電平的轉(zhuǎn)換。AT89S51單片機(jī)完成圖形顯示方式將漢字內(nèi)碼向點(diǎn)陣結(jié)構(gòu)的轉(zhuǎn)化。要顯示的相鄰兩幀內(nèi)容存放至存儲(chǔ)器3,4中。存儲(chǔ)器1用于存放單片機(jī)接收的漢字內(nèi)碼。存儲(chǔ)器2用于存放漢字庫(kù)的點(diǎn)陣結(jié)構(gòu)。存儲(chǔ)器3用于存放要顯示的顯示的相鄰兩幀內(nèi)容的第一幀。存儲(chǔ)器4用于存放要顯示的顯示的相鄰兩幀內(nèi)容的第二幀。硬件掃描電路可編程器件完成動(dòng)態(tài)掃描。LED顯示模塊將顯示存儲(chǔ)器3或4的內(nèi)容。
本文中應(yīng)用到的電路包括AT89S51芯片、74LS373地址鎖存器、74LS245雙向總線緩沖器、74LS157四位二選一電路、HM6264存儲(chǔ)器、EPROM29FO4O存儲(chǔ)器以及LED點(diǎn)陣模塊。
其中由Atmel公司推出的AT89S51芯片,與MCS51單片機(jī)指令集兼容,時(shí)鐘頻率為O~33MHz,采用32個(gè)可編程輸入/輸出引腳和2個(gè)16位定時(shí)/計(jì)數(shù)器,內(nèi)部包含用作程序存儲(chǔ)器的4KB的基于FLASH技術(shù)的只讀存儲(chǔ)器。
74LS373地址鎖存器的作用是將單片機(jī)送往各存儲(chǔ)器的地址進(jìn)行鎖存。74LS245雙向總線緩沖器起選擇地址作用。4LS157電路芯片用于分離計(jì)數(shù)器和單片機(jī)向存儲(chǔ)器3或存儲(chǔ)器4發(fā)送的地址。74LS138譯碼器可以在不同的時(shí)間讓需要工作的存儲(chǔ)器的片選信號(hào)有效。存儲(chǔ)器6264用于存放單片機(jī)送來(lái)的漢字內(nèi)碼和轉(zhuǎn)換后的點(diǎn)陣結(jié)構(gòu)。EPROM AM29O4O-9O/BUA(32)存放經(jīng)過(guò)轉(zhuǎn)換后的漢字點(diǎn)陣。LED顯示屏采用16×16像素矩陣模塊。
通過(guò)程序控制LED畫(huà)面,可以形成上移、下移、左平移、右平移等多種顯示方式。由于篇幅所限,本文只討論顯示屏上移滾動(dòng)顯示方式的實(shí)現(xiàn)。編程語(yǔ)言采用C語(yǔ)言。
首先計(jì)算機(jī)把要顯示的信息轉(zhuǎn)換成和LED對(duì)應(yīng)的點(diǎn)陣數(shù)據(jù)及地址,然后通過(guò)接口電路將其送到掃描板的寫入地址及數(shù)據(jù)產(chǎn)生器中。寫入地址及數(shù)據(jù)產(chǎn)生器產(chǎn)生要寫入存儲(chǔ)器的數(shù)據(jù)及地址。讀地址產(chǎn)生器產(chǎn)生存儲(chǔ)器的讀出地址。掃描控制電路把存儲(chǔ)器中的數(shù)據(jù)送到顯示屏上,并同時(shí)產(chǎn)生時(shí)鐘信號(hào)、鎖存信號(hào)及行掃描信號(hào)。
下面只給出接收緩沖區(qū)字符存入存儲(chǔ)器1的過(guò)程及代碼以供讀者參考。
圖3 文字上移滾動(dòng)設(shè)計(jì)流程圖
內(nèi)碼由串口輸入到緩存r_buf,CPU往存儲(chǔ)器1順序存放所有字的內(nèi)碼(每個(gè)字2個(gè)字節(jié))。設(shè)一個(gè)一維字符數(shù)組mdata[Ox ffff]和指向數(shù)組的指針變量*hz。把指針指向數(shù)組首部hz=&mdata[O],把從串口輸入的所有字的內(nèi)碼依次存入數(shù)組mdata[]當(dāng)中。
本文從理論上闡述了使用單片機(jī)控制LED電子顯示屏顯示漢字的基本原理,并給出了LED屏幕文字向上滾動(dòng)的設(shè)計(jì)與實(shí)踐方案。此方案已在筆者的測(cè)試機(jī)上通過(guò)。雖然電路比較簡(jiǎn)單,但是其整個(gè)過(guò)程已經(jīng)包涵了單片機(jī)的基本理論和LED顯示屏電路的基本原理和基本程序,只要擴(kuò)展單片機(jī)的IO接口,并增加一些相關(guān)芯片,就能設(shè)計(jì)出更大面積、更復(fù)雜的LED顯示屏。因此本文對(duì)研究單片機(jī)原理和LED的顯示原理及應(yīng)用具有一定的理論和實(shí)踐參考價(jià)值。
[1]李朝青.單片機(jī)原理及接口技術(shù)[M].北京航空航天大學(xué)出版社,2005(第三版).
[2]錢珊珠.微型計(jì)算機(jī)原理及應(yīng)用[M].國(guó)防工業(yè)出版社,2008,5(第一版).
[3]馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2007(第四版).
[4]譚浩強(qiáng),張基溫.C語(yǔ)言程序設(shè)計(jì)教程[M].高等教育出版社,2006,8(第3版).