第5章-嵌入式系統(tǒng)常用模塊設(shè)計_第1頁
第5章-嵌入式系統(tǒng)常用模塊設(shè)計_第2頁
第5章-嵌入式系統(tǒng)常用模塊設(shè)計_第3頁
第5章-嵌入式系統(tǒng)常用模塊設(shè)計_第4頁
第5章-嵌入式系統(tǒng)常用模塊設(shè)計_第5頁
已閱讀5頁,還剩154頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

嵌入式系統(tǒng)原理與設(shè)計第五講嵌入式系統(tǒng)常用模塊設(shè)計嵌入式系統(tǒng)常用外設(shè)除了存儲設(shè)備以外還包括:通信總線及接口(如UART、USB、I2C、SPI等)、人機交互設(shè)備(如LCD、鍵盤、觸摸屏等)、其他輸入輸出設(shè)備(如A/D、D/A、PWM等)。本章提要132546復(fù)位電路鍵盤模塊設(shè)計UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計9PWM直流電機控制接口8I2C總線接口應(yīng)用設(shè)計5.1電源模塊設(shè)計5.1.1電源工作原理系統(tǒng)工作狀態(tài)(1)系統(tǒng)掛起模式只有SDRAM、處理器功耗管理電路、喚醒電路處于工作狀態(tài)

圖5-1系統(tǒng)運行模式的轉(zhuǎn)換

(1)系統(tǒng)掛起模式只有SDRAM、處理器功耗管理電路、喚醒電路處于工作狀態(tài)。以下是進入掛起模式的典型步驟。 用戶指定、超時、低電量狀態(tài)等因素啟動了掛起模式 操作系統(tǒng)調(diào)用驅(qū)動程序把外設(shè)調(diào)整到節(jié)電狀態(tài) 處理器為保存的寄存器存入SDRAM SDRAM進入自刷新模式 處理器進入掛起模式。在該模式下,處理器的主時鐘停止,系統(tǒng)中各供電模塊關(guān)閉。(2) 系統(tǒng)關(guān)閉狀態(tài)對ARM系統(tǒng)來說,掛起狀態(tài)雖然已大大減小了功耗,但系統(tǒng)在掛起狀態(tài)下也消耗能量,因而需要一種關(guān)閉模式,像系統(tǒng)沒有電源一樣。這種模式在電池耗盡時可以有效保護電池不被損壞;同時可使系統(tǒng)在安裝有電池的情況下進行傳輸和存儲。(3) 軟啟動大多數(shù)系統(tǒng)需要一種軟啟動功能,軟啟動時,處理器被復(fù)位,但SDRAM里面的內(nèi)容仍舊保持。目前,大部分編寫式系統(tǒng)都選擇在SDRAM中存儲用戶文件,這是一項非常有用的功能。2.外設(shè)耗電考慮顯示及背光低功耗SDRAM音頻備用電源緊急情況漏電問題5.1.2硬件電路設(shè)計電源線與地線設(shè)計(1)電源/電源線設(shè)計盡量加粗電源線的寬度電源線、地線的走向和數(shù)據(jù)線傳遞的方向一致模擬電路和數(shù)字電路部分要獨立供電一種是數(shù)字電源與模擬電源,以及數(shù)字地與模擬地之間加鐵氧體磁珠或電感構(gòu)成無源濾波電路,如圖5-3(a)所示。另一種是采用多路穩(wěn)壓器的方法,如圖5-3(b)所示。圖5-3電源數(shù)/模獨立供電設(shè)計(2)地線設(shè)計地線設(shè)計的原則如下所示。數(shù)字地與模擬地分開。如線路板上既有數(shù)字電路又有模擬電路,則應(yīng)使它們盡可能分開。低頻電路的地應(yīng)盡量采用單點并聯(lián)接地,實際布線有困難時可部分串聯(lián)后再并聯(lián)接地。高頻電路宜采用多點串聯(lián)接地,地線應(yīng)粗而短,高頻元件周圍應(yīng)盡量用柵格狀大面積地箔。接地線應(yīng)盡量加粗。若接地線用很細(xì)的線條,則接地點位隨電流的變化而變化,使抗噪性能降低。因此應(yīng)將接地線加粗,使它能通過3倍于電路板上的允許電流。如有可能,接地線應(yīng)在2~3mm以上。接地線構(gòu)成比環(huán)路。只由數(shù)字電路組成的印制板,其接地電路布成閉環(huán)路大多能提高抗噪聲能力。(3)電源濾波設(shè)計電源濾波如圖5-4所示。電源引入出必須考慮低頻和高頻的濾波。低頻濾波電容均勻分布在PCB上,每個大功率器件應(yīng)安裝一個16uF以上的電解電容或鉭電容,并由其所放位置處負(fù)載的特性及紋波要求來確定適當(dāng)?shù)娜葜怠T骷拿總€(組)電源/地均應(yīng)安裝至少一個高頻濾波電容。高頻濾波電容必須靠近器件的電源/地引腳。2.直流電壓產(chǎn)生方法在系統(tǒng)中需要使用+12VDC、+5VDC、+3.3VDC的直流穩(wěn)壓電源,其中,內(nèi)核工作需3.3V電源,ARM的IO端口工作和部分器件需3.3V電源,為LCD提供5V的直流穩(wěn)壓電源。擴展板的電源模塊負(fù)責(zé)提供核心板和擴展板上電路的供電,采用線性穩(wěn)壓器。這3種電壓的產(chǎn)生方法是+12VDC從外部直接引入,作為整個系統(tǒng)的總電源,一路直接供給作為工作電源,一路分流到LM7805的輸入端;LM7805電源穩(wěn)壓芯片的輸出端產(chǎn)生+5VDC,一路供給核心板上器件各+5V,一路分流到+3.3VDC穩(wěn)壓芯片ALSlll7的輸入端,其輸出端產(chǎn)生+3.3VDC。還可以采用線性穩(wěn)壓電源LM1085將DC5V轉(zhuǎn)換成2.5V。本章提要132546復(fù)位電路

鍵盤模塊設(shè)計UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計9PWM直流電機控制接口8I2C總線接口應(yīng)用設(shè)計5.2復(fù)位電路5.2.1ARM復(fù)位原理1.ARM復(fù)位源類型復(fù)位源復(fù)位對象復(fù)位邏輯系統(tǒng)配置時鐘模塊上電復(fù)位是是是外部硬件復(fù)位否是是內(nèi)部硬件復(fù)位鎖相環(huán)失鎖復(fù)位否是是軟件看門狗復(fù)位檢錯停機復(fù)位測試端口硬復(fù)位JTAG復(fù)位否否否外部軟件復(fù)位否否否內(nèi)部軟件復(fù)位調(diào)試端口軟復(fù)位否否否JTAG軟復(fù)位2.復(fù)位工作原理圖5-6系統(tǒng)復(fù)位過程5.2.2復(fù)位硬件電路設(shè)計1.復(fù)位電路原理圖

3.看門狗軟件復(fù)位

看門狗復(fù)位電路主要是利用ARM正常工作時,定時復(fù)位計數(shù)器,使得計數(shù)器的值不超過某一值:當(dāng)ARM不能正常工作時,由于計數(shù)器不能被復(fù)位,因此其計數(shù)會超過某一值,從而產(chǎn)生復(fù)位脈沖,使得ARM恢復(fù)正常工作狀態(tài)。看門狗復(fù)位電路的可靠性主要取決于軟件設(shè)汁,即將定時問復(fù)位電路發(fā)出脈沖的程序放在何處,在—般設(shè)計中,將此段程序放在定時器中斷服務(wù)子程序中。在進行ARM處理器復(fù)位電路設(shè)計時需要注意如下問題:要正確理解上電復(fù)位.硬件復(fù)位、軟件復(fù)位和測試復(fù)位的功能及其之間的區(qū)別。當(dāng)上電復(fù)位有效時.可以產(chǎn)生處理器內(nèi)部硬復(fù)位和軟復(fù)位;當(dāng)硬件復(fù)位時,可以產(chǎn)生處理器內(nèi)部硬復(fù)位和軟復(fù)位;但是,軟件復(fù)位只能產(chǎn)生處理器內(nèi)部的軟復(fù)位。在進行具有下電模式的低功耗嵌入式系統(tǒng)復(fù)位電路設(shè)計時,由于要求上電復(fù)位電路的供電來自帶有電池的保持電源有效,因此在設(shè)計時應(yīng)盡量選擇低功耗器件作為復(fù)位電路的主器件。本章提要132546復(fù)位電路鍵盤模塊設(shè)計UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計9PWM直流電機控制接口8I2C總線接口應(yīng)用設(shè)計5.3.1異步串行通信概述UART(UniversalAsynchronousReceiverandTransmitter,通用異步收發(fā)器)接口。而RS232、RS499、RS423、RS422和RS485等,是物理接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范,對應(yīng)各種異步串行通信口的接口標(biāo)準(zhǔn)和總線標(biāo)準(zhǔn),它規(guī)定了通信口的電氣特性、傳輸速率、連接特性和接口的機械特性等內(nèi)容。1.異步串行通信協(xié)議

