浦江一水
发表于 2024-3-7 13:06:38
关于6楼的视频再说明一下:
视频显示了双页切换的动态过程,体现的是一种水平滑动的效果。别以为是双页显示,这么迟钝,很不可取。
实际双页切换就是一句话,瞬间切换的。
21cnsound
发表于 2024-3-27 08:50:56
把OLED12864玩的真遛,学习了。
deng560258
发表于 2024-3-30 16:23:28
正在学习中 非常感谢
cadplus
发表于 2024-4-24 09:14:42
浦江一水 发表于 2024-3-7 12:58
楼上朋友您好,谢谢您对本帖的浏览。
关于硬件SPI驱动的方法,源程序中是包含有的,可能是我没有说明清楚。 ...
新人请教,普通IO模拟SPI或硬件SPI接口方式二者在应用上有什么不同?
看了看你分享的代码,除了硬件SPI接线SCLK和MOSI是固定IO的,就是写入代码有一点点区别
#if(UseSPI)
SPDAT = Dat;
while(SPIF == 0);
SPIF = 1; //清SPIF标志
WCOL = 1; //清WCOL标志
#else
for(i=0;i<8;i++)
{ if(Dat&0x80)OLED_SDA=1;
else OLED_SDA=0;
Dat <<= 1; //左移位
OLED_SCK = 1;
OLED_SCK = 0;
}
#endif
刚刚接触这种点阵的显示方法,独自摸索免强能点亮却不知其然,是不是这种7脚串口显示屏都能改成硬件SPI驱动?
浦江一水
发表于 2024-4-24 17:02:22
cadplus 发表于 2024-4-24 09:14
新人请教,普通IO模拟SPI或硬件SPI接口方式二者在应用上有什么不同?
看了看你分享的代码,除了硬件SPI ...
楼上朋友,谢谢浏览回复.
说到普通IO模拟SPI或硬件SPI接口方式上有何不同,我个人理解是:
主要就是在输出字节的方式有所不同, 速度不同.
硬件SPI方式, 输出一个字节,一次写出一字节, 剩下的就是硬件按既定时序发送了, 速度快, 源码简单. (但要了解各种CUP的SPI寄存器定义用法, 并且要确定所选用的IO口,必须是具有硬件SPI功能的口.)
普通IO模拟SPI方式, 要完成输出一个字节, 就是循环八次,每次只将一个位移出,消耗的指令周期长了. 所以速度就慢了. (端口不需要一定具有硬件SPI功能,便于移植)
现就以下这段代码, 加上注释, 再看不同点...
#if(UseSPI) //如果是选择硬件SPI方式.
SPDAT = Dat; //将一个字节数据放入寄存器SPDAT中,
while(SPIF == 0); //等待硬件SPI发送完毕...(要了解SPIF标志位的定义用法)
SPIF = 1; //清SPIF标志
WCOL = 1; //清WCOL标志
#else //如果采用普通IO模拟SPI方式
for(i=0;i<8;i++) //循环八次
{ if(Dat&0x80)OLED_SDA=1; //根据最高位是1,输出端口电平为1
else OLED_SDA=0;//根据最高位是0,输出端口电平为0
Dat <<= 1; //左移一位
OLED_SCK = 1; //给个脉冲推出: 时钟0->1跳变
OLED_SCK = 0; //时钟1->0跳变
} //完成一字节的输出...
#endif //结束条件编译...
两种方式各有特点: 模拟方式,便于移植,速度慢. 硬件方式,速度快,对端口功能有要求.
设计具体项目时,条件允许的话,优先选用硬件SPI方式.
仅供参考...
cadplus
发表于 2024-4-25 13:06:53
浦江一水 发表于 2024-4-24 17:02
楼上朋友,谢谢浏览回复.
说到普通IO模拟SPI或硬件SPI接口方式上有何不同,我个人理解是:
主要就是在输出字 ...
多谢解惑{:4_269:}
电子小陈
发表于 2024-5-6 14:41:42
读呢?
toddyang
发表于 2024-5-20 16:26:17
mark,好好学习一下
Rain_Personal
发表于 2024-5-20 17:02:40
前两天刚通过iic方式,模拟或者硬件驱动ssd1306的12864oled屏,想把滚屏的驱动代码也加上,博主有没有研究过呢?
浦江一水
发表于 2024-5-21 07:41:36
Rain_Personal 发表于 2024-5-20 17:02
前两天刚通过iic方式,模拟或者硬件驱动ssd1306的12864oled屏,想把滚屏的驱动代码也加上,博主有没有研究 ...
谢谢楼上坛友的浏览回复.
不知"滚屏"是如何定义?看一下6楼的视频, 算不算是"滚屏"了?