林秀明,秦德茂,秦秋息
(1.廣西大學(xué)電氣工程學(xué)院,廣西 南寧 530004;2.廣西交通科學(xué)研究院,廣西 南寧 530007)
?
基于STM32實(shí)現(xiàn)多區(qū)域顯示的LED點(diǎn)陣屏的設(shè)計(jì)
林秀明1,2,秦德茂2,秦秋息2
(1.廣西大學(xué)電氣工程學(xué)院,廣西南寧530004;2.廣西交通科學(xué)研究院,廣西南寧530007)
林秀明(1983—),工程師,在讀碩士,主要從事交通行業(yè)電子產(chǎn)品的硬件開發(fā)工作;
秦德茂(1991—),助理工程師,主要從事交通行業(yè)電子產(chǎn)品硬件電路設(shè)計(jì)工作;
秦秋息(1988—),助理工程師,主要從事嵌入式系統(tǒng)移植及底層驅(qū)動(dòng)程序設(shè)計(jì)工作。
摘要:文章介紹了基于STM32為主控芯片的LED點(diǎn)陣顯示屏的硬件電路及系統(tǒng)工作原理,并提出了一種使用C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)體和鏈表的編程技術(shù),實(shí)現(xiàn)顯示屏多節(jié)目、多區(qū)域顯示功能的程序設(shè)計(jì)方法。
關(guān)鍵詞:STM32;LED點(diǎn)陣顯示屏;C語(yǔ)言;多區(qū)域顯示;設(shè)計(jì)
0引言
LED點(diǎn)陣顯示屏作為一種新型節(jié)能的廣告信息傳播媒體,可播放動(dòng)態(tài)的文字[1]和圖像信息,具備了播放信息內(nèi)容豐富、顯示效果多樣可變、運(yùn)行穩(wěn)定、耗電量低等優(yōu)點(diǎn),在日常生活中有著非常廣泛的應(yīng)用,然而針對(duì)不同的應(yīng)用場(chǎng)合,用戶對(duì)顯示屏顯示內(nèi)容的要求也不同,除了單純顯示文字之外,可能還需要同時(shí)能夠顯示圖片、時(shí)鐘等信息。如設(shè)置在生產(chǎn)車間、項(xiàng)目施工現(xiàn)場(chǎng)等生產(chǎn)場(chǎng)所的LED顯示屏,顯示版面除了發(fā)布安全生產(chǎn)標(biāo)語(yǔ)外,還可能需要發(fā)布生產(chǎn)倒計(jì)時(shí)、時(shí)鐘圖案、任務(wù)表格、氣象等信息。每種信息內(nèi)容、顯示效果及在顯示屏上的顯示區(qū)域的位置、大小均可以進(jìn)行自由設(shè)置,自動(dòng)更新。因此,設(shè)計(jì)一款能夠?qū)ζ聊贿M(jìn)行多區(qū)域劃分,排版靈活的LED點(diǎn)陣顯示屏[2]具有非?,F(xiàn)實(shí)的意義。
1LED點(diǎn)陣顯示屏的系統(tǒng)組成及電路工作原理介紹
LED點(diǎn)陣顯示屏[3]主要由電源供電系統(tǒng)、顯示屏單元板和顯示屏系統(tǒng)控制卡組成,如圖1所示。
圖1 LED點(diǎn)陣顯示屏結(jié)構(gòu)示意圖
供電系統(tǒng)主要負(fù)責(zé)給控制卡、顯示屏體進(jìn)行供電,控制卡及顯示屏所需的供電電壓為DC 5 V,因此系統(tǒng)通常采用5 V的直流開關(guān)電源進(jìn)行供電,電源的數(shù)量及功率可根據(jù)顯示屏的功率進(jìn)行配置。
圖1中,顯示屏的屏體為若干數(shù)量的點(diǎn)陣顯示單元板拼接組成,這種模塊化的設(shè)計(jì)方式,可以靈活地對(duì)顯示屏幕的大小進(jìn)行配置,能夠滿足不同的安裝使用環(huán)境,同時(shí)也大大簡(jiǎn)化了顯示屏的生產(chǎn)、運(yùn)輸及現(xiàn)場(chǎng)安裝、維護(hù)的難度。
顯示屏單元板集成了LED燈陣列及其驅(qū)動(dòng)電路,驅(qū)動(dòng)電路主要由LED點(diǎn)陣行掃描驅(qū)動(dòng)電路及列驅(qū)動(dòng)電路組成,行驅(qū)動(dòng)電路主要是場(chǎng)效應(yīng)管控制的LED點(diǎn)陣行開關(guān)電路,列驅(qū)動(dòng)電路為帶數(shù)據(jù)輸出鎖存功能的串/并轉(zhuǎn)換功能芯片,如74HC595、MBI5024等芯片構(gòu)成的LED列驅(qū)動(dòng)電路。其電路基本原理圖如圖2所示。
圖2 LED點(diǎn)陣顯示單元板基本原理圖
圖2中,DAT為串并轉(zhuǎn)換驅(qū)動(dòng)芯片的數(shù)據(jù)輸入端,LED點(diǎn)陣列數(shù)據(jù)由此輸入,S為芯片數(shù)據(jù)移位控制時(shí)鐘輸入,L為數(shù)據(jù)鎖存時(shí)鐘輸入,OE為驅(qū)動(dòng)芯片內(nèi)部寄存器數(shù)據(jù)輸出使能,控制LED點(diǎn)陣列數(shù)據(jù)從芯片內(nèi)部的寄存器到并行數(shù)據(jù)管腳的輸出,CSx(x為1~n,n一般≤16)為L(zhǎng)ED屏行選信號(hào)控制信號(hào),通常為譯碼器的譯碼輸出。電路工作原理分析如下:
控制卡將顯示的數(shù)據(jù)流從DAT端輸入,并控制S移位時(shí)鐘使得數(shù)據(jù)流逐位向箭頭方向移動(dòng),當(dāng)最先送出的數(shù)據(jù)位移動(dòng)到該行的串并轉(zhuǎn)換驅(qū)動(dòng)芯片數(shù)據(jù)末端時(shí),控制卡在L端產(chǎn)生鎖存信號(hào)將數(shù)據(jù)流鎖存到串/并轉(zhuǎn)換驅(qū)動(dòng)芯片的內(nèi)部寄存器中,最后通過(guò)控制使能信號(hào)OE,將數(shù)據(jù)流輸出至芯片外接LED燈的管腳上。此時(shí),控制卡控制對(duì)應(yīng)的行選驅(qū)動(dòng)信號(hào)CSx(x為1~n)輸出低電平時(shí),對(duì)應(yīng)的行驅(qū)動(dòng)場(chǎng)效應(yīng)管導(dǎo)通,+5V電壓輸出到該行LED燈的正極上,則該行對(duì)應(yīng)在驅(qū)動(dòng)芯片端口上的數(shù)據(jù)為0的LED燈珠就會(huì)被點(diǎn)亮,為1的LED燈則被熄滅。同理,控制卡通過(guò)掃描改變行選信號(hào)CSx的狀態(tài)及DAT數(shù)據(jù)內(nèi)容,即可完成顯示屏每一行上的LED燈的掃描點(diǎn)亮。根據(jù)人類視覺(jué)的暫留特性可知,當(dāng)每一行點(diǎn)亮?xí)r間間隔<0.1 s時(shí),在屏幕上就會(huì)看到一幅完整的顯示圖像。
系統(tǒng)控制卡為基于STM32微控制器進(jìn)行設(shè)計(jì)的,其外圍芯片擴(kuò)展的電路屬于典型SPI總線、FSMC總線擴(kuò)展電路,較為常見但連接的線路信號(hào)也較多,鑒于篇幅有限,本文使用電路原理框圖的方式來(lái)對(duì)系統(tǒng)控制卡的電路原理進(jìn)行介紹,如圖3所示。
圖3 系統(tǒng)控制卡功能模塊框圖
圖3中,STM32F207ZGT6是32位ARM CortexTM-M3內(nèi)核的微控制器[3-4],主要負(fù)責(zé)接收并存儲(chǔ)上位機(jī)發(fā)送的節(jié)目數(shù)據(jù)并保存到片外Flash存儲(chǔ)器中,同時(shí)控制顯示單元板驅(qū)動(dòng)電路,將顯示緩存上的數(shù)據(jù)信息輸出到屏幕上,完成節(jié)目的顯示。另外,屏幕分區(qū)顯示、顯示特效等排版功能的實(shí)現(xiàn)也是通過(guò)對(duì)STM32F207 ZGT6進(jìn)行軟件編程,通過(guò)內(nèi)部定時(shí)刷新顯示緩存內(nèi)容來(lái)完成的。
SST25VF032B為SPI接口的32Mbit Flash存儲(chǔ)芯片[5],用于對(duì)顯示節(jié)目數(shù)據(jù)、顯示屏IP地址等掉電需要保存的數(shù)據(jù)進(jìn)行存儲(chǔ)。IS61LV51216為8Mbit的高速SRAM芯片,通過(guò)MCU的FSMC總線進(jìn)行連接,主要用于上位機(jī)數(shù)據(jù)的接收、顯示屏顯示緩存的劃分、顯示數(shù)據(jù)排版處理等軟件運(yùn)行所需的數(shù)據(jù)緩存。
上位機(jī)通過(guò)UDP協(xié)議[6-7]與LED點(diǎn)陣顯示屏進(jìn)行通訊[8],實(shí)現(xiàn)顯示屏配置參數(shù)、顯示內(nèi)容等數(shù)據(jù)信息的聯(lián)網(wǎng)更新及遠(yuǎn)程控制功能[9]。通訊電路采用了NS公司的集成以太網(wǎng)控制芯片DP83848C設(shè)計(jì),該芯片為10/100Mbit單路物理層以太網(wǎng)收發(fā)器件,支持MII和RMII的接口模式,具有體積小、功耗低、性能齊全的特點(diǎn)。
25M時(shí)鐘晶振電路及復(fù)位電路主要給主控MCU提供時(shí)鐘信號(hào)和上電復(fù)位信號(hào),保證MCU的正常運(yùn)行。電源供電電路為三端穩(wěn)壓芯片AMS1117-3.3 V給系統(tǒng)提供3.3 V電源。
2LED點(diǎn)陣顯示屏系統(tǒng)控制卡軟件設(shè)計(jì)
2.1.1LED屏節(jié)目數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)
本方案設(shè)計(jì)中,系統(tǒng)控制卡具備多節(jié)目、多個(gè)區(qū)域顯示播放的功能,每個(gè)節(jié)目里可分別設(shè)置節(jié)目的播放時(shí)間,顯示區(qū)域分區(qū)數(shù)目及各區(qū)域內(nèi)的播放內(nèi)容、播放頁(yè)數(shù)、每個(gè)頁(yè)面的播放特效等信息。因此,上位機(jī)向LED屏發(fā)送的節(jié)目數(shù)據(jù)中應(yīng)包括:節(jié)目號(hào)、節(jié)目播放時(shí)間、節(jié)目區(qū)域總數(shù)、區(qū)域號(hào)、區(qū)域位置信息、區(qū)域顯示頁(yè)數(shù)、區(qū)域各頁(yè)的顯示特技、區(qū)域顯示數(shù)據(jù)等信息。節(jié)目數(shù)據(jù)結(jié)構(gòu)如圖4所示。
圖4 節(jié)目數(shù)據(jù)結(jié)構(gòu)圖
2.1.2通訊數(shù)據(jù)幀結(jié)構(gòu)的定義
控制卡與上位機(jī)通信的過(guò)程中,主要有數(shù)據(jù)及命令類2類信息。數(shù)據(jù)類主要為顯示屏的節(jié)目信息、字體字庫(kù)數(shù)據(jù)等內(nèi)容。命令類主要用于對(duì)顯示屏進(jìn)行參數(shù)的配置功能,如修改信息屏的IP地址、標(biāo)識(shí)號(hào)、屏體像素大小、時(shí)間校時(shí)、亮度控制等命令。因此,數(shù)據(jù)幀結(jié)構(gòu)定義如下:
數(shù)據(jù)幀頭+信息屏標(biāo)識(shí)+數(shù)據(jù)類型+數(shù)據(jù)幀總長(zhǎng)度+數(shù)據(jù)內(nèi)容+數(shù)據(jù)幀尾
控制卡接收到上位機(jī)發(fā)送來(lái)的數(shù)據(jù)時(shí),可通過(guò)對(duì)數(shù)據(jù)幀頭、信息屏標(biāo)識(shí)、數(shù)據(jù)幀總長(zhǎng)度及數(shù)據(jù)幀尾的判讀,完成數(shù)據(jù)的接收并根據(jù)數(shù)據(jù)類型選擇數(shù)據(jù)的處理方式。
系統(tǒng)軟件主要實(shí)現(xiàn)以下兩大功能:
(1)對(duì)上位機(jī)發(fā)送數(shù)據(jù)的接收及處理程序
主控MCU的軟件設(shè)計(jì)上采用嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread[10],搭配LWIP網(wǎng)絡(luò)微協(xié)議,實(shí)現(xiàn)數(shù)據(jù)穩(wěn)定傳輸。采用LWIP的socket[11]編程,通過(guò)UDP協(xié)議接收來(lái)自上位機(jī)的數(shù)據(jù),并根據(jù)協(xié)議定義完成數(shù)據(jù)的存儲(chǔ)及處理。根據(jù)3.1.1節(jié)的數(shù)據(jù)結(jié)構(gòu),通過(guò)在程序設(shè)計(jì)中定義一個(gè)節(jié)目的結(jié)構(gòu)體類型,用來(lái)存儲(chǔ)每個(gè)節(jié)目信息。程序中采用動(dòng)態(tài)分配內(nèi)存的方式存儲(chǔ)數(shù)據(jù),可以適應(yīng)不同個(gè)數(shù)的節(jié)目和區(qū)域節(jié)目單數(shù)據(jù)的接收和存儲(chǔ),滿足多條節(jié)目單信息顯示的同時(shí)也提高了內(nèi)存使用效率。
以下是節(jié)目結(jié)構(gòu)體結(jié)構(gòu)及節(jié)目鏈表數(shù)據(jù)結(jié)構(gòu)如圖5所示。
圖5中,*data_file_head:指向文件窗鏈表頭指針;*data_ins_head:指向內(nèi)碼窗鏈表頭指針;*Display_string:指向內(nèi)碼窗字符串首地址;*Display_Dataxbytes:指向文件窗數(shù)據(jù)首地址。
圖5 節(jié)目鏈表數(shù)據(jù)結(jié)構(gòu)示意圖
節(jié)目顯示數(shù)據(jù)的接收處理過(guò)程如圖6所示,程序流程圖見圖7。
圖6 數(shù)據(jù)接收處理過(guò)程
(2)LED屏顯示掃描驅(qū)動(dòng)程序
顯示驅(qū)動(dòng)程序主要工作流程為:在RT-Thread系統(tǒng)中分配一塊RAM作為顯示緩存區(qū),顯存上的每個(gè)數(shù)據(jù)位與LED屏的每個(gè)像素進(jìn)行一一對(duì)應(yīng),根據(jù)1.2節(jié)
介紹的單元板電路工作原理可知,通過(guò)LED顯示掃描輸出線程,定時(shí)對(duì)顯存上的數(shù)據(jù)進(jìn)行掃描更新,并按單元板驅(qū)動(dòng)電路邏輯要求輸出到單元板中,完成顯存信息輸出。具體軟件工作流程如圖7所示。
圖7 軟件設(shè)計(jì)工作流程圖
4結(jié)語(yǔ)
本設(shè)計(jì)方案已經(jīng)在廣西高速公路ETC車道LED點(diǎn)陣顯示屏中得到實(shí)際應(yīng)用,系統(tǒng)軟件設(shè)計(jì)中采用數(shù)據(jù)結(jié)構(gòu)體及數(shù)據(jù)鏈表的編程方法,實(shí)現(xiàn)了對(duì)動(dòng)態(tài)數(shù)據(jù)進(jìn)行快速存儲(chǔ)與訪問(wèn),可為相關(guān)的動(dòng)態(tài)數(shù)據(jù)處理提供一種可借鑒的設(shè)計(jì)思路。
參考文獻(xiàn)
[1]王海梅.取模軟件在LED顯示屏設(shè)計(jì)中的使用與分析[J].科技信息,2014(6):59.
[2]郝國(guó)法,楊姣.LED大屏幕控制電路設(shè)計(jì)方案研究[J].電視技術(shù),2005,10(11):94.
[3]汪嵐.智能LED信息顯示屏控制系統(tǒng)設(shè)計(jì)與應(yīng)用[J].液晶與顯示,2011,26(5):657.
[4]楊明極,祝慶峰,李碩.基于STM32的嵌入式網(wǎng)絡(luò)控制器設(shè)計(jì)[J].測(cè)控技術(shù),2014.10:98-101.
[5]Silicon Storage Technology.S71327-00-000[DB/OL].
http://html.alldatasheet.com/html-pdf/191699/SST/SST25VF032B/58/1/SST25VF032B.html,2006-10:1.
[6]王鐵流,高嵩,袁海英.基于Cortex-M3內(nèi)核處理器的嵌入式Web服務(wù)器設(shè)計(jì)[J].電子產(chǎn)品世界,2009,16(3):41-43.
[7]王文良.嵌入式TCP/IP協(xié)議棧的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱理工大學(xué),2010.
[8]陳學(xué)泉,關(guān)宇東.嵌入式TCP/IP協(xié)議單片機(jī)技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用[J].電子技術(shù)應(yīng)用,2002,28(8):48-49.
[9]于春雪.基于STM32F107的高速以太網(wǎng)接口設(shè)計(jì)與應(yīng)用[J].電聲技術(shù),2011,35(9):63-67.
[10]李琦,李梅.基于RT-Thread的工業(yè)遠(yuǎn)程控制器設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2013,32(9):61-64.
[11]劉駿,顏鋼鋒.基于Socket的網(wǎng)絡(luò)編程技術(shù)及其實(shí)現(xiàn)[J].江南大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,3(3):249-251.
Design of LED Dot Matrix Screen Achieving Multi-zone Display Based on STM32
LIN Xiu-ming1,2,QIN De-mao2,QIN Qiu-xi2
(1.School of Electrical Engineering,Guangxi University,Nanning,Guangxi,530004; 2.Guangxi Transporta-tion Research Institute,Nanning,Guangxi,530007)
Abstract:This article introduced the hardware circuit and system work principles of LED dot matrix display based on STM32 as main controller chips,and proposed a programming design method which is a pro-gramming technology by using the C language data structures and list and can achieve multi-program display and multi-zone function display.
Keywords:STM32; LED dot matrix display; C language; Multi-zone display; Design
收稿日期:2015-04-06
文章編號(hào):1673-4874(2015)05-0075-03
中圖分類號(hào):U412.36+6
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.13282/j.cnki.wccst.2015.05.021
作者簡(jiǎn)介