徐正平,許永森
(中國科學(xué)院航空光學(xué)成像與測量重點實驗室中國科學(xué)院 長春光學(xué)精密機械與物理研究所,吉林 長春130033)
人機交互系統(tǒng)[1-2]便于操作人員實時控制設(shè)備運行,而其顯示[3]窗口能實時向操作人員提供系統(tǒng)運行狀態(tài)信息,多數(shù)設(shè)備均提供了人機交互接口。早期通用步進電機控制器采用陣列式鍵盤和黑白點陣式LCD 作為人機交互設(shè)備,主控芯片采用單片機。單片機通過陣列掃描獲取用戶按鍵信息,并根據(jù)欲顯示信息向LCD 發(fā)送數(shù)據(jù)及相應(yīng)的控制信號。為減輕單片機工作負荷,通常采用單片機配合CPLD 實現(xiàn)人機交互,單片機主要完成系統(tǒng)級功能實現(xiàn),鍵盤掃描和LCD 時序控制則由CPLD 完成。目前,彩色LCD 和觸摸屏組成的人機交互接口在消費電子、工業(yè)控制、汽車電子、醫(yī)療電子、航空航天等各個領(lǐng)域得到了廣泛的應(yīng)用[4-8]。隨著電子產(chǎn)業(yè)的不斷發(fā)展,高性能微處理器的價格在不斷降低,且用戶對產(chǎn)品性能要求越來越高,普通單片機已無法滿足系統(tǒng)要求。
本系統(tǒng)采用高性能 ARM9 控制器S3C2440A[9]作為主控芯片,其片內(nèi)LCD 控制器和觸摸屏接口可分別實現(xiàn)與LCD 和觸摸屏的無縫連接,簡化了主控芯片工作負荷,同時增強了系統(tǒng)可靠性。本文在介紹步進電機控制器結(jié)構(gòu)的基礎(chǔ)上,對S3C2440A 與觸摸屏和LCD 的接口電路及應(yīng)用程序代碼進行了詳細分析,并進行了實際系統(tǒng)運行測試。最后給出了實驗結(jié)果。
通用步進電機控制器結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)主控制器選用S3C2440A,其為基于ARM920TCPU 內(nèi)核、主頻高達400 MHz、具有16位/32位精簡指令集結(jié)構(gòu)的嵌入式微處理器,片上包含有豐富的外設(shè)資源,如:定時器、RTC、DMA 控制器、LCD 控制器、UART、ADC 和觸摸屏接口、看門狗定時器、IIC 和IIS 總線接口、AC97接口、USB主機和器件接口、SD 主機接口、SPI接口和攝像頭接口。

圖1 步進電機控制器結(jié)構(gòu)框圖Fig.1 Structural sketch of stepping motor controller

