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

正文內(nèi)容

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

2025-01-07 09:41 本頁面
 

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