異步串行方式是將傳輸數(shù)據(jù)的每個字符一位接一位(例如先低位、后高位)地傳送。數(shù)據(jù)的各不同位可以分時使用同一傳輸通道,因此串行I/O可以減少信號連線,最少用一對線即可進行。

1111/01/01/01/01/01/01/01/01100D0D0D0D3D4D5D6第n個字符空閑位空閑位空閑位停止位奇偶位起始位數(shù)據(jù)位微機異步串行通信中,常用的波特率為50,95,110,150,300,600,1200,2400,4800,9600,115200等。接收方按約定的格式接收數(shù)據(jù),并進行檢查,一般可以查出以下三種錯誤:1)奇偶錯:在約定奇偶檢查的情況下,接收到的字符奇偶狀態(tài)和約定不符。2)幀格式錯:一個字符從起始位到停止位的總位數(shù)不對。3)溢出錯:若先接收的字符尚未被微機讀取,后面的字符又傳送過來,則產(chǎn)生溢出錯。2.異步串行通信接口定義一般UART接口定義四根引腳,分別如下:1)RxD(ReceiveData)——數(shù)據(jù)接收引腳,用于串行通信數(shù)據(jù)接收;2)TxD(TransmitData)——數(shù)據(jù)發(fā)送引腳,用于串行通信數(shù)據(jù)發(fā)送;3)RTS(RequesttoSend)——請求數(shù)據(jù)發(fā)送引腳,用于標(biāo)明接收設(shè)備有沒有準(zhǔn)備好接收數(shù)據(jù),即當(dāng)終端要發(fā)送數(shù)據(jù)時,使該信號有效;4)CTS(CleartoSend)——允許數(shù)據(jù)發(fā)送引腳,用于CTS來起動和暫停來自計算機的數(shù)據(jù)流,用來表示從設(shè)備準(zhǔn)備好接收主設(shè)備發(fā)來的數(shù)據(jù),是對請求發(fā)送信號RTS的響應(yīng)信號。UARTAUARTBTxDRxDCTSRTSTxDRxDCTSRTS3、RS-232-C

目前RS-232是PC機與通信工業(yè)中應(yīng)用最廣泛的種串行接口。RS-232被定義為一種在低速率串行通信中增加通信距離的單端標(biāo)準(zhǔn)。RS-232遵循RS-232-C標(biāo)準(zhǔn),美國電子工業(yè)協(xié)會(ElectronicIndustriesAssociation,EIA)把RS-232-C定義為:“在數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通信設(shè)備之間使用串行二進制數(shù)據(jù)交換的接口”。RS-232-C標(biāo)準(zhǔn)是一種硬件協(xié)議,用于連接DIE(DataTerminalEquipment,數(shù)據(jù)終端設(shè)備)和DCE(DataCommunicationsEquipment,數(shù)據(jù)通信設(shè)備)兩種設(shè)備。

RS-232-C定義包括以下幾個方面:接口的機械特性;電氣信號特征;交換功能特性。

RS-232-C采用25針連接器,陽極(插頭)接DTE,陰極(插座)接DCE。雖然本標(biāo)準(zhǔn)沒有規(guī)定連接器的實際類型,但工業(yè)上對D-25類型的連接器實行了標(biāo)準(zhǔn)化。

在電氣方向,RS-232-C作了以下規(guī)定:驅(qū)動器上的負(fù)載電容不超過2500pF。驅(qū)動器上的負(fù)載電阻在3000歐-7000歐之間。在指定負(fù)載下,數(shù)據(jù)信號傳輸率(或波特率)低于2000bps。相對于信號地線,RS-232-C線的最高電壓不超過15v驅(qū)動器能產(chǎn)生+5-+15v(邏輯0)和-5--15v(邏輯1)的電壓。輸入端能接收+5-+15v(邏輯0)和-5--15v(邏輯1)的信號。

在RS-232-C標(biāo)準(zhǔn)建議信號的傳輸速度控制在20kbps內(nèi),在高速傳輸時,建議電纜長度不超過50英尺。簡單的計算公式為:25英尺(半負(fù)載量)時數(shù)據(jù)信號傳輸率增加到40kbps、12.5英尺時數(shù)據(jù)信號傳輸率增加到80kbps、6英尺時數(shù)據(jù)信號傳輸率增加到160kbps。事實上,許多通信包能使兩臺計算機之間的數(shù)據(jù)信號傳輸率達(dá)到115.2kbps。注意,RS-232-C標(biāo)準(zhǔn)并沒有定義“標(biāo)推”波特率。RS-232-C標(biāo)準(zhǔn)允許數(shù)據(jù)在同一時刻收發(fā),也就是全雙工通信方式。

RS-232-C標(biāo)準(zhǔn)定義的25針實際上僅用了其中9針。RS-232-C通信所保留的9針見表6-7。注意,PC機上的通信端口一般是作為DTE連接(即陽性連接器)。在實際的應(yīng)用中,利用RS-232-C的通信通常只使用其中的3根線,即Rd、TxD和GND。說明編寫詞DTEDB-25M針腳號DTEDB-9M針腳號方向DTEDB-9F針腳號DTEDB-25F針腳號發(fā)送TxD2333接收RxD3222發(fā)送請求RTS4785清除發(fā)送CTS5874數(shù)據(jù)設(shè)置準(zhǔn)備好DSR66420數(shù)據(jù)載波準(zhǔn)備好DCD8118數(shù)據(jù)終端準(zhǔn)備好DTR20466振鈴檢測IndicatorTL2299信號地GroundSG755

4.RS-422RS-422由RS-232發(fā)展而來。為改進RS-232通信距離短、速度低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mbps,允許在一條平衡總線上連接最多10個接收器。RS-422是一種單機發(fā)送、多機接收的單向、平衡傳輸規(guī)范。RS-422的數(shù)據(jù)信號采用差分傳輸方式,也稱做平衡傳輸。它使用一對雙絞線進行數(shù)據(jù)傳輸。驅(qū)動器能產(chǎn)生+2-+6v(邏輯0)和-2--6v(邏輯1)

RS-422標(biāo)準(zhǔn)全稱是“平衡電壓數(shù)字接口電路的電氣特性”。由于接收器采用高輸入阻抗并且發(fā)送驅(qū)動器具有比RS-232更強的驅(qū)動能力,故允許在相同傳輸線上連接多個接收節(jié)點,最多可接10個節(jié)點,即一個主設(shè)備(Master),其余為從設(shè)備(Slave),從設(shè)備之間不能通信,所以RS-422支持點對多的雙向通信。RS-422四線接口由于采用單獨的發(fā)送和接收通道,因此不必控制數(shù)據(jù)方向,備裝置之間任何必須的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨的雙絞線)實現(xiàn)。

RS-422的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為1Mbps。其平衡雙絞線的長度與傳輸速率成反比,在100Kbps速率以下,才可能達(dá)到最大傳輸距離。只有在很短的距離廠才能獲得最高傳輸速率。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為1Mbps。

RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。在短距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。

5.RS-485串行總線接口

為擴展應(yīng)用范圍,EIA在RS-422的基礎(chǔ)上制定了RS-485標(biāo)準(zhǔn),增加了多點、雙向通信能力,通常在要求通信距離為幾十米至上千米時,廣泛采用R5-485收發(fā)器。

