小组做数据库网站/班级优化大师怎么用
欢迎关注
程序员小哈带你玩转嵌入式,微信搜索:嵌入式从0到1,更多干货等着你。
想进小哈技术交流群,请加程序员小哈个人微信,带你嵌入式入门进阶。
目录
文章目录
- 欢迎关注
- 序言
- 字幕显示原理
- 取模软件设置
- 字模选项设置
- 生成字库
- 硬件连接
- 代码实现
- 测试结果
- 资料下载
序言
之前我们分享了,如何使用STM32驱动OLED液晶屏,讲了SSD1306控制芯片的驱动,对其驱动时序和常用命令做了介绍,详细请参考下面链接:
STM32驱动0.96寸OLED液晶屏
上篇中我们已经实现在OLED屏上显示出英文字符,除去数字、字母、符号等,OLED还能显示汉字、图片及任意图形。今天我们来介绍一下取模软件的使用,看看如何在OLED屏上显示中文,具体实现如下。
字幕显示原理
我们用的OLED液晶屏是由128*64个发光点阵组成,即分辨率是128*64。
ASCII码可以6*8、8*8、8*16像素,汉字一般显示像素为16*16。
一般为了显示效果理想,英文和数字常选用8*16像素显示。
取模软件设置
推荐使用比较好用的取模软件:PCtoLCD2002。
字模选项设置
生成字库
将生成的字库信息复制到工程中待用,一般都是把自定义的字库放到一个单独的.h文件中。
硬件连接
测试电路连接:
GND—地
VCC—3.3V
D0—接PB9,作为SPI总线的CLK时钟引脚,时钟
D1—接PB8,作为SPI总线的MOSI数据引脚,数据输入
RES—接PB7
D/C—接PB6,高电平为写数据,低电平为写命令
CS—片选,接PB5,接地选中SSD1306
代码实现
显示汉字函数实现:
其中x为第一个像素在行中的位置,范围为0-127;
如果一行占8个像素,那么y代表行号,范围为0-7。
no为咱们自定义字库数组中的索引。
void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no)
{ uint8_t t,adder=0;OLED_Set_Pos(x,y); for(t=0;t<16;t++){OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);adder+=1;} OLED_Set_Pos(x,y+1); for(t=0;t<16;t++){ OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);adder+=1;}
}
main函数实现:
#include "stm32f10x.h"
#include "delay.h"#include "oled.h"int main(void)
{int i = 0;//延时函数初始化 delay_init();OLED_Init();OLED_Clear();//OLED_ShowString(0,4,(u8 *)" 0.96 OLED Demo "); for(i=0;i<8;i++){OLED_ShowCHinese(i*16,0,i+0); }for(i=0;i<5;i++){OLED_ShowCHinese(i*16,2,i+8); } for(i=0;i<3;i++){OLED_ShowCHinese(i*16,4,i+13); }for(i=0;i<7;i++){OLED_ShowCHinese(i*16,6,i+16); }while(1) { delay_ms(10); }
}
测试结果
资料下载
有需要工程源码及相关软件的可以加我微信。
微信号:chengxuyuanxiaoha(程序员小哈),微信好友位名额有限,先到先得哈