freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-觸摸式lcd人機(jī)接口設(shè)計(jì)(編輯修改稿)

2025-01-07 09:41 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 色,中間 6位為綠色,最高 5位為紅色。數(shù)值越大,表示該顏色越深。 接下來(lái),我們介紹一下 ILI9320 的幾個(gè)重要命令,因?yàn)?ILI9320 的命令很多,我們這里不可能一一介紹,有興趣的大家可以找到 ILI9320 的 datasheet 看看。里面對(duì)這些命令有詳細(xì)的介紹。這里我們要介紹的命令列表如下 : 表格 31 ILI9320 常用命令表 R0,這個(gè)命令,有兩個(gè)功能,如果對(duì)它寫(xiě),則最低位為 OSC,用于開(kāi)啟或關(guān)閉振蕩器。 12 而如果對(duì)它讀操作,則返回的是控制器的型號(hào)。這個(gè)命令最大的功能就是通過(guò)讀它可以得到控制器的型號(hào),而我們代碼在知道了控制器的型號(hào)之后,可以針對(duì)不同型號(hào)的控制器,進(jìn)行不同的初始化。因?yàn)?93xx系列的初始化,其實(shí)都比較類(lèi)似,我們完全可以用一個(gè)代碼兼容好幾個(gè)控制器。 R3,入口模式命令。我們重點(diǎn)關(guān)注 的是 I/D0、 I/D AM這 3個(gè)位,因?yàn)檫@ 3個(gè)位控制了屏幕的顯示方向。 AM:控制 GRAM更新方向。當(dāng) AM=0的時(shí)候,地址以行方向更新。當(dāng) AM=1的時(shí)候,地址以列方向更新。 I/D[1:0]:當(dāng)更新了一個(gè)數(shù)據(jù)之后,根據(jù)這兩個(gè)位的設(shè)置來(lái)控制地址計(jì)數(shù)器自動(dòng)增加 /減少 1, 其關(guān)系如下圖: 圖 38 GRAM 顯示方向設(shè)置圖 通過(guò)這幾個(gè)位的設(shè)置,我們就可以控制屏幕的顯示方向了。 R7,顯示控制命令。該命令 CL位用來(lái)控制是 8位彩色,還是 26萬(wàn)色。為 0時(shí) 26萬(wàn)色,為 1時(shí)八位色。 D D0、 BASEE這三個(gè)位用來(lái)控制顯示開(kāi)關(guān)與否的。當(dāng)全部設(shè)置為 1的時(shí)候開(kāi)啟顯示,全 0是關(guān)閉。我們一般通過(guò)該命令的設(shè)置來(lái)開(kāi)啟或關(guān)閉顯示器,以降低功耗。 R32, R33,設(shè)置 GRAM的行地址和列地址。 R32用于設(shè)置列地址( X坐標(biāo), 0~239), R33用于設(shè)置行地址( Y坐標(biāo), 0~319)。當(dāng)我們要在某個(gè)指定點(diǎn)寫(xiě)入一個(gè)顏色的時(shí)候,先通過(guò)這兩個(gè)命令設(shè)置到改點(diǎn),然后寫(xiě)入顏色值就可以了。 R34,寫(xiě)數(shù)據(jù)到 GRAM命令,當(dāng)寫(xiě)入了這個(gè)命令之后,地址計(jì)數(shù)器才會(huì)自動(dòng)的增加和減少。該命令是我們要介紹 的這一組命令里面唯一的單個(gè)操作的命令,只需要寫(xiě)入該值就可以了,其他的都是要先寫(xiě)入命令編號(hào),然后寫(xiě)入操作數(shù)。 R80~R83,行列 GRAM地址位置設(shè)置。這幾個(gè)命令用于設(shè)定你顯示區(qū)域的大小,我們整個(gè)屏的大小為 240*320,但是有時(shí)候我們只需要在其中的一部分區(qū)域?qū)懭霐?shù)據(jù),如果用先寫(xiě)坐標(biāo),后寫(xiě)數(shù)據(jù)這樣的方式來(lái)實(shí)現(xiàn),則速度大打折扣。此時(shí)我們就可以通過(guò)這幾個(gè)命令,在其 13 中開(kāi)辟一個(gè)區(qū)域,然后不停的丟數(shù)據(jù),地址計(jì)數(shù)器就會(huì)根據(jù) R3的設(shè)置自動(dòng)增加 /減少,這樣就不需要頻繁的寫(xiě)地址了,大大提高了刷新的速度。 命令部分,我們就為大家 介紹到這里,我們接下來(lái)看看要如何才能驅(qū)動(dòng) ALIENTEK TFTLCD模塊,這里 TFTLCD模塊的初始化和我們前面介紹的 OLED模塊的初始化框圖是一樣的,只是初始化代碼部分不同。接下來(lái)我們也是將該模塊用來(lái)來(lái)顯示字符和數(shù)字。通過(guò)以上介紹,我們可以得出 TFTLCD顯示需要的相關(guān)設(shè)置步驟如下: 1)設(shè)置 STM32與 TFTLCD模塊相連接的 IO。 這一步,先將我們與 TFTLCD模塊相連的 IO口設(shè)置為輸出,具體使用哪些 IO口,這里需要根據(jù)連接電路以及 TFTLCD模塊的設(shè)置來(lái)確定。 2)初始化 TFTLCD模塊。 其實(shí) 這里就是上和上面 OLED模塊的初始化過(guò)程差不多。通過(guò)向 TFTLCD寫(xiě)入一系列的設(shè)置,來(lái)啟動(dòng) TFTLCD的顯示。為后續(xù)顯示字符和數(shù)字做準(zhǔn)備。 3)通過(guò)函數(shù)將字符和數(shù)字顯示到 TFTLCD模塊上。 這里就是通過(guò)我們?cè)O(shè)計(jì)的程序,將要顯示的字符送到 TFTLCD模塊就可以了,這些函數(shù)將在軟件設(shè)計(jì)部分向大家介紹。 通過(guò)以上三步,我們就可以使用 ALIENTEK TFTLCD 模塊來(lái)顯示字符和數(shù)字了, 并且可以顯示各種顏色的背景。 基于 XPT2406 的控制電路 XPT2046 控制電路如 所示: 圖 39 xpt2046 控制電路 14 4 系統(tǒng)軟件設(shè)計(jì) 觸屏校準(zhǔn)作用 我們傳統(tǒng)的鼠標(biāo)是一種相對(duì)定位系統(tǒng),只和前一次鼠標(biāo)的位置坐標(biāo)有關(guān)。 而觸摸屏則是一種絕對(duì)坐標(biāo)系統(tǒng),要選哪就直接點(diǎn)哪,與相對(duì)定位系統(tǒng)有著本質(zhì)的區(qū)別。絕對(duì)坐標(biāo)系統(tǒng)的特點(diǎn)是每一次定位坐標(biāo)與上一次定位坐標(biāo)沒(méi)有關(guān)系,每次觸摸的數(shù)據(jù)通過(guò)校準(zhǔn)轉(zhuǎn)為屏幕上的坐標(biāo),不管在什么情況下,觸摸屏這套坐標(biāo)在同一點(diǎn)的輸出數(shù)據(jù)是穩(wěn)定的。不過(guò)由于技術(shù)原理的原因,并不能保證同一點(diǎn)觸摸每一次采樣數(shù)據(jù)相同,不能保證絕對(duì)坐標(biāo)定位,點(diǎn)不準(zhǔn),這就是觸摸屏最怕出現(xiàn)的問(wèn)題:漂移。對(duì)于性能質(zhì)量好 的觸摸屏來(lái)說(shuō),漂移的情況出現(xiàn)并不是很?chē)?yán)重。所以很多應(yīng)用觸摸屏的系統(tǒng)啟動(dòng)后,進(jìn)入應(yīng)用程序前,先要執(zhí)行校準(zhǔn)程序。通常應(yīng)用程序中使用的 LCD坐標(biāo)是以像素為單位的。比如說(shuō):左上角的坐標(biāo)是一組非 0的數(shù)值,比如( 20, 20),而右下角的坐標(biāo)為( 620, 460)。這些點(diǎn)的坐標(biāo)都是以像素為單位的,而從觸摸屏中讀出的是點(diǎn)的物理坐標(biāo),其坐標(biāo)軸的方向、 XY值的比例因子、偏移量、縮放因子都與LCD坐標(biāo)不同,所以,可以在 IAL的某個(gè)函數(shù)(比如 wait_event函數(shù))中把物理坐標(biāo)首先轉(zhuǎn)換為像素坐標(biāo),然后再賦給 POS結(jié)構(gòu),達(dá)到坐標(biāo)轉(zhuǎn)換 的目的 . 觸摸屏校正思路: 在 IAL的某個(gè)函數(shù)(比如 wait_event函數(shù))中加入調(diào)試信息,開(kāi)發(fā)板上運(yùn)行 Calibrate程序,那么觸摸屏上任何一點(diǎn)的坐標(biāo)就可以在主機(jī)監(jiān)視屏上回顯出來(lái)。于是,就采集到了 4個(gè)角的物理坐標(biāo),假設(shè)是 , 640X480分辨率,則它們的像素坐標(biāo)分別是( 20,20)、( 20,460)、 (620,460)和 (620,20)。這樣,使用待定系數(shù)法就可以算出坐標(biāo)系之間的平移關(guān)系。比如: Vx = xFactor*Px + xOffset Vy = yFactor*Py + yOffset 主程序流程圖 主程序流程圖如下圖 41所示 15 圖 41 C 語(yǔ)言的簡(jiǎn)介 C語(yǔ)是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴(lài)計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開(kāi)發(fā)上,而且各類(lèi)科研都需要用到 C 語(yǔ)言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)。 C 語(yǔ)言具有下列特點(diǎn): 1) C 是中級(jí)語(yǔ)言。它把高級(jí)語(yǔ)言的基 本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。 C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。 2) C 是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。 C 語(yǔ)言是以函數(shù)形式提供給用戶(hù)的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。 3) C 語(yǔ)言功能齊全。具有各種各樣的數(shù)據(jù)類(lèi)型,并引入了指針概念,可使程序效率更開(kāi)始 硬件初始化 刷新并不斷檢測(cè)觸摸屏狀 延時(shí) 讀取坐標(biāo)點(diǎn)的坐標(biāo)值 獲取初始值的坐標(biāo)值 觸摸屏仍被觸摸嗎 是 觸摸屏被觸摸么 否 16 高。另外 C語(yǔ)言也具有強(qiáng)大 的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的的游戲。 4) C 語(yǔ)言適用范圍大。適合于多種操作系統(tǒng),如 Windows、 DOS、 UNIX 等等;也適用于多種機(jī)型。 C語(yǔ)言對(duì)編寫(xiě)需要硬件進(jìn)行操作的場(chǎng)合,明顯優(yōu)于其它解釋型高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用 C語(yǔ)言編寫(xiě)的。 C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫(xiě)系統(tǒng)軟件,三維,二維圖形和動(dòng)畫(huà)。它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。 關(guān)鍵代碼 //初始化液晶接口 void LCD_Port(void) { = 1。 //WR = 1。 //RD = 1。 //RD = 1。 //WR = 1。 //RS = 1。 //CS = 1。 = 1。 } //延時(shí) void DelayMs(unsigned short k) { unsigned short i。 unsigned int j。 for(i = k。i 0。i) for(j = 1000。j 0。j)。 } //向 HC573 寫(xiě)入數(shù)據(jù) void Write_HC573(unsigned short Dat) { unsigned char dat。 dat = (unsigned char)(Datamp。0xFF)。 IO1SET |= (((unsigned int)dat)16)。 IO1CLR |= ((~(((unsigned int)dat)16))amp。((0XFF16)))。 = 1。 = 1。 dat = (unsigned char)((Dat8)amp。0xFF)。 17 IO1SET |= (((unsigned int)dat)16)。 IO1CLR |= ((~(((unsigned int)dat)16))amp。((0XFF16)))。 = 1。 = 1。 } //向液晶屏寫(xiě)入數(shù)據(jù) void TFTWriData(unsigned short ch) { LCD_RS_H()。 //RS = 1 LCD_CS_L()。 //CS = 0 Write_HC573(ch)。 LCD_WR_L()。 //WR = 0 LCD_WR_H()。 //WR = 1 LCD_CS_H()。 //CS = 1 } //向液晶屏寫(xiě)入命令 void TFTWriCom(unsigned short ch) { LCD_RS_L()。 //RS = 0 Write_HC573(ch)。 LCD_WR_L()。 //WR = 0 LCD_CS_L()。 //CS = 0 LCD_WR_H()。 //WR = 1 LCD_CS_H()。 //CS = 1 } //寫(xiě)入控制字 void write_(unsigned short address,unsigned short num) { TFTWriCom(address)。 TFTWriData(num)。 } //液晶屏初始化 void TftInit(void) { LCD_RESET_L()。 //低電平復(fù)位 Delayn(10000)。 LCD_RESET_H()。 define DelayNS Delayn write_(0x0000,0x0001)。 DelayNS(1000)。 //打開(kāi)晶振 write_(0x0003,0xA8A4)。 DelayNS(1000)。 //0xA8A4 write_(0x000C,0x0000)。 DelayNS(1000)。 write_(0x000D,0x080C)。 DelayNS(1000)。 18 write_(0x000E,0x2B00)。 DelayNS(1000)。 write_(0x001E,0x00B0)。 DelayNS(1000)。 write_(0x0001,0x2B3F)。 DelayNS(1000)。 //驅(qū)動(dòng)輸出控制 320*240 0x6B3F write_(0x0002,0x0600)。 DelayNS(1000)。 write_(0x0010,0x0000)。 DelayNS(1000)。 write_(0x0011,0x6070)。 DelayNS(1000)。 //0x4030 //定義數(shù)據(jù)格式 16位色 write_(0x0005,0x0000)。 DelayNS(1000)。 write_(0x0006,0x0000)。 DelayNS(1000)。 write_(0x0016,0xEF1C)。 DelayNS(1000)。 write_(0x0017,0x0003)。 DelayNS(1000)。 write_(0x0007,0x0233)。 DelayNS(1000)。 //0x0233 write_(0x000B,0x0000)。 DelayNS(1000)。 write_(0x000F,0x0000)。 DelayNS(1000)。 //掃描開(kāi)始地址 write_(
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1