RS-485收發(fā)器采用平衡發(fā)送和差分接收,即在發(fā)送端,驅(qū)動器將TTL電平信號轉(zhuǎn)換成差分信號輸出;在接收端,接收器將差分信號變成TTL電平,因此具有抑制共模干擾的能力,加上接收器具有高的靈敏度,能檢測低達(dá)200mV的電壓,故數(shù)據(jù)傳輸可達(dá)千米以外。

RS-485許多電氣規(guī)定與RS-422相仿,如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線制可實現(xiàn)真正的多點雙向通信。而采用四線連接時,與RS-422一樣只能實現(xiàn)點對多的通信,即只能有一個主(Master)設(shè)備,其余為從設(shè)備,但它比RS-422有所改進。無論四線還是二線連接方式總線上都可連接多達(dá)32個設(shè)備。RS-485與RS-422的共模輸出電壓是不同的。RS-485共模輸出電壓在-7V至+12V之間,而RS-422在-6V至+6V之間,RS-485接收器最小輸入阻抗為12千歐;RS-422是4千歐;RS-485滿足所有RS-422的規(guī)范,所以RS-485的驅(qū)動器可以在RS-422網(wǎng)絡(luò)中應(yīng)用,但RS-422的驅(qū)動器并不完全適用于RS-485網(wǎng)絡(luò)。

RS-485與RS-422一樣,最大傳輸速率為10Mb/s。當(dāng)波特率為1.2kbps時,最大傳輸距離理論上可達(dá)15千米。平衡雙絞線的長度與傳輸速率成反比,在100kbps速率以下,才可能使用規(guī)定最長的電纜長度。

RS-485需要2個終接電阻,接在傳輸總線的兩端,其阻值要求等于傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。5.3.2S3C440BXUART串口介紹通用異步收發(fā)器(UART)

S3C44B0X的UART(UniversalAsynchronousReceiverandTransmitter,通用異步收發(fā)器)單元提供兩個獨立的異步串行I/O口,都可以運行于中斷模式或DMA模式。也就是說,UART可以產(chǎn)生中斷請求或DMA請求,以便在CPU和UART之間傳遞數(shù)據(jù)。它最高可支持115200bps的傳輸率。S3C44B0X中每個UART通道包含兩個用于接收或發(fā)送數(shù)據(jù)的16位FIFOs隊列。通用異步收發(fā)器(UART)的結(jié)構(gòu)數(shù)據(jù)接收器數(shù)據(jù)接收器控制單元波特率發(fā)生器接收FIFO(16Byte)接收移相器發(fā)送移相器發(fā)送FIFO(16Byte)TXDnRXDn時鐘源5.3.3串口硬件電路設(shè)計5.3.4串口驅(qū)動程序設(shè)計與UART有關(guān)的寄存器主要有以下幾個:(1)UART線性控制寄存器ULCONn,主要對串口的功能、奇偶校驗、數(shù)據(jù)位長度等進行配置。(2)UART控制寄存器UCONn,該寄存器決定UART的各種摸式。(3)UARTFIFO控制寄存器UFCONn,決定UART中FIFO的摸式。UFCONn的第0位決定是否啟用FIFO。(4)UARTMODEM控制寄存器,決定UART中MODEM的摸式。UMCONn的第0位是請求發(fā)送位,對我們來說是比較重要的。(5)讀寫狀態(tài)寄存器UTRSTAT以及錯誤狀態(tài)寄存UERSTAT,可以反映芯片目前的讀寫狀態(tài)以及錯誤類型。FIFO狀態(tài)寄存器UFSTAT和MODEM狀態(tài)寄存器UMSTAT,通過前者可以讀出目前FIFO是否滿以及其中的字節(jié)數(shù);通過后者可以讀出目前MODEM的CTS狀態(tài)。(6)發(fā)送寄存器UTXH和接收寄存器URXH,這兩個寄存器存放著發(fā)送和接收的數(shù)據(jù),當(dāng)然只有一個字節(jié)8位數(shù)據(jù)。需要注意的是在發(fā)生溢出錯誤的時候,接收的數(shù)據(jù)必須要被讀出來,否則會引發(fā)下次溢出錯誤。(7)最后是波特率配置寄存器UBRDIV。計算公式如下:

UBRDIVn=(round_off)(MCLK/(bps×16))-1

其中MCLK是系統(tǒng)頻率,例如在40MHz的情況下,當(dāng)波特率取115200時,UBRDIVn=(int)(40000000/(115200×16)+0.5)-1=(int)(21.7+0.5)-1=22-1=21定義各個寄存器地址#definerULCON0(*(volatileunsigned*)0x1d00000)#definerULCON1(*(volatileunsigned*)0x1d04000)

volatile關(guān)鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如:操作系統(tǒng)、硬件或者其它線程等。遇到這個關(guān)鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進行優(yōu)化,從而可以提供對特殊地址的穩(wěn)定訪問。一般說來,volatile用在如下的幾個地方:

(1)、中斷服務(wù)程序中修改的供其它程序檢測的變量需要加volatile;

(2)、多任務(wù)環(huán)境下各任務(wù)間共享的標(biāo)志應(yīng)該加volatile;

(3)、存儲器映射的硬件寄存器通常也要加volatile說明,因為每次對它的讀寫都可能由不同意義;寄存器宏定義#definerULCON0(*(volatileunsigned*)0x1d00000)#definerUCON0(*(volatileunsigned*)0x1d00004)#definerUFCON0(*(volatileunsigned*)0x1d00008)#definerUMCON0(*(volatileunsigned*)0x1d0000c)#definerUTRSTAT0(*(volatileunsigned*)0x1d00010)#definerUERSTAT0(*(volatileunsigned*)0x1d00014)#definerUFSTAT0(*(volatileunsigned*)0x1d00018)#definerUMSTAT0(*(volatileunsigned*)0x1d0001c)#definerUBRDIV0(*(volatileunsigned*)0x1d00028)#definerUTXH0(*(volatileunsignedchar*)0x1d00020)#definerURXH0(*(volatileunsignedchar*)0x1d00024)#definerUTXH0(*(volatileunsignedchar*)0x1d00020)#definerURXH0(*(volatileunsignedchar*)0x1d00024)#defineUTXH0(*(volatileunsignedchar*)0x1d00020)//byte_accessaddressbyBDMA#defineURXH0(*(volatileunsignedchar*)0x1d00024)編寫串口驅(qū)動函數(shù)串口初始化串口初始化包括:設(shè)置波特率;設(shè)置起始位、奇偶校驗位等設(shè)置中斷等將寄存器ULCONn、UCONn置零設(shè)置寄存器ULCONn、UCONn、UBRDIV延時voidUart_Init(intmclk,intbaud){ inti; if(mclk==0) mclk=MCLK; rUFCON0=0x0;//FIFOdisable rUMCON0=0x0;//UART0 rULCON0=0x3;//Normal,Noparity,1stop,8bit rUCON0=0x245;//rx=edge,tx=level,disabletimeoutint., enablerxerrorint.,normal,interruptorpolling rUBRDIV0=((int)(mclk/16./baud+0.5)-1); for(i=0;i<100;i++);}編寫收發(fā)數(shù)據(jù)函數(shù)發(fā)送數(shù)據(jù)主要是將需發(fā)送的數(shù)據(jù)放入發(fā)送數(shù)據(jù)寄存器發(fā)送數(shù)據(jù)開始發(fā)送隊列是否為空延時發(fā)送數(shù)據(jù)WrUTXHO(data)否是UTRSTATn寄存器voidUart_SendByte(unsignedchardata){while(!(rUTRSTAT0&0x2));//WaituntilTHRisempty. Delay(1); rUTXH0=data;} 接收數(shù)據(jù)主要是將已到達(dá)的數(shù)據(jù)從接受寄存器中取出接收數(shù)據(jù)開始接收隊列是否為滿延時接收數(shù)據(jù)RdURXHn()否是unsignedcharUart_Getch(unsignedchar*Revdata){ while(!(rUTRSTAT0&0x1));//Receivedataread *Revdata=rURXH0; returnTRUE;}本章提要132546復(fù)位電路鍵盤模塊設(shè)計UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計9PWM直流電機控制接口8I2C總線接口應(yīng)用設(shè)計5.4A/D轉(zhuǎn)換器

