1. 程式人生 > >玩轉X-CTR100 l OLED顯示-SSD1306無字庫

玩轉X-CTR100 l OLED顯示-SSD1306無字庫

ole 照片 mpu6050 cto 漢字顯示 TP lac 進行 courier

技術分享圖片

更多塔克創新資訊歡迎登陸【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

OLED顯示屏具有自發光特性,不需要背光,對比度高等特點,常用於電子制作。

本節介紹0.96寸OLED顯示屏的使用,X-CTR100控制器配套專用OLED顯示模塊X-CTR100-OLED,即插即用。

本節例程也適用於具有SPI接口的通用OLED模組(SSD1306不帶字庫)。

技術分享圖片技術分享圖片

原理

OLED有機發光二極管(Organic Light-Emitting Diode),同時具備自發光,不需背光源、對比度高、厚度薄、視角廣、反應速度快、可用於撓曲性面板、使用溫度範圍廣、構造及制程較簡單等優異之特性,被認為是下一代的平面顯示器新興應用技術。

X-CTR100-OLED為X-CTR100控制器專用OLED顯示模塊,顯示模塊直接安插在X-CTR100控制器上。

顯示模塊采用0.96寸128X64規格OLED顯示屏,驅動芯片為SSD1306,不帶字庫,關於OLED顯示屏詳細資料請參考技術資料相關內容。

例程

實現了OLED顯示功能,並讀取加速度數據通過OLED實時顯示,顯示功能包括圖片顯示、字符顯示、漢字顯示、反色顯示。

硬件說明

硬件資源:

  • 串口UART1
  • MPU6050
  • SPI3擴展接口(LE)
  • X-CTR100-OLED顯示屏模組或具有SPI接口的OLED顯示模組(需自備)

技術分享圖片技術分享圖片

連接圖

技術分享圖片

軟件說明

X-SOFT軟件生態,X-API擴展文件如下。

ax_oled.c——OLED操作函數源文件

ax_oled.h——OLED操作頭文件

ax_oled_ascii.h——ASCII字模數據文件

ax_oled_chinese.h——漢字字模數據文件

ax_oled_picture.h——圖片數據文件

接口函數

void AX_OLED_Init(void); //OLED初始化

void AX_OLED_ClearScreen(void); //OLED清除屏幕

void AX_OLED_DisplayChar(uint8_t x, uint8_t y, uint8_t ch, uint8_t mode);

// OLED指定位置顯示一個ASCII字符(8X16

void AX_OLED_DisplayAsciiStr(uint8_t x, uint8_t y, uint8_t *ch, uint8_t mode);

//OLED指定位置顯示ASCII字符串(8X16

void AX_OLED_DisplayChinese(uint8_t x, uint8_t y, const uint8_t *pbuf, uint8_t mode);

//OLED指定位置顯示一個漢字(16X16

void AX_OLED_DisplayPicture(uint8_t x, uint8_t y, uint8_t xsize, uint8_t ysize, const uint8_t *pbuf, uint8_t mode); //OLED指定位置顯示一個指定尺寸照片

void AX_OLED_DisplayNum(uint8_t x, uint8_t y, uint8_t num, uint8_t mode);

//OLED指定位置顯示一個數字(8X16

void AX_OLED_DisplayValue(uint8_t x, uint8_t y, int32_t value, uint8_t inte, uint8_t deci, uint8_t mode);

//OLED指定位置顯示數值

X-CTR100-OLED模塊為不帶字庫OLED模組,字模需自己采集。當前X-API函數默認字符大小為16X8,漢字大小為16X16。ASCII字符已在ax_oled_ascii.h文件中,無須用戶準備,可直接使用。漢字和圖片需要用戶自己取模,下面以PCtoLCD2002完美版為例進行說明。

漢字提取,打開軟件,選擇字符模式。

技術分享圖片

選擇"選項"按鈕,按如下配置。

技術分享圖片

字高,字寬選擇16,輸入要取模的漢字,例如下"塔克科技",點擊"生成字模"按鈕,即可完成取模。

技術分享圖片

圖像取模類似,首先準備要取模的黑白BMP圖片,尺寸為小於128X64的任意圖片,可通過Windows自帶畫圖軟件編輯。打擊"文件-打開"按鈕,可載入圖片。點擊"生成字模"即可生成需要的字模。

技術分享圖片

例程代碼開始顯示XTARK LOGO圖片,然後顯示實時加速度數據,主程序代碼。

int main(void)

{

int16_t acel[3];

//XRT1初始化

AX_Init(115200);

printf("***OLED 顯示例程***\r\n\r\n");

//模塊初始化及配置

AX_OLED_Init();

//MPU6050初始化

AX_MPU6050_Init();

AX_MPU6050_SetAccRange(AX_ACC_RANGE_2G); //設置加速度量程

AX_MPU6050_SetGyroRange(AX_GYRO_RANGE_250); //設置陀螺儀量程

AX_MPU6050_SetGyroSmplRate(200); //設置陀螺儀采樣率

AX_MPU6050_SetDLPF(AX_DLPF_ACC94_GYRO98); //設置低通濾波器帶寬

AX_OLED_DisplayPicture(0, 0, 128, 8, PIC64X128_XTARK, 0);

AX_Delayms(1000);

AX_OLED_DisplayPicture(0, 0, 128, 8, PIC64X128_XTARK, 1);

AX_Delayms(1000);

AX_OLED_ClearScreen();

AX_OLED_DisplayChinese(0, 0, CH_, 1);

AX_OLED_DisplayChinese(16, 0, CH_, 1);

AX_OLED_DisplayChinese(32, 0, CH_, 1);

AX_OLED_DisplayChinese(48, 0, CH_, 1);

AX_OLED_DisplayChinese(64, 0, CH_, 0);

AX_OLED_DisplayChinese(80, 0, CH_, 0);

AX_OLED_DisplayChinese(96, 0, CH_, 0);

AX_OLED_DisplayChinese(112, 0, CH_, 0);

AX_OLED_DisplayAsciiStr(0, 2, "ACC_X:", 0);

AX_OLED_DisplayAsciiStr(0, 4, "ACC_Y:", 0);

AX_OLED_DisplayAsciiStr(0, 6, "ACC_Z:", 0);

while (1)

{

AX_MPU6050_GetAccData(acel); //讀取三軸加速度數據

AX_OLED_DisplayValue(48, 2, acel[0], 4, 2, 0); //顯示加速度數值

AX_OLED_DisplayValue(48, 4, acel[1], 4, 2, 0); //顯示加速度數值

AX_OLED_DisplayValue(48, 6, acel[2], 4, 2, 0); //顯示加速度數值

AX_Delayms(200);

AX_LEDG_Toggle();

}

}

實現效果

顯示效果如下,其中"塔克科技"為反色顯示,"創客精品"為正色顯示,加速度數據實時顯示,更新頻率為5Hz。

技術分享圖片技術分享圖片

玩轉X-CTR100 l OLED顯示-SSD1306無字庫