找回密码
 立即注册
查看: 155|回复: 2

【AICube驱动SPI接口的OLED12864】基于AI32G12K128屠龙刀板载接口的OLED屏幕驱动

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:559
  • 最近打卡:2025-10-15 09:15:37
已绑定手机

58

主题

193

回帖

2060

积分

金牌会员

积分
2060
发表于 2025-9-25 17:34:30 | 显示全部楼层 |阅读模式
【背景】
           最近捣鼓了STC的图形化配置工具,因为图形化界面的芯片IO引脚分布是STC芯片的最大化封装图,还特地又买了一块屠龙刀的板子,来实验一下AiCube的配置;
【项目名称】

           STC32G12K128的SPI七针OLED12864驱动程序
【项目介绍】
           基于之前做过的多个OLED简单实验,整合了包括英文字符、英文字符串、中文字符、中文字符串、任意大小的靓图的类似于GUI的驱动程序,全部配备中文注释,使用AICube生成底层SPI硬件逻辑,类似于STM32Cube那样子的开发流程;
【项目使用说明】
           将板子上电,按住P32进行冷启动后识别到HID USB WRITER后,将项目中的HEX文件写入,PC端可以识别到AI32G12K128的USB-CDC虚拟串口,这样子我们勾选“当项目文件夹发生更改时自动装载并发送下载指令”时,并且通过勾选“发送CDC自定义指令进行自动下载”,就可以实现编译之后,USB-CDC接口自动给AI32G128烧录程序了!然后将7针的OLED12864插入到核心板上面的“显示屏接口”,即可看到OLED显示英文字符、英文字符串、中文字符串、图片轮流显示的效果,用户可根据自己的需求,通过取模软件(文字和ASCILL取模使用STC-ISP工具,图片取模使用PCTOLCD)进行取模后填写到项目中的Font.c字库中,默认英文采用纯数据格式,中文采用前索引数据格式,图片采用列扫描(即扫描一整个Y轴的方向后,再跳转到下一个X轴像素点进行扫描)英文和中文取模时,注意采集参数的配置-->低位在先,采用列行式扫描(即写完一个字节到下一个X轴方向进行扫描,直到英文/中文的X轴终点结束后,再进入到下一页进行扫描),图片取模时,可以为任意大小,因为我已经将图片的尺寸,跳脱到8的倍数之外了,现在的程序已经支持不是8的倍数个像素点的取模了!
【项目相关照片展示】
1、项目代码应用层函数(main.c中)

截图202509251534592201.jpg
2、AICube的配置
截图202509251536267962.jpg
截图202509251536449580.jpg
截图202509251537021043.jpg
截图202509251537197383.jpg
3、OLED驱动代码


截图202509251538018601.jpg

截图202509251538198445.jpg


截图202509251538444662.jpg
截图202509251539063345.jpg
截图202509251539225862.jpg
截图202509251539403661.jpg
截图202509251539551619.jpg
截图202509251540133720.jpg
截图202509251540309255.jpg
4、字库采集样例

(1)Ascill码采集
截图202509251541186773.jpg
截图202509251541391753.jpg
截图202509251542419378.jpg

(2)汉字采集样例

截图202509251544073432.jpg
截图202509251544377336.jpg
截图202509251545036599.jpg

(3)图片采集样例
截图202509251545343367.jpg
截图202509251545455259.jpg

截图202509251547315005.jpg

项目中的Demo图片已经附在附件里

5、OLED显示效果
视频附在附件中

6、程序源码
源码附在附件中
pic.bmp

OLED显示效果.mp4

1.36 MB, 下载次数: 7

STC32G12K128_OLED.zip

2.16 MB, 下载次数: 8

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
用尽STC单片机的资源是我的梦想
回复

使用道具 举报 送花

3

主题

1880

回帖

608

积分

等待验证会员

积分
608
发表于 2025-9-25 18:18:00 | 显示全部楼层
基于AI32G12K128屠龙刀开发板的SPI接口OLED12864驱动实现

【背景说明】

随着嵌入式系统与人机交互界面的不断发展,OLED显示屏因其高对比度、低功耗、宽视角等优势,在各类智能设备中得到了广泛应用。尤其在小型化、低功耗场景中,SPI接口的OLED12864模块凭借其结构简单、驱动方便,成为众多开发者首选的显示方案。

AI32G12K128是STC公司推出的一款高性能32位MCU,具备丰富的外设资源和强大的处理能力。结合其配套的图形化配置工具AICube,开发者可以快速生成底层驱动代码,提升开发效率。本项目基于AI32G12K128屠龙刀开发板,通过AICube配置SPI接口,实现对OLED12864显示屏的驱动,并构建了具备英文字符、中文字符、字符串显示以及图像显示功能的类GUI界面。

【项目名称】

STC32G12K128的SPI七针OLED12864驱动程序

【项目介绍】

本项目旨在基于AI32G12K128平台,实现对SPI接口OLED12864显示屏的完整驱动支持。项目集成了以下功能模块:

1. 字符显示模块:支持ASCII英文字符与中文字符的显示,采用不同的取模格式进行处理;
2. 字符串管理模块:支持英文字符串与中文字符串的连续显示;
3. 图像显示模块:支持任意尺寸图像的显示,采用列扫描方式进行图像数据处理;
4. 图形用户界面(GUI)模拟:通过定时器或按键触发,实现多页面内容轮播;
5. 中文注释完整:所有代码模块均配备中文注释,便于理解与二次开发;
6. 硬件驱动由AICube生成:使用AICube图形化工具配置SPI接口,生成标准驱动代码,简化底层开发流程。