A/D轉(zhuǎn)換器有以下類型:逐位比較型、積分型、計數(shù)型、并行比較型、電壓-頻率型,主要應(yīng)根據(jù)使用場合的具體要求,按照轉(zhuǎn)換速度、精度、價格、功能以及接口條件等因素來決定選擇何種類型。常用的有以下兩種:1)雙積分型的A/D轉(zhuǎn)換器

雙積分式也稱二重積分式,其實質(zhì)是測量和比較兩個積分的時間,一個是對模擬輸入電壓積分的時間T0,此時間往往是固定的;另一個是以充電后的電壓為初值,對參考電源VRef反向積分,積分電容被放電至零所需的時間T1。模擬輸入電壓Vi

與參考電壓VRef

之比,等于上述兩個時間之比。由于VRef

、T0

固定,而放電時間T1

可以測出,因而可計算出模擬輸入電壓的大小(VRef

與Vi

符號相反)。

由于T0、VRef

為已知的固定常數(shù),因此反向積分時間T1

與輸入模擬電壓Vi

在T0

時間內(nèi)的平均值成正比。輸入電壓Vi

愈高,VA

愈大,T1

就愈長。在T1

開始時刻,控制邏輯同時打開計數(shù)器的控制門開始計數(shù),直到積分器恢復(fù)到零電平時,計數(shù)停止。則計數(shù)器所計出的數(shù)字即正比于輸入電壓Vi

在T0

時間內(nèi)的平均值,于是完成了一次A/D轉(zhuǎn)換。由于雙積分型A/D轉(zhuǎn)換是測量輸入電壓Vi

在T。時間內(nèi)的平均值,所以對常態(tài)干擾(串模干擾)有很強的抑制作用,尤其對正負(fù)波形對稱的干擾信號,抑制效果更好。2)逐次逼近型的A/D轉(zhuǎn)換器逐次逼近型(也稱逐位比較式)的A/D轉(zhuǎn)換器,應(yīng)用比積分型更為廣泛,其原理框圖如圖所示,主要由逐次逼近寄存器SAR、D/A轉(zhuǎn)換器、比較器以及時序和控制邏輯等部分組成。它的實質(zhì)是逐次把設(shè)定的SAR寄存器中的數(shù)字量經(jīng)D/A轉(zhuǎn)換后得到電壓Vc與待轉(zhuǎn)換模擬電壓V。進行比較。比較時,先從SAR的最高位開始,逐次確定各位的數(shù)碼應(yīng)是“1”還是“0”,其工作過程如下:逐次逼近式的A/D轉(zhuǎn)換器的主要特點是:

轉(zhuǎn)換速度較快,在1—100/μs以內(nèi),分辨率可以達(dá)18位,特別適用于工業(yè)控制系統(tǒng)。轉(zhuǎn)換時間固定,不隨輸入信號的變化而變化。抗干擾能力相對積分型的差。例如,對模擬輸入信號采樣過程中,若在采樣時刻有一個干擾脈沖迭加在模擬信號上,則采樣時,包括干擾信號在內(nèi),都被采樣和轉(zhuǎn)換為數(shù)字量,這就會造成較大的誤差,所以有必要采取適當(dāng)?shù)臑V波措施。2.A/D轉(zhuǎn)換的重要指標(biāo)1)分辨率(Resolution)

分辨率反映A/D轉(zhuǎn)換器對輸入微小變化響應(yīng)的能力,通常用數(shù)字輸出最低位(LSB)所對應(yīng)的模擬輸入的電平值表示。n位A/D能反應(yīng)1/2n滿量程的模擬輸入電平。由于分辨率直接與轉(zhuǎn)換器的位數(shù)有關(guān),所以一般也可簡單地用數(shù)字量的位數(shù)來表示分辨率,即n位二進制數(shù),最低位所具有的權(quán)值,就是它的分辨率。2)精度(Accuracy)

精度有絕對精度(AbsoluteAccuracy)和相對精度(RelativeAccuracy)兩種表示方法。①絕對誤差

在一個轉(zhuǎn)換器中,對應(yīng)于一個數(shù)字量的實際模擬輸入電壓和理想的模擬輸入電壓之差并非是一個常數(shù)。我們把它們之間的差的最大值,定義為“絕對誤差”。通常以數(shù)字量的最小有效位(LSB)的分?jǐn)?shù)值來表示絕對誤差,例如:±1LSB等。絕對誤差包括量化誤差和其它所有誤差。②相對誤差

是指整個轉(zhuǎn)換范圍內(nèi),任一數(shù)字量所對應(yīng)的模擬輸入量的實際值與理論值之差,用模擬電壓滿量程的百分比表示。例如,滿量程為10V,10位A/D芯片,若其絕對精度為±1/2LSB,則其最小有效位的量化單位:9.77mV,其絕對精度為=4.88mV,其相對精度為4.88/104=0.048%。3)轉(zhuǎn)換時間(ConversionTime)

轉(zhuǎn)換時間是指完成一次A/D轉(zhuǎn)換所需的時間,即由發(fā)出啟動轉(zhuǎn)換命令信號到轉(zhuǎn)換結(jié)束信號開始有效的時間間隔。轉(zhuǎn)換時間的倒數(shù)稱為轉(zhuǎn)換速率。例如AD570的轉(zhuǎn)換時間為25us,其轉(zhuǎn)換速率為40KHz。4)電源靈敏度(powersupplysensitivity)

電源靈敏度是指A/D轉(zhuǎn)換芯片的供電電源的電壓發(fā)生變化時,產(chǎn)生的轉(zhuǎn)換誤差。一般用電源電壓變化1%時相當(dāng)?shù)哪M量變化的百分?jǐn)?shù)來表示。5)量程

量程是指所能轉(zhuǎn)換的模擬輸入電壓范圍,分單極性、雙極性兩種類型。例如,單極性量程為0~+5V,0~+10V,0~+20V;雙極性量程為-5~+5V,-10~+10V。6)輸出邏輯電平

多數(shù)A/D轉(zhuǎn)換器的輸出邏輯電平與TTL電平兼容。在考慮數(shù)字量輸出與微處理的數(shù)據(jù)總線接口時,應(yīng)注意是否要三態(tài)邏輯輸出,是否要對數(shù)據(jù)進行鎖存等。7)工作溫度范圍

由于溫度會對比較器、運算放大器、電阻網(wǎng)絡(luò)等產(chǎn)生影響,故只在一定的溫度范圍內(nèi)才能保證額定精度指標(biāo)。一般A/D轉(zhuǎn)換器的工作溫度范圍為(0~70℃),軍用品的工作溫度范圍為(-55~+125℃)。3.A/D轉(zhuǎn)換過程

A/D轉(zhuǎn)換過程分為4個階段:即采樣、保持、量化和編碼。采樣是將一個時間上連續(xù)變化的信號轉(zhuǎn)換成時間上離散的信號,根據(jù)奈奎斯特采樣定理fs≥2fh,考慮到模數(shù)轉(zhuǎn)換器件的非線性失真、量化噪聲積極手機噪聲等因素的影響,采樣頻率一般取2.5~3倍的最高頻率成分。要把一個采樣信號準(zhǔn)確地數(shù)字化,就需要將采樣所得的瞬時模擬信號保持一段時間,這就是保持過程。保持實將時間離散、數(shù)值連續(xù)的信號變成時間連續(xù)、數(shù)值離散信號,雖然邏輯上保持器是一個獨立單元,但是,實際上保持其總是和采樣器集成到一起,兩者合稱采樣保持器。5.4.2S3C440BXA/D轉(zhuǎn)換器介紹

S3C44B0X具有8路模擬信號輸入的10位模/數(shù)轉(zhuǎn)換器(ADC),它是一個逐次逼近型的ADC,內(nèi)部結(jié)構(gòu)中包括模擬輸入多路復(fù)用器、自動調(diào)零比較器、時鐘產(chǎn)生器、10位逐次逼近寄存器(SAR)、輸出寄存器(ADCDAT)。其內(nèi)部結(jié)構(gòu)如圖5-15所示。它的主要特性是:-分辨率:10位;-微分線性度誤差:±1LSB-積分線性度誤差:±2LSB(最大±3LSB)-最大轉(zhuǎn)換速率:100KSPS(SamplePerSecond:采樣次數(shù)/秒)-輸入電壓范圍:0-2.5V-輸入帶寬:0-100Hz(不具備采樣保持(S/H)電路)-低功耗表5-2A/D功能有關(guān)的引腳在電路中,對上述引腳需要按照下圖加上電容。與AD相關(guān)的寄存器主要是如下三個:⑴ADCPSR:采樣比率寄存器。其地址和意義參見下表:表6-13采樣比率寄存器

