發(fā)布時(shí)間:2024-01-18 09:17:06 瀏覽量:325次
2.坐標(biāo)計(jì)算方法
3.觸屏接口
4.觸屏驅(qū)動(dòng)程序
5.使用觸屏驅(qū)動(dòng)——bsp_lcd.h
6.bsp_xpt2046_lcd.h解析
¤54行:定義XPT2046觸摸屏的坐標(biāo)掃描方向
//1:豎屏 2:橫屏,根據(jù)實(shí)際情況自行修改,與屏幕顯示方向保持一致
#define macXPT2046_Coordinate_GramScan 2
¤98行:定義全局變量
//觸摸標(biāo)志:按下為1(按下申請外部中斷,在中斷服務(wù)程序中設(shè)置),釋放清零
extern volatile uint8_t ucXPT2046_TouchFlag;
//校準(zhǔn)系數(shù),具體數(shù)據(jù)在bsp_xpt2046_lcd.c中,根據(jù)屏幕顯示方向選擇
extern strType_XPT2046_TouchPara strXPT2046_TouchPara;
7.驅(qū)動(dòng)函數(shù)介紹
¤void XPT2046_Init( void );
¤在LCD_Init()函數(shù)中調(diào)用
¤配置SPI接口CS,MISO,MOSI,CLK引腳工作模式
¤配置觸屏輸入中斷
下降沿觸發(fā),允許中斷,優(yōu)先級0,0
8.設(shè)計(jì)觸屏中斷服務(wù)程序
// EXTI Line --> PE4 void macXPT2046_EXTI_INT_FUNCTION ( void ) { if ( EXTI_GetITStatus ( macXPT2046_EXTI_LINE ) != RESET ) { ucXPT2046_TouchFlag = 1; EXTI_ClearITPendingBit ( macXPT2046_EXTI_LINE ); } }
9.驅(qū)動(dòng)函數(shù)介紹
舉例
10.驅(qū)動(dòng)函數(shù)介紹
11.執(zhí)行效果
11.屏幕方向設(shè)置
¤1) bsp_lcd.c ILI9341_Init (); ILI9341_GramScan(1); ¤2) bsp_xpt2046_lcd.h #define macXPT2046_Coordinate_GramScan 1 ¤3) bsp_xpt2046_lcd.c strType_XPT2046_TouchPara strXPT2046_TouchPara = { 0.001030, 0.064188, -10.804098, -0.085584, 0.001420, 324.127036 }; ¤4) bsp_ili9341_lcd.h #define macILI9341_Default_Max_Width 240 //最大寬度 #define macILI9341_Default_Max_Heigth 320 //最大高度 #define macILI9341_DispWindow_COLUMN 240 //總列數(shù) #define macILI9341_DispWindow_PAGE 320 //總行數(shù)
12.程序設(shè)計(jì)技巧—條件編譯
#define ScreenDirection 1 //定義校準(zhǔn)系數(shù) #if ScreenDirection==1 strType_XPT2046_TouchPara strXPT2046_TouchPara = { 0.001030, 0.064188, -10.804098, -0.085584, 0.001420, 324.127036 }; #elif ScreenDirection==2 strType_XPT2046_TouchPara strXPT2046_TouchPara = { 0.085958, -0.001073, -4.979353, -0.001750, 0.065168, -13.318824 }; #endif
二,總工程
#include "stm32f10x.h" #include "bsp_lcd.h" #include "fatfs_flash_spi.h" #include "bsp_usart1.h" #include "pic.h" #include <stdio.h> #define LEDBLUE_ON GPIO_ResetBits(GPIOB, GPIO_Pin_1) #define LEDBLUE_OFF GPIO_SetBits(GPIOB, GPIO_Pin_1) #define LEDGREEN_ON GPIO_ResetBits(GPIOB, GPIO_Pin_0) #define LEDGREEN_OFF GPIO_SetBits(GPIOB, GPIO_Pin_0) #define LEDRED_ON GPIO_ResetBits(GPIOB, GPIO_Pin_5) #define LEDRED_OFF GPIO_SetBits(GPIOB, GPIO_Pin_5) void Delay(u32 Cnt) { while(--Cnt); } void GPIO_Configration() { GPIO_InitTypeDef GPIO_InitStructure; //必須先開啟時(shí)鐘再配置引腳 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC ,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOC, &GPIO_InitStructure); LEDBLUE_OFF;LEDGREEN_OFF;LEDRED_OFF; } u8 KeyScan() { u8 key; if((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1) && (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==1)) key = 3; else if((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0) && (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==1)) key = 2; else if((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1) && (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==0)) key = 1; else key = 0; return key; } int main(void) { strType_XPT2046_Coordinate Coordinate; char cStr[ 10 ]; GPIO_Configration(); // USARTx_Config(); LCD_Init(); ILI9341_GramScan(2); FLASH_SPI_initialize(); LEDRED_ON; ILI9341_Clear(0,0,320,240,macWHITE); //調(diào)用函數(shù)繪制圖案,顯示字符 // ILI9341_OpenWindow(100,100,50,50); // ILI9341_Write_Cmd ( macCMD_SetPixel ); // for(i=0;i<120;i++) ILI9341_Write_Data ( macRED ); // ILI9341_DispString_EN_CH(0,200,"頭條你好",macBLUE,macWHITE); ILI9341_DispImage( 0,0,gImage_1 ); ILI9341_DispString_EN_CH(160,80,"頭條你好",macBLUE,macWHITE); while(1) { if ( ucXPT2046_TouchFlag == 1 ) //如果觸摸了屏幕 { if ( XPT2046_Get_TouchedPoint ( & Coordinate, & strXPT2046_TouchPara ) ) //獲取觸摸點(diǎn)的坐標(biāo) { ILI9341_Clear( 0 , 160 , 320 , 32 , macBLACK ); sprintf ( cStr, "%d", Coordinate.x ); ILI9341_DispString_EN( 0 , 160 , "x=" , macBLACK , macWHITE); ILI9341_DispString_EN( 16 , 160 , cStr , macBLACK , macWHITE); sprintf ( cStr, "%d", Coordinate.y ); ILI9341_DispString_EN( 0 , 176 , "y=" , macBLACK , macWHITE); ILI9341_DispString_EN( 16 , 176 , cStr , macBLACK , macWHITE); } } } }
熱門資訊
1. iPhone6的UI設(shè)計(jì)尺寸規(guī)范,原來如此重要!
想要了解iPhone6界面設(shè)計(jì)的尺寸規(guī)范嗎?這里為您詳細(xì)介紹iPhone6的UI設(shè)計(jì)尺寸規(guī)范,包括界面尺寸、圖標(biāo)尺寸、可點(diǎn)擊高度規(guī)范、搜索欄高度規(guī)范以及界面元素之間的距離規(guī)范。
2. 12個(gè)絕佳的UI設(shè)計(jì)網(wǎng)站,助力你的創(chuàng)作之旅!
將為大家介紹12個(gè)絕佳的UI設(shè)計(jì)網(wǎng)站,這些網(wǎng)站不僅可以為你提供靈感,還可以幫助你學(xué)習(xí)新的技巧,助力你的創(chuàng)意之旅!dribbbleDribbble 是一個(gè)面向設(shè)計(jì)師的...
3. 移動(dòng)端UI設(shè)計(jì)中常見的5種APP界面類型,你get到了嗎?
通過介紹移動(dòng)端UI設(shè)計(jì)中的閃屏頁、引導(dǎo)頁、浮層引導(dǎo)頁、空白頁和首頁等5種APP界面類型,幫助大家更好地了解UI設(shè)計(jì)的基本知識
4. 10個(gè)免費(fèi)學(xué)習(xí)UI設(shè)計(jì)的網(wǎng)站 提升你的設(shè)計(jì)能力
怎樣可以提升你的UI設(shè)計(jì)能力!第一個(gè):站酷站酷想必是設(shè)計(jì)師都知道的一個(gè)網(wǎng)站,里面不止有UI設(shè)計(jì)的資源,還有其他設(shè)計(jì)的,不如:平面設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、字體...
5. 移動(dòng)端列表頁和表單頁設(shè)計(jì)秘訣:讓你的APP點(diǎn)擊率翻倍
在移動(dòng)端設(shè)計(jì)中,列表頁和表單頁是不可或缺的部分。一個(gè)好的列表頁和表單頁設(shè)計(jì)能夠讓用戶輕松地獲取信息并產(chǎn)生點(diǎn)擊欲望,從而提高點(diǎn)擊率。本文將為你...
6. 推薦10本適合UI設(shè)計(jì)師看的書籍,輕松掌握技能!
對于想要提高自己的設(shè)計(jì)能力和創(chuàng)造力的小白和UI設(shè)計(jì)師來說,這本書是一個(gè)很好的選擇。4.《設(shè)計(jì)的覺醒》(IKKO TANAKA)推薦理由: 這本書是日本現(xiàn)代平面...
7. 零基礎(chǔ)學(xué)UI設(shè)計(jì)要多久?培訓(xùn)完能拿多少工資?
探索零基礎(chǔ)UI設(shè)計(jì)培訓(xùn)的時(shí)長與薪資前景。了解數(shù)字藝術(shù)教育領(lǐng)域的專業(yè)課程,以及培訓(xùn)后的職業(yè)發(fā)展機(jī)會(huì)。
8. 物聯(lián)網(wǎng)APP UI設(shè)計(jì):創(chuàng)造智能硬件領(lǐng)域的沉浸式體驗(yàn)
ui設(shè)計(jì)應(yīng)該讓用戶一目了然,能夠快速找到所需的信息和功能。在設(shè)計(jì)過程中,應(yīng)盡量使用簡潔的圖標(biāo)、文字和色彩,避免過多的視覺干擾。符合用戶習(xí)慣:ui設(shè)...
9. 設(shè)計(jì)中的色彩心理學(xué):淺析中西方色彩的歷史演變與設(shè)計(jì)應(yīng)用
摘要:本文探討了色彩的歷史演變和設(shè)計(jì)應(yīng)用。通過對色彩在早期文明社會(huì)中的實(shí)用運(yùn)用、不同文化背景下色彩觀念的差異、色彩在設(shè)計(jì)中的重要性以及新興技...
10. 武漢UI設(shè)計(jì)培訓(xùn)班費(fèi)用怎么樣?想學(xué)UI設(shè)計(jì)要多少錢?
想了解武漢UI設(shè)計(jì)培訓(xùn)班的費(fèi)用是多少嗎?不知道學(xué)UI設(shè)計(jì)要花多少錢?不妨看看這篇文章,了解UI設(shè)計(jì)培訓(xùn)班的學(xué)費(fèi)價(jià)格以及學(xué)習(xí)內(nèi)容。
最新文章
同學(xué)您好!