LED顯示屏是八十年代后期在全球迅速發(fā)展起來的新型信息顯示媒體,應用越來越廣泛。ATMEGA16L單片機是一款基于AVRRISC的、低功耗CMOS8位單片機,具有16K字節(jié)的自編程FLASH,512字節(jié)的EEPROM,1K字節(jié)的SRAM,通過AVR單片機來控制LED的顯示,結構簡單,應用靈活,并且易于擴展。
2 系統設計原理
2.1 編碼設計
編碼設計有兩個過程:字庫提取以及字模編碼轉換。字庫的提取涉及到的兩個字庫文件,一個為ASC16,專門存放ASCII編碼;另一個為HZK16,專門存放漢字字庫編碼。要提取字庫,首先要對它進行初始化,即打開字庫。然后根據一個字符提取它相應的編碼。首先取出字符的內碼后(注意區(qū)分單字節(jié)和雙字節(jié)的內碼),接著通過內碼得到該字符對應的字模的編碼在ASCII或HZK16內的偏移量,最后就可以根據這個地址在文件中的偏移位置找到相應的字模編碼,我們可以通過這個公式來計算:
在ASCII中,偏移量=(內碼的低地址)*16,
在HZK16中,偏移量=((內碼的高地址-161)*94+(內碼的低地址-161))*32。
此時得到的字模編碼不是最終所要的編碼(單字節(jié)數據如英文是按8*16點陣來顯示,而雙字節(jié)數據時如漢字是按16*16點陣來顯示的)。這里統一使用8*16點陣,這就需要對其轉換。下圖左表格表示的是漢字編碼在字庫內存放順序,右表格表示的是經過轉換過后的編碼存放順序。編碼轉換過程如圖1所示:
2.2 矩陣轉換移位算法
矩陣轉換移位算法目的就是如何把這些原始的數據轉換成串行的數據,以便把數據正確的輸入到74HC595。原始的數據必須要對其轉換。下面為它的算法實現。
2.3 上位機和下位機的通信
上位機和下位機的通信主要是通過RS232接口進行的,對于上位機的數據傳輸的速率為9600bps。為了便于數據的傳輸和接收,可以給要傳輸數據的前后加上標志位。如果數據發(fā)送量大,在發(fā)送數據時還可采用線程的方式來發(fā)送。而下位機接收數據則可采用單片機內全雙工的通用異步收發(fā)器(UART)來進行。
UART有中斷和查詢兩種工作方式,UART初始化需要設置相關幾個控制寄存器,我們可以把UART幾個控制寄存器的初始化情況表示出來:
UCR=0x00設置波特率時要先關閉UARTUBRR=0x33設置波特率為9600bpsUCR=0xD8打開串口:
8位數據UART如何接收和發(fā)送數據通過數據寄存器UDR完成。UDR雖然只有一個地址,但是在物理上分離了二個寄存器,一個用于發(fā)送,一個用于接收。對于數據的接收和發(fā)送采用中斷的方式,其中斷向量為12,即是interrupthandleruart0_rx_isr:12。接收和發(fā)送方式如下:
2.4 顯示原理
要想點亮LED,必須把LED的位選數據信號置成低電平。顯示的過程如下:首先是將74HC595的RCK置0,再從相應數組中取出要顯示的數據和位選信號,通過SCK的一個上升沿脈沖,就可以將這個數據輸入74HC595,等所有的數據打入相應的芯片后最后再把RCK置1,這些數據就可以通過74HC595并行的傳輸出去。
3 系統的設計方案
硬件總體框架的設計是根據上位機與下位機通信原理以及LED點陣顯示原理和74HC595的特性所構成的。下面的圖2說明的是LED點陣顯示驅動原理圖及其連線方式。
PA、PB口將作為數據輸出口,一共連接16個8*8的LED。端口的每一個引腳將作為74HC595的數據輸入端。RCK、SCK的并聯的使用的目的是為了實現LED字符的同步顯示。在線路連接中Q`H必須連接SI,因為根據74HC595的特性,如果輸入的數據數大于8,那么前面的數據將會被自動溢出,根據這一思想就將兩個芯片連接起來,按照先輸入8位數據信號,再輸入8位位選信號的順序,那么正好前一個74HC595存放位選信息,后一個74HC595存放數據信息。
根據系統的設計原理,得出如下圖3的軟件流程框架:
4 結論
對于目前這個顯示系統,優(yōu)點在于電路實現簡單,成本較低。如果系統需要更大的字符顯示庫,只需要擴展AVR的RAM或EEPROM,并且用多個AVR單片機進行的通訊即可。當然,這時需要注意數據寫入時間問題,以免造成顯示的不同步。