圖2 S3C2440A 與觸摸屏接口電路Fig.2 Circuit between S3C2440Aand touch-screen
步進電機控制器具有似于匯編語言的獨立指令系統(tǒng)。與步進控制器同時使用的還有上位機用戶程序編譯軟件,該軟件對用戶程序代碼進行編碼,讀取用戶自定義圖像數(shù)據(jù)或寄存器參數(shù),并通過串行總線將上述信息傳送給步進電機控制器。步進電機控制器將接收到的信息存儲在Flash中。在系統(tǒng)運行時,主控芯片S3C2440A 讀取、解譯并執(zhí)行用戶程序。主控芯片S3C2440A 通過觸屏按鍵接口讀取用戶按鍵信息,依據(jù)應(yīng)用程序?qū)⑦\行過程中的數(shù)據(jù)信息和提示信息發(fā)送給S3C2440A 片內(nèi)LCD 控制器,由其產(chǎn)生相應(yīng)控制信號控制LCD 顯示。S3C2440A 與觸摸屏接口電路如圖2所示。
圖2中,VSYNC、HSYNC、VCLK、VD[23∶0]、VDEN 和LCD_PWR 為LCD 接 口 信 號;TSXM、TSYM、TSXP、TSYP 為觸摸屏接口信號,后續(xù)將給出信號的詳細說明。
本文將對觸摸屏和LCD 等接口的程序設(shè)計進行詳細介紹。
S3C2440A 內(nèi)部集成有4線制電阻式觸摸屏接口,當有觸點按下時,可通過ADC 讀取相應(yīng)觸點的坐標值。S3C2440A 觸摸屏接口具有4種工作模式:常規(guī)轉(zhuǎn)換模式、X/Y 坐標單獨轉(zhuǎn)換模式、X/Y 坐標連續(xù)轉(zhuǎn)換模式和等待中斷模式。在實際應(yīng)用中,常用的兩種模式為:X/Y 坐標連續(xù)轉(zhuǎn)換模式和等待中斷模式,以下給出具體應(yīng)用方式。
觸摸屏接口等待中斷模式分為下降沿等待中斷模式和上升沿等待中斷模式,ADCTSC[8]=0/1分別對應(yīng)下降沿/上升沿中斷模式。在等待中斷模式下,上拉開關(guān)應(yīng)該處于使能模式,即ADCTSC[3]=0;在轉(zhuǎn)換模式下,上拉開關(guān)應(yīng)處于關(guān)閉模式,即ADCTSC[3]=1。系統(tǒng)初始化時,設(shè)置觸摸屏接口為下降沿等待中斷模式,且打開上拉使能開關(guān)。當有觸點按下時,觸摸屏接口向CPU 發(fā)送中斷信號。在觸摸屏接口中斷服務(wù)子程序中,設(shè)置上拉開關(guān)為關(guān)閉模式,同時設(shè)置觸摸屏接口為X/Y 坐標連續(xù)轉(zhuǎn)換模式,并啟動ADC轉(zhuǎn)換。在ADC轉(zhuǎn)換完成后,觸點X 軸和Y軸結(jié)果分別保存在ADCDAT0和ADCDAT1的低10位中。讀取上述寄存器獲取觸點X 軸和Y軸坐標。在通常應(yīng)用系統(tǒng)中,需等待觸筆抬起才能進行后續(xù)操作。為實現(xiàn)該功能,需設(shè)置觸摸屏接口為上升沿等待中斷模式,且打開上拉使能開關(guān)。系統(tǒng)查詢中斷狀態(tài)標志位SUBSRCPND[9]以判斷觸筆是否抬起。在觸筆抬起后,為保證下次觸摸屏觸點按下時能夠正確處理,在觸摸屏接口中斷服務(wù)子程序返回前,還需再次將觸摸屏接口設(shè)置為下降沿等待中斷模式,并打開上拉使能開關(guān)。觸摸屏接口中斷服務(wù)子程序程序示例代碼如下:

通常情況下,觸摸屏和LCD 配合使用。在使用觸摸屏?xí)r,應(yīng)保證觸摸屏上觸點的物理坐標與LCD 像素點坐標一一對應(yīng),因此,需要進行觸摸屏的校正。設(shè)LCD 上每個像素點的坐標為(Xd,Yd),對應(yīng)觸摸屏上觸點的坐標為(Xt,Yt),則兩者存在以下關(guān)系式:

觸摸屏的校正即求取上式中的a、b、c、d、e、f。通常采用3點校正,即指定LCD 屏幕上3個坐標點,其坐標值分別為(Xd1,Yd1)、(Xd2,Yd2)、(Xd3,Yd3),操作人員順次點擊上述三點,獲取對應(yīng)觸點坐標值(Xt1,Yt1)、(Xt2,Yt2)、(Xt3,Yt3),由此可列寫6個方程,通過6個方程求取觸摸屏校正所需的6個參數(shù)。
S3C2440A 內(nèi)部的LCD 控制器可實現(xiàn)與STN LCD 和TFT LCD 的無縫連接,支持屏幕實際大小有640×480、320×240、160×160等。在與STN LCD 連接時,支持單色、4 級/16 級灰度和256級/4 096級彩色,可實現(xiàn)4位雙掃描、4位單掃描、8位單掃描LCD 顯示,在256級彩色模式下,虛擬屏幕尺寸可達4 096×1 024、2 048×2 048、1 024×4 096等。在與TFT LCD 連接時,可支持1位、2位、4位、8位、16位及24位彩色顯示,在16位真彩色模式下,支持的最大虛擬屏幕尺寸可達2 048×1 024等。以下以TFT LCD 為例進行詳細介紹。
應(yīng)用S3C2440A 內(nèi)部的LCD 控制器的關(guān)鍵是完成時序配置和緩沖地址設(shè)置。LCD 控制器與外部TFT LCD 連接信號主要包括垂直同步信號VSYNC、水平同步信號HSYNC、像素時鐘VCLK、數(shù)據(jù)信號VD[23∶0]、數(shù)據(jù)使能信號VDEN,其時序關(guān)系圖如圖3所示。

