91精品人妻互换日韩精品久久影视|又粗又大的网站激情文学制服91|亚州A∨无码片中文字慕鲁丝片区|jizz中国无码91麻豆精品福利|午夜成人AA婷婷五月天精品|素人AV在线国产高清不卡片|尤物精品视频影院91日韩|亚洲精品18国产精品闷骚

您當(dāng)前位置:首頁(yè) > 新聞?lì)l道 > 技術(shù)動(dòng)態(tài) > 正文
一種新型液晶顯示系統(tǒng)的設(shè)計(jì)

 陳  峰  葉一枝  劉家樂(lè)

 (上海電氣集團(tuán)股份有限公司中央研究院,上海200070)

摘要:針對(duì)嵌入式顯示技術(shù)在低成本應(yīng)用場(chǎng)合的需求,設(shè)計(jì)了一套新型的液晶顯示系統(tǒng)。以TIL138 - EVM開(kāi)發(fā)板為實(shí)驗(yàn)平臺(tái),采用較低成本的超扭曲向列型液晶顯示器( STN - LCD),并開(kāi)發(fā)了其在ARM端的驅(qū)動(dòng)程序;利用TCP/IP的數(shù)據(jù)傳輸協(xié)議,實(shí)現(xiàn)了通信數(shù)據(jù)在液晶屏上的顯示。實(shí)驗(yàn)結(jié)果驗(yàn)證了該系統(tǒng)應(yīng)用于低成本場(chǎng)合的可行性,為嵌入式技術(shù)及顯示技術(shù)的應(yīng)用提供了更多參考。

關(guān)鍵詞:嵌入式技術(shù)液晶顯示系統(tǒng)微處理單元數(shù)據(jù)采集數(shù)據(jù)傳輸通信協(xié)議軟硬件設(shè)計(jì)

中圖分類號(hào):TP399;TH6  DOI:10. 16086/j.cnki. issnl000 - 0380. 201604022

 0引言

 隨著現(xiàn)代電子技術(shù)的不斷發(fā)展,嵌入式技術(shù)已經(jīng)廣泛地滲透到人們生活的各個(gè)方面,各種新型的嵌入式設(shè)備在應(yīng)用數(shù)量和應(yīng)用場(chǎng)合上已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了通用計(jì)算機(jī)。在一些需要交互性和內(nèi)存空間的場(chǎng)合,傳統(tǒng)的基于微處理控制單元(MCU)+液晶顯示模塊的解決方案就不能很好地滿足要求。此外,ARM技術(shù)的發(fā)展已經(jīng)趨于成熟,內(nèi)部采用的Linux操作系統(tǒng)由于擁

有性能優(yōu)良、源碼開(kāi)放、內(nèi)核定制、運(yùn)行速度快等優(yōu)點(diǎn),逐漸在對(duì)傳統(tǒng)解決方案的更新?lián)Q代中突顯優(yōu)勢(shì)。

 本文設(shè)計(jì)了一種新型的基于ARM+LCD顯示系統(tǒng)的解決方案,其中采用性價(jià)比較高的STN - LCD代替常見(jiàn)但較貴的TFT - LCD作為顯示模塊。系統(tǒng)中編寫(xiě)的基于GPIO的液晶屏驅(qū)動(dòng)程序的移植性很強(qiáng),可將其移植到類似的液晶屏顯示系統(tǒng)中,并為一些對(duì)性價(jià)比要求較高的場(chǎng)合提供參考和實(shí)踐價(jià)值。

1硬件平臺(tái)搭建

 系統(tǒng)以O(shè)MAP - L138中的ARM9為核心搭建硬件平臺(tái),將采集到的數(shù)據(jù)通過(guò)內(nèi)嵌的TCP/IP通信鏈路傳送給基于STN - LCD的液晶屏,并實(shí)時(shí)顯示。此系統(tǒng)采用模塊化獨(dú)立設(shè)計(jì),從功能上可以分成三個(gè)模塊:數(shù)據(jù)采集模塊、數(shù)據(jù)轉(zhuǎn)發(fā)模塊和數(shù)據(jù)顯示模塊。其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

 其中,數(shù)據(jù)采集模塊可以根據(jù)需要和實(shí)際情況進(jìn)行設(shè)計(jì)(包括ARM端的程序?qū)崿F(xiàn)和DSP端的程序?qū)崿F(xiàn))。本實(shí)驗(yàn)中,采用在ARM核運(yùn)行的示例程序進(jìn)行模擬實(shí)現(xiàn)。

