发布时间:2024-01-18 09:17:06 浏览量:349次


2.坐标计算方法


3.触屏接口

4.触屏驱动程序

5.使用触屏驱动——bsp_lcd.h

6.bsp_xpt2046_lcd.h解析

¤54行:定义XPT2046触摸屏的坐标扫描方向
//1:竖屏 2:横屏,根据实际情况自行修改,与屏幕显示方向保持一致
#define macXPT2046_Coordinate_GramScan 2
¤98行:定义全局变量
//触摸标志:按下为1(按下申请外部中断,在中断服务程序中设置),释放清零
extern volatile uint8_t ucXPT2046_TouchFlag;
//校准系数,具体数据在bsp_xpt2046_lcd.c中,根据屏幕显示方向选择
extern strType_XPT2046_TouchPara strXPT2046_TouchPara;
7.驱动函数介绍
¤void XPT2046_Init( void );
¤在LCD_Init()函数中调用
¤配置SPI接口CS,MISO,MOSI,CLK引脚工作模式
¤配置触屏输入中断
下降沿触发,允许中断,优先级0,0
8.设计触屏中断服务程序
// 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.驱动函数介绍

举例

10.驱动函数介绍

11.执行效果

11.屏幕方向设置
¤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 //总列数
#define macILI9341_DispWindow_PAGE 320 //总行数
12.程序设计技巧—条件编译
#define ScreenDirection 1
//定义校准系数
#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;
//必须先开启时钟再配置引脚
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);
//调用函数绘制图案,显示字符
// 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 ) ) //获取触摸点的坐标
{
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);
}
}
}
}
热门资讯
怎样可以提升你的UI设计能力!第一个:站酷站酷想必是设计师都知道的一个网站,里面不止有UI设计的资源,还有其他设计的,不如:平面设计、网页设计、字体...
想要了解iPhone6界面设计的尺寸规范吗?这里为您详细介绍iPhone6的UI设计尺寸规范,包括界面尺寸、图标尺寸、可点击高度规范、搜索栏高度规范以及界面元素之间的距离规范。
3. 移动端UI设计中常见的5种APP界面类型,你get到了吗?
通过介绍移动端UI设计中的闪屏页、引导页、浮层引导页、空白页和首页等5种APP界面类型,帮助大家更好地了解UI设计的基本知识
将为大家介绍12个绝佳的UI设计网站,这些网站不仅可以为你提供灵感,还可以帮助你学习新的技巧,助力你的创意之旅!dribbbleDribbble 是一个面向设计师的...
在移动端设计中,列表页和表单页是不可或缺的部分。一个好的列表页和表单页设计能够让用户轻松地获取信息并产生点击欲望,从而提高点击率。本文将为你...
对于想要提高自己的设计能力和创造力的小白和UI设计师来说,这本书是一个很好的选择。4.《设计的觉醒》(IKKO TANAKA)推荐理由: 这本书是日本现代平面...
7. 设计中的色彩心理学:浅析中西方色彩的历史演变与设计应用
摘要:本文探讨了色彩的历史演变和设计应用。通过对色彩在早期文明社会中的实用运用、不同文化背景下色彩观念的差异、色彩在设计中的重要性以及新兴技...
8. 史上最全,平面设计UI设计必备的77个国内外素材、设计资源网站
ui设计社区,大神太多了。3、behance: https://www.behance.net/ ,著名设计... 对于品牌设计师来说,除了图案素材收集之外,还有一个很重要的,就是设计故...
探索零基础UI设计培训的时长与薪资前景。了解数字艺术教育领域的专业课程,以及培训后的职业发展机会。
10. 武汉UI设计培训班费用怎么样?想学UI设计要多少钱?
想了解武汉UI设计培训班的费用是多少吗?不知道学UI设计要花多少钱?不妨看看这篇文章,了解UI设计培训班的学费价格以及学习内容。
最新文章
同学您好!