完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
生成报告以及初始化代码,编译程序。若程序没有出错,下载这个两个头文件添加进工程目录Inc文件夹里面。
image1.himage2.h 这个两头文件保存的是图像信息,是通过STemWin中的BmpCvt.exe软件将图片转换C语言的。 此软件可在固件库里面找到:STM32Cube_FW_F7_V1.3.0MiddlewaresSTSTemWinSoftware 下面简单讲解一下如何将图片转为C语言。以.jpg格式的图片为例。 先用Windows自带的画图工具打开图片,调整图片的像素大小,然后另存为BMP 图片。 |
|
|
|
|
|
用BmpCvt.exe软件打开BMP图片,选择File->Save as ... 另存为,保存类型选择位图。
图片格式选择为RGB565格式,红蓝交换。 添加头文件,将刚才的图片包含进工程
|
|
|
|
|
|
再main函数里面,while循环前面添加应用程序。程序中先初始化SDRAM,然后通过DMA2D将要显示的图片传输到显存中,图片的大小为512 x 300。上面的设置Layer 0显存起始地址为0xD0000 0000,Layer 1显存起始地址为0xD0100 0000。
|
|
|
|
|
|
编译程序并下载到开发板中,接上屏幕,可以看到右上角显示两张图片层叠。
上面显示的为静态图片,下载添加程序可以让图片动起来。在while循环中添加如下程序。
程序中调用HAL_LTDC_SetWindowPosition函数设置图片显示的位置。通过不断这是图片的显示位置可以让图片实现左右移动的效果。最后添加声明变量。
重新编译程序并下载到开发板中,可以看到两个张图片左右移动,并且可以层叠显示。 |
|
|
|
|
|
打开原来的工程目录,添加一个BSP和一个Fonts文件夹
BSP文件夹中包含sdram驱动文件和lcd驱动文件,Fonts文件夹中包含各种大小的字体。 将这两个目录中的路径添加到工程中,添加stm32746_lcd.c文件。 |
|
|
|
|
|
在stm32746g_lcd.h头文件中可以看到LCD的控制操作函数,包括显示字符,画图等操作。
删除前面添加的应用程序,在main.c中添加头文件导入stm32746_lcd驱动文件。
在main函数中添加应用程序,程序首先初始化SDRAM,然后初始化LCD。设置单层显示,红色背景,蓝色字体,最后在屏幕上显示字符串。
|
|
|
|
|
|
五、滚动显示字符。
复制刚才的的工程修改文件夹名,打开工程keil 工程。 Log.zip 下载上面应用程序解压到工程目录下,Log包含下面三个文件,把lcd_log.c添加到工程中,并添加log文件夹路径到工程中。 在main文件中添加 lcd_log.h头文件。
|
|
|
|
|
|
打开 lcd_log_comf.h头文件可以看到如下代码。修改宏定义可以设置字体大小和颜色以及显示行数。
代码中以及重构了fputc函数,所以使用printf函数输出时,实际上是输出到显示屏上显示,不在是通过串口发送到电脑上显示。故把usart.c中的函数重构注释删掉或者注释掉。
在main函数中添加以下应用程序,程序先初始化SDRAM以及LCD,设置单层显示。
最后添加变量 i。
编译程序并下载到开发板上可以看到 LCD屏幕滚动显示字符。 |
|
|
|
|
|
打开 lcd_log_comf.h头文件可以看到如下代码。修改宏定义可以设置字体大小和颜色以及显示行数。
代码中以及重构了fputc函数,所以使用printf函数输出时,实际上是输出到显示屏上显示,不在是通过串口发送到电脑上显示。故把usart.c中的函数重构注释删掉或者注释掉。 01 /* USER CODE BEGIN 1 */ 02 //#ifdef __GNUC__ 03 // /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 04 // set to 'Yes') calls __io_putchar() */ 05 // #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) 06 //#else 07 // #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) 08 //#endif /* __GNUC__ */ 09 ///** 10 // * @brief Retargets the C library printf function to the USART. 11 // * @param None 12 // * @retval None 13 // */ 14 //PUTCHAR_PROTOTYPE 15 //{ 16 // /* Place your implementation of fputc here */ 17 // /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */ 18 // HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); 19 20 // return ch; 21 //} 22 /* USER CODE END 1 */ 在main函数中添加以下应用程序,程序先初始化SDRAM以及LCD,设置单层显示。 01 /* USER CODE BEGIN 2 */ 02 /* Initialize the SDRAM */ 03 BSP_SDRAM_Init(); 04 /* Initialize the LCD */ 05 BSP_LCD_Init(); 06 07 BSP_LCD_SetLayerVisible(1, DISABLE); 08 BSP_LCD_SelectLayer(0); 09 10 /* Initialize LCD Log module */ 11 LCD_LOG_Init(); 12 13 /* Show Header and Footer texts */ 14 LCD_LOG_SetHeader((uint8_t *)"Waveshare Electronics"); 15 LCD_LOG_SetFooter((uint8_t *)"WaveShare Open7XXI-C board"); 16 /* USER CODE END 2 */ 17 18 /* Infinite loop */ 19 /* USER CODE BEGIN WHILE */ 20 while (1) 21 { 22 /* USER CODE END WHILE */ 23 24 /* USER CODE BEGIN 3 */ 25 LCD_UsrLog (" Hello World ... %dn",i); 26 LCD_ErrLog (" Hello World ... %dn",i); 27 LCD_DbgLog (" Hello World ... %dn",i++); 28 HAL_Delay(1000); 29 } 30 /* USER CODE END 3 */ 最后添加变量 i。 1 /* USER CODE BEGIN 1 */ 2 int i =0; 3 /* USER CODE END 1 */ 编译程序并下载到开发板上可以看到 LCD屏幕滚动显示字符。 |
|
|
|
|
|
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11788 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 15:34 , Processed in 0.947921 second(s), Total 94, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号