OLED屏显+汉字点阵

您所在的位置:网站首页 16x16点阵显示汉字代码 OLED屏显+汉字点阵

OLED屏显+汉字点阵

2024-07-12 16:31| 来源: 网络整理| 查看: 265

stm32采用SPI实现OLED屏显 简介OLED屏显例子一、准备工作二、显示学号和姓名三、滑动显示四、显示温湿度 总结+参考

简介 SPI SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。 (1)SDO/MOSI – 主设备数据输出,从设备数据输入; (2)SDI/MISO – 主设备数据输入,从设备数据输出; (3)SCLK – 时钟信号,由主设备产生; (4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需 要将从设备对应的片选引脚电平拉低或者是拉高。OLED OLED也被称之为第三代显示技术,其显示原理与LCD有着本质上的区别,主要是通过电场驱动,有机半导体材料和发光材料通过过载流子注入和复合后实现发光。 OLED屏显例子 一、准备工作 汉字点阵 在嵌入式设备OLED上显示的汉字大多数都属于点阵汉字。 本次使用的是16 点阵的字库,每个字型的点阵数据为 16×16(横行点数×纵列点数),共 256 个二进制位,32 个字节。汉字 16 点阵字型数据的 32 个字节排列次序是以 0 字节开始到 31 字节结束,均用十六进制表示 。

例如:陈 在这里插入图片描述 对应的数据为:

0x00,0x40,0x78,0x40,0x4B,0xFC,0x50,0x40, 0x53,0xFC,0x62,0x44,0x53,0xFC,0x4A,0x44, 0x4B,0xFC,0x48,0x40,0x69,0x50,0x52,0x48, 0x44,0x46,0x48,0x44,0x40,0x40,0x40,0x40

两个对应一行,其中黑点为1,空白为0,二进制转换为16进制。

OLED 在厂家提供的链接中下载 0.96寸SPI 7针中文wiki 的工程文件。点击下载0.96寸OLED显示屏模块0.91 在这里插入图片描述

OLED 屏幕与野火开发板的连接 在这里插入图片描述

二、显示学号和姓名 显示名字 在这里插入图片描述 在这里插入图片描述在这里插入图片描述根据自己的开发板型号,打开对应的工程 在这里插入图片描述在工程中增添点阵 根据需要显示的字添加 在这里插入图片描述修改test.c中的显示函数 void TEST_MainPage(void) { GUI_ShowString(45,0,"631807060403",8,1); GUI_ShowCHinese(16,20,16,"陈高玉",1); delay_ms(1500); delay_ms(1500); }

main.c函数中可以注释掉目前不用的函数

#include "delay.h" #include "sys.h" #include "oled.h" #include "gui.h" #include "test.h" int main(void) { delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 OLED_Init(); //初始化OLED OLED_Clear(0); //清屏(全黑) while(1) { TEST_MainPage(); //主界面显示测试 } } 结果显示 编译成功后调试keil,使用st-link烧录。将OLED 屏幕与开发板相连即可看见结果(忽略室友小手)

在这里插入图片描述

三、滑动显示 直接控制硬件刷新实现,源码基于上一个例子 滑动方式 0x2F:激活滚动 0x27:水平向左滚动 0x29:水平和垂直滚动右方向 0xA3:垂直滚动 添加代码 在test.c中定义滚动函数 void TEST_roll(void) { OLED_WR_Byte(0x2F,OLED_CMD); OLED_WR_Byte(0x27,OLED_CMD); OLED_WR_Byte(0x00,OLED_CMD); OLED_WR_Byte(0x00,OLED_CMD); OLED_WR_Byte(0x07,OLED_CMD); OLED_WR_Byte(0x2E,OLED_CMD); while(1); }

main.c中添加滚动函数

while(1) { TEST_MainPage(); //主界面显示测试 TEST_roll(); //滚动 } 运行结果 (不太清晰…)在这里插入图片描述 四、显示温湿度

向USER里添加之前温湿度博客中工程里的几个文件bsp_i2c.h,bsp_i2c.c,usart.h,usart.c(点击此工程获取)

向HARDWARE中添加已存在的stm32f10x_usart.c文件,位于工程里的 /STM32F10x_FWLib/src中

在这里插入图片描述

修改main.c函数 #include "delay.h" #include "sys.h" #include "oled.h" #include "gui.h" #include "test.h" #include "usart.h" #include "bsp_i2c.h" int main(void) { int *H,*T; int a,b,c,d; int H1=0; int T1=0; H=&H1; T=&T1; delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 OLED_Init(); //初始化OLED OLED_Clear(0); IIC_Init(); //清屏(全黑) while(1) { read_AHT20_once(T,H); GUI_ShowCHinese(16,00,16,"温湿度显示 ",1); GUI_ShowCHinese(16,10,16,"温度 ",1); a=*T/10; b=*T%10; GUI_ShowNum(60,10,a,2,16,1); GUI_ShowString(80,10,".",16,1); GUI_ShowNum(82,10,b,2,16,1); GUI_ShowCHinese(16,30,16,"湿度 ",1); c=*H/10; d=*H%10; GUI_ShowNum(60,30,c,2,16,1); GUI_ShowString(80,30,".",16,1); GUI_ShowNum(82,30,d,2,16,1); } } 运行结果 在这里插入图片描述 总结+参考

学习汉字点阵然后显示到OLED 屏幕上,感觉是很棒的。在把字形转换为计算机的语言二进制时花了不少时间,然后才发现有个程序可以直接转换。OLED 屏幕感觉前途无量啊,需要继续学习。

stm32实现oled显示 SPI通信协议



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3