通過設(shè)置該寄存器,可以設(shè)置采樣率,最后得到的除數(shù)因子=2(寄存器值+1)參考:ADCPSR=20。當(dāng)系統(tǒng)的時鐘頻率微64MHz且ADC時鐘源的預(yù)分頻值為20時,10位數(shù)字量的轉(zhuǎn)換時間如下:64MHz/2*(20+1)/16(10位操作至少要16個周期)=95.2KHz=10.5us⑵ADCCON:采樣控制寄存器。其地址和意義參見下表:ADCCON位描述初始狀態(tài)FLAG[6]轉(zhuǎn)換標(biāo)志位(只讀)0=A/D轉(zhuǎn)換進行中1=轉(zhuǎn)換完畢0SLEEP[5]睡眠模式設(shè)定0=正常模式1=睡眠模式1INPUTSELECT[4:2]通道號000=AIN0001=AIN1010=AIN2011=AIN3100=AIN4101=AIN5110=AIN6111=AIN700READ_START[1]讀操作使能轉(zhuǎn)換0=允許1=禁止00ENABLE_START[0]轉(zhuǎn)換使能位如果READ_START開啟,此位無效0=無操作1=A/D轉(zhuǎn)換開始,開始后自動清零0通過該寄存器設(shè)置A/D轉(zhuǎn)換開始可以參見下例:rADCCON=0x11(通道4開始轉(zhuǎn)換)⑶ADCDAT:轉(zhuǎn)換結(jié)果數(shù)據(jù)寄存器。該寄存器的十位表示轉(zhuǎn)換后的結(jié)果,全為1時為滿量程2.5伏。5.4.3A/D轉(zhuǎn)換器驅(qū)動程序設(shè)計1.宏定義在該驅(qū)動程序中,需要宏定義的主要有寄存器。由于通道選擇是在控制寄存器rADCCON的2~4位,為了便于操作,也可以直接將通道號進行宏定義。#defineADCCON_FLAG 0x40#defineADCCON_SLEEP 0x20//A/D啟動宏定義#defineADCCON_READ_START 0x2#defineADCCON_ENABLE_START 0x1//寄存器宏定義#definerADCCON(*(volatileunsignedchar*)0x01D40000)#definerADCPSR(*(volatileunsignedchar*)0x01D40004)#definerADCDAT(*(volatileunsignedint*)0x01D40008)2.初始化函數(shù)初始化函數(shù)主要對A/D的轉(zhuǎn)化率及A/D的模式進行配置,主要涉及寄存器rADCPSR和控制寄存器rADCCON,voidinit_ADdevice(){//初始化

rADCPSR=20; rADCCON=ADCCON_SLEEP;}3.A/D轉(zhuǎn)換函數(shù)

A/D轉(zhuǎn)換函數(shù)功能主要是對需要轉(zhuǎn)換的通道進行選擇,然后啟動轉(zhuǎn)換,返回轉(zhuǎn)換結(jié)果。主要對控制寄存器進行操作。intGetADresult(unsignedcharchannel){ rADCCON=(channel<<2)|ADCCON_ENABLE_START;//選擇通道號及啟動A/D轉(zhuǎn)換

Delay(10); while(!(rADCCON&ADCCON_FLAG));//轉(zhuǎn)換結(jié)束

returnrADCDAT;//返回采樣值}本章提要132546復(fù)位電路鍵盤模塊設(shè)計

UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計9PWM直流電機控制接口8I2C總線接口應(yīng)用設(shè)計5.5鍵盤模塊設(shè)計鍵盤模塊鍵盤可能用來輸入數(shù)字型數(shù)據(jù)或者選擇控制設(shè)備的操作模式。常用按鍵接口可分為獨立式按鍵接口、行列式按鍵接口和專用芯片式等。具體采用哪種方式,可根據(jù)所設(shè)計系統(tǒng)的實際情況而定。5.5.1常用鍵盤及原理1.獨立式按鍵接口優(yōu)點:電路配置靈活,軟件實現(xiàn)簡單。缺點:每個按鍵需要占用一根口線,若按鍵數(shù)量較多.資源浪費將比較嚴(yán)重應(yīng)用:主要用于按鍵較少或?qū)Σ僮魉俣纫筝^高的場合,軟件實現(xiàn)時,可以采用中斷方式,也可采用查詢方式2.行列式按鍵接口優(yōu)點:相對于獨立接口方式可以節(jié)省很多I/O資源,相對于專用芯片鍵盤可以節(jié)省成本,且更為靈活;缺點:需要用軟件處理消抖、重鍵等應(yīng)用:行列式按鍵接口適應(yīng)于按鍵數(shù)量較多,又不想使用專用鍵盤芯片的場合。鍵盤掃描陣列一個瞬時接觸開關(guān)(按鈕)放置在每一行與線一列的交叉點。矩陣所需的鍵的數(shù)目顯然根據(jù)應(yīng)用程序而不同。每一行由一個輸出端口的一位驅(qū)動,而每一列由一個電阻器上拉且供給輸入端口一位。掃描次數(shù)輸出(行)輸入(列)鍵剛按下時000110第一次掃描011111第二次掃描101111第三次掃描110110鍵9按下時掃描過程3.專用芯片式設(shè)計專用鍵盤處理芯片一般功能比較完善.芯片本身能完成對按鍵的編碼、掃描、消抖和重鍵等問題的處理,甚至還集成了顯示接口功能。專用鍵盤處理芯片的優(yōu)點很明顯,可靠性高,接口簡單,使用方便,適合處理按鍵較多的情況。但在很多應(yīng)用場合,考慮成本因素.可能并不是最佳選擇。5.5.2行列式鍵盤硬件電路設(shè)計S3C44B0X的PortA、PortB、PortC主要用于外圍芯片信號的控制,PortD具有輸入輸出功能,同時功能復(fù)用少,因此在本設(shè)計中采用PortD來設(shè)計一個4×4陣列鍵盤。電路原理圖如圖5-19所示。

KB0~KB3連接到PortD0~PortD3,KB4~KB7連接到PortD4~PortD7。

1.鍵盤初始化函數(shù)鍵盤初始化函數(shù)主要針對鍵盤所用的端口屬性進行初始化。在鍵盤工作之前,根據(jù)行列鍵盤電路設(shè)計原理將PortD口0~3配置為輸出,4~7配置為輸入。如果采用了中斷,還要初始化中斷寄存器。程序清單如下所示。#definerPCOND(*(volatileunsignedint*)0x01D2001C)//端口D控制寄存器宏定義#definerPDATD(*(volatileunsignedchar*)0x01D20020)//端口D數(shù)據(jù)寄存器宏定義#definerPUPD(*(volatileunsignedchar*)0x01D20024)//端口D上拉電阻寄存器宏定義voidKeyInitial()//該函數(shù)對鍵盤使用的端口進行初始化{rPCOND=0x0055//設(shè)置PortD口4~7配置為輸入,0~3配置為輸出。

rPUPD=0x00;//設(shè)置PortD無上拉電阻

rPDATD=0xF0;//設(shè)置PortD口0~3輸出為0。}2.鍵盤掃描程序BYTEGetKey()//鍵盤掃描子程序{ BYTEi,keytemp;keytemp=rPDATD&0xF0;//將列的值存入keytemp高四位

