移植修改野火代码学习使用3.2寸LCD屏幕

  • 修改主程序代码以及显示模式,将横板竖版两张照片分别显示在屏幕上

实现效果如图所示 

 

宏定义如下: 

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] );	
}
  1. 说明STM32如何捕获电容按键的充电时间,用到了哪些模块。
  1. GPIO模块:用于配置和控制微控制器的通用输入输出引脚。初始化中还需要配置对应的引脚为低电平使得电容放电,为了更加准确测量电容的充电时间。
  2. 定时器模块:运用定时器的时基单元以及输入捕获功能,当电容按键引脚电压达到单片机可以识别到的高电平信号时候停止计时,比较有无触摸两次的时间差别来进行判断。

  1. 阅读模拟SPI协议的读写时序部分,说明如何进行触摸点x坐标与y坐标原始ADC信号获取。

写命令时序如图:

解释:在写入命令之前需要先后将MOSI引脚以及CLK引脚置零,之后再在MOSI引脚存放数据,写完八位数据之后,延时5微秒,CLK引脚置高电平, 5微秒之后再置低电平,完成写入八位的命令。

读命令时序如图:

解释:在读取命令之前需要先后将MOSI引脚置零以及CLK引脚置高电平,之后在CLK为低电平时间读取数据,读完12位数据之后即可返回数据。

初始化完引脚,编写完SPI协议的模拟时序函数之后,利用这个写入函数向触摸屏芯片写入读取ADC的命令,芯片就会开启ADC获取x坐标与y坐标的电压值,得到电压值之后会自动向单片机发送数据。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值