1.1 0MAP - L138介紹

 核心處理模塊采用TI公司推出的雙核低功耗處理器OMAP - L138,其芯片內(nèi)部集成了300 MH的ARM926EJ和300 MHz的TMS320C674X浮點(diǎn)DSP,片上資源也相當(dāng)豐富,包括多種通信接口,芯片的集成度非常高。本實(shí)驗(yàn)主要介紹基于ARM核實(shí)現(xiàn)的顯示系統(tǒng),包括采集、轉(zhuǎn)發(fā)和顯示。此外,系統(tǒng)的數(shù)據(jù)采集模塊也可使用DSP實(shí)現(xiàn)。

1.2液晶屏顯示

 液晶顯示器(liquid crystal display,LCD)是一種采用了液晶控制透光度技術(shù)來(lái)實(shí)現(xiàn)色彩的顯示器。LCD有很多類型,如TN、STN、TFT、OLED等。TN、STN和TFT型顯示器因?yàn)橐壕Х肿优まD(zhuǎn)原理的不同,在彩化、動(dòng)畫(huà)和視角上都有明顯的差異,使得這3類產(chǎn)品的應(yīng)用范圍有所不同。其中,STN較于TN畫(huà)面切換速度快,較于TFT成本低,因此在信息控制設(shè)備中應(yīng)用廣泛;谛阅芎统杀镜目紤],本實(shí)驗(yàn)采用STN -LCD來(lái)進(jìn)行設(shè)計(jì)。

2系統(tǒng)軟件設(shè)計(jì)

 系統(tǒng)硬件平臺(tái)的搭建相對(duì)簡(jiǎn)單,核心為軟件設(shè)計(jì)。系統(tǒng)的軟件設(shè)計(jì)主要分為最小自啟動(dòng)系統(tǒng)設(shè)計(jì)、液晶屏驅(qū)動(dòng)模塊及應(yīng)用程序設(shè)計(jì)和內(nèi)部通信鏈路設(shè)計(jì)3個(gè)部分。首先,搭建一個(gè)自啟動(dòng)的最小系統(tǒng),讓整個(gè)平臺(tái)能夠自動(dòng)地運(yùn)行;接著,編寫(xiě)液晶屏的驅(qū)動(dòng)程序,以及上層的液晶屏應(yīng)用程序;最后,調(diào)用嵌入式系統(tǒng)內(nèi)部的TCP/IP協(xié)議,打通程序之間的通信鏈路。

2.1最小自啟動(dòng)系統(tǒng)

 一個(gè)典型的嵌入式Linux系統(tǒng)按照存儲(chǔ)空間的劃分通常包括引導(dǎo)區(qū)、內(nèi)核區(qū)和文件系統(tǒng)區(qū)。引導(dǎo)區(qū)存放引導(dǎo)加載程序Boot Loader與系統(tǒng)參數(shù);內(nèi)核區(qū)存放特定嵌入式平臺(tái)定制的Linux內(nèi)核;文件系統(tǒng)區(qū)存放根文件系統(tǒng),用戶應(yīng)用程序就存放在文件系統(tǒng)區(qū)中。

 在本實(shí)驗(yàn)中,使用TI官方提供的通用的BootLoader(U - BOOT)以及Linux3.3.0的內(nèi)核鏡像文件ulmage,主要對(duì)根文件系統(tǒng)中的幾個(gè)文件進(jìn)行修改。一方面,修改/etc/iruttab文件。注釋語(yǔ)句S:2345:respawn:/sbin/getty 115200 ttyS2。增加語(yǔ)句:S:2345:respawn:/sbin/mingetty -  autologin=root ttyS2,使之能自動(dòng)進(jìn)入擁有root權(quán)限的系統(tǒng)。另一方面,修改/etc/profle文件。首先在最后一行添加語(yǔ)句:insmod/home/root/lcd.  ko,用來(lái)加載編譯的液晶顯示屏的驅(qū)動(dòng)程序。然后添加語(yǔ)句:/home/root/thread_ server&,用來(lái)運(yùn)行上層的數(shù)據(jù)轉(zhuǎn)發(fā)程序。最后添加以下語(yǔ)句:/home/root/setup/ lcddemo &,以啟動(dòng)LCD屏的上層應(yīng)用程序。自此,通過(guò)串口調(diào)試助手,即可在PC上看到系統(tǒng)啟動(dòng)過(guò)程打印的信息,并正常地自動(dòng)運(yùn)行程序。