圖3 TFT LCD 時序圖Fig.3 Scheduling of TFT LCD
圖3中,VSPW、VBPD、VFPD、LINEVAL、HSPW、HBPD、HFPD、HOZVAL 用 于 設(shè) 置 時序。VSPW、VBPD、LINEVAL、VFPD 單位為水平同步脈沖數(shù);HSPW、HBPD、HOZVAL、HFPD單位為像素時鐘數(shù)。LCD控制器輸出的各驅(qū)動信號極性也可編程設(shè)置,具體通過LCDCON2~LCDCON5設(shè)置。依LCD型號,定義相關(guān)參數(shù)如下:

在與彩色TFT LCD 連接時,模式可分為24 bpp 和16 bpp 模 式。在24 bpp 模 式 下,BPP24BL(LCD-CON[5])用于決定內(nèi)存中字節(jié)有效位;在16bpp模式下,HWSWP(LCDCON[0])用于決定內(nèi)存中字節(jié)存放次序,具體如表1所示。
表1中,Pi表示第i個像素值;PiR、PiG、PiB分別表示第i個像素R、G、B分量值。
在16bpp模式下,有兩種數(shù)據(jù)格式可選:5∶6∶5 和5∶5∶5∶1,由位FRM565(LCDCON[11])決定:當FRM565=1 時選擇5∶6∶5 格式;當FRM565=0時選擇5∶5∶5∶1格式。在5∶6∶5格式下,D[15∶11]、D[10∶5]、D[4∶0]分別存儲某一像素的R[4∶0]、G[5∶0]、B[4∶0];在5∶5∶5∶1 格式下,D[15∶11]、D[10∶6]、D[5∶1]、D[0]分別存儲某一像素的R[4∶0]、G[4∶0]、B[4∶0]和I位。
在應(yīng)用LCD 控制器時,另一需要設(shè)置的為顯示緩沖區(qū)地址。可在S3C2440A 內(nèi)部開辟虛擬顯示區(qū)域,當虛擬顯示區(qū)大于LCD 實際顯示區(qū)時,通過改變顯示緩沖區(qū)地址來顯示特定區(qū)域,虛擬顯示區(qū)和實際顯示區(qū)關(guān)系圖如圖4所示。

表1 各模式下數(shù)據(jù)存放格式Tab.1 Data format in several modes
圖4中,OFFSIZE 為偏移量;PAGEWIDTH為實際顯示區(qū)域?qū)挾龋籐CDBASEU 為顯示緩沖區(qū)起始地址;LCDBASEL 為顯示緩沖區(qū)結(jié)束地址。從 圖4 可 以 看 出,LCDBASEU 和LCDBASEL滿足以下關(guān)系式:
LCDBASEL =LCDBASEU + (PAGEWIDTH+OFFSIZE)×(LINEVAL+1)

圖4 虛擬顯示區(qū)和實際顯示區(qū)關(guān)系圖Fig.4 Relationship between virtual display and actual display
在實際應(yīng)用中,可將虛擬顯示區(qū)域和實際顯示區(qū)域設(shè)置為同等大小,此時偏移量OFFSIZE即為0。LCD 初始化代碼如下:



在系統(tǒng)運行過程中,首先需將欲顯示圖片按照顯示格式要求存儲為5∶6∶5 16bpp模式,并將數(shù)據(jù)數(shù)組中的數(shù)據(jù)放置在LCDBUF 指定位置即可,示例代碼如下:

