拿到F429-Discovery一个月了,才写这个,实在抱歉。下面进入正题。 该例程使用的是Discovery板上的彩屏,以及SDRAM作为显存,其中的屏和SDRAM的驱动使用的是Discovery例程中自带的驱动。 本人只是做了小的改动,使其能显示汉字,采用的取模方式,字体大小是24*24。下面简单的说明一下做了哪些改动。 要驱动屏,需要调用以下几个函数: LCD_Init(); LCD_LayerInit(); LTDC_Cmd(ENABLE); 其中前两个是stm32f429i_discovery_lcd.c中的函数,最后那个函数是外设库里面的函数。 其中要说一下,在LCD_LayerInit();函数中,对LTDC_Layer_InitStruct结构体的这个参数设置就是把SDRAM的地址,赋值给LCD的显示,使SDAM成为LCD的显存。 /* Start Address configuration : the LCD Frame buffer is defined on SDRAM */ LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER; 主要是对LCD_DisplayStringLine();函数做了改造,又增加了两个写汉字的函数。下面贴图上来说明。 在这个函数中,首先是判断了下面要显示的是字符还是汉字,如果是字符则设置字符的字体,然后显示字符即可,如果是汉字则显示汉字的字体,然后调用LCD_DisplayChinese();函数进行汉字的显示。注意下面指针ptr要累加两次,因为汉字的内码是占用两个字节。有一点缺陷的是这样写之后似乎只能使用一种字体显示。如果要使用不同字体显示,可以增加一个设置汉字字体的函数和结构体。不知各位大神有什么好的方法。 这个函数的主要任务就是查找到汉字对应的点阵数据,这里创建了一个汉字点阵的结构体。 typedef struct { /*汉字字模数据结构 */ unsigned char Index[2]; /* 汉字内码索引 */ unsigned char Msk[72]; /* 汉字点阵数据 */ }FNT_GB24; 汉字内码是占两个字节,因为字体大小是24*24的,所以是72字节。同时,这个汉字的数据信息是使用的是字符的那个数据结构。 sFONT Font24x24 = { (const uint16_t*)Chinese24x24_Table->Index, 24, /* Width */ 24, /* Height */ }; 最后就是逐一打点即可,注意偏移位置的计算,最后的红色方框,是判断是否打完一行数据,一行数据是3个字节。 最后附上一张效果图,以及工程文件,欢迎大家批评指正。 |
【STM32F429开发日志】5.uCOS-ii V2.91 移植OK
图形化玩转Nucleo-STM32F413手机APP远程控制应用开发
【stm32F429开发日志】使用STM32CubeMX配置STM32F429_USB_HID
【STM32F429开发日志】(三)使用STM32Cube开发环境
【STM32F429开发日志】——网络收集的例程分享(包括所有STM32F429Discovery板上外设驱动)
分享个用STM32F429做的网络摄像头
STM32F429UCOS 源代码
【STM32F429开发日志】+hello led(闪烁led灯)
STM32F429DSICOVERY移植到STemWIN(图片+源码)
STM32F412G-DISCO 开发板开箱照及相关演示
我也弄了一下午字体,最后弄出来了,用得是这个,记录下
管理员~~你知道这贴上的取模软件是哪个吗?
比较急~~所以咨询一下你~~~
RE:【STM32F429开发日志】汉字显示(取模方式)
RE:【STM32F429开发日志】汉字显示(取模方式)
回复:【STM32F429开发日志】汉字显示(取模方式)
回复:【STM32F429开发日志】汉字显示(取模方式)
学习