2.2液晶屏驅(qū)動(dòng)模塊及應(yīng)用程序

2.2.1  XRD G160160D26

 欣瑞達(dá)電子的XRD G160160D26,是一款在工業(yè)控制上普遍應(yīng)用的液晶顯示模塊,使用UC1698作為液晶顯示控制器。液晶屏的外形尺寸為83.8mm×78.5 mm×11.6 mm,點(diǎn)陣為160 mm x160 mm,其支持的工作溫度為- 40~+80℃,引腳數(shù)為17個(gè)。引腳的分類主要包括以下三類:控制引腳、數(shù)據(jù)引腳和電源引腳。接口引腳定義如表1所示。

2.2.2液晶屏驅(qū)動(dòng)模塊

 設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和系統(tǒng)硬件的接口,是嵌入式系統(tǒng)不可或缺的組成部分。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序隱藏了硬件實(shí)現(xiàn)的細(xì)節(jié),使其可以像操作普通文件一樣操作外圍設(shè)備。設(shè)備驅(qū)動(dòng)程序在內(nèi)核中的存在方式主要有兩種:一種是直接編譯到內(nèi)核中;另一種是游離于內(nèi)核而不占用系統(tǒng)資源,在需要時(shí)動(dòng)態(tài)加載,不用時(shí)又可以卸載。本實(shí)驗(yàn)中選擇的是第二種,將驅(qū)動(dòng)程序做成一個(gè)模塊,以增加程序的靈活性和可移植性。

 在本實(shí)驗(yàn)中,基于GPIO的字符設(shè)備的驅(qū)動(dòng)模塊主要包括字符設(shè)備的驅(qū)動(dòng)程序、對(duì)GPIO管腳的配置文件,以及對(duì)驅(qū)動(dòng)模塊的編譯文件3個(gè)部分,分別集成在lcd. c、lcd. h和Makefile這3個(gè)文件中。

 字符設(shè)備的驅(qū)動(dòng)程序包括以下幾個(gè)部分:第一,字符設(shè)備驅(qū)動(dòng)模塊的加載函數(shù)static int_ _init lcd_init( void),實(shí)現(xiàn)設(shè)備號(hào)的申請(qǐng)以及向內(nèi)核注冊(cè)驅(qū)動(dòng)程序,當(dāng)使用insmod加載模塊時(shí)被調(diào)用;第二,字符設(shè)備驅(qū)動(dòng)模塊的卸載函數(shù)static int 一一exit lcd_ exit( void),實(shí)現(xiàn)對(duì)設(shè)備號(hào)的釋放以及對(duì)驅(qū)動(dòng)程序的注銷;第三,字符設(shè)備驅(qū)動(dòng)模塊的file_ operations結(jié)構(gòu)體及其成員函數(shù)。本實(shí)驗(yàn)中定義的一個(gè)file_ o perations實(shí)例如下所示:

 其中,在static long lcd_ ioctl (struct file*file,unsigned int cmd,unsigned long arg)的I/O控制函數(shù)中,實(shí)現(xiàn)對(duì)GPIO的接口,將對(duì)LCD屏的調(diào)用解析成lcd_ outcmd()和lcd_ outdata()兩個(gè)函數(shù)。

 對(duì)GPIO管腳的配置文件包括以下幾個(gè)部分:第一,設(shè)置復(fù)用管腳函數(shù)int pinmux_  seup( unsigned charpinmux_ num),使液晶顯示模塊的控制引腳和數(shù)據(jù)引腳處于GPIO的功能;第二,設(shè)置管腳數(shù)據(jù)流方向函數(shù)int gpio_ setdir( unsigned char lcd_ pin),使對(duì)應(yīng)的引腳處于要求的輸入或者輸出狀態(tài);第三,輸出數(shù)據(jù)函數(shù)intlcd_outdata(unsigned char val),用來(lái)解析字符設(shè)備的驅(qū)動(dòng)程序的lcd_ ioctl函數(shù)中cmd  =1時(shí)的情況;第四,輸出命令函數(shù)int lcd_ outcmd( unsigned char val),用來(lái)解析字符設(shè)備的驅(qū)動(dòng)程序的lcd_ ioctl函數(shù)中cmd =0時(shí)的情況。

 在Linux中,驅(qū)動(dòng)程序的編譯和鏈接規(guī)則由Makefile指定,在基本的框架下改動(dòng)一部分關(guān)鍵信息即可。程序如下所示:

 其中,lcd.o是實(shí)際設(shè)備驅(qū)動(dòng)程序的模塊,KDIR表示內(nèi)核所在目錄,PWD為內(nèi)核的版本。最后將lcd.c、lcd.h和Makefile文件放于同一目錄下,執(zhí)行make指令就可以得到相應(yīng)的lcd. ko文件,這個(gè)文件就是要用于目標(biāo)板的液晶屏驅(qū)動(dòng)模塊。