上述代碼含義是從(x0,y0)開始顯示大小為h×l的圖片,圖片數(shù)據(jù)緩沖區(qū)數(shù)組名為bmp。
實際采集到的系統(tǒng)開機界面如圖5所示。
為正確獲取用戶按鍵信息,首先需在屏幕上顯示按鍵圖標,做法是先用畫圖軟件制作圖標,然后經(jīng)格式轉(zhuǎn)換獲取對應(yīng)數(shù)組,然后更新LCD 緩沖區(qū)數(shù)據(jù),實現(xiàn)鍵盤圖標顯示。由于鍵盤圖標顯示位置已知,當用戶按下觸摸屏?xí)r,通過程序獲取觸點坐標,經(jīng)校正獲取對應(yīng)LCD屏幕上像素點位置,之后判斷該位置是否在某一按鍵顯示區(qū)域內(nèi),以獲取按鍵值,并確定后續(xù)程序運行。系統(tǒng)運行過程中的顯示界面如圖6所示。

圖5 系統(tǒng)開機界面顯示結(jié)果Fig.5 Displaying result of opening interface

圖6 運行界面顯示結(jié)果Fig.6 Displaying result of system running interface
以S3C2440A 為核心,實現(xiàn)了步進電機控制器系統(tǒng)人機交互接口的升級。S3C2440A 片內(nèi)集成的觸摸屏接口和LCD 控制器可實現(xiàn)與觸摸屏和LCD 的無縫連接。采用該方案,可大大簡化系統(tǒng)設(shè)計,并減輕系統(tǒng)運行負荷。實驗測試結(jié)果表明:系統(tǒng)方案合理,運行可靠。
[1] 熊根良,陳海初,梁發(fā)云,等.物理性人-機器人交互研究與發(fā)展現(xiàn)狀[J].光學(xué)精密工程,2013,21(2):356-370.Xiong G L,Chen H CH,Liang F Y,et al.Research and development statue of physical human-robot interaction[J].Optics and Precision Engineering,2013,21(2):356-370.(in Chinese)
[2] 吳迪,曹潔,王進花.基于自適應(yīng)高斯混合模型與靜動態(tài)聽覺特征融合的說話人識別[J].光學(xué)精密工程,2013,21(6):1598-1604.Wu D,Cao J,Wang J H.Speaker recognition based on adapted Gaussian mixture model and static and dynamic auditory feature fusion[J].Optics and Precision Engineering,2013,21(6):1598-1604.(in Chinese)
[3] 丁柏秀,鄭喜鳳,陳宇,等.發(fā)光二極管顯示屏CCD 圖像的修正[J].光學(xué)精密工程,2013,21(5):1318-1325.Ding B X,Zheng X F,Chen Y,et al.Revision of LED display images acquired by CCD camera[J].Optics and Precision Engineering,2013,21(5):1318-1325.(in Chinese)
[4] 郭星,劉政怡,李煒,等.一種大屏幕人機交互系統(tǒng)的實現(xiàn)方法[J].計算機工程與應(yīng)用,2012,48(1):176-179.Guo X,Liu Z Y,Li W,et al.Implementation method of human-computer interaction system with large screen[J].Computer Engineering and Applications,2012,48(1):176-179.(in Chinese)
[5] 林賀盛.針織圓緯機數(shù)控平臺人機交互單元設(shè)計[D].杭州:浙江理工大學(xué),2012.Lin H S.Design of human-computer interaction unit of circular knitting machine CNC platform [D].Hangzhou:Zhejiang Sci-Tech University,2012.(in Chinese)
[6] 裴鴻剛.基于ARM 的服務(wù)機器人人機交互界面的設(shè)計與實現(xiàn)[D].廣州:暨南大學(xué),2012.Pei H G.The human-machine interface of a service-robot based on ARM:design and application[D].Guangzhou:Jinan Univeristy,2012.(in Chinese)
[7] 邢艷.精密光柵單色儀控制系統(tǒng)人機交互的實現(xiàn)[D].長春:吉林大學(xué),2012.Xin Y.Development of human-computer interaction for control system of grating homochromatic instrument[D].Changchun:Jilin Univeristy,2012.(in Chinese)
[8] 高靜雅.人機交互中的手勢識別技術(shù)研究[D].西安:西安電子科技大學(xué),2013.Gao J Y.Research on gesture recognition technology in the human-computer interaction[D].Xi’an:Xidian Univeristy,2013.(in Chinese)
[9] SAMSUNG Corporation.S3C2440A32-Bit Microprocessor User′s Manual[R].Korea:SAMSUNG Corporation,2009.