NRF51822---驱动0.96寸OLED屏幕(连载4)
生活随笔
收集整理的這篇文章主要介紹了
NRF51822---驱动0.96寸OLED屏幕(连载4)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
NRF51822---驅動0.96寸OLED屏幕(連載4)
- 前言
- 屏幕簡介
- 連接方法
- 驅動原理
- IIC
- SSD1306
- 代碼實現
- 總結
前言
上節講解了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.尋址模式 尋址模式配置時需要注意,自己配置的尋址模式要和取?;蛘咦謳煨酒娜∧7绞揭恢?#xff0c;不然顯示會出問題、 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引腳為輸出SCLnrf_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寸屏總結
以上是生活随笔為你收集整理的NRF51822---驱动0.96寸OLED屏幕(连载4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Latex基于longtable环境设置
- 下一篇: GitLab 运行GitLab-Runn