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