孫新鳳 ,張 健 ,王新娜
(1.保定電力職業(yè)技術(shù)學(xué)院 電氣工程系,河北 保定 071051;2.保定三川電氣有限責(zé)任公司,河北 保定 071051)
LED點(diǎn)陣書(shū)寫(xiě)顯示屏是基于LED點(diǎn)陣顯示及光筆檢測(cè)輸入的一種人機(jī)交互器件,它被廣泛應(yīng)用于各類(lèi)會(huì)議、教學(xué)、遠(yuǎn)程教育、電視直播、設(shè)計(jì)分析、實(shí)時(shí)指揮等領(lǐng)域,實(shí)現(xiàn)了高效、直觀、無(wú)障礙溝通,從而大大節(jié)省了時(shí)間,提高了工作效率,降低了交流成本。
筆者所設(shè)計(jì)的是一個(gè)基于32×32 LED點(diǎn)陣模塊的書(shū)寫(xiě)顯示屏。在ATmega16微控制器的管理下,LED點(diǎn)陣模塊顯示屏工作在人眼不易覺(jué)察的掃描微亮和人眼可見(jiàn)的顯示點(diǎn)亮模式下。當(dāng)光筆觸及LED點(diǎn)陣模塊表面時(shí),獲取其行列坐標(biāo),再依據(jù)功能需求決定該坐標(biāo)處的LED是否點(diǎn)亮至人眼可見(jiàn)的顯示狀態(tài),從而在屏上實(shí)現(xiàn)點(diǎn)亮、劃亮、反顯、整屏擦除、筆畫(huà)擦除及連寫(xiě)多字等書(shū)寫(xiě)顯示功能。
LED點(diǎn)陣書(shū)寫(xiě)屏主要由控制器、LED點(diǎn)陣顯示屏和光筆3部分組成。其系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)原理框圖
采用的控制器是美國(guó)Atmel公司生產(chǎn)的AVR系列單片機(jī)的一種高檔產(chǎn)品ATmega16單片機(jī),是基于增強(qiáng)AVR RISC結(jié)構(gòu)的低功耗8位CMOS微控制器[1]。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega16的數(shù)據(jù)吞吐率高達(dá)16 MI/s(兆指令每秒)@16 MHz,從而可以緩減系統(tǒng)在功耗和處理速度間的矛盾,也能滿(mǎn)足本系統(tǒng)對(duì)處理速度的要求。ATmega16單片機(jī)有32位雙向I/O端口,輸出緩沖器具有對(duì)稱(chēng)的驅(qū)動(dòng)特性,可以輸出和吸收大電流,不需I/O擴(kuò)展就能滿(mǎn)足本系統(tǒng)對(duì)I/O的要求。16 kbyte的系統(tǒng)內(nèi)可編程Flash,能存儲(chǔ)一定程序,且具有同時(shí)讀寫(xiě)的能力,給程序的編寫(xiě)和修改帶來(lái)很大方便。512 kbyte的E2PROM和1 kbyte的SRAM滿(mǎn)足數(shù)據(jù)存儲(chǔ)的一般要求,對(duì)于本系統(tǒng)來(lái)說(shuō)需要充分合理利用SRAM的容量。用于邊界掃描的JTAG接口,支持片內(nèi)調(diào)試與編程。具有3個(gè)比較模式的靈活的定時(shí)器/計(jì)數(shù)器(T/C),片內(nèi)/外中斷,可充分滿(mǎn)足系統(tǒng)定時(shí)及中斷的要求。可編程串行USART,有起始條件檢測(cè)器的通用串行接口,具有片內(nèi)振蕩器的可編程看門(mén)狗定時(shí)器,1個(gè)SPI串行端口,以及6個(gè)可通過(guò)軟件進(jìn)行選擇的省電模式。AT-mega16單片機(jī)豐富的芯片資源,不需擴(kuò)展就可實(shí)現(xiàn)系統(tǒng)控制要求。
LED點(diǎn)陣顯示屏由兩部分組成。一部分是LED點(diǎn)陣顯示模塊,由16個(gè)8×8的LED點(diǎn)陣分為4行4列,組成32×32的LED點(diǎn)陣屏。8×8的LED點(diǎn)陣[2]為單色共陽(yáng)模塊,單點(diǎn)的工作電壓為1.8 V,正向電流5~10 mA,其結(jié)構(gòu)圖與正面圖如圖2所示。每個(gè)LED都是放置在行線(xiàn)和列線(xiàn)的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一行置高電平,某一列置低電平時(shí),交叉點(diǎn)上的LED就亮起來(lái)了,否則LED不亮。通過(guò)對(duì)行和列送不同的電平可實(shí)現(xiàn)對(duì)LED點(diǎn)陣屏各點(diǎn)的控制。另一部分是點(diǎn)陣行列驅(qū)動(dòng)模塊,由8片數(shù)據(jù)移位鎖存器74HC595[3]構(gòu)成。8片數(shù)據(jù)移位鎖存器74HC595分為兩組,每4片級(jí)聯(lián)構(gòu)成一個(gè)32位移位鎖存器,分別驅(qū)動(dòng)LED點(diǎn)陣模塊的32行與32列,級(jí)聯(lián)方式如圖3所示。每組74HC595的串行輸入端和時(shí)鐘控制端分別并聯(lián)在一起,由單片機(jī)的3個(gè)I/O引腳控制,實(shí)現(xiàn)數(shù)據(jù)串行傳輸。這樣只需單片機(jī)的6個(gè)I/O引腳就能實(shí)現(xiàn)對(duì)32×32的LED點(diǎn)陣屏的控制,不僅節(jié)省了I/O端口資源,而且編程簡(jiǎn)單,外圍器件連接簡(jiǎn)單,降低了硬件故障率和硬件成本。
圖2 8×8 LED點(diǎn)陣結(jié)構(gòu)與正面圖
圖3 LED點(diǎn)陣驅(qū)動(dòng)電路
光筆由光電三極管ST-1CL3H、限流電阻和74LS04構(gòu)成[4],如圖4所示。光筆筆頭不在點(diǎn)陣屏上時(shí)該電路輸出信號(hào)一定,當(dāng)光筆接觸到處于工作狀態(tài)的點(diǎn)陣屏?xí)r,光電三極管輸出信號(hào)發(fā)生明顯跳變,從而可以確定點(diǎn)陣屏坐標(biāo)。ST-1CL3H為高速光電三極管,其響應(yīng)時(shí)間約為3 ns,能達(dá)到很高的檢測(cè)精度。
圖4 光筆電路圖
軟件程序是整個(gè)系統(tǒng)的核心部分,采用C語(yǔ)言[5]編寫(xiě)。
要實(shí)現(xiàn)整個(gè)系統(tǒng)的功能,首先要明確如何實(shí)現(xiàn)LED點(diǎn)陣書(shū)寫(xiě)顯示屏的兩種工作模式,即人眼不易覺(jué)察的掃描微亮和人眼可見(jiàn)的顯示點(diǎn)亮。兩種模式的區(qū)別在于人眼可見(jiàn)與不可見(jiàn),由人眼的暫留效應(yīng)和發(fā)光二極管發(fā)光時(shí)間的長(zhǎng)短決定,點(diǎn)亮?xí)r間短于人眼感知時(shí)間,LED燈為掃描微亮模式;點(diǎn)亮?xí)r間達(dá)到人眼感知時(shí)間,則LED燈為顯示點(diǎn)亮模式。
然后利用LED動(dòng)態(tài)掃描顯示原理確定坐標(biāo)位置。ATmega16單片機(jī)對(duì)兩組移位鎖存器74HC595送數(shù)據(jù),某行送一個(gè)高電平,其余行為低電平;某列送一個(gè)低電平,其余列為高電平,一個(gè)時(shí)間只掃描一個(gè)LED點(diǎn)。AT mega16的數(shù)據(jù)吞吐率高達(dá),全速掃描32×32個(gè)點(diǎn),每一個(gè)LED點(diǎn)亮的時(shí)間就短到人眼不易覺(jué)察的程度,而高速光電三極管ST-1CL3H的響應(yīng)時(shí)間約為3 ns,完全可以檢測(cè)到。當(dāng)光筆所在位置LED被掃描時(shí),光電三極管返回一個(gè)信號(hào),從而可以確定光筆所在位置點(diǎn)的坐標(biāo)。
最后是點(diǎn)亮、劃亮、反顯、整屏擦除、筆畫(huà)擦除及連寫(xiě)多字等書(shū)寫(xiě)顯示功能的實(shí)現(xiàn)。每一種功能為一個(gè)獨(dú)立的模塊,可由一個(gè)開(kāi)關(guān)控制,軟件功能框圖如圖5所示。
對(duì)于“點(diǎn)亮”功能,只要光筆位置確定了,將該坐標(biāo)點(diǎn)LED點(diǎn)亮?xí)r間延長(zhǎng)就可實(shí)現(xiàn)人眼可察覺(jué)的點(diǎn)亮功能?!皠澚痢惫δ苁菍⒚看吸c(diǎn)亮的LED點(diǎn)坐標(biāo)在一個(gè)32×4的數(shù)組相應(yīng)位做標(biāo)記,每掃描一個(gè)LED點(diǎn)檢測(cè)一次該數(shù)組相應(yīng)位置及光筆位置,從而點(diǎn)亮所有光筆點(diǎn)過(guò)的LED燈。“連寫(xiě)多字”功能是給定一個(gè)數(shù)組用于存儲(chǔ)LED坐標(biāo)點(diǎn)亮情況,顯示時(shí)調(diào)用即可。其他功能可在這幾個(gè)功能實(shí)現(xiàn)思路的基礎(chǔ)上完成。
圖5 軟件功能框圖
系統(tǒng)上電后書(shū)寫(xiě)顯示屏工作在人眼不易覺(jué)察的掃描微亮模式。進(jìn)入“點(diǎn)亮”功能,光筆任意點(diǎn)在點(diǎn)陣屏上,被選中的點(diǎn)立刻被點(diǎn)亮,與此同時(shí)被點(diǎn)亮的LED的坐標(biāo)顯示在液晶屏上,經(jīng)多次測(cè)試準(zhǔn)確無(wú)誤。進(jìn)入“劃亮”功能,2 s內(nèi)光筆在屏上迅速劃過(guò),劃亮LED點(diǎn)的個(gè)數(shù)如表1所示。先在屏上劃亮多個(gè)點(diǎn)后,進(jìn)入“反顯”功能模式后,原劃亮處微亮,其余點(diǎn)高亮。在“劃亮”功能下,在屏上任意劃線(xiàn),然后進(jìn)入“整屏擦除”功能,屏上顯示的LED高亮點(diǎn)立即被擦除。選擇“筆畫(huà)擦除”功能,能用光筆擦除屏上已被劃亮的LED高亮點(diǎn)。選擇“連寫(xiě)多字”功能,30 s內(nèi)在屏上以“劃亮”方式逐個(gè)寫(xiě)出4個(gè)漢字,且存入機(jī)內(nèi),寫(xiě)完后再將所存4個(gè)字在屏上逐個(gè)輪流顯示。
整個(gè)系統(tǒng)測(cè)試效果良好,只是劃亮過(guò)程中如果劃亮點(diǎn)數(shù)過(guò)多,會(huì)出現(xiàn)一定閃爍現(xiàn)象,可通過(guò)縮小LED點(diǎn)陣個(gè)數(shù),或采用更高處理速度的處理器來(lái)解決這個(gè)問(wèn)題。如果需要更大顯示屏,可通過(guò)多片單片機(jī)聯(lián)機(jī)實(shí)現(xiàn)。
表1 劃亮功能測(cè)試表
[1]Atmel.8-bitmicrocontroller with 16K Bytes in-system programmable flash[EB/OL].[2009-12-10].http://www.datasheetcatalog.org/datasheet/atmel/2466S.pdf.
[2]中國(guó)LED顯示屏網(wǎng).8×8點(diǎn)陣LED原理及應(yīng)用[EB/OL].[2009-12-15].http://www.led8.com/news/tech_design/2006/1229/06122912827 CF26H5AC47K233H2G3GE.html.
[3]翟震,張春玲.用74HC595芯片驅(qū)動(dòng)LED的電路設(shè)計(jì)[J].機(jī)床與液壓,2004(12):151-152.
[4]王漢橋.電子技術(shù)基礎(chǔ)[M].北京:中國(guó)電力出版社,2006.
[5]彭同明,徐學(xué)勤.單片機(jī)原理及應(yīng)用[M].北京:中國(guó)電力出版社,2005.