摘 "要: 為了實現AVR單片機對LED點陣顯示系統的控制,采用ATmega128作為下位機MCU,通過接收上位機發送的顯示內容和顯示模式的串行信號,實現16×32高亮點陣屏的一行多個文字或符號的顯示。系統實際運行穩定,顯示效果良好,便于多塊點陣屏的擴展,作為高職學生的大學生實踐創新有較高的實踐意義。
關鍵詞: LED顯示屏; AVR單片機; 上位機; 串行通信
中圖分類號: TN964?34 " " " " " " " " " 文獻標識碼: A " " " " " " " " " " " " " "文章編號: 1004?373X(2015)02?0056?03
Design of LED matrix advertisement screen based on ATmega128 MCU
ZHU Zhi?qiang, BAO Jun?wei, ZHONG Bo, ZHU Jing?xia, WANG Rui
(Department of Electronic Information Engineering, Jiangyin Polytechnic College, Jiangyin 214400, China)
Abstract: In order to control LED matrix screen systems by AVR SCM, the display of characters and symbols in one line on 16×32 highlight matrix screen was realized by using ATmega128 as the lower computer MCU, and receiving the display content and display mode serial signal form host computer. The system is stable and its display effect is good. It is convenient for expansion of more lattice display screen, and has high practical significance for innovative practice of higher vocational college students.
Keywords: LED screen; AVR MCU; host computer; serial communication
0 "引 "言
隨著高亮LED技術的發展,LED點陣屏以其使用壽命長,顯示內容方便靈活,性能穩定等優勢已經逐步替換了傳統廣告牌,成為主流的廣告顯示產品[1]。目前高職應用電子技術專業在開設單片機原理課程時大多使用51系列單片機作為載體,但51系列單片機只適合用作常規教學,幫助學生理解單片機基本工作原理。本設計采用AVR單片機做為主控制器,設計并制作16×32點陣屏,不僅提高了學生對單片機的學習興趣,且作為創新實踐項目加深了學生對單片機系統的理解。
1 "系統設計方案
本系統采用PC端上位機通過串口通信控制下位機的方式進行相應內容的顯示。通過PC端發送顯示方式的控制命令及顯示內容的16進制字模編碼,下位機實現相應內容的顯示。
由于下位機是8位系統,為節約資源顯示采用了行列掃描的動態顯示方式,且通過列線擴展本系統可以方便地構成多塊點陣的大屏幕顯示。本系統只占用少量I/O口資源,為后續升級預留了空間,系統整體方案如圖1所示。
lt;E:\王芳\現代電子技術201502\Image\02t1.tifgt;
圖1 系統整體設計方案
2 "硬件系統設計
2.1 "下位機單片機選擇
單片機是下位機系統的核心器件,也是整個顯示系統的核心控制部分。單片機的任務是和上位機進行通信,并處理上位機發送的控制命令和顯示的具體內容,再通過合適的掃描顯示方式經驅動電路驅動LED點陣屏顯示[2],因此單片機的性能直接決定了該顯示系統的先進程度。目前作為教學,51系列的單片機是各大院校教學首選,通過學習51單片機主要讓學生理解單片機的片上資源和工作流程,雖此模式從20世紀90年代持續到現在,但仍是一個非常優秀的教學模型。為培養學生的創新實踐能力,從系統的先進性、靈活性、穩定性角度出發,應該鼓勵學生采用更高級的單片機系統,通過實踐,AVR系列單片機中的ATmega128單片機是比較可行的選擇。
ATmega128單片機的功能基本上是AVR8位單片機中最強大的一款,學生掌握了這一款,其他型號也能觸類旁通。
ATmega128單片機特點如下[4]:
(1) 先進的RISC結構,大多數指令可在1個時鐘周期內完成;
(2) 128 KB的可編程FLASH ROM,4 KB的E2PROM,4 KB的SRAM;
(3) 通過JTAG接口對FLASH、E2PROM的編程;
(4) 通過設置寄存器直接PWM輸出;
(5) 8路10位精度的ADC;
(6) 兩個可編程的通用串行口。
結合以上優點,下位機系統采用ATmega128能進一步培養學生的創新實踐能力。
2.2 "顯示電路設計
LED點陣屏由多個發光二極管組成,本系統顯示為32×16點陣,分別由2個16×16點陣模塊擴展組成。一個16×16點陣模塊由四個8×8 LED基本模塊構成,顯示模塊如圖2所示。
lt;E:\王芳\現代電子技術201502\Image\02t2.tifgt;
圖2 點陣顯示模塊
由于點陣數目較多,為節約資源,本系統采用了行掃描和列掃描的顯示模式。
列掃描電路采用的是串并轉換器74LS164[3],如果不采用譯碼電路完全依靠單片機的端口輸出來控制16×16的LED點陣屏顯示,需要32個端口。而采用譯碼電路后僅僅需要7~9個端口便可實現控制顯示,大大減少了I/O口的占用數目。行驅動電路采用8550PNP三極管,在驅動電路中起到提供驅動電流和選通開關的作用。本系統列掃描驅動電路采用串入并出的通用集成電路74HC595來作為數據鎖存。如圖3所示。74HC595是OD結構的8位CMOS移位寄存器,輸出端具有可控的三態輸出鎖存結構,不但能用作串入并出,還能串行輸出控制下一級級聯芯片實現16~32路的擴展。
lt;E:\王芳\現代電子技術201502\Image\02t3.tifgt;
圖3 列掃描電路的級聯
將4片74HC595進行級連,共用同一移位CP及鎖存信號。于是,當第一行待顯示的內容經過64個移位時鐘后便可將其全部移入74HC595中,此時便產生1個鎖存信號,用來將數據鎖在74HC595中,并在使能信號作用下,將串行輸入的數據并行輸出。由行掃描控制電路產生的信號使第1行LED導通,相當于第1行LED的陽極都接1,因此第1行LED管的亮滅取決于74HC595中的鎖存信號。在第1行LED點亮的同時,再在74HC595中移入第2行需要顯示的數據,隨后將其鎖存,同時由行掃描控制電路將第1行LED陽極接0關閉而接通第2行,使第2行LED做好點亮的準備,如此循環,當第16行掃描過后再回到第1行,只要掃描的頻率能克服人眼的視覺殘留,就可形成一幅完整的文字或圖像。
2.3 "通信電路設計
本系統上位機和下位機通過串行口進行通信,ATmega128單片機內部有兩個可編程的通用串行口,本系統只需一個即可,只占用兩根口線即可實現通信,為了實現PC到單片機的通信,必須再加一個電平轉換器,由于本系統通信距離不是很遠,故選用RS 232標準總線接口,因此電平轉換器采用MAX 232實現TTL電平到RS 232電平的雙向轉換。通信電路如圖4所示[5]。
3 "軟件系統設計
系統的軟件設計要實現功能包括了上位PC機的顯示內容的發送、下位機控制點陣屏輸出及與PC的通信。
lt;E:\王芳\現代電子技術201502\Image\02t4.tifgt;
圖4 串行通信電平轉換電路
3.1 "上位機軟件設計
為了縮短開發周期,在測試階段將待顯示的內容通過字模軟件轉換成16進制代碼串,上位機采用串口調試助手即可進行串口通信。在與下位機進行通信時,雙方都必須嚴格遵守相同的數據幀格式和波特率[6]。本系統在調試時數據的幀格式為1幀10位,包括1位起始位、8位數據位,1位停止位,發送時低位在前,高位在后。
3.2 "下位機軟件設計
AVR單片機主程序開始以后,首先是系統進行初始化,包括設置串口通信的方式和波特率、設置定時器和中斷方式;然后以“從右移入滾動”效果顯示文字。由于單片機沒有停機指令,所以可以設置系統程序不斷的循環執行上述顯示效果,程序流程如圖5所示。
lt;E:\王芳\現代電子技術201502\Image\02t5.tifgt;
圖5 下位機子程序流程
8×8單元顯示屏接收上位機發送的數據信息和命令信息,并可將這些數據信息和命令信息不經任何變化地再傳送到下一級顯示模塊單元中,因此顯示板可擴展至更多的顯示單元,用于顯示更多的顯示內容,顯示子程序流程如圖6所示。
lt;E:\王芳\現代電子技術201502\Image\02t6.tifgt;
圖6 顯示驅動流程
以顯示功能為例,程序實現如下:
void display() " " " " " " " " " " " " " " " " " " " " "http://顯示子函數
{
unsigned char i,ia,j,tmp;
DATAOUT=0XFF; " " " " //置位高電平做準備
AB=0; " " " " " "http://將行數據位清0,準備移位
for(i=0;ilt;16;i++)
{ " " " " " " " " " " " " " " " " " //16行數據循環輸出
SCK=0; " " " " " " " " //為行移位做準備
SCLT=0; " " " " "http://為列鎖存做準備
for(ia=4;iagt;0;)
{ " " " " " " " " " " " " //每行32個點,循環位移4 B
ia??; " " " " " " " " " " " " " nbsp; " " //循環4次
tmp=~cache[i*2+ia];
for(j=0;jlt;8;j++)
{ " " " " " " " " " " " "http://循環兩次,每次移1 B,
SCLH=0; " //為列移位做準備
DATA=tmpamp;0x01;
tmpgt;gt;=1;
//將數據緩沖右移一位,為下次輸出做準備
SCLH=1; //將DATA上的數據移入寄存器
} " //移入單字節結束
} " " " " " " "http://移入2 B結束
SCK=1;
SCLT=1;
AB=1;
}
j=32;
while(j??);
SCK=0;
SCK=1; " " " " " " " " "http://將最后1行數據移出
}
4 "結 "語
本系統設計時以AVR單片機為核心控制器,在上位機的發送命令下能實現32×16的點陣屏動態顯示,系統整體運行效果良好,顯示穩定,達到設計要求。下位機MCU采用Atmega128單片機,程序編寫的靈活性和穩定性優于51單片機,對高職學生的大學生實踐創新有較高的實踐價值。
參考文獻
[1] 徐振方,孟艷花,王艷.基于AVR 單片機的LED顯示屏控制系統的研究[J].照明工程學報,2010,21(2):77?80.
[2] 王靜霞.單片機應用技術(C語言版)[M].北京:電子工業出版社,2009.
[3] 李秀忠.基于單片機的LED顯示屏控制電路設計[J].現代電子技術,2010,33(15):200?202.
[4] 鄒清平,盧森幸.一種基于 ATmega32 控制MP3播放器的設計與實現[J].中國科技信息,2012(24):118?120.
[5] 李朝青.PC機及單片機數據通信技術[M].北京:北京航空航天大學出版社,2001.
[6] 張立科.單片機通信技術與工程實踐[M].北京:人民郵電出版社,2005.