完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
很久之前就在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直接批量转化就行了,如下图 注意: (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,我没有试着用寄存器开发,感觉用寄存器开发可能速度会跟快些。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:56 , Processed in 0.677308 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号