-
修改主程序代码以及显示模式,将横板竖版两张照片分别显示在屏幕上
实现效果如图所示
宏定义如下:
extern unsigned char gImage_123[];
uint8_t LCD_SCAN_MODE = 6;
主函数while循环代码如下:
int x;
int y;
int i=0;
for(y=0;y<320;y++)//根据图片横板竖版修改x或y的值,横板x320,y240,竖版 x240,y320
{
for(x=0;x<240;x++)
{
ILI9341_SetCursor ( x, y );
ILI9341_FillColor_user( 1, (gImage_123[i*2]<<8|gImage_123[i*2+1]));//变量名称改为自己定义的变量名称
i++;
}
}
ILI9341_DispString_EN (1 ,1, &name[0] );
更改图片的显示效果步骤如下:
-
将数组变量的const前缀去掉,同时将main.c中的extern后面的const去掉,程序会报错。搜索错误提示并分析原因。
用const修饰的变量是存放在ROM(Flash),为只读变量,不可修改,如果放在RAM中存储空间不够将会报错。
-
在LCD驱动程序中改变字体大小,在main函数中改变字体颜色:
程序在字库中定义了三种字体打下,如图所示:
sFONT Font8x16 = {
ASCII8x16_Table,
8, /* Width */
16, /* Height */
};
sFONT Font16x24 = {
ASCII16x24_Table,
16, /* Width */
24, /* Height */
};
sFONT Font24x32 = {
ASCII24x32_Table,
24, /* Width */
32, /* Height */
};
使用函数static sFONT *LCD_Currentfonts = &Font8x16; 即可更改。
同样在.h文件中也定义了颜色的二进制码,如图所示
#define BACKGROUND BLACK //默认背景颜色
#define WHITE 0xFFFF //白色
#define BLACK 0x0000 //黑色
#define GREY 0xF7DE //灰色
#define BLUE 0x001F //蓝色
#define BLUE2 0x051F //浅蓝色
#define RED 0xF800 //红色
#define MAGENTA 0xF81F //红紫色,洋红色
#define GREEN 0x07E0 //绿色
#define CYAN 0x7FFF //蓝绿色,青色
#define YELLOW 0xFFE0 //黄色
#define BRED 0xF81F
#define GRED 0xFFE0
#define GBLUE 0x07FF
使用函数uint16_t CurrentTextColor = BLACK;即可更改
-
将驱动代码,字体库及其头文件添加至按键捕获程序中,实现在屏幕上打印按键按下的时间以及按键按下的次数。
将按键中断计次的文件拷入此文件中,注意在写按键中断计次的代码时使用cubeMx需要生产.c.h文件。另外还需要把中断的路径函数也要复制粘贴到此文件中。
实现效果如图:
实现中断代码如图:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
num++;
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
}
while主循环如图所示
while(1){
sprintf(trigger_num,"%u",num);
ILI9341_DispString_EN (1 ,100, &trigger_num[0] );
}
- 说明STM32如何捕获电容按键的充电时间,用到了哪些模块。
- GPIO模块:用于配置和控制微控制器的通用输入输出引脚。初始化中还需要配置对应的引脚为低电平使得电容放电,为了更加准确测量电容的充电时间。
- 定时器模块:运用定时器的时基单元以及输入捕获功能,当电容按键引脚电压达到单片机可以识别到的高电平信号时候停止计时,比较有无触摸两次的时间差别来进行判断。
- 阅读模拟SPI协议的读写时序部分,说明如何进行触摸点x坐标与y坐标原始ADC信号获取。
写命令时序如图:
解释:在写入命令之前需要先后将MOSI引脚以及CLK引脚置零,之后再在MOSI引脚存放数据,写完八位数据之后,延时5微秒,CLK引脚置高电平, 5微秒之后再置低电平,完成写入八位的命令。
读命令时序如图:
解释:在读取命令之前需要先后将MOSI引脚置零以及CLK引脚置高电平,之后在CLK为低电平时间读取数据,读完12位数据之后即可返回数据。
初始化完引脚,编写完SPI协议的模拟时序函数之后,利用这个写入函数向触摸屏芯片写入读取ADC的命令,芯片就会开启ADC获取x坐标与y坐标的电压值,得到电压值之后会自动向单片机发送数据。