for(i=1;i<=8;i<<=1) { rPDATD=~i; if((rPDATD&0xF0)==keytemp)//比較是否有零輸入

{keytemp=(~keytemp&0xF0)|i;//將行的值存入keytemp低四位

break;} } returnkeytemp;}3.按鍵判斷函數(shù)該函數(shù)主要通過對輸入端口是否有低電平產(chǎn)生來判斷是否有鍵被按下。用于在輪詢方式查詢鍵盤時檢測是否有鍵按下。采用中斷方式時不需要該函數(shù)。BYTEIsKeyPressed()//是否處于按下狀態(tài){ if(rPDATD&0xF0==0xF0)//輸入端口是否出現(xiàn)0 returnFALSE; else returnTRUE;}4.鍵盤去抖函數(shù)由于在鍵盤掃描過程中有可能出現(xiàn)外界因素引起的鍵盤抖動造成按鍵瞬間接觸的情況,如果不進行去抖可能造成按鍵的誤輸入。通常是采用程序延時來消抖unsignedcharKeyValue[4][4]={1,2,3,4,5,6,7,8,9,0,+,-,*,/,=,#};//鍵值映射表BYTEScanKey(){BYTEkey;key=GetScanKey();OSTimeDly(50);//延時50毫秒

if(key!=GetScanKey())//延時50毫秒

return0;//返回錯誤代碼

returnkey=KEYVALUE[(key&0xF0)>>4][key&0x0F];//返回按鍵值}本章提要132546復(fù)位電路鍵盤模塊設(shè)計UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器

觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計9PWM直流電機控制接口8I2C總線接口應(yīng)用設(shè)計5.6觸摸屏5.6.1觸摸屏原理觸摸屏按其工作原理的不同分為表面聲波屏、電容屏、電阻屏和紅外屏幾種。常見的又?jǐn)?shù)電阻觸摸屏。如圖5-21所示,電阻觸摸屏的屏體部分是一塊與顯示器表面非常配合的多層復(fù)合薄膜,由一層玻璃或有機玻璃作為基層,表面涂有一層透明的導(dǎo)電層,上面再蓋有一層外表面硬化處理、光滑防刮的塑料層,它的內(nèi)表面也涂有一層透明導(dǎo)電層,在兩層導(dǎo)電層之間有許多細(xì)小(小于千分之一英寸)的透明隔離點把它們隔開絕緣。觸摸屏結(jié)構(gòu)示意圖觸摸屏分壓原理

如圖所示,當(dāng)手指或筆觸摸屏幕時(圖c),平常相互絕緣的兩層導(dǎo)電層就在觸摸點位置有了一個接觸,因其中一面導(dǎo)電層(頂層)接通X軸方向的5V均勻電壓場(圖a),而Y方向電極對上不加電壓時,在X平行電壓場中,觸點處的電壓值可以在Y+(或Y-)電極上反映出來,使得檢測層(底層)的電壓由零變?yōu)榉橇?,控制器偵測到這個接通后,進行A/D轉(zhuǎn)換,并將得到的電壓值與5V相比即可得觸摸點的X軸坐標(biāo)為(原點在靠近接地點的那端):

Xi=Lx*Vi/V(即分壓原理)同理得出Y軸的坐標(biāo),這就是所有電阻觸摸屏共同的最基本原理。5.6.2電阻觸摸屏的有關(guān)技術(shù)透明的導(dǎo)電涂層材料有兩種:1)ITO,氧化鋼,弱導(dǎo)電體,特性是當(dāng)厚度降到1800埃以下時會突然變得透明,透光度為80%,再薄下去透光率反而下降,到300埃厚度時又上升到80%。

2)鎳金涂層,五線電阻觸摸屏的外層導(dǎo)電層使用的是延展性極好的鎳金涂層材料,外導(dǎo)電層由于頻繁觸摸,使用延展性好的鎳金材料目的是為了延長使用壽命,但是成本較高,鎳金導(dǎo)電層雖然延展性好,但是只能作透明導(dǎo)體,不適合作為電阻觸摸屏的工作面,因為它導(dǎo)電性太好,不宜作精密電阻測量,而且金屬不易做到厚度非常均勻。電阻式觸摸屏分為四線電阻和五線電阻觸摸屏電阻技術(shù)觸摸屏是一種對外界完全隔離的工作環(huán)境,故不怕灰塵、水汽和油污,可以用任何物體來觸摸,比較適合工業(yè)控制領(lǐng)域及辦公室內(nèi)有限人的使用。四線電阻觸摸屏原理測量原理在觸摸點X、Y坐標(biāo)的測量過程中,測量電壓與測量點的等效電路圖所示,圖中P為測量點XVYY5.6.3觸摸屏電路設(shè)計觸摸屏芯片F(xiàn)M(ADS)7843的特點實現(xiàn)觸摸屏的驅(qū)動選擇控制(X、Y通道)對于輸入電壓或附加電壓進行AD轉(zhuǎn)換同步串行接口最大轉(zhuǎn)換速率125KHz可編程控制8位或者12位轉(zhuǎn)換模式工作電壓2.7V-5.0V兩個附加的輸入端口FM7843與ARM的連接表5-6控制字功能描述BITNAME功能描述7S啟動位。一個新的控制字在12位轉(zhuǎn)換時需要15個時鐘周期,在8位轉(zhuǎn)換模式下12個時鐘周期。6-4A2-A0通道選擇位。和ER/DFR位一起設(shè)置,這些位控制多路輸入設(shè)置、開關(guān)和參考輸入。3MODE12/8位轉(zhuǎn)換選擇位。這位控制轉(zhuǎn)換模式選擇:0為12位轉(zhuǎn)換,1為8位轉(zhuǎn)換。2SER/DFR單端/差分參考輸入選擇位。和A2-A0一起配置,該位控制多路輸入設(shè)置、開關(guān)和參考輸入。1-0PD1-PD0省電模式選擇位。參考:采樣x軸坐標(biāo)A2-A0為101,采樣y軸坐標(biāo)A2-A0為001;參考電壓輸入模式為差分模式(值0);允許省電模式。觸摸屏控制命令宏定義#defineFM7843_CTRL_START0x80#defineFM7843_GET_X0x50#defineFM7843_GET_Y0x10#defineFM7843_CTRL_12MODE0x0#defineFM7843_CTRL_8MODE0x8#defineFM7843_CTRL_SER0x4#defineFM7843_CTRL_DFR0x0#defineFM7843_CTRL_DISPWD0x3//Disablepowerdown#defineFM7843_CTRL_ENPWD0x0//enablepowerdown觸摸屏初始化函數(shù)觸摸屏初始化函數(shù)主要對與FM7843項連接的端口屬性進行配置。包括初始化端口GPF5、7、8配置為SIO端口,GPF6配置為輸出屬性,GPG5配置為EXINT5。寄存器宏定義:#definerPCONF(*(volatileunsignedint*)0x01D20034)#definerPDATF(*(volatileunsignedint*)0x01D20038)#definerPCONG(*(volatileunsignedint*)0x01D20040)初始化函數(shù)voidTchScr_Init(){rPCONF=(rPCONF&0x0003FF|0x1B2C00;//設(shè)置端口GPF5、7、8為SIO端口,GPF6為輸出

rPCONG=rPCONG|(3<<10);//設(shè)置GPG5為EXINT5}轉(zhuǎn)換/輸出時序(需要16個時鐘周期)觸摸屏坐標(biāo)獲取函數(shù)觸摸屏坐標(biāo)獲取是根據(jù)觸摸屏被按下產(chǎn)生的中斷或通過輪詢方式檢測導(dǎo)游觸摸動作時從FM7843讀出對應(yīng)坐標(biāo)值。坐標(biāo)讀取unsignedintReadXYPosition(unsignedcharCMD){unsignedinttemp;SendSIOData(CMD);//發(fā)送讀取x電壓值控制字

SendSIOData(0);//等待8個時鐘節(jié)拍,因為完成一轉(zhuǎn)換需要16個時鐘

temp=ReadSIOData();//讀取采樣值高8位

SendSIOData(CMD); temp<<=8; temp|=ReadSIOData();//讀取低8位并與以前高8位組成16位數(shù)據(jù)

temp=(temp>>4);//去掉低4位,保留12位有效數(shù)據(jù)returntemp;}

ADS7843送回控制器的X與Y值僅是對當(dāng)前觸摸點的電壓值的A/D轉(zhuǎn)換值,它不具有使用價值。這個值得大小不但與觸摸屏的分辨率有關(guān),而且也與觸摸屏與LCD貼合的情況有關(guān)。而且,LCD分辨率與觸摸屏的分辨率一般不一樣,坐標(biāo)也不一樣,因此,如果想得到體現(xiàn)LCD坐標(biāo)的觸摸屏位置,還需要在程序中進行轉(zhuǎn)換。假設(shè)LCD分辨率是320X240,坐標(biāo)原點在左上角;觸摸屏分辨率為900X900,坐標(biāo)原點在左上角,則轉(zhuǎn)換公式如下:

