## STM32也要bad apple-TFT彩屏版

STM32也要bad apple-TFT彩屏版

很久之前就在B站上看到各种屏幕放bad apple,所谓“有屏幕的地方就有bad apple”。前端时间刚好一直在学stm32,所以便打算自己用自己手上这块野火stm32f103开发板、以及TFT液晶屏来放bad apple。之前做项目时一直在参考CSDN上各种大佬写的文章,受益匪浅。但是关于用TFT彩屏来放bad apple找的到很少,所以在完成后,打算自己写一篇博客来记录下。

一、 大体思路

前面在b站上看各种大佬的作品,大致懂了思路。stm32f103处理速度毕竟有限,所以要想提高刷屏速度,最好让stm32直接读bin文件的图片,这样省去解码bmp图片的过程,才会大大提高刷屏速度。所以先把bad apple图片转成bin文件,然后存在sd卡中,然后用FAT文件系统去读sd卡,然后把像素点写进液晶屏中。

二、准备材料
stm32f103开发板、3.2寸TFT彩屏、sd卡

二、详细步骤

1.把图片转为bin文件
我在CSDN上下了一套bad apple的图片让后用Img2lcd直接批量转化就行了,如下图
ImgLCD
注意:
(1)输出灰度选16位真彩色,因为TFT液晶读的RGB565。
(2)包含图像头数据钩去掉。
由于Img2Lcd批量转化是得到一个个的bin文件,开始我试着一个个地读bin文件发现开始刷屏速度还行,但是到几千张地时候i速度越来越慢,所以建议把所有的bin文件合成一个来读。这里我用来CMD命令来合并bin文件。

首先我们把所有bin文件放到D盘data文件夹里
第一步,D:加 enter键,显示D:\

第二步,cd(空格) D:\data 加enter键,显示D:\data>

第三步,type(空格) *.bin>res 加enter键

2.初始化IO口和TFT液晶屏
这里直接用野火的源码就行了,就不废话了。

3.移植文件系统
这里野火视频里讲的也很详细,也不多说了,注意也不把支持中文的C936头文件包含进来,因为用不到,更重要的是影响刷屏速度。

4.读SD卡中的bin文件,液晶显示
这里直接上代码的,关键在于指针操作


```c
BYTE pColorData[51200];   //定义一个数据缓冲区
FIL binfsrc;
FATFS binfs[1];
FRESULT binpres;


void Lcd_show_bin(unsigned char *pic_name)
{
    int i,j,k;
    unsigned char tmp_name[20];
		WORD data;
		BYTE * pdata = pColorData;
		BYTE * tmp_pdata;
    unsigned int read_num;
    sprintf((char*)tmp_name,"0:%s",pic_name);
	
    f_mount(&binfs[0],"0:",1);
	
    binpres = f_open( &binfsrc , (char *)tmp_name, FA_OPEN_EXISTING | FA_READ);
	
    for(k=0;k<5356;k++)      //一共5356张图片
	  {
			for(j=0;j<3;j++)   	//一张图片有2*240*320字节数据,所以分三次读 3*51200								
			{
				tmp_pdata = NULL;
				f_lseek (&binfsrc,(51200*j+k*300*512));   
				f_read(&binfsrc,pdata,51200,&read_num);	
				tmp_pdata = pdata;
						
				for(i=0;i<25600;i++)                    //每个像素点两个字节,即一个字
				{  
						data = LD_WORD(tmp_pdata);      //逐字读							
						ILI9341_Write_Data(data); 
						tmp_pdata = tmp_pdata + 2;
		
				}
			}
	 }			
   f_close(&binfsrc);   
}

然后再来看主函数
unsigned char name[9]={"/new.bin"};    //文件名

int main(void)
{
	
	ILI9341_Init ();         //LCD初始化
	
	ILI9341_GramScan(3);
	
	ILI9341_OpenWindow ( 0,0,320,240 );
  ILI9341_Write_Cmd ( CMD_SetPixel );	
  
  Lcd_show_bin(name);
} 
```c

这样我们就能看到TFT彩屏上放起来bad apple 的动画了,大概能达到20FPS,我没有试着用寄存器开发,感觉用寄存器开发可能速度会跟快些。
代码传送门:
https://download.csdn.net/download/weixin_43789065/11989531

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值