2.2.3液晶屏應(yīng)用程序

 液晶屏應(yīng)用程序主要用來(lái)接收其他客戶端程序發(fā)送的數(shù)據(jù),然后將其按指定格式在液晶屏上顯示。其軟件流程圖如圖2所示。

 由圖2可知,應(yīng)用程序在軟件代碼上面的實(shí)現(xiàn)主要由以下3個(gè)部分組成:第一,對(duì)LCD設(shè)備的操作,包括使用open(“/dev/lcd”,0)語(yǔ)句來(lái)打開(kāi)LCD設(shè)備,其中/dev/lcd就是液晶屏驅(qū)動(dòng)模塊的設(shè)備名,并使用init()函數(shù)來(lái)完成對(duì)LCD屏的復(fù)位、配置及使能;第二,遵循TCP/IP的套接字規(guī)范,進(jìn)行基于客戶端的創(chuàng)建、設(shè)置及連接套接字操作,并向內(nèi)部的TCP Server注冊(cè)ID,便于區(qū)分不同的客戶端;第三,多線程部分操作,包括調(diào)用pthread_create()函數(shù)來(lái)創(chuàng)建子線程,并實(shí)現(xiàn)子線程的接收函數(shù)void*recv_msg(void*arg),在接收函數(shù)中實(shí)現(xiàn)對(duì)接收數(shù)據(jù)的判斷,并調(diào)用驅(qū)動(dòng)模塊的ioctl函數(shù)實(shí)現(xiàn)正確的數(shù)據(jù)在LCD屏上的顯示。

