梁工 发表于 2024-8-26 17:14:27

Ai8051U驱动1.44寸黑白点阵LCD12864实验程序-SPI-DMA刷整屏523us,超高帧频

Ai8051U驱动1.44寸黑白点阵LCD12864实验程序
===SPI-DMA刷整屏523uS,超高帧频

本例程基于AI8051U为主控芯片的实验箱V1.1版本进行编写测试。
使用Keil C251编译器,Memory Model推荐设置XSmall模式,
默认定义变量在edata,单时钟存取访问速度快。
edata建议保留1K给堆栈使用,
空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。

黑白点阵屏LCD12864驱动程序,驱动IC为ST7565R,SPI接口,
通过SPI-DMA将1024字节的图片数据送到彩屏,传送时不占用CPU时间。
显示图形,汉字,英文,数字。
驱动芯片: ST7565R, ST7567A, UC1701(注意: UC1701的对比度设置不同).

其中图形显示发送命令和图片数据使用SPI-DMA操作,
传输数据时不占用CPU时间,做GUI最方便了。
可以先操作定义于xdata的1024字节缓存,然后触发SPI-DMA即可,
523us或943us即可自己动刷完。

本例运行于40MHz, SPI速度为主频4分频(10MHz),
每次SPI-DMA传输总时间943us,
SPI速度为主频2分频(20MHz),每次SPI DMA传输总时间523us。
将要显示的内容放在1024字节的显存中,启动DMA传输即可。

下载时, 选择时钟 40MHz (用户可自行修改频率后重新编译即可).
下图使用的屏其点阵宽高比是3:4的,所以显示圆形成了椭圆,
这种屏显示字符、汉字就比较好看。





程序源码:


神农鼎 发表于 2024-9-1 21:54:54



并口LCD12864用DMA直接刷新@AI8051U, 不占用CPU时间,管脚兼容 89C52 - TFT/LCD12864/LCD1602/红外遥控 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)

神农鼎 发表于 2024-9-11 15:19:39


延申阅读:



https://www.stcaimcu.com/forum.php?mod=viewthread&tid=10411

晓飛飛 发表于 2024-8-26 22:22:24


梁工威武

{:4_250:}{:4_250:}{:4_250:}

浦江一水 发表于 2024-9-2 10:17:15


这个刷屏显图速度可成为标杆了.学习了.

{:4_250:}{:4_250:}{:4_250:}

topsjb 发表于 2024-9-21 00:37:30

//========================================================================
// 函数: void SPI_DMA_ISR (void) interrupt DMA_SPI_VECTOR
// 描述:SPI_DMA中断函数.
// 参数: none.
// 返回: none.
// 版本: V1.0, 2024-1-5
//========================================================================
void SPI_DMA_ISR (void) interrupt DMA_SPI_VECTOR
{


梁工你好, 程序这里,编译出现错误,能解答一下吗?

LCD12864-ST7565R-SPI-DMA.C(408): error C168: interrupt: value not in range 0 ... 31

梁工 发表于 2024-9-21 12:32:53

topsjb 发表于 2024-9-21 00:37
//========================================================================
// 函数: void SPI_DMA_ISR ...

你要打个补丁,扩展中断号,否则大于31的中断号就会报错。


topsjb 发表于 2024-9-21 18:14:34

{:4_174:}
这样啊,我刚开始学C251,
感谢梁工。

胡嘉鑫 发表于 2024-11-13 00:11:56

又发现好玩的了

eqxinrzq 发表于 2024-11-19 12:51:24

此程序可否帮忙移植到STC8A8K64D4
页: [1] 2
查看完整版本: Ai8051U驱动1.44寸黑白点阵LCD12864实验程序-SPI-DMA刷整屏523us,超高帧频