xLCD=[320×(x-x2)/(x1-x2)];yLCD=[320×(y-y2)/(y1-y2)];其中,(x,y)為觸點位置,(x1,y1)為觸摸屏最大坐標(biāo)點,,(x2,y2)為觸摸屏原點

如果坐標(biāo)原點不一致,比如LCD坐標(biāo)原點在右下角,而觸摸屏原點在左上角,則可以進行如下轉(zhuǎn)換:

xLCD=320-[320×(x-x2)/(x1-x2)];yLCD=240-[320×(y-y2)/(y1-y2)];

這樣就可以得到LCD和觸摸屏一致的坐標(biāo)。坐標(biāo)值平均處理voidTchScr_GetScrXY(int*x,int*y){//獲得觸摸點坐標(biāo)

unsignedchari; rPDATF&=~FM7843_PIN_CS;//打開FM7843for(i=0;i<4;i++)*x+=ReadXYPosition(FM7843_CMD_X);*x>>=2; //采樣4次取平均值

for(i=0;i<4;i++)*y+=ReadXYPosition(FM7843_CMD_Y);*y>>=2; //采樣4次取平均值

rPDATF|=FM7843_PIN_CS;//關(guān)閉FM7843//對采樣結(jié)果進行轉(zhuǎn)換*x=(*x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax-TchScr_Xmin);*y=(*y-TchScr_Ymin)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin);}3.觸摸動作判斷函數(shù)

除了基本的觸摸動作以外,觸摸屏動作還包括雙擊、移動等動作。觸摸屏的單擊和雙擊動作的區(qū)分是在規(guī)定時間內(nèi)同一范圍坐標(biāo)內(nèi)的觸摸次數(shù);觸摸屏的移動動作的判斷是通過觸摸屏按下的時間和觸摸屏抬起時的不同坐標(biāo)值來實現(xiàn)的。觸摸屏動作判斷流程圖如圖6.18所示。本章提要132546復(fù)位電路鍵盤模塊設(shè)計UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器

觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計

9PWM直流電機控制接口8I2C總線接口應(yīng)用設(shè)計LCD接口設(shè)計LCD顯示模塊液晶顯示是一種被動的顯示,它不能發(fā)光,只能使用周圍環(huán)境的光。它顯示圖案或字符只需很小能量。液晶顯示所用的液晶材料是一種兼有液態(tài)和固體雙重性質(zhì)的有機物,它的棒狀結(jié)構(gòu)在液晶盒內(nèi)一般平行排列,但在電場作用下能改變其排列方向。LCD的背光:EL(場致發(fā)光):2000-3000小時和LED光源:字符模式,50000小時LCD的顯示方式反射型LCD:底偏光片后面加了一塊反射板,它一般在戶外和光線良好的辦公室使用。透射型LCD:底偏光片是透射偏光片,它需要連續(xù)使用背光源,一般在光線差的環(huán)境使用。透反射型LCD:是處于以上兩者之間,底偏光片能部分反光,一般也帶背光源,光線好的時候,可關(guān)掉背光源;光線差時,可點亮背光源使用LCD。常見LCD分類及原理1.TN型液晶顯示原理

TN型的液晶顯示技術(shù)可說是液晶顯示器中最基本的,而之后其它種類的液晶顯示器也可說是以TN型為原點來加以改良。

當(dāng)加入電場的情況時,每個液晶分子的光軸轉(zhuǎn)向與電場方向一致,液晶層因此失去了旋光的能力,結(jié)果來自入射偏光片的偏光,其偏光方向與另一偏光片的偏光方向成垂直的關(guān)系,并無法通過,電極面因此呈現(xiàn)黑暗的狀態(tài)。

其顯像原理是將液晶材料置于兩片貼附光軸垂直偏光板之透明導(dǎo)電玻璃間,液晶分子會依配向膜的細(xì)溝槽方向依序旋轉(zhuǎn)排列,如果電場未形成,光線會順利的從偏光板射入,依液晶分子旋轉(zhuǎn)其行進方向,然后從另一邊射出。

如果在兩片導(dǎo)電玻璃通電之后,兩片玻璃間會造成電場,進而影響其間液晶分子的排列,使其分子棒進行扭轉(zhuǎn),光線便無法穿透,進而遮住光源。這樣所得到光暗對比的現(xiàn)象,叫做扭轉(zhuǎn)式向列場效應(yīng),簡稱TNFE(twisted

nematic

field

effect)。在電子產(chǎn)品中所用的液晶顯示器,幾乎都是用扭轉(zhuǎn)式向列場效應(yīng)原理所制成。對于負(fù)性TN-LCD,當(dāng)未加電壓到電極時,LCD處于“ON”態(tài),光能透過LCD呈白態(tài):當(dāng)在電極上加上電壓LCD處于“0FF”態(tài),液晶分子長軸方向沿電場方向排列,光不能透過LCD,呈黑態(tài)。有選擇地在電極上施加電壓,就可以顯示出不同的圖案。TN液晶顯示器本身只有明暗兩種情形(或稱黑白)。2.STN液晶顯示原理

與TN相類似,不同的是TN扭轉(zhuǎn)式向列場效應(yīng)的液晶分子是將入射光旋轉(zhuǎn)90度,而STN超扭轉(zhuǎn)式向列場效應(yīng)是將入射光旋轉(zhuǎn)180-270度。要在這里說明的是,單純的TN液晶顯示器本身只有明暗兩種情形(或稱黑白),并沒有辦法做到色彩的變化。而STN液晶顯示器牽涉液晶材料的關(guān)系,以及光線的干涉現(xiàn)象,因此顯示的色調(diào)都以淡綠色與橘色為主。但如果在傳統(tǒng)單色STN液晶顯示器加上一彩色濾光片(color

filter),并將單色顯示矩陣之任一像素(pixel)分成三個子像素(sub-pixel),分別通過彩色濾光片顯示紅、綠、藍(lán)三原色,再經(jīng)由三原色比例之調(diào)和,也可以顯示出全彩模式的色彩。另外,TN型的液晶顯示器如果顯示屏幕做的越大,其屏幕對比度就會顯得較差,由STN的改良技術(shù),可以彌補對比度不足的情況。3.TFT液晶顯示原理

TFT型的液晶顯示器較為復(fù)雜,主要的構(gòu)成包括了,螢光管、導(dǎo)光板、偏光板、濾光板、玻璃基板、配向膜、液晶材料、薄模式晶體管等等。首先液晶顯示器必須先利用背光源,也就是螢光燈管投射出光源,這些光源會先經(jīng)過一個偏光板然后再經(jīng)過液晶,這時液晶分子的排列方式進而改變穿透液晶的光線角度。然后這些光線接下來還必須經(jīng)過前方的彩色的濾光膜與另一塊偏光板。因此我們只要改變刺激液晶的電壓值就可以控制最后出現(xiàn)的光線強度與色彩,并進而能在液晶面板上變化出有不同深淺的顏色組合了。三種液晶顯示器的比較1.TN型液晶顯示器因技術(shù)層次較低,價格低廉,應(yīng)用范圍多在3英寸以下的小尺寸產(chǎn)品,而且僅能呈現(xiàn)出黑白單色及做一些簡單文字、數(shù)字的顯示,主要應(yīng)用于電子表、計算器、簡單的掌上游戲機等消費性電子產(chǎn)品。

2.STN型液晶顯示器較TFT型工藝簡單,成品率較高、價格相對便宜,面向?qū)Ρ葟娏遗c畫面轉(zhuǎn)換反應(yīng)時間較快的商品,因此多應(yīng)用于信息處理設(shè)備。如果在液晶面板前加一片彩色濾光片,則可顯示多種色彩,甚全可達(dá)全彩化程度。此種產(chǎn)品多使用于文字、數(shù)字及繪圖功能的顯示,例如低檔的筆記本電腦、掌上電腦、股票機和個人數(shù)字助理(PDA)等便攜式產(chǎn)品。