2.3內(nèi)部通信鏈路

 在Linux中,基于TCP/IP協(xié)議的應(yīng)用程序通常都采用UNIX BSD的套接字(Socket),來(lái)實(shí)現(xiàn)進(jìn)程之間的通信。Socket是Internet網(wǎng)絡(luò)編程中通用的API,最基本的Socket通信模型即客戶端一服務(wù)器(C -S)模型。通常,客戶端應(yīng)用程序的數(shù)量比服務(wù)器應(yīng)用程序要多,而服務(wù)器較于客戶端程序則要復(fù)雜得多,需要考慮并發(fā)、執(zhí)行效率、網(wǎng)絡(luò)狀況等。因此,一個(gè)網(wǎng)絡(luò)通信程序的關(guān)鍵在于服務(wù)器應(yīng)用程序的開(kāi)發(fā)。

 本實(shí)驗(yàn)中,需要有兩個(gè)以上的程序作為客戶端與服務(wù)器程序通信。所以,服務(wù)器程序需要考慮并發(fā)性,使用多線程的技術(shù)來(lái)實(shí)現(xiàn)。在Linux中,就需要在程序的開(kāi)頭增加以下語(yǔ)句:#include<pthread.h>。

 通信的軟件框架如圖3所示。在圖3中,中間是TCP Server的軟件流程,用來(lái)將從左側(cè)lcdtest客戶端程序接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給右側(cè)的lcddemo客戶端程序,以顯示在LCD屏上。在實(shí)際應(yīng)用中,右側(cè)的lcddemo客戶端程序就接收其他客戶端發(fā)送過(guò)來(lái)的要顯示在LCD屏上的數(shù)據(jù)。其中,在TCP Server的Accept()階段,服務(wù)器程序一直在while(1)循環(huán)等待客戶端的連接,每連接一個(gè)客戶端,就為該客戶端分別建立一個(gè)接收線程,并將該客戶端的注冊(cè)ID保存到內(nèi)部數(shù)組中。最后,以TCP Server來(lái)示例涉及多線程通信程序的編譯:arm -arago - linux - gnueabi - gcc server.c  -o server  -lpthread,就可以生成server的可執(zhí)行文件。

3  系統(tǒng)驗(yàn)證及測(cè)試

 首先,將編譯好的液晶屏驅(qū)動(dòng)模塊lcd. ko和應(yīng)用程序(包括TCP Server程序thread_server、液晶屏應(yīng)用程序lcddemo以及液晶屏測(cè)試程序lcdtest)載人OMAP - L138開(kāi)發(fā)板,放于/home/root目錄下;其次,在當(dāng)前目錄下執(zhí)行命令insmod lcd. ko,加載驅(qū)動(dòng)模塊;接著,執(zhí)行命令,/thread _server&,后臺(tái)運(yùn)行TCP Server程序;然后,執(zhí)行命令./lcddemo&,后臺(tái)運(yùn)行液晶屏應(yīng)用程序;最后,執(zhí)行命令,/lcdtest,運(yùn)行液晶屏測(cè)試程序,即可在STN - LCD液晶屏上看到數(shù)據(jù)顯示。

4結(jié)束語(yǔ)

 本文設(shè)計(jì)了一種基于OMAP - L138和STN - LCD的液晶顯示系統(tǒng),主要完成了STN - LCD的液晶驅(qū)動(dòng)模塊、驅(qū)動(dòng)程序以及內(nèi)部通信的鏈路。驅(qū)動(dòng)模塊通過(guò)控制GPIO來(lái)實(shí)現(xiàn),內(nèi)部通信的鏈路使用基于Linux的多線程Socket來(lái)實(shí)現(xiàn),使得系統(tǒng)具有很強(qiáng)的可移植性及可操作性。本設(shè)計(jì)為數(shù)據(jù)顯示設(shè)備提供了一種新的方案,可應(yīng)用于工控等領(lǐng)域。

關(guān)鍵字:
About Us - 關(guān)于我們 - 服務(wù)列表 - 付費(fèi)指導(dǎo) - 媒體合作 - 廣告服務(wù) - 版權(quán)聲明 - 聯(lián)系我們 - 網(wǎng)站地圖 - 常見(jiàn)問(wèn)題 - 友情鏈接
Copyright©2014安裝信息網(wǎng) m.78375555.com. All rights reserved.
服務(wù)熱線:4000-293-296 聯(lián)系電話:0371-61311617 傳真:0371-55611201 QQ: 郵箱:zgazxxw@126.com 豫ICP備18030500號(hào)-4
未經(jīng)過(guò)本站允許,請(qǐng)勿將本站內(nèi)容傳播或復(fù)制
安全聯(lián)盟認(rèn)證