基于AVR單片機LED顯示屏的灰度設(shè)計與實現(xiàn)
1 AVR單片機簡介
AVR單片機是增強型內(nèi)置FLASH的RISC(ReducedInstructionSetCPU)精簡指令集高速8位單片機,硬件采用哈佛(Harward)結(jié)構(gòu),達到一個時鐘周期可以執(zhí)行一條指令,絕大部分指令都為單周期指令。支持在系統(tǒng)編程ISP,其中MEGA系列還支持在應(yīng)用編程IAP。內(nèi)置的FLASH程序存儲器可擦寫1000次以上,給用戶的開發(fā)生產(chǎn)和維護帶來方便。可擦寫10萬次的E2PROM,為掉電后數(shù)據(jù)的保存帶來方便。AVR單片機有豐富的片內(nèi)資源,如RTC,WATCHDOG,AD轉(zhuǎn)換器,PWM,USART,SPI,TWI接口等,I/O口功能強、驅(qū)動能力強。
2 系統(tǒng)整體設(shè)計方案
LED顯示系統(tǒng)主要由3部分構(gòu)成:PC上位機圖像文字轉(zhuǎn)換與數(shù)據(jù)發(fā)送單元、主控單元以及顯示子模塊。
上位機完成把圖像和文字轉(zhuǎn)換成為顯示屏的顯示碼,并且把顯示信息發(fā)送到主控單元上。主控單元選用具有32kB片內(nèi)FLASHROM和2kB片內(nèi)RAM的AT-mega32單片機,沒有外掛存儲器。如果要存儲更多的顯示信息,可以選用具有64kB片內(nèi)FLASHROM的AT-mega64或者具有128kB片內(nèi)FLASHROM的AT-megal28,也可以外掛存儲器來增大存儲能力。主控單元主要完成對顯示數(shù)據(jù)的滾動和分割處理,然后通過異步串行口發(fā)送到每個子模塊中。每個顯示子模塊用4片8×8單色點陣塊拼成1個16×16的點陣屏,用一片ATMEGA8完成掃描動態(tài)顯示。
主控單元與顯示子模塊的數(shù)據(jù)通信采用標準的異步串口格式,每幀數(shù)據(jù)包括1個起始位,8個數(shù)據(jù)位,1個地址/數(shù)據(jù)標示位,1個停止位共11位。數(shù)據(jù)傳輸碼率為625kb/s,字節(jié)傳輸速率為56.8kB/s。每個子模塊由256個LED構(gòu)成,實現(xiàn)16階灰度每個LED需要4b空間,因此每個顯示子模塊全屏數(shù)據(jù)量為128B,外加1B的尋址字節(jié)共129B。主控單元更新顯示子模塊的顯示內(nèi)容時,對所有子模塊按地址逐個發(fā)送顯示數(shù)據(jù),更新完所有子模塊數(shù)據(jù)后,再發(fā)送一個特殊的地址字0xFF作為控制字,使所有子模塊同時更新顯示數(shù)據(jù),這樣可以避免當(dāng)屏幕較大,顯示子模塊數(shù)量較多時各子模塊畫面更新不同步的問題。對本設(shè)計中完成的6×4個顯示子模塊而言,由于通訊速率限制,畫面更新速度最高可達56800/(129×24+1)=18.34幀/s,由于主控單元還要完成全屏數(shù)據(jù)的分割和顯示內(nèi)容的移動控制,所以其實際幀數(shù)低于上述值,不過用于普通的圖片顯示已經(jīng)可以達到要求。
現(xiàn)場應(yīng)用中,可以不需要PC上位機,只需把要顯示的信息存儲在主控單元,即可通過主控單元中的按鍵來選擇顯示的內(nèi)容及方式,可循環(huán)顯示,文字信息還可以上下左右滾屏顯示。
3 系統(tǒng)硬件設(shè)計
該系統(tǒng)由兩部分硬件電路組成:主機板電路和子模塊顯示驅(qū)動電路。
3.1 主機板電路
主機板電路十分簡潔,由ATmega32組成的最小系統(tǒng)和RS232,RS485接口電路組成。
主機板上的數(shù)據(jù)由異步串行口發(fā)送到各個子模塊中,為了在提高傳輸速度和距離的情況下仍能夠保證數(shù)據(jù)傳輸?shù)目煽啃?,主機板上發(fā)出的信息轉(zhuǎn)換成為RS485信號,采用帶屏蔽層的同軸電纜傳輸?shù)絃ED子模塊上。轉(zhuǎn)換所用接口芯片為MAX485,該芯片工作于5V電壓下,最高傳輸速度可達到2.5Mb/s,傳輸距離可達l200m。采用帶屏蔽層的同軸電纜可以降低傳輸過程中產(chǎn)生的信號干擾。
在需要從PC上位機下載數(shù)據(jù)到FLASHROM時,通過MAX232芯片實現(xiàn)ATmega32和PC機的通信。
3.2 子模塊顯示驅(qū)動電路
子模塊顯示驅(qū)動電路由RS485轉(zhuǎn)換電路、子模塊地址標識電路和點陣驅(qū)動電路組成。RS485轉(zhuǎn)換電路和主機板中一樣,同樣采用MAX485作電平轉(zhuǎn)換。
由于采用單片機的異步串行口進行多機通信進行數(shù)據(jù)傳輸,每個子模塊應(yīng)該有和其位置相對應(yīng)的地址標識。地址標識電路采用8位并進串出芯片74HCl65和8位撥碼開關(guān)組成,因此本系統(tǒng)最多可以容納255個子模塊(地址OxFF作為更新子模塊顯示的控制字)。如果簡單地通過軟件內(nèi)部的設(shè)定來決定各個子模塊的地址,每個AT-mega8所對應(yīng)的程序會有差別,這樣會給程序的燒寫帶來不便,因此采用外部硬件電路對子模塊的地址進行標識。采用74HC165作串并行轉(zhuǎn)換是為了節(jié)省單片機的引腳資源。
led點陣采用動態(tài)掃描法進行驅(qū)動,并且實現(xiàn)16階灰度顯示,為了節(jié)省單片機程序中掃描程序的時間消耗,提高掃描速度,顯示數(shù)據(jù)采用并行輸出的方法。驅(qū)動電路采用4-16譯碼器74HC154譯碼后驅(qū)動16個中功率三極管8550作為行選,2個8位數(shù)據(jù)鎖存器74LS373作為行數(shù)據(jù)鎖存。
評論