3.TFT液晶顯示器因為顯示反應(yīng)速度更快,適用于動畫及顯像顯示,故廣泛應(yīng)用于數(shù)碼相機、液晶投影儀、筆記本電腦、桌上型液晶顯示器。由于其在色彩品質(zhì)及反應(yīng)速度方面較STN型產(chǎn)品為佳,因此也是目前市場上的主流產(chǎn)品。反射型LCD的結(jié)構(gòu)LCD通常由兩種方式,一種是帶有驅(qū)動芯片的LCD模塊,基本上屬于半成品。如果有需要,也可以直接使用芯片上的內(nèi)置LCD控制器來構(gòu)造顯示模塊,它可以支持彩色/灰度/單色三種模式,灰度模式下可支持4級灰度和16級灰度,彩色模式下最多支持256色,LCD的實際尺寸可支持到320X240。LCD的驅(qū)動方式嵌入式處理器LCD模塊(自帶控制器)數(shù)據(jù)總線寄存器選擇使能信號有LCD控制器的嵌入式處理器LCDLCD控制信號線嵌入式處理器與LCD的連接

從系統(tǒng)結(jié)構(gòu)上來講,由于顯示器模塊中已經(jīng)有顯示存儲器。顯存中的每一個單元對應(yīng)LCD上的一個點,只要顯存中的內(nèi)容改變,顯示結(jié)果便進行刷新。于是便存在兩種刷新:1.直接根據(jù)系統(tǒng)要求對顯存進行修改,一種是只需修改相應(yīng)的局部就可以,不需要判斷覆蓋等;另一種就是有覆蓋問題,計算起來比較復(fù)雜,而且每做一點小的屏幕改變就進行刷新,將增加系統(tǒng)負(fù)擔(dān)。2.專門開辟顯示內(nèi)存,在需要刷新時候由程序進行顯示更新。這樣,不但可以減輕總線負(fù)荷,而且也比較合理,在有需要的時候進行統(tǒng)一的顯示更新,界面也可以比較美觀,不致由于無法預(yù)料的刷新動作導(dǎo)致顯示界面閃爍。LCD的顯示控制前后臺雙重顯示緩存的顯示模塊結(jié)構(gòu)

ER/WRSDB7–DB0LCDcontrollercommunicationsbusmicrocontroller8voidWriteChar(charc){RS=1;/*indicatedatabeingsent*/DATA_BUS=c;/*senddatatoLCD*/EnableLCD(45);/*toggletheLCDwithappropriatedelay*/}本章提要132546復(fù)位電路鍵盤模塊設(shè)計UART異步串口模塊設(shè)計A/D轉(zhuǎn)換器

觸摸屏模塊設(shè)計

電源模塊設(shè)計

7LCD模塊設(shè)計9PWM直流電機控制接口

8I2C總線接口應(yīng)用設(shè)計

I2C總線接口應(yīng)用設(shè)計I2C(Inter-IC)Philips公司20多年前開發(fā)的兩線制串行總線外部設(shè)備IC芯片可以使用簡單的通信硬件進行相互通信數(shù)據(jù)傳送率可達(dá)100kbits/s,且提供7位尋址位在快速模式下,可達(dá)3.4Mbits/s以及10位尋址許多IC芯片支持該總線接口:如,EPROMS,Flash,一些RAM,實時時鐘芯片,看門狗,微控制器5.8.1I2C總線及接口簡介

I2C(Inter-IntegratedCircuit芯片間電路接口)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備1.I2C總線的特征

I2C總線主要有以下幾個特征:⑴只要求兩條總線線路一條串行數(shù)據(jù)線SDA,一條串行時鐘線SCL;⑵每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機從機關(guān)系軟件設(shè)定地址,主機可以作為主機發(fā)送器或主機接收器;⑶它是一個真正的多主機總線,如果兩個或更多主機同時初始化數(shù)據(jù)傳輸時,可以通過沖突檢測和仲裁防止數(shù)據(jù)被破壞;⑷串行的8位雙向數(shù)據(jù)傳輸位速率在標(biāo)準(zhǔn)模式下可達(dá)100kb/s,快速模式下可達(dá)400kb/s,高速模式下可達(dá)3.4Mb/s;⑸片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整;⑹連接到相同總線的IC數(shù)量只受到總線的最大電容400pF限制。

2.I2C總線硬件結(jié)構(gòu)及數(shù)據(jù)傳輸?shù)湫偷腎2C總線結(jié)構(gòu)如圖5-37。SCLSDA微控制器(主器件)EEPROM(從器件)溫度傳感器(從器件)LCD控制器(從器件)<400pFAddr=0x01Addr=0x02Addr=0x03圖5-37I2C總線結(jié)構(gòu)傳輸數(shù)據(jù)的過程如下a.主器件要發(fā)送信息到從器件主器件尋址從器件主器件發(fā)送器發(fā)送數(shù)據(jù)到從器件接收器主器件終止傳輸b.如果主器件想從器件接收信息主器件尋址從器件主器件接收器從器件發(fā)送器接收數(shù)據(jù)主器件終止傳輸當(dāng)在總線上傳輸數(shù)據(jù)時,每個主器件產(chǎn)生自己的時鐘信號。3.I2C總線通信協(xié)議SDASCLSDASCLSDASCLSDASCL起始條件發(fā)送0發(fā)送1終止條件圖5-38總線開始/停止DCSTARTA6A5A0R/wACKD8D7D0ACKSTOP來自從設(shè)備來自接收設(shè)備典型的讀/寫周期P8位DATAAR/W7位地址域S讀寫控制位起始位應(yīng)答位停止位對于7位地址的數(shù)據(jù)傳輸合法的數(shù)據(jù)傳輸格式如圖5-39。4.I2C總線的分類除了標(biāo)準(zhǔn)模式外,為了符合更高速度的要求以及制造更多可使用的從機地址給數(shù)量不斷增長的新器件,I2C提供了以下的擴展:快速模式位速率高達(dá)400kb/s高速模式Hs模式位速率高達(dá)3.4Mb/s10位尋址允許使用高達(dá)1024個額外的從機地址5.I2C總線的應(yīng)用場合

I2C總線是各種總線中使用信號線最少,并具有自動尋址,多主機時鐘同步和仲裁等功能很強的總線,主要用在EEPROM、Flash、一些RAM、實時時鐘芯片、看門狗、微控制器等應(yīng)用中。5.8.2S3C44B0X的I2C接口

S3C44B0X帶有一個I2C總線接口,通過該接口可以擴展EEPROM、時鐘芯片、看門狗芯片等。可以節(jié)約I/O口資源。該端口支持的操組模式如下。主設(shè)備發(fā)送模式主設(shè)備接收模式從設(shè)備發(fā)送模式從設(shè)備接收模式IIC-BusBlockDiagram1.讀寫操作在任何I2C發(fā)送/接收操作中,遵循以下步驟:1)如果需要,在自身的從地址寄存器IICADD中寫入地址;2)設(shè)置IICCON寄存器:a)使能中斷;b)定義SCL周期;3)設(shè)置IICSTAT來使能串行輸出2.I2C總線接口專用寄存器介紹

S3C44B0XI2C總線接口寄存器主要包括控制寄存器(IICCON)、狀態(tài)寄存器(IICSTAT)、總線地址寄存器和總線發(fā)送/接收數(shù)據(jù)移位寄存器(IICDS)。(1)多主I2C總線控制寄存器該控制寄存器主要對應(yīng)答使能、輸出時鐘源選擇、中斷使能、中斷標(biāo)志位及清除、發(fā)送時鐘分頻等功能設(shè)置。(2)I2C狀態(tài)寄存器狀態(tài)寄存器主要包括模式選擇、忙信號狀態(tài)/起始停止條件、串行輸出使能、仲裁狀態(tài)位、從地址狀態(tài)標(biāo)志、0地址狀態(tài)標(biāo)志位、應(yīng)答位狀態(tài)寄存器位的設(shè)置與讀取。(3)I2C總線地址寄存器從設(shè)備地址設(shè)置,當(dāng)該接口設(shè)置為從設(shè)備讀寫時,該寄存器用作從地址設(shè)置。當(dāng)主設(shè)備發(fā)送數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論