找回密码
 立即注册
查看: 2675|回复: 26

Ai8051U驱动0.96寸单色OLED12864实验程序,SPI-DMA 刷整屏523us,超高帧频

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-8-26 16:44:06 | 显示全部楼层 |阅读模式
截图202409071039394104.jpg

Ai8051U驱动0.96寸单色OLED12864实验程序
===SPI-DMA整屏 523uS,超高帧频
本例程基于Ai8051U为主控芯片的实验箱V1.1版本进行编写测试。
使用Keil C251编译器,Memory Model推荐设置XSmall模式,

默认定义变量在edata,单时钟存取访问速度快。
edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量

加xdata关键字定义到xdata空间。
单色OLED12864显示屏驱动程序,驱动IC为SSD1306,SPI接口,

通过SPI DMA将1024字节的图片数据送到 OLED12864,
传送时不占用CPU时间。
显示图形,汉字,英文,数字.
其中图形显示发送命令和图片数据使用SPI DMA操作,传输数据时不占用CPU时间。
做GUI最方便了,可以先操作定义于xdata的1024字节缓存,然后触发SPI DMA即可,
最快523us即可自动刷完。
本例运行于40MHz, SPI速度为主频4分频(10MHz),每次SPI DMA传输总时间943us,

SPI速度为主频2分频(20MHz),每次SPI DMA传输总时间523us。
将要显示的内容放在1024字节的显存中,启动DMA传输即可。
下载时, 选择时钟 40MHz (用户可自行修改频率后重新编译即可).


截图202408261641313385.jpg

截图202408261642107019.jpg

截图202408261642319789.jpg

程序源码:
SSD1306驱动0.96寸OLED12864显示屏程序-SPI-DMA.rar (91.17 KB, 下载次数: 252)







回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-9-11 15:17:50 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:102
  • 最近打卡:2025-04-30 21:27:20
已绑定手机

6

主题

26

回帖

482

积分

中级会员

积分
482
发表于 2024-9-7 13:26:25 | 显示全部楼层
开发板啥时候上市呢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:275
  • 最近打卡:2025-05-01 08:42:32

2

主题

14

回帖

490

积分

中级会员

积分
490
发表于 2024-9-11 16:37:43 | 显示全部楼层
开发板啥时候上市呢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-04-27 14:08:21

3

主题

19

回帖

323

积分

中级会员

积分
323
发表于 2024-9-18 10:49:11 | 显示全部楼层
本帖最后由 业余菜狗 于 2024-9-18 10:50 编辑

按照demo里面代码接线,烧录,点亮啦

VID_20240916_151610.mp4

2.74 MB, 下载次数: 85

演示

点评

那就是用过 DMA-SPI,DMA 掌握了  详情 回复 发表于 2024-9-18 12:37
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-9-18 12:37:01 | 显示全部楼层
业余*** 发表于 2024-9-18 10:49
按照demo里面代码接线,烧录,点亮啦

那就是用过 DMA-SPI,DMA 掌握了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-04-29 13:02:20
已绑定手机

0

主题

130

回帖

174

积分

注册会员

积分
174
发表于 2024-11-11 22:15:37 来自手机 | 显示全部楼层
整整1.8寸TFT
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:161
  • 最近打卡:2025-05-01 13:35:47

0

主题

45

回帖

678

积分

高级会员

积分
678
发表于 2024-11-13 09:01:34 | 显示全部楼层
学习下。。。。。。。。。。。。。。。。。。。。。。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2024-12-02 16:33:16

9

主题

32

回帖

202

积分

中级会员

积分
202
发表于 2024-11-13 17:23:32 | 显示全部楼层
更改了SPI0就点不亮了。可否告知还有哪些地方需要更改?
这是我的管脚:
sbit P_OLED_CLK        =          P1^7;        //D0        SPI or II2 的时钟脚
sbit P_OLED_DIN        =   P1^5;        //D1        SPI or II2 的数据脚
sbit P_OLED_RST        =          P5^3;        //RES        复位脚, 低电平复位
sbit P_OLED_DC        =          P5^2;        //DC        数据或命令脚
sbit P_OLED_CS        =        P1^4;        //CS        片选脚

其它更改的地方:
void Initialize_OLED(void)        //initialize OLED
{
        SPI_Config(0, 0);
        //HSSPI_CFG2 = 0x40;//交换MOSI MISO, P3.3是MOSI

        P1n_standard(Pin4);        // SPI引脚设置为准双向口, SPI和控制信号
        PullUpEnable(P1PU,Pin4);        // 允许端口内部上拉电阻     PxPU, 要设置的端口对应位为1
       
        P5n_standard(Pin2+Pin3);// SPI引脚设置为准双向口, SPI和控制信号
        PullUpEnable(P5PU,Pin2+Pin3);        // 允许端口内部上拉电阻     PxPU, 要设置的端口对应位为1       

除了这些还需要哪些更改吗?不知道哪儿不对,在线请教哦。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2024-11-13 21:20:32 来自手机 | 显示全部楼层
mark,回去学习下
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:04 , Processed in 0.135756 second(s), 119 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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