NRF51822---驱动0.96寸OLED屏幕(连载4)

NRF51822---驱动0.96寸OLED屏幕(连载4)

前言

  上节讲解了IIC的协议,并用STM32实践了一下。今天趁热打铁,用NRF51822来进行驱动屏幕,程序昨天晚上加班搞完了。这一节主要讲解下0.96屏幕驱动原理和NRF51822的驱动程序、

屏幕简介

  该屏幕支持多种驱动方式:3线或者4线SPI、8080、6800等等,我用的是IIC驱动的屏幕。不过原理明白了,什么驱动方式都无所谓了。

简介一定要突出一个“简”字、

连接方法

  该屏幕已经设定为IIC模式了,因此不需要你自行修改电路,只需要看丝印把引脚一一对应连接到NRF51822上,我用的是P021和P022引脚,定义如下:

//-----------------OLED IIC端口定义----------------  					   

#define OLED_SCLK_Clr() nrf_gpio_pin_clear(21)//SCL
#define OLED_SCLK_Set() nrf_gpio_pin_set(21)

#define OLED_SDIN_Clr() nrf_gpio_pin_clear(22)//SDA
#define OLED_SDIN_Set() nrf_gpio_pin_set(22)

对应开发板如下图:
在这里插入图片描述

驱动原理

IIC

关于IIC的理论部分请点击 这里.

SSD1306

  关于这个芯片,其实也没啥好说的,主要内容还是IIC。以下几点手册中都有详细说明,这里提一下:
  1.配置设备地址
  通过将SA0(D/C#)脚上拉到高电平可以设置从机地址第七位为 1,将SA0(D/C#)脚下拉到低电平可以设置从机地址第七位为 0。通过SA0(D/C#)脚的上拉和下拉来设置从机地址,可以最多挂载2个屏幕。
  2.寻址模式
  寻址模式配置时需要注意,自己配置的寻址模式要和取模或者字库芯片的取模方式一致,不然显示会出问题、
  3.指令
  指令有点多,不过没必要记住,因为手册上会有初始化流程,跟着流程配置一遍就行了,下次在用的时候直接移植就可以了。

代码实现

OLED驱动代码是在上一个GPIO的版本上修改完后的。移植的STM32 单片机的0.96屏幕驱动文件

  1.添加oled.c文件,改文件可以直接从平衡小车的代码中提取,连同文件夹一起复制到NRF51822的工程目录中,如下图:

在这里插入图片描述

  2.代码中添加C文件,并且添加.h文件路径,如下图:

在这里插入图片描述

在这里插入图片描述

  3.修改底层代码,配置SDA和SCL引脚:
//-----------------OLED IIC端口定义----------------  					   

#define OLED_SCLK_Clr() nrf_gpio_pin_clear(21)//SCL
#define OLED_SCLK_Set() nrf_gpio_pin_set(21)

#define OLED_SDIN_Clr() nrf_gpio_pin_clear(22)//SDA
#define OLED_SDIN_Set() nrf_gpio_pin_set(22)

 		     
#define OLED_CMD  0	//写命令
#define OLED_DATA 1	//写数据
  4.修改主函数配置,添加引脚初始化和屏幕初始化函数
int main(void)
{
	nrf_gpio_cfg_output(21);	//配置P021引脚为输出SCL
	nrf_gpio_cfg_output(22);	//配置P022引脚为输出
	nrf_gpio_pin_set(21);
	nrf_gpio_pin_set(22);
	nrf_delay_ms(800);
	OLED_Init();
	nrf_delay_ms(200);
	OLED_Clear();
	while(1)
	{
		OLED_ShowString(0,0,"nrf51822",12);
		OLED_ShowCHinese(0,2,7);
		OLED_ShowCHinese(16,2,8);
		OLED_ShowString(0,5,"D_SEngineer",12);
	}
}
  5.编译下载,实际效果如图所示:

在这里插入图片描述

总结

  本小节再次总结了IIC,以及重新用NRF51822驱动了0.96寸屏幕,到现在是不是突然觉得写代码这么简单?理解了原理,修改下底层配置就能从STM32移植到NRF51822上、

代码领取方式,复制下面关键字到公众号回复 ,即可领取源码。

  nrf51822外设--0.96寸屏

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值