HAL库源码移植与使用之8080时序屏OLED使用解析

正点原子的OLED是使用SSD1306来驱动的,并设计了多种通讯方式,通过背后的焊点来选择

这里以正点原子开发板最常用的8080并口通讯来讲

引脚定义

各正点原子开发板对OLED的接线

8080时序图

发送数据示例代码

void oled_wr_byte(uint8_t data, uint8_t cmd) 
{	
	OLED_RS (cmd);	/* 数据类型,由传参决定 */
    	OLED_CS ( 0 );	/* 拉低片选线,选中SSD1306 */
    	OLED_WR ( 0 );	/* 拉低WR线,准备数据 */
    	oled_data_out(data); /* WR低电平期间,准备数据 */
 	OLED_WR ( 1 );	/* 在WR上升沿,数据发出 */
    	OLED_CS ( 1 );	/* 取消片选 */
 	OLED_RS ( 1 );	/* 释放RS线,恢复默认 */
}
void oled_data_out(uint8_t data)
{
    	GPIOC->ODR = (GPIOC->ODR & 0XFF00) | (data & 0X00FF);
}

指令集

你可想象成有OLED芯片内有个缓冲区GRAM,接收你通过输入列地址页地址和对应数据存进去的一个跟oled一样大的缓冲区图片数据,该区域就是保存你输入进来的图片数据再通过你想要的输出方式输出给屏幕

其他指令

输出方式:

为了提高速度,正点的代码里在mcu的ram创建了个数组来存储要发送的图片,发送时把这个数组发出去就是一张图片,GRAM是oled屏里面接收mcu发来的图片信息的地方,oled芯片被设置显示方式后就会自动刷新GRAM图片以被设定好的更新方向刷新到oled屏

页与段的概念:

为了更好的的传输,OLED设计时就把行的概念用页替代,只不过现在是八行为一页,然后用段代替列,然后把页编号为0xB0 0xB1.....

这样指定哪一页哪一列就能输出一个8位数据,指定其中哪一个点亮哪一个点灭  0灭1亮

正点原子代码解析:

因为正点原子使用的 转字模软件是从上到下从左到右从高位到低位输出对应数组的点位信息,所以该代码也是这样设计的

0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40, 0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04这是字符A输出的结果,那就得把图像倒过来显示

因为它是把要把原本横排显示的变成竖排排序写成第一第三字节.....,把原本竖排显示的编成横排编号,所以你显示时要行竖换着显示

因为oled输出信息时也具有可连续发送的功能,你设置第一个x  ,y点就可以从该点自左往右连续写入信息直到该页被写满自动停止

  • 22
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广药门徒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值