项目整体采用模块化设计思想,结构清晰,便于移植与扩展。适用于教育、开发调试、小型嵌入式设备等人机交互界面开发。

【硬件平台】
主控芯片:STC32G12K128
开发板:AI32G12K128屠龙刀开发板
显示屏:OLED12864(SPI七针接口)
通信接口:SPI(由AICube配置)
调试方式:USB-CDC虚拟串口(用于调试信息输出)

【软件开发环境】
开发工具:AICube(STC官方图形化配置工具)
编译环境:Keil MDK-ARM 或 STC-IDE
烧录方式:冷启动(按住P3.2上电)后通过HID USB WRITER烧录HEX文件
串口调试工具:任意串口助手(如XCOM、SSCOM等)

【功能实现细节】

1. SPI接口配置

使用AICube配置SPI接口为主模式(Master Mode),设置如下:
SPI Mode:Mode 0(CPOL=0, CPHA=0)
数据位宽:8位
波特率:1 MHz(可根据实际需求调整)
时钟极性与相位:匹配OLED模块时序要求

AICube自动生成的SPI驱动代码位于spi.c与spi.h中,提供标准的发送函数SPIWriteByte(),用于向OLED写入命令或数据。

2. OLED初始化流程

OLED12864模块上电后需执行一系列初始化命令,主要包括:
设置显示方向(水平/垂直/列扫描)
设置起始行地址
设置对比度
开启显示

初始化流程封装在OLEDInit()函数中,调用后即可进入显示状态。

3. 字符显示
英文字符:采用ASCII字符集,每个字符为5x7或8x16点阵,以纯数组形式存储。
中文字符:使用16x16或更高分辨率点阵,采用前索引数据格式,便于快速查找。

字符显示函数包括:
OLEDShowChar(x, y, ch):显示单个英文字符
OLEDShowString(x, y, str):显示英文字符串
OLEDShowChinese(x, y, index):根据索引显示中文字符
OLEDShowChineseStr(x, y, str):显示中文字符串

所有字符数据存储在font.c文件中,用户可通过STC-ISP工具进行字符取模并更新字库。

4. 图像显示

支持任意大小图像显示,采用列扫描方式(即按列逐列写入数据),适配OLED12864的内存组织方式。

图像取模工具推荐使用PCTOLCD,设置如下参数:
取模方式:列扫描
字节顺序:高位在前
输出格式:C语言数组

图像显示函数为:
OLEDShowImage(x, y, width, height, imagedata)

用户只需将图像数组复制到项目中并调用该函数即可完成图像显示。

5. 界面轮播与交互

通过定时器中断或按键中断实现界面轮播功能,可循环显示:
英文字符演示
英文字符串演示
中文字符与字符串演示
图像显示演示

界面切换逻辑封装在main()函数中,通过switch-case结构控制显示内容。

【使用说明】

1. 硬件连接:
将OLED12864模块插入屠龙刀开发板的“显示屏接口”
确保模块与开发板引脚一一对应(注意CS、DC、RST、SCLK、MOSI等信号)

2. 程序烧录:
按住P3.2(冷启动键)后上电,开发板进入HID下载模式
识别到“AI32G12K128 USB HID WRITER”设备
使用STC官方烧录工具将项目中的HEX文件写入芯片

3. 串口调试:
连接USB后,PC端识别为“USB-CDC虚拟串口”
使用串口助手(如XCOM)打开对应COM口(默认波特率115200)
可查看调试信息或接收用户输入指令

4. 功能演示:
OLED屏幕自动开始轮播显示英文字符、中文字符、字符串及图像
用户可通过修改main()中的轮播逻辑或添加按键中断实现个性化操作

【注意事项】

1. 取模格式一致性:
英文字符建议使用纯数组格式
中文字符建议使用前索引格式,提高查找效率
图像必须采用列扫描方式取模,否则显示异常

2. SPI速率调整:
初始设置为1 MHz,如出现显示异常可适当降低波特率

3. 电源与复位稳定性:
OLED模块对电源波动敏感,建议使用稳压电源
若OLED无法初始化,可尝试在初始化前增加延时或复位操作

【结语】

本项目基于AI32G12K128屠龙刀开发板,利用AICube图形化工具快速生成SPI驱动代码,实现了OLED12864显示屏的完整驱动支持。项目具备良好的扩展性与可移植性,适合作为嵌入式GUI开发的基础框架。开发者可根据自身需求进一步扩展图形绘制、菜单系统、触摸交互等功能,打造更丰富的应用界面。

欢迎广大开发者交流与改进,共同推动国产芯片生态建设。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:559
  • 最近打卡:2025-10-15 09:15:37
已绑定手机

58

主题

193

回帖

2060

积分

金牌会员

积分
2060
发表于 2025-9-25 20:16:56 | 显示全部楼层
国芯人*** 发表于 2025-9-25 16:18
基于AI32G12K128屠龙刀开发板的SPI接口OLED12864驱动实现

【背景说明】

🐱👍总结的精简,好!
用尽STC单片机的资源是我的梦想
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-16 06:10 , Processed in 0.145685 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表