1 AVR單片機(jī)簡(jiǎn)介
AVR單片機(jī)是增強(qiáng)型內(nèi)置FLASH的RISC(ReducedInstruction Set CPU)精簡(jiǎn)指令集高速8位單片機(jī),硬件采用哈佛(Harward)結(jié)構(gòu),達(dá)到一個(gè)時(shí)鐘周期可以執(zhí)行一條指令,絕大部分指令都為單周期指令。支持在系統(tǒng)編程ISP,其中MEGA系列還支持在應(yīng)用編程IAP。內(nèi)置的FLASH程序存儲(chǔ)器可擦寫1 000次以上,給用戶的開發(fā)生產(chǎn)和維護(hù)帶來(lái)方便??刹翆?0萬(wàn)次的E2PROM,為掉電后數(shù)據(jù)的保存帶來(lái)方便。AVR單片機(jī)有豐富的片內(nèi)資源,如RTC,WATCHDOG,AD轉(zhuǎn)換器,PWM,USART,SPI,TWI接口等,I/O口功能強(qiáng)、驅(qū)動(dòng)能力強(qiáng)。
2 系統(tǒng)整體設(shè)計(jì)方案
LED顯示系統(tǒng)主要由3部分構(gòu)成:PC上位機(jī)圖像文字轉(zhuǎn)換與數(shù)據(jù)發(fā)送單元、主控單元以及顯示子模塊。
上位機(jī)完成把圖像和文字轉(zhuǎn)換成為顯示屏的顯示碼,并且把顯示信息發(fā)送到主控單元上。主控單元選用具有32 kB片內(nèi)FLASH ROM和2 kB片內(nèi)RAM的AT-mega32單片機(jī),沒有外掛存儲(chǔ)器。如果要存儲(chǔ)更多的顯示信息,可以選用具有64 kB片內(nèi)FLASH ROM的AT-mega64或者具有128 kB片內(nèi)FLASH ROM的AT-megal28,也可以外掛存儲(chǔ)器來(lái)增大存儲(chǔ)能力。主控單元主要完成對(duì)顯示數(shù)據(jù)的滾動(dòng)和分割處理,然后通過(guò)異步串行口發(fā)送到每個(gè)子模塊中。每個(gè)顯示子模塊用4片8×8單色點(diǎn)陣塊拼成1個(gè)16×16的點(diǎn)陣屏,用一片ATmega8完成掃描動(dòng)態(tài)顯示。
主控單元與顯示子模塊的數(shù)據(jù)通信采用標(biāo)準(zhǔn)的異步串口格式,每幀數(shù)據(jù)包括1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)地址/數(shù)據(jù)標(biāo)示位,1個(gè)停止位共11位。數(shù)據(jù)傳輸碼率為625 kb/s,字節(jié)傳輸速率為56.8 kB/s。每個(gè)子模塊由256個(gè)LED構(gòu)成,實(shí)現(xiàn)16階灰度每個(gè)LED需要4 b空間,因此每個(gè)顯示子模塊全屏數(shù)據(jù)量為128 B,外加1 B的尋址字節(jié)共129 B。主控單元更新顯示子模塊的顯示內(nèi)容時(shí),對(duì)所有子模塊按地址逐個(gè)發(fā)送顯示數(shù)據(jù),更新完所有子模塊數(shù)據(jù)后,再發(fā)送一個(gè)特殊的地址字0xFF作為控制字,使所有子模塊同時(shí)更新顯示數(shù)據(jù),這樣可以避免當(dāng)屏幕較大,顯示子模塊數(shù)量較多時(shí)各子模塊畫面更新不同步的問(wèn)題。對(duì)本設(shè)計(jì)中完成的6×4個(gè)顯示子模塊而言,由于通訊速率限制,畫面更新速度最高可達(dá)56 800/(129×24+1)=18.34幀/s,由于主控單元還要完成全屏數(shù)據(jù)的分割和顯示內(nèi)容的移動(dòng)控制,所以其實(shí)際幀數(shù)低于上述值,不過(guò)用于普通的圖片顯示已經(jīng)可以達(dá)到要求。
現(xiàn)場(chǎng)應(yīng)用中,可以不需要PC上位機(jī),只需把要顯示的信息存儲(chǔ)在主控單元,即可通過(guò)主控單元中的按鍵來(lái)選擇顯示的內(nèi)容及方式,可循環(huán)顯示,文字信息還可以上下左右滾屏顯示。
3 系統(tǒng)硬件設(shè)計(jì)
該系統(tǒng)由兩部分硬件電路組成:主機(jī)板電路和子模塊顯示驅(qū)動(dòng)電路。
3.1 主機(jī)板電路
主機(jī)板電路十分簡(jiǎn)潔,由ATmega32組成的最小系統(tǒng)和RS 232,RS 485接口電路組成。
主機(jī)板上的數(shù)據(jù)由異步串行口發(fā)送到各個(gè)子模塊中,為了在提高傳輸速度和距離的情況下仍能夠保證數(shù)據(jù)傳輸?shù)目煽啃裕鳈C(jī)板上發(fā)出的信息轉(zhuǎn)換成為RS 485信號(hào),采用帶屏蔽層的同軸電纜傳輸?shù)絃ED子模塊上。轉(zhuǎn)換所用接口芯片為MAX485,該芯片工作于5 V電壓下,最高傳輸速度可達(dá)到2.5 Mb/s,傳輸距離可達(dá)l 200 m。采用帶屏蔽層的同軸電纜可以降低傳輸過(guò)程中產(chǎn)生的信號(hào)干擾。
在需要從PC上位機(jī)下載數(shù)據(jù)到FLASH ROM時(shí),通過(guò)MAX232芯片實(shí)現(xiàn)ATmega32和PC機(jī)的通信。
3.2 子模塊顯示驅(qū)動(dòng)電路
子模塊顯示驅(qū)動(dòng)電路由RS 485轉(zhuǎn)換電路、子模塊地址標(biāo)識(shí)電路和點(diǎn)陣驅(qū)動(dòng)電路組成。RS 485轉(zhuǎn)換電路和主機(jī)板中一樣,同樣采用MAX485作電平轉(zhuǎn)換。
由于采用單片機(jī)的異步串行口進(jìn)行多機(jī)通信進(jìn)行數(shù)據(jù)傳輸,每個(gè)子模塊應(yīng)該有和其位置相對(duì)應(yīng)的地址標(biāo)識(shí)。地址標(biāo)識(shí)電路采用8位并進(jìn)串出芯片74HCl65和8位撥碼開關(guān)組成,因此本系統(tǒng)最多可以容納255個(gè)子模塊(地址OxFF作為更新子模塊顯示的控制字)。如果簡(jiǎn)單地通過(guò)軟件內(nèi)部的設(shè)定來(lái)決定各個(gè)子模塊的地址,每個(gè)AT-mega8所對(duì)應(yīng)的程序會(huì)有差別,這樣會(huì)給程序的燒寫帶來(lái)不便,因此采用外部硬件電路對(duì)子模塊的地址進(jìn)行標(biāo)識(shí)。采用74HC165作串并行轉(zhuǎn)換是為了節(jié)省單片機(jī)的引腳資源。
LED點(diǎn)陣采用動(dòng)態(tài)掃描法進(jìn)行驅(qū)動(dòng),并且實(shí)現(xiàn)16階灰度顯示,為了節(jié)省單片機(jī)程序中掃描程序的時(shí)間消耗,提高掃描速度,顯示數(shù)據(jù)采用并行輸出的方法。驅(qū)動(dòng)電路采用4-16譯碼器74HC154譯碼后驅(qū)動(dòng)16個(gè)中功率三極管8550作為行選,2個(gè)8位數(shù)據(jù)鎖存器74LS373作為行數(shù)據(jù)鎖存。
4 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)包括上位機(jī)軟件的設(shè)計(jì)、主機(jī)板AT-mega32程序設(shè)計(jì)、顯示子模塊ATmega8程序設(shè)計(jì)3部分。
上位機(jī)軟件完成圖像和文字的編輯,通過(guò)計(jì)算機(jī)串行接口把顯示數(shù)據(jù)傳送到主機(jī)板上。主機(jī)板接收上位機(jī)的數(shù)據(jù)并通過(guò)內(nèi)部Boot Loader區(qū)的程序進(jìn)行FLASH ROM內(nèi)顯示數(shù)據(jù)的自更新。主機(jī)板把顯示數(shù)據(jù)進(jìn)行分割處理后發(fā)送給每個(gè)子模塊,并且完成顯示數(shù)據(jù)的上下、左右滾屏處理。子模塊通過(guò)軟件調(diào)制脈沖占空比的方法,實(shí)現(xiàn)16階灰度圖像顯示。
4.1 上位機(jī)軟件設(shè)計(jì)
上位機(jī)軟件使用VB開發(fā),主要完成圖像的取點(diǎn)、線性補(bǔ)償和點(diǎn)陣數(shù)據(jù)生成。首先將圖像文件轉(zhuǎn)換為96×64分辨率、256階色深的單色灰度圖像,由于使用占空比驅(qū)動(dòng)的LED其占空比/亮度為對(duì)數(shù)特性,所以需加入指數(shù)特性調(diào)整為線性之后才能交付顯示系統(tǒng)進(jìn)行顯示。其計(jì)算公式為Dout=15×(Din/255)n。n為比例系數(shù),經(jīng)實(shí)際顯示校對(duì)后確定為1.35,同時(shí)通過(guò)該公式完成從256階灰度到16階灰度的轉(zhuǎn)換。通過(guò)MSComm控件實(shí)現(xiàn)PC機(jī)與主機(jī)板的通信。
4.2 主機(jī)板ATmega32程序設(shè)計(jì)
主機(jī)部分軟件主要分為按鍵響應(yīng)處理,顯示數(shù)據(jù)分割和分割后的數(shù)據(jù)發(fā)送3部分。其中顯示數(shù)據(jù)的分割占最主要的地位,同時(shí)顯示內(nèi)容的滾屏移動(dòng)也包括在這部分中。按鍵響應(yīng)使用外中斷響應(yīng),配合定時(shí)器TO進(jìn)行去抖處理后置位按鍵有效標(biāo)志,在主程序中檢查該按鍵有效標(biāo)志并進(jìn)行響應(yīng)處理。
4.3 顯示子模塊程序設(shè)計(jì)
顯示子模塊的軟件分為數(shù)據(jù)接收和動(dòng)態(tài)刷新顯示2部分。由于子模塊要實(shí)現(xiàn)16階灰度的表現(xiàn),而且還需要實(shí)現(xiàn)足夠高的刷新速率以避免產(chǎn)生閃爍現(xiàn)象,所以對(duì)刷新顯示部分的速度要求較高。本設(shè)計(jì)采用的方案為:全屏(每個(gè)子模塊為16行×16點(diǎn)/行)刷新分為16份時(shí)間片,每份時(shí)間片實(shí)現(xiàn)一行的掃描。而每行的時(shí)間片又分為15個(gè)子時(shí)間片,其中灰度為最暗的點(diǎn)點(diǎn)亮0個(gè)子時(shí)間片,灰度為最亮的點(diǎn)點(diǎn)亮15個(gè)時(shí)間片,由此實(shí)現(xiàn)占空比為0/15~15/15共16個(gè)級(jí)別的平均電流控制,從而實(shí)現(xiàn)16階的灰度顯示。通過(guò):MEGA8片內(nèi)定時(shí)器T2,每個(gè)子時(shí)間片取得52μs的掃描時(shí)間,15個(gè)子時(shí)間片構(gòu)成一個(gè)單行掃描的時(shí)間片(52 μs×15=780μs),16個(gè)單行掃描時(shí)間片又構(gòu)成一次全屏的掃描(780 μs×16=12.48 ms),則刷新頻率約為80 Hz,在最高亮度下也可以保證不出現(xiàn)行閃的現(xiàn)象。
5 結(jié) 語(yǔ)
本文提出的基于AVR單片機(jī)的LED顯示屏已應(yīng)用于現(xiàn)場(chǎng),AVR單片機(jī)的看門狗功能使得系統(tǒng)穩(wěn)定可靠。由于本設(shè)計(jì)是主從式的解決方案,具有可擴(kuò)展性,并且采用ISP功能給電路板的調(diào)試和系統(tǒng)的維護(hù)帶來(lái)了很大的方便。實(shí)踐證明,本系統(tǒng)可以方便地顯示各種字體的文字信息及16階灰度的圖像,畫面清晰、性能穩(wěn)定、操作簡(jiǎn)便,具有很好的應(yīng)用價(jià)值。
評(píng)論
查看更多