![便攜式指紋考勤系統(tǒng)—觸摸屏硬件開發(fā)與應(yīng)用_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/26/ea619339-f6c4-4960-9f0c-fb666e0f472c/ea619339-f6c4-4960-9f0c-fb666e0f472c1.gif)
![便攜式指紋考勤系統(tǒng)—觸摸屏硬件開發(fā)與應(yīng)用_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/26/ea619339-f6c4-4960-9f0c-fb666e0f472c/ea619339-f6c4-4960-9f0c-fb666e0f472c2.gif)
![便攜式指紋考勤系統(tǒng)—觸摸屏硬件開發(fā)與應(yīng)用_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/26/ea619339-f6c4-4960-9f0c-fb666e0f472c/ea619339-f6c4-4960-9f0c-fb666e0f472c3.gif)
![便攜式指紋考勤系統(tǒng)—觸摸屏硬件開發(fā)與應(yīng)用_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/26/ea619339-f6c4-4960-9f0c-fb666e0f472c/ea619339-f6c4-4960-9f0c-fb666e0f472c4.gif)
![便攜式指紋考勤系統(tǒng)—觸摸屏硬件開發(fā)與應(yīng)用_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/26/ea619339-f6c4-4960-9f0c-fb666e0f472c/ea619339-f6c4-4960-9f0c-fb666e0f472c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、石家莊郵電職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)便攜式指紋考勤系統(tǒng)觸摸屏硬件開發(fā)與應(yīng)用 2014 屆 電信工程 系專業(yè) 通信技術(shù)(光纖通信方向) 班級(jí) 電1103-5班 學(xué)號(hào) 31107004102 姓名 多寶軍 指導(dǎo)教師 孫群中 張 燦 完成日期 2013年12月20日 石家莊郵電職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)任務(wù)書姓 名多寶軍學(xué) 號(hào)31107004102專 業(yè)通信技術(shù)(光纖通信方向)班 級(jí)電1103-5班畢業(yè)設(shè)計(jì)題目便攜式指紋考勤系統(tǒng)觸摸屏硬件開發(fā)與應(yīng)用指導(dǎo)教師姓名孫群中張 燦職 稱講 師工程師工作單位石家莊郵電職業(yè)技術(shù)學(xué)院石家莊惠遠(yuǎn)郵電設(shè)計(jì)咨詢有限公司一、畢業(yè)設(shè)計(jì)內(nèi)容利用觸摸屏的設(shè)置進(jìn)行觸摸屏的顯示和觸摸應(yīng)用。二、
2、基本要求(1)運(yùn)用所學(xué)專業(yè)基礎(chǔ)理論和知識(shí),理論聯(lián)系實(shí)際,分析和解決研究問題。(2)論證邏輯嚴(yán)密,概念準(zhǔn)確,數(shù)據(jù)可靠,主題鮮明,文句通順,結(jié)論正確,符合寫作規(guī)范。(3)論文在規(guī)定時(shí)間內(nèi)完成任務(wù)。三、重點(diǎn)研究問題觸摸屏設(shè)置代碼四、主要設(shè)計(jì)步驟(1)觸摸屏的初始化(2)觸摸屏驅(qū)動(dòng)設(shè)置(3)觸摸屏的圖片讀取主要參考文獻(xiàn)、資料:1 任愛鋒,基于FPGA的嵌入式系統(tǒng)設(shè)計(jì),西安:西安電子工業(yè)大學(xué)出版社,20042 柴曉光,民用指紋識(shí)別技術(shù),北京:人民郵電出版社,20043 隋宗強(qiáng),EMS液晶顯示觸摸屏設(shè)計(jì),青島:山東省青島大學(xué)出版社,20124 楊玉琴,觸摸屏技術(shù)研究及市場進(jìn)展,河北省全國磁性記錄材料信息站
3、,2012(1)計(jì)劃進(jìn)度:2013年10月8日-2013年10月22日,確定畢業(yè)設(shè)計(jì)題目、下達(dá)畢業(yè)設(shè)計(jì)任務(wù)書2013年10月23日-2013年11月24日,完成畢業(yè)設(shè)計(jì)論文初稿2013年11月25日-2013年12月3日,進(jìn)行畢業(yè)論文中期檢查2013年12月4日-2013年12月20日,修改畢業(yè)論文初稿,提交最終稿2013年12月21日-2013年12月25日,準(zhǔn)備畢業(yè)答辯指導(dǎo)教師簽字: 年 月 日石家莊郵電職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)評(píng)定書姓 名多寶軍學(xué) 號(hào)31107004102專 業(yè)通信技術(shù)(光纖通信方向)班 級(jí)電1103-5班畢業(yè)設(shè)計(jì)題目便攜式指紋考勤系統(tǒng) 觸摸屏硬件開發(fā)與應(yīng)用指導(dǎo)教師評(píng)語:指導(dǎo)
4、教師建議成績(60)指導(dǎo)教師簽字: 年 月 日答辯小組建議成績(40)組長簽字: 年 月 日答辯委員會(huì)最后審定成績主任簽字: 年 月 日備注摘 要通過完成創(chuàng)新實(shí)踐項(xiàng)目便攜式指紋識(shí)別考勤儀,主要介紹了觸摸屏的觸摸屏硬件開發(fā)與應(yīng)用。觸摸屏作為一種新穎輸入技術(shù),具有人機(jī)交互性佳,操作方便,使用靈活,效率高及輸入速度快等特點(diǎn)。本文以考勤儀觸摸屏的設(shè)置流程為基本,介紹了觸摸屏的基本原理和硬件初始化、程序驅(qū)動(dòng)、顯示功能驅(qū)動(dòng)、觸摸功能驅(qū)動(dòng)、觸摸屏坐標(biāo)校正、圖片與文字顯示、圖片轉(zhuǎn)換、圖片顯示等。包含各個(gè)部分的介紹及原理、部分應(yīng)用函數(shù)及圖片格式軟件Image2Lcdv 2.8的應(yīng)用。目 錄1 緒論12 觸摸屏簡
5、介12.1 觸摸屏的主要類型12.2 電阻觸摸屏原理23 觸摸屏初始化33.1 GPIO33.1.1 GPIO簡介33.1.2 GPIO設(shè)置的初始化43.2 FSMC53.2.1 FMSC簡介53.2.2 FMSC初始化配置53.3 SPI63.3.1 SPI簡介63.3.2 SPI初始化73.4 RCC時(shí)鐘83.4.1 系統(tǒng)時(shí)鐘簡介83.4.2 RCC初始化94 程序驅(qū)動(dòng)104.1 顯示功能驅(qū)動(dòng)104.2 觸摸功能驅(qū)動(dòng)105 觸摸屏坐標(biāo)校正126 圖片與文字顯示146.1 圖片轉(zhuǎn)換146.2 圖片顯示(利用驅(qū)動(dòng)函數(shù))167 總結(jié)16參考文獻(xiàn)171 緒論隨著社會(huì)信息化的快速發(fā)展,觸摸屏(Tou
6、ch Screen)的應(yīng)用日趨普及。到目前為止,在我國觸摸屏產(chǎn)品已逐漸形成了產(chǎn)業(yè)。觸摸屏輸入是一種新穎輸入技術(shù),它靠觸摸顯示器的屏幕來輸入數(shù)據(jù)的。操作方式簡單,使用者無需再通過鼠標(biāo)和鍵盤,僅用手指觸摸屏幕上的圖形、表格或提示標(biāo)志,便可從屏幕上得到其所需的各種信息。因此,觸摸屏的功能的強(qiáng)大與否將會(huì)直接影響使用者的操作意愿。觸摸屏輸入完全摒棄了鍵盤的繁瑣輸入,使得人機(jī)交互只需手指輕輕一觸即可。我們可用觸摸屏輸入來代替諸如鍵盤、光筆、操縱桿、滾球、鼠標(biāo)及數(shù)字轉(zhuǎn)換器等數(shù)據(jù)輸入設(shè)備,或取代分立開關(guān)與薄膜開關(guān)之類的面板操作裝置。它的優(yōu)點(diǎn)在于操作簡更直觀、圖像清晰、堅(jiān)固耐用及節(jié)省空間。并且,它適用范圍廣泛,
7、可配用于一切電子顯示器,也可與顯示器制成一體,具有人機(jī)交互性佳,操作方便,使用靈活,效率高及輸入速度快等特點(diǎn)。因此,觸摸屏輸入裝置將會(huì)成為未來各種電子信息產(chǎn)品的主流技術(shù)之一。觸摸屏輸入以其人機(jī)交互簡便性,已廣泛應(yīng)用于工業(yè)過程控制、公共信息咨詢(如銀行、電信局、稅務(wù)局、郵政、電力、公用電話機(jī)與公共問詢系統(tǒng))、金融證券交易市場、商業(yè)自動(dòng)化、翻譯機(jī)、辦公室自動(dòng)化(OA)、家用電器及軍事指揮控制系統(tǒng)等眾多領(lǐng)域。在消費(fèi)領(lǐng)域內(nèi),觸摸屏輸入日趨增多地應(yīng)用于家用電器、多媒體教學(xué)、銷售終端機(jī)(POS)、房地產(chǎn)預(yù)售、餐館預(yù)約、游戲機(jī)、飛機(jī)與車船預(yù)訂和城市導(dǎo)游機(jī)等,可以說觸摸屏的應(yīng)用真是無處不在。它能有如此廣泛應(yīng)用
8、的最重要的因素就是使用方便和經(jīng)久耐用。在商業(yè)應(yīng)用中,金融業(yè)務(wù)部門已普遍使用此種觸摸屏輸入,如醫(yī)療器械、銀行自動(dòng)出納機(jī)。高檔的先進(jìn)電子測量儀器儀表、醫(yī)療信息管理系統(tǒng)及辦公室自動(dòng)化系統(tǒng)亦使用觸摸屏輸入。2 觸摸屏簡介2.1 觸摸屏的主要類型從技術(shù)原理來區(qū)別觸摸屏,可分為五個(gè)基本種類:矢量壓力傳感技術(shù)觸摸屏、電阻技術(shù)觸摸屏、電容技術(shù)觸摸屏、紅外線技術(shù)觸摸屏、表面聲波技術(shù)觸摸屏。其中矢量壓力傳感技術(shù)觸摸屏已退出歷史舞臺(tái);紅外線技術(shù)觸摸屏價(jià)格低廉,但其外框易碎,容易產(chǎn)生光干擾,曲面情況下失真;電容技術(shù)觸摸屏設(shè)計(jì)構(gòu)思合理,但其圖像失真問題很難得到根本解決;電阻技術(shù)觸摸屏的定位準(zhǔn)確,但其價(jià)格頗高,且怕刮易損
9、;表面聲波觸摸屏解決了以往觸摸屏的各種缺陷,清晰不容易被損壞,適于各種場合,缺點(diǎn)是屏幕表面如果有水滴和塵土?xí)褂|摸屏變的遲鈍,甚至不工作。按照觸摸屏的工作原理和傳輸信息的介質(zhì),我們把觸摸屏分為四種,它們分別為電阻式、電容感應(yīng)式、紅外線式以及表面聲波式。每一類觸摸屏都有其各自的優(yōu)缺點(diǎn),要了解哪種觸摸屏適用于哪種場合,關(guān)鍵就在于要懂得每一類觸摸屏技術(shù)的工作原理和特點(diǎn)。因?yàn)楸卷?xiàng)目使用的是電阻屏,所以我們以下著重介紹電阻屏。2.2 電阻觸摸屏原理為了操作上的方便,人們用觸摸屏來代替鼠標(biāo)或鍵盤。工作時(shí),我們必須首先用手指或其它物體觸摸安裝在顯示器前端的觸摸屏,然后系統(tǒng)根據(jù)手指觸摸的圖標(biāo)或菜單位置來定位選
10、擇信息輸入。觸摸屏由觸摸檢測部件和觸摸屏控制器組成;觸摸檢測部件安裝在顯示器屏幕前面,用于檢測用戶觸摸位置,接受后送觸摸屏控制器;而觸摸屏控制器的主要作用是從觸摸點(diǎn)檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給CPU,它同時(shí)能接收CPU發(fā)來的命令并加以執(zhí)行。電阻觸摸屏利用壓力感應(yīng)進(jìn)行控制。電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏,這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,表面涂有一層透明氧化金屬(透明的導(dǎo)電電阻)導(dǎo)電層,上面再蓋有一層外表面硬化處理、光滑防擦的塑料層、它的內(nèi)表面也涂有一層涂層、在他們之間有許多細(xì)小的(小于1/1000英寸)的透明隔離點(diǎn)把兩
11、層導(dǎo)電層隔開絕緣。當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在觸摸點(diǎn)位置就有了接觸,電阻發(fā)生變化,在X和Y兩個(gè)方向上產(chǎn)生信號(hào),然后送觸摸屏控制器??刂破鱾蓽y到這一接觸并計(jì)算出(X,Y)的位置,再根據(jù)模擬鼠標(biāo)的方式運(yùn)作。其實(shí)簡單的說,電阻屏分兩層,中間以隔離物進(jìn)行分離。當(dāng)兩層互相碰撞,電流便會(huì)產(chǎn)生影響,芯片因以計(jì)算力量與電流之間的數(shù)據(jù),評(píng)定屏幕那一個(gè)位置受壓,作出反應(yīng)。由于電阻式屏幕需要上下兩層碰撞后才能作出反應(yīng)。因此,當(dāng)兩點(diǎn)同時(shí)受壓,屏幕的壓力變得不平衡,導(dǎo)致觸控出現(xiàn)誤差。所以這樣的原理導(dǎo)致了電阻屏很難實(shí)現(xiàn)多點(diǎn)觸控,即使是通過技術(shù)手段實(shí)現(xiàn)了多點(diǎn)觸控靈敏度方面也不是很容易調(diào)整,經(jīng)常會(huì)出現(xiàn)A點(diǎn)靈敏,B點(diǎn)遲鈍的現(xiàn)
12、象常會(huì)發(fā)生。圖2-1 電阻屏的工作原理圖3 觸摸屏初始化對(duì)觸摸屏進(jìn)行初始化,主要進(jìn)行GPIO、FSMC、SPI與系統(tǒng)時(shí)鐘RCC的初始化。在 main函數(shù)中調(diào)用的 LCD_Init()函數(shù),它對(duì)液晶控制器ILI9341用到的GPIO、FSMC接口進(jìn)行了初始化,并且向該控制器寫入了命令參數(shù),配置好了CD液晶屏的基本功能。其函數(shù)定義位于 lcd_botton.c文件,如圖2-2所示。 圖3-1 調(diào)用LCD_Init()函數(shù)3.1 GPIO3.1.1 GPIO簡介GPIO,英文全稱為General-Purpose IO ports,也就是通用IO口。嵌入式系統(tǒng)中常常有數(shù)量眾多,但是結(jié)構(gòu)卻比較簡單的外部
13、設(shè)備/電路,對(duì)這些設(shè)備/電路有的需要CPU為之提供控制手段,有的則需要被CPU用作輸入信號(hào)。而且,許多這樣的設(shè)備/電路只要求一位,即只要有開/關(guān)兩種狀態(tài)就夠了,比如燈亮與滅。對(duì)這些設(shè)備/電路的控制,使用傳統(tǒng)的串行口或并行口都不合適。所以在微控制器芯片上一般都會(huì)提供一個(gè)“通用可編程IO接口”,即GPIO。接口至少有兩個(gè)寄存器,即“通用IO控制寄存器”與“通用IO數(shù)據(jù)寄存器”。數(shù)據(jù)寄存器的各位都直接引到芯片外部,而對(duì)這種寄存器中每一位的作用,即每一位的信號(hào)流通方向,則可以通過控制寄存器中對(duì)應(yīng)位獨(dú)立的加以設(shè)置。這樣,有無GPIO接口也就成為微控制器區(qū)別于微處理器的一個(gè)特征。GPIO是STM32最常用
14、的設(shè)備之一。STM32可以提供最多達(dá)80個(gè)雙向IO口(視型號(hào)而定),他們分別分布在A-E五個(gè)端口中。每個(gè)端口有16個(gè)IO,每個(gè)IO口都可以承受最大為5V壓降。通過GPIO的配置寄存器,我們可以把GPIO口配置成我們想要的工作模式,一共有如下8種模式:(1)GPIO_Mode_AIN 模擬輸入(2)GPIO_Mode_IN_FLOATING 浮空輸入(3)GPIO_Mode_IPD 下拉輸入(4)GPIO_Mode_IPU 上拉輸入(5)GPIO_Mode_Out_OD 開漏輸出(6)GPIO_Mode_Out_PP 推挽輸出(7)GPIO_Mode_AF_OD 復(fù)用開漏輸出(8)GPIO_Mo
15、de_AF_PP 復(fù)用推挽輸出3.1.2 GPIO設(shè)置的初始化在STM32F10X開發(fā)庫V3.5.0版本中設(shè)置GPIO時(shí),首先將stm32f10x_gpio.c加入到工程中,同時(shí)在stm32f10x_conf.h中刪除相應(yīng)的注釋。使能時(shí)鐘,GPIO在APB2橋段上,所以通過函數(shù)RCC_APB2PeriphClockCmd()進(jìn)行使能。例如:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);使能GPIOA時(shí)鐘對(duì)時(shí)鐘未使能的GPIO進(jìn)行配置是無效的。時(shí)鐘使能后,通過函數(shù)GPIO_Init()進(jìn)行初始化,首先函數(shù)需要設(shè)置參數(shù)缺省值,需要進(jìn)行設(shè)置。
16、在stm32f10x_gpio.h中可以找到這樣的結(jié)構(gòu)體:Typedef structUint16_t GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;GPIO_IintTypeDef;函數(shù)GPIO_Init()再根據(jù)用戶所設(shè)置的參數(shù)進(jìn)行寄存器初始化。所以在調(diào)用GPIO_Init()之前,先定義一個(gè)GPIO_InitTypeDef結(jié)構(gòu)的變量填寫參數(shù)。將GPIO進(jìn)行初始化:GPIO_InitTypeDef GPIO_InitStructure;定義一個(gè)GPIO_InitTypeDef結(jié)構(gòu)體變量 GPIO_InitS
17、tructure.GPIO_Pin = GPIO_Pin_13; /背光控制 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /通用推挽輸出模式GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /輸出模式最大速度50MHzGPIO_Init(GPIOD, &GPIO_InitStructure); /最后調(diào)用GPIO_Init()進(jìn)行初始化GPIO_SetBits(GPIOD, GPIO_Pin_13); /打開背光GPIO_InitStructure.GPIO_Pin = GPIO_P
18、in_1; /TFT 復(fù)位腳GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /通用推挽輸出模式GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/輸出模式最大速度50MHzGPIO_Init(GPIOE, &GPIO_InitStructure); 3.2 FSMC3.2.1 FMSC簡介FSMC(flexible static memory controller),譯為靜態(tài)存儲(chǔ)控制器??捎糜赟TM32芯片控制 NOR FLASH、PSRAM、和NAND FLASH存儲(chǔ)芯片。3.2.2 F
19、MSC初始化配置我們用 LCD_Init()函數(shù)調(diào)用 LCD_FSMC_Config()設(shè)置FSMC的模式,我們的目的是使用它的 NOR FLASH模式模擬出 8080接口,在 LCD接口中我們使用的是FSMC地址線 A16作為8080的D/CX命令選擇信號(hào)的。LCD_FSMC_Config()具體代碼如下: 圖3-2 LCD_FSMC_Config()具體代碼3.3 SPI3.3.1 SPI簡介SPI(Serial Peripheral Interface-串行外設(shè)接口)總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。SPI有三個(gè)寄存器分別為:控制寄
20、存器SPCR,狀態(tài)寄存器SPSR,數(shù)據(jù)寄存器SPDR。3.3.2 SPI初始化 串行外設(shè)接口(SPI)。初始化步驟:(1)連接SPI外設(shè)時(shí)鐘。/* SPI1 時(shí)鐘使能 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE); /* SPI1 SCK(PA5)、MISO(PA6)、MOSI(PA7) 設(shè)置 */(2)連接被復(fù)用的GPIO的外設(shè)時(shí)鐘。GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GP
21、IO_Speed_50MHz;/口線速度50MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /復(fù)用模式GPIO_Init(GPIOA, &GPIO_InitStructure);/* SPI1 觸摸芯片的片選控制設(shè)置 PB7 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/口線速度50MHz (3)設(shè)置被復(fù)用的GPIO為推挽輸出,并設(shè)置時(shí)鐘。GPIO_InitStructure.GPIO_Mode
22、 = GPIO_Mode_Out_PP;/推挽輸出模式GPIO_Init(GPIOB, &GPIO_InitStructure);(4)通過配置SPIx->CR1來設(shè)置SPI 的工作模式。最后使能SPI。/* SPI1總線 配置 */ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; /全雙工 SPI_InitStructure.SPI_Mode = SPI_Mode_Master; /主模式SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; /8位
23、SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; /時(shí)鐘極性/空閑狀態(tài)時(shí),SCK保持低電平SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; /時(shí)鐘相位 /數(shù)據(jù)采樣從第一個(gè)時(shí)鐘邊沿開始SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; /軟件產(chǎn)生NSSSPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64; /波特率控制 SYSCLK/64SPI_InitStructure.SPI_FirstBit = SPI_
24、FirstBit_MSB; /數(shù)據(jù)高位在前SPI_InitStructure.SPI_CRCPolynomial = 7; /CRC多項(xiàng)式寄存器初始值為7 SPI_Init(SPI1, &SPI_InitStructure); /* SPI1 使能 */ SPI_Cmd(SPI1,ENABLE); (5)收發(fā)數(shù)據(jù)。收發(fā)數(shù)據(jù)可以使用同一個(gè)函數(shù),因?yàn)镾PI是同步輸入輸出的,在發(fā)送數(shù)據(jù)的時(shí)候已經(jīng)在接受數(shù)據(jù)。unsigned char SPI_WriteByte(unsigned char data) unsigned char Data = 0; /等待發(fā)送緩沖區(qū)空while(SPI_I2S
25、_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)=RESET); / 發(fā)送一個(gè)字節(jié) SPI_I2S_SendData(SPI1,data); /等待是否接收到一個(gè)字節(jié) while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)=RESET); / 獲得該字節(jié)Data = SPI_I2S_ReceiveData(SPI1); / 返回收到的字節(jié) return Data; 3.4 RCC時(shí)鐘3.4.1 系統(tǒng)時(shí)鐘簡介RCC系統(tǒng)時(shí)鐘控制器在STM32中,有五個(gè)時(shí)鐘源,為HSI、HSE、LSI、LSE、PLL。其中:HSI是高速內(nèi)部時(shí)
26、鐘,RC振蕩器,頻率為8MHz。HSE是高速外部時(shí)鐘,可接石英/陶瓷諧振器,或者接外部時(shí)鐘源,頻率范圍為4MHz16MHz。LSI是低速內(nèi)部時(shí)鐘,RC振蕩器,頻率為40kHz。LSE是低速外部時(shí)鐘,接頻率為32.768kHz的石英晶體。PLL為鎖相環(huán)倍頻輸出,其時(shí)鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為216倍,但是其輸出頻率最大不得超過72MHz。在這里,我們選擇HSE(高速外部時(shí)鐘)8MHz經(jīng)過PLL 9倍倍頻得到72MHz的SYSCLK系統(tǒng)時(shí)鐘)。(SYSCLK = PLLCLK = HSE×9)3.4.2 RCC初始化程序開發(fā)使用的開發(fā)庫為STM32F1
27、0X開發(fā)庫v3.5.0,大大簡化了時(shí)鐘編程代碼,在程序中設(shè)置時(shí)鐘只需兩步:(1)system_stm32f10x.c 中 #define SYSCLK_FREQ_72MHz 72000000 ,打開工程里的system_stm32f10x.c文件。圖3-3 打開system_stm32f10x.c文件在文件開頭找到宏定義,將#define SYSCLK_FREQ_72MHz 72000000前面的注釋符刪除。其代碼為:Define SYSCLK_FREQ_72MHz 72000000(2)調(diào)用SystemInit()。ST 官方推薦的外接晶振是 8M,所以庫函數(shù)的設(shè)置都是假
28、定硬件已經(jīng)接了 8M 晶振來運(yùn)算的。以上東西就是默認(rèn)晶振 8M 的時(shí)候,推薦的 CPU 頻率選擇。在這里選擇了:#define SYSCLK_FREQ_72MHz 72000000,也就是103系列能跑到的最大值72M。如圖3-4。圖3-4 選擇最大晶振這就是定義 72M 的時(shí)候,設(shè)置時(shí)鐘的函數(shù)。這個(gè)函數(shù)被 SetSysClock ()函數(shù)調(diào)用,而SetSysClock ()函數(shù)則是被 SystemInit()函數(shù)調(diào)用。4 程序驅(qū)動(dòng)4.1 顯示功能驅(qū)動(dòng)觸摸屏初始化:void LCD_test(void);清屏:void TFT_CLEAR(u8 x,u16 y,u8 len,u16 wid);
29、其中x,y為起始坐標(biāo),len為長度,wid為寬度。顯示字符:void TFT_ShowChar(u8 x,u16 y,u8 num); 其中x,y為起始坐標(biāo),num為輸出字符。顯示字符串:void TFT_ShowString(u8 x,u16 y,const u8 *p); 其中x,y為起始坐標(biāo),p為字符串指針。顯示圖片:void LCD_DrawPicture(u16 StartX,u16 StartY,u8 Dir,u8 *pic);StartX,Y為起始坐標(biāo),Dir為圖片橫/縱標(biāo)識(shí),0為橫向顯示,1為縱向,pic為圖片指針。4.2 觸摸功能驅(qū)動(dòng)void tp_Config(void)為
30、觸摸驅(qū)動(dòng),其中包含GPIO、SPI和時(shí)鐘的配置。void tp_Config(void) GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; /* SPI1 時(shí)鐘使能 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE); /* SPI1 SCK(PA5)、MISO(PA6)、MOSI(PA7) 設(shè)置 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;GPIO_In
31、itStructure.GPIO_Speed = GPIO_Speed_50MHz;/口線速度50MHZGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /復(fù)用模式GPIO_Init(GPIOA, &GPIO_InitStructure);/* SPI1 觸摸芯片的片選控制設(shè)置 PB7 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /口線速度50MHZ GPIO_InitStructure.GPIO_M
32、ode = GPIO_Mode_Out_PP;/推挽輸出模式GPIO_Init(GPIOB, &GPIO_InitStructure); /* 由于SPI1總線上掛接了4個(gè)外設(shè),所以在使用觸摸屏?xí)r,需要禁止其余3個(gè)SPI1 外設(shè), 才能正常工作 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; /SPI1 SST25VF016B片選 GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; /SPI1 VS1003片選 GPIO_Ini
33、t(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; /SPI1 網(wǎng)絡(luò)模塊片選GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOC, GPIO_Pin_4);/SPI CS1GPIO_SetBits(GPIOB, GPIO_Pin_12);/SPI CS4GPIO_SetBits(GPIOA, GPIO_Pin_4);/SPI NSS /* SPI1總線 配置 */ SPI_InitStructure.SPI_Direction
34、= SPI_Direction_2Lines_FullDuplex; /全雙工 SPI_InitStructure.SPI_Mode = SPI_Mode_Master; /主模式SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; /8位SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; /時(shí)鐘極性 空閑狀態(tài)時(shí),SCK保持低電平SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;/時(shí)鐘相位 數(shù)據(jù)采樣從第一個(gè)時(shí)鐘邊沿開始SPI_InitStructure.SPI_NSS = SP
35、I_NSS_Soft;/軟件產(chǎn)生NSSSPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64; /波特率控制 SYSCLK/64SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; /數(shù)據(jù)高位在前SPI_InitStructure.SPI_CRCPolynomial = 7; /CRC多項(xiàng)式寄存器初始值為7 SPI_Init(SPI1, &SPI_InitStructure);/* SPI1 使能 */ SPI_Cmd(SPI1,ENABLE); void Re
36、ad_XPT2046(void)為讀XPT2046,產(chǎn)生觸摸坐標(biāo)。5 觸摸屏坐標(biāo)校正在 main函數(shù)初始化完成 LCD之后,調(diào)用了 Touchl_Calibrate()函數(shù)進(jìn)行觸摸屏校正。具體函數(shù)見附錄A。本函數(shù)的主要作用是在指定的幾個(gè)液晶屏坐標(biāo)(邏輯坐標(biāo))顯示”十”字交叉點(diǎn),我們使用觸筆點(diǎn)擊觸摸屏交叉點(diǎn),讀取由XPT2046測得的觸點(diǎn)電壓(物理坐標(biāo))。采集 4個(gè)不同位置的觸點(diǎn)電壓(物理坐標(biāo)),然后根據(jù)觸摸校準(zhǔn)算法把邏輯坐標(biāo)與物理坐標(biāo)轉(zhuǎn)換公式的系數(shù) A、B、C、D、E、F計(jì)算出來。 若使用此函數(shù)校準(zhǔn)成功后,我們?cè)冱c(diǎn)擊觸摸屏?xí)r,可把測量出的觸點(diǎn)電壓(物理坐標(biāo))代入已知系數(shù)的轉(zhuǎn)換公式,計(jì)算出對(duì)應(yīng)的
37、液晶屏坐標(biāo)(邏輯坐標(biāo))。 轉(zhuǎn)換公式的系數(shù)為代碼 6672行中的aa1、bb1、cc1、aa2、bb2、cc3這幾個(gè)全局變量,如果把這幾個(gè)數(shù)據(jù)保存在SD卡中,上電后向這幾個(gè)變量賦值,就不需要每次上電都進(jìn)行一次觸屏校準(zhǔn)了。 在代碼中的 1830行,與觸摸屏的觸點(diǎn)電壓獲取有關(guān),分析如下: (1)第 2025行,調(diào)用LCD_Rectangle()、LCD_Str6x12_O()、LCDNum_6x12_O()、DrawCross()由液晶屏顯示背景、提示信息及校準(zhǔn)用的“十”字。這些函數(shù)都與液晶的畫點(diǎn)函數(shù)原理類似,關(guān)于字符顯示的在下一個(gè)章節(jié)進(jìn)行說明。 (2)第 28行,調(diào)用 Read_2046()函數(shù)獲
38、取觸點(diǎn)的電壓,該函數(shù)通過向XPT2046控制器發(fā)送控制命令:若觸筆點(diǎn)擊觸摸屏?xí)r采集觸點(diǎn)的電壓,采集 10個(gè)電壓取平均值,結(jié)果返回給變量 Ptr;若沒有觸點(diǎn),則Ptr的值為 0,由do-while循環(huán)等待至采集到數(shù)據(jù)為止。Ptr中保存的電壓數(shù)據(jù)在后面被用于校準(zhǔn)算法計(jì)算。Read_2046()函數(shù)定義如下: 1. /* 2. * 函數(shù)名:Read_2046 3. * 描述 :得到濾波之后的 X Y 4. * 輸入 : 無 5. * 輸出 :Coordinate 結(jié)構(gòu)體地址 6. * 舉例 :無 7. * 注意 :速度相對(duì)比較慢 8. */ 9. Coordinate *Read_2046(void
39、) 10. 11. static Coordinate screen; 12. int m0,m1,m2,TP_X1,TP_Y1,temp3; 13. uint8_t count=0; 14. 15. /* 坐標(biāo) X 和 Y 進(jìn)行 9 次采樣*/ 16. int buffer29=0,0; 17. do 18. 19. Touch_GetAdXY(TP_X,TP_Y); 20. buffer0count=TP_X0; 21. buffer1count=TP_Y0; 22. count+; 23. 24. /*用戶點(diǎn)擊觸摸屏?xí)r即 TP_INT_IN 信號(hào)為低 并且 count<9*/ 25
40、. while(!INT_IN_2046&& count<9); 26. 在Read_2046()函數(shù)中,調(diào)用了Touch_GetAdXY(),它用于獲取一次觸點(diǎn)(x,y)電壓。實(shí)際上,驅(qū)動(dòng)XPT2046最底層的是命令 WR_CMD(CHX)和WR_CMD(CHY),發(fā)送了這兩個(gè)命令后,XPT2046開始采集相應(yīng)的觸點(diǎn)電壓,通過SPI傳送觸點(diǎn)電壓數(shù)據(jù)到 STM32。命令語句中的 CHX宏展開為 0xd0,CHY為0x90,它們是根據(jù) XPT2046的命令格式設(shè)定的。驅(qū)動(dòng) XPT2046的命令控制字格式。如表5-1所示。表5-1 驅(qū)動(dòng) XPT2046的命令控制字格式位7(M
41、SB)位6位5位4位3位2位1位0(LSB)SA2A1A0MODESER/DERPD1PD0其中S為數(shù)據(jù)傳輸起始標(biāo)志位該位必為1,A2A0進(jìn)行通道選擇,MOD用于轉(zhuǎn)換精度選擇,1為8位精度,0為12位精度。所謂通道選擇即為檢測哪一個(gè)通道的坐標(biāo)。如A2A0為 001時(shí),即命令控制字為0x90,根據(jù)表格知,芯片會(huì)給觸摸屏的Y阻性材料層的兩端提供Y+、Y-的電壓,若有觸筆點(diǎn)擊,則 Y觸點(diǎn)電壓可經(jīng)過X+利用 ADC讀取得。同理命令控制字為 0xd0時(shí),A2A0為 101,即給 X阻性材料層提供電壓,觸點(diǎn)電壓經(jīng)過Y+由ADC讀取得。這就是 XPT2046采集觸點(diǎn)電壓的原理。如表5-2。表5-2 通道坐標(biāo)
42、選擇A2A1A0+REF-REFY-X+Y+Y-位置X-位置Z1-位置Z2-位置驅(qū)動(dòng)001Y+Y-+INMY+,Y-011Y+X-+INMY+,X-100Y+Y+INY+,X-101X+X-+INMMX+,X-6 圖片與文字顯示6.1 圖片轉(zhuǎn)換利用Image2Lcdv 2.8軟件轉(zhuǎn)換圖片格式。步驟如下:打開軟件。如圖6-1所示。圖6-1 打開軟件點(diǎn)擊“打開”選擇需要轉(zhuǎn)碼的圖片。如圖6-2所示。圖6-2 選擇圖片點(diǎn)擊“設(shè)置”,如圖6-3所示。圖6-3 設(shè)置設(shè)置參數(shù)如圖6-4所示。 圖6-4 設(shè)置參數(shù)輸出數(shù)據(jù)點(diǎn)擊保存,以*.txt文件打開如圖后,即可復(fù)制到程序中調(diào)試了。如圖6-5。圖6-5 輸出數(shù)
43、據(jù)6.2 圖片顯示(利用驅(qū)動(dòng)函數(shù))顯示圖片void LCD_DrawPicture(u16 StartX,u16 StartY,u8 Dir,u8 *pic);StartX,Y為起始坐標(biāo),Dir為圖片橫/縱標(biāo)識(shí),0為橫向顯示,1為縱向,pic為圖片指針。指針指向圖片轉(zhuǎn)換的第一個(gè)字符如圖的0X00字符,依次類推,最終將圖片顯示在顯示屏上。7 總結(jié)我的畢業(yè)設(shè)計(jì)是便攜式指紋考勤系統(tǒng)的觸摸屏硬件開發(fā)與應(yīng)用。這次畢業(yè)設(shè)計(jì)是我對(duì)大學(xué)學(xué)習(xí)的擴(kuò)展和提升,對(duì)我們?cè)诖髮W(xué)即將結(jié)束的時(shí)候的學(xué)習(xí)有很大的幫助,讓我們提高了自己的自學(xué)能力和對(duì)word的應(yīng)用能力,將自己的能力綜合發(fā)展,為以后的工作學(xué)習(xí)提供了基礎(chǔ)。經(jīng)過對(duì)畢業(yè)設(shè)
44、計(jì)的制作和論文的編寫。我體會(huì)到了觸摸屏使用的優(yōu)點(diǎn),它操作簡單,反應(yīng)快,具有人機(jī)交互性佳,操作方便,使用靈活,效率高及輸入速度快等特點(diǎn)。我對(duì)于觸摸屏不再僅僅是能夠使用它,而是在根本上了解它。參考文獻(xiàn)1 任愛鋒,基于FPGA的嵌入式系統(tǒng)設(shè)計(jì),西安:西安電子工業(yè)大學(xué)出版社,20042 柴曉光,民用指紋識(shí)別技術(shù),北京:人民郵電出版社,20043 隋宗強(qiáng),EMS液晶顯示觸摸屏設(shè)計(jì),青島:山東省青島大學(xué)出版社,20124 楊玉琴,觸摸屏技術(shù)研究及市場進(jìn)展,河北省全國磁性記錄材料信息站,2012(1)附錄:觸摸屏校正函數(shù)觸摸屏校正函數(shù)1. /* 2. * 函數(shù)名:Touchl_Calibrate 3. *
45、描述 :2.4寸觸摸屏校正函數(shù) 4. * 輸入 : 無 5. * 輸出 :0 - 校正成功 6. 1 - 校正失敗 7. * 舉例 :無 8. * 注意 :無 9. */ 10. int Touchl_Calibrate(void) 11. 12. uint8_t i; 13. u16 test_x=0, test_y=0; 14. u16 gap_x=0, gap_y=0; 15. Coordinate * Ptr; 16. / delay_init(); 17. Set_direction(0); /設(shè)置為橫屏 18. for(i=0;i<4;i+) 19. 20. LCD_Rectangle(0,0,320,240,CAL_BACKGROUND_COLOR); /使整個(gè)屏幕顯示背景顏色 21. LCD_Str_6x12_O(10, 10,"Touch Calibrate", 0); /顯示提示信息 22. LCD_Num_6x12_O(10,25, i+1, 0); /顯示觸點(diǎn)次數(shù) 23. 24. delay_ms(500); 25. DrawCross(DisplaySamplei.x,DisplaySamplei.y); /顯示校正用的“
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淄博市巡游出租汽車駕駛員區(qū)域科目考試題庫及答案(供參考)
- 2025年河北女子職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 普通合伙合同協(xié)議書
- 隔音降噪合同范本
- 幼兒園中班建康活動(dòng)策劃方案五篇
- 信號(hào)工勞務(wù)合同
- 標(biāo)準(zhǔn)鋼材購銷合同樣本
- 智能設(shè)備研發(fā)與生產(chǎn)合作合同
- 代理的合同范本
- 2024年數(shù)字化教育平臺(tái)推廣合同
- 走新型城鎮(zhèn)化道路-實(shí)現(xiàn)湘潭城鄉(xiāng)一體化發(fā)展
- 江蘇中國中煤能源集團(tuán)有限公司江蘇分公司2025屆高校畢業(yè)生第二次招聘6人筆試歷年參考題庫附帶答案詳解
- 【語文】第23課《“蛟龍”探?!氛n件 2024-2025學(xué)年統(tǒng)編版語文七年級(jí)下冊(cè)
- 北師版七年級(jí)數(shù)學(xué)下冊(cè)第二章測試題及答案
- 2025年全體員工安全意識(shí)及安全知識(shí)培訓(xùn)
- 2025警察公安派出所年終總結(jié)工作匯報(bào)
- 機(jī)動(dòng)車檢測站新?lián)Q版20241124質(zhì)量管理手冊(cè)
- 2024年決戰(zhàn)行測5000題言語理解與表達(dá)(培優(yōu)b卷)
- 中國游戲發(fā)展史課件
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 工程數(shù)學(xué)試卷及答案
評(píng)論
0/150
提交評(píng)論