7脚0.96寸OLED使用方法及程序

这篇博客详细介绍了如何使用STM32F103C8T6微控制器通过模拟显示屏通信时序来驱动0.96寸128x64分辨率的OLED显示屏。代码实现包括了显示字符和汉字的功能,支持16x16汉字和8x16字符。博主提供了代码示例并指出其他STM32型号的适配步骤。附带了工程代码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.96寸OLED显示屏,控制芯片是SSD1306使用STM32F103CC8T6模拟显示屏通信时序。
使用STM32F103C8T6控制屏幕显示字符、汉字、数字。 标准库编写
汉字只能显示16X16大小的 字符只能显示8*16大小的
请添加图片描述

如何显示一个字符

  1. 0.96寸OLED分辨率是128X64,即X轴上有128个点Y轴上有64个点。

  2. 此显示屏一次控制Y轴方向上8个点的显示,所以把y轴方向上分为了八个页,(0-7)

  3. 在设定好显示光标位置后给显示屏发送8位数据,显示屏就会从左到右从上到下开始显示

  4. 要注意x的范围是(0-127)y的范围是(0-7)
    代码实现如下:
    void OLED_ShowChar(u8 x,u8 y,u8 chr)
    {
    u8 c=0,i=0;

    c = chr - ' ';                    //得到偏移后的值
    
    if(x>Max_Column-1)                //当显示的字符超过x轴范围在下一行显示
    

    {
    x = 0;
    y = y+2;
    }

    if(SIZE == 16)                    //当字体是16时,在y轴方向上是16位x轴方向上是8位
    	{
    		OLED_Set_Pos(x,y);           //设置光标位置
    		
    		for(i=0;i<8;i++)             //先打印上半部分,比如一个|,先打印它的上半部分
    		{
    		  OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);    
    		}
    		
    		OLED_Set_Pos(x,y+1);         //y的页加一
    		
    		for(i=0;i<8;i++)
    		{
    			OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
    	
    		}
    	}
    	else                          //6X8字体
    	{	
    		OLED_Set_Pos(x,y+1);
    		
    		for(i=0;i<6;i++)
    		{
    		   OLED_WR_Byte(F6x8[c*6][i],OLED_DATA);	
    		}
    	}
    

}
有空再写显示原理。
可以直接看程序代码,注释很详尽。

如果是用的其它STM32单片机只需要改以下三个部分就可以用了。因为用的是IO口模拟时序。
// 方法如下:
// 1. 改一下启动文件startup_stm32f10x_md.h 看芯片使用什么样的启动文件
// 2. 从新在配置选项中选一下芯片型号。
// 3. 在配置选项中的C\C++下把宏定义STM32F10X_MD,USE_STDPERIPH_DRIVER,改一下。

附一下百度网盘的下载链接,有问题可以讨论。
工程代码:链接:https://pan.baidu.com/s/1xeYccevLzTRP9lFE7LzKGw
提取码:1111

### 四0.96OLED显示屏技术参数 四0.96OLED显示屏是一种基于IIC通信协议的小型显示设备,具有轻便、低功耗的特点。以下是其主要技术参数: - **屏幕尺**:0.96。 - **像素密度**:通常分辨率为128×64像素[^1]。 - **接口类型**:支持IIC(两线串行总线),其中SDA为数据线,SCL为时钟线[^3]。 - **供电电压**:一般工作在3.3V至5V之间,具体取决于所使用的驱动芯片型号[^2]。 - **颜色模式**:单色显示,常见为蓝色或白色像素点阵。 这种显示屏利用有机材料作为发光层,因此无需额外的背光源即可实现清晰明亮的画面呈现。相比LCD同类产品,它拥有更高的对比度更快的响应速度。 ### 应用场景分析 四设计简化了硬件连接复杂度,非常适合用于嵌入式系统中的状态指示器或者小型数据显示终端。典型应用场景如下: #### 1. 嵌入式开发板配套使用 对于Arduino、Raspberry Pi或其他MCU平台而言,这类小尺OLED非常适合作为人机交互界面的一部分,用来展示传感器读数、时间日期等基本信息。 #### 2. IoT 设备可视化解决方案 在智能家居领域内,可以通过网络获取环境变量并将结果显示出来;比如温湿度计就可以采用此类屏来直观反映当前室内气候条件变化趋势图谱。 #### 3. 科学实验工具辅助功能扩展 实验室仪器经常需要用到简单的图形化输出选项以便于观察测量过程中的动态数值更新情况。此时选用一块经济实惠又易于编程操作的oled模组无疑是一个明智的选择。 ```python import Adafruit_SSD1306 from PIL import Image,ImageDraw,ImageFont disp = Adafruit_SSD1306.SSD1306_128_64(rst=None) # 初始化并清除显示器内容 disp.begin() disp.clear() disp.display() image = Image.new('1', (disp.width, disp.height)) draw = ImageDraw.Draw(image) font = ImageFont.load_default() text="Hello OLED" maxwidth,maxheight=draw.textsize(text,font=font) x=(disp.width-maxwidth)/2 y=(disp.height-maxheight)/2 draw.rectangle((0,0,disp.width-1,disp.height-1),outline=1,fill=0) draw.text((x,y), text, font=font, fill=255) disp.image(image) disp.display() ``` 上述Python代码片段展示了如何借助Adafruit库快速启动一个基本的文字打印程序到SSD1306驱动的核心0.96oled屏幕上。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值