完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`有没有大佬可以帮忙看一下这个问题啊?我自己写了一个字库头文件ziku.h用来显示汉字,里边的汉字除了“电”字乱码,其他的都能显示,这是怎么回事啊?有遇到过类似情况的大佬吗?代码如下: **********************ziku.h************************ #ifndef __ZIKU_H #define __ZIKU_H #include "sys.h" struct typFNT_HZ16 { unsigned char Index[3]; unsigned char Msk[32]; }; //16*16汉字字模表 struct typFNT_HZ16 codeHZ_16[]= { /*-- 文字: 电 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ "电",0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8, 0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE, /*-- 文字: 子 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ "子",0x00,0x00,0x7F,0xF8,0x00,0x10,0x00,0x20,0x00,0x40,0x01,0x80,0x01,0x00,0xFF,0xFE, 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00, }; #endif ***************************show.c汉字显示********************************* #include "sys.h" #include "show.h" #include "lcd.h" #include "ziku.h" //16*16汉字 void PutHZ1616(unsigned short x,unsigned short y,unsigned char c[2],unsigned int dcolor,unsigned int bgcolor) { unsigned int i,j,k; //TFT_SetWindow(x,y,x+32-1, y+32-1); //选择坐标位置 LCD_Set_Window(x,y,16,16); LCD_SetCursor(x,y); LCD_WriteRAM_Prepare(); for (k=0;k<32;k++) { //32标示自建汉字库中的个数,循环查询内码 if ((codeHZ_16[k].Index[0]==c[0])&&(codeHZ_16[k].Index[1]==c[1])) { for(i=0;i<32;i++) { unsigned short m=codeHZ_16[k].Msk; for(j=0;j<8;j++) { if((m&0x80)==0x80) { LCD_WR_DATA(dcolor); } else { LCD_WR_DATA(bgcolor); } m<<=1; } } } } } void showhz16str(unsigned int x1,unsigned int y1,unsigned char *str,unsigned int dcolor,unsigned int bgcolor) { unsigned char l=0; while(*str) { PutHZ1616(x1+l*8,y1,(unsigned char*)str,dcolor, bgcolor); str+=1;l+=1; } } ***********************************main.c********************************************** #include "led.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "lcd.h" #include "adc.h" #include "show.h" //ALIENTEK Mini STM32开发板范例代码15 //ADC实验 //技术支持:www.openedv.com //广州市星翼电子科技有限公司 int main(void) { //u16 adcx; //float temp; delay_init(); //延时函数初始化 uart_init(9600); //串口初始化为9600 LED_Init(); //初始化与LED连接的硬件接口 LCD_Init(); Adc_Init(); //ADC初始化 POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(60,150,200,16,16,"dianzi_1803"); LCD_ShowString(60,70,200,16,16,"shujucaiji"); LCD_ShowString(60,230,200,16,16,"2020/12/31"); LCD_ShowString(60,170,200,16,16,"liwu"); LCD_ShowString(60,190,200,16,16,"jiangziyi"); LCD_ShowString(60,210,200,16,16,"caimengze"); //showhz32str(60,250,"电子",YELLOW,BLACK); showhz16str(60,30,"电子",YELLOW,BLACK); } ` |
|
相关推荐
1 条评论
4个回答
|
|
谢谢大家,问题解决了。
|
|
|
|
自己用取模软件先看看
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1187 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1122 浏览 2 评论
2223 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1311 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1735 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 11:17 , Processed in 0.922589 second(s), Total 108, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号