实验10.3汉字点阵与OLED屏显

通过本次实验,我们深入了解了OLED显示技术的原理和特点,掌握了OLED显示屏的驱动方法和控制技巧。此外,OLED显示屏具有轻薄、柔性的特点,可以应用于各种形状的产品中。通过查阅手册和编写实际的程序,深入理解了OLED屏的工作原理,包括通信协议、控制命令、显示像素等方面的知识。学到了如何在嵌入式系统中进行硬件编程,包括使用特定的库函数和调用底层接口来控制OLED屏的显示。
摘要由CSDN通过智能技术生成

一、OLED屏显和汉字点阵编码原理

OLED(有机发光显示器)是一种自发光式显示器,其工作原理是利用有机半导体材料和发光材料在电场驱动下产生发光现象。OLED屏幕由多个像素组成,每个像素可以独立控制亮度和颜色。

在OLED屏幕上显示汉字时,需要将汉字的点阵数据发送到屏幕的相应位置。这可以通过SPI(串行外设接口)协议来实现。SPI协议是一种同步串行通信协议,用于连接芯片之间进行数据传输。在OLED屏幕中,主机通过SPI总线将图像数据发送到屏幕,包括控制信号、数据信号等

1.汉字点阵编码原理:

汉字点阵编码是将汉字转换为点阵图像的编码方式。每个汉字都可以由一个矩形的点阵组成,点阵中的每个点都可以表示一个汉字的一个字形。常用的点阵大小有12x12、14x14、16x16等,每个点用0或1表示,0代表没有点,1代表有点。这样,每个汉字就可以通过一个二进制数组来表示。

汉字的点阵编码通常采用区位码的方式表示。区位码将汉字分为若干区和若干位,每个区包含一定数量的汉字,每个位包含一定数量的字形。通过区号和位号的组合,可以唯一地确定一个汉字的点阵编码。例如,在GB2312编码中,每个汉字的区号范围是0x01-0x7F,位号范围是0x01-0x7F,共分为94个区和94个位,每个区包含94个汉字,每个位包含94个字形。

2.SPI协议原理:

SPI(Serial Peripheral Interface)是一种串行外设接口,它是一种同步串行通信协议,用于连接微控制器、存储器、传感器等外围设备。SPI通信是基于主从模式的,一个主设备控制传输并与多个从设备通信。

SPI协议的原理是主从模式,即一个主设备控制传输并与多个从设备通信。主设备和从设备之间通过SPI总线连接,这条总线由四根线组成:SCLK(serial clock)、MOSI(master out slave in)、MISO(master in slave out)和SS(slave select)。主设备通过SPI总线将时钟信号(SClk)发送到从设备,从设备在接收到时钟信号后开始传输或接收数据。数据传输是全双工的,主设备通过MOSI线发送数据到从设备,从设备通过MISO线将数据发送回主设备。在传输数据之前,主设备会通过SS线选择一个从设备进行通信。当SS线上的电平被拉低时,被选中的从设备会进入通信状态,而其他未被选中的从设备则保持沉默。

SPI总线根据数据传输的顺序不同而有所区别。在模式0中,数据传输的顺序是高位在前,低位在后;而在模式1中,数据传输的顺序是低位在前,高位在后。这两种模式是SPI总线的主要模式。

SPI的时序:

在这里插入图片描述

二、使用OLED显示自己的学号和姓名

1.在文字取模软件中设置相应选项

在这里插入图片描述

2.在该软件中输入文字并获取字模并存入对应的oled库

在这里插入图片描述

在这里插入图片描述

3.在test.c的文件中TEST_MainPage函数位置编写

在这里插入图片描述

4.编写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();         //主界面显示测试
		/*OLED_Clear(0); 
		Test_Color();            //刷屏测试
		OLED_Clear(0); 
		Test_Rectangular();      //矩形绘制测试
		OLED_Clear(0); 
		Test_Circle();           //圆形绘制测试
		OLED_Clear(0); 
		Test_Triangle();         //三角形绘制测试
		OLED_Clear(0);  
		
		TEST_English();          //英文显示测试
		OLED_Clear(0);
		TEST_Number_Character(); //数字和符号显示测试
		OLED_Clear(0); 
		
		TEST_Chinese();          //中文显示测试
		OLED_Clear(0); 
		TEST_BMP();              //BMP单色图片显示测试
		OLED_Clear(0); 
		TEST_Menu1();            //菜单1显示测试
		OLED_Clear(0); 
		TEST_Menu2();            //菜单2显示测试
		OLED_Clear(0); */
	}
}

5.实现效果

在这里插入图片描述

三、使用OLED显示AHT20的温度和湿度

1.编写bsp_i2c.c中的read_AHT20函数

void read_AHT20(void)
{
   
	uint8_t   i;
	for(i=0; i<6; i++)
	{
   
		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值