衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【Renesas RA6M4開發(fā)板之I2C(模擬)驅(qū)動ssd1306 OLED屏幕】

RT-Thread單片機學(xué)習(xí) ? 來源:VOR234 ? 作者:h1654155972.7705 ? 2023-01-11 09:34 ? 次閱讀

1.0 OLED

在這里插入圖片描述

此圖轉(zhuǎn)載優(yōu)信電子

有機發(fā)光二極管OrganicLight-Emitting Diode,OLED),又稱為有機電激光顯示、有機發(fā)光半導(dǎo)體(OrganicElectroluminesence Display,OLED),是指有機半導(dǎo)體材料和發(fā)光材料在電場驅(qū)動下,通過載流子注入和復(fù)合導(dǎo)致發(fā)光的現(xiàn)象。本篇通過0.96寸OLED包采用I2C軟串口示例程序演示。

1.1產(chǎn)品特性:

OLED(Organic Light-Emitting Diode):有機發(fā)光二極管又稱為有機電激光顯示,OLED顯示技術(shù)具有自發(fā)光的特性,采用非常薄的有機材料涂層和玻璃基板,當(dāng)有電流通過時,這些有機材料就會發(fā)光,而且OLED顯示屏幕可視角度大,功耗低。OLED由于同時具備自發(fā)光、不需背光源(只上電是不會亮的,驅(qū)動程序和接線正確才會點亮)、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲面板、使用溫度范圍廣、結(jié)構(gòu)及制程簡單等優(yōu)異之特性。最先接觸的12864屏都是LCD的,需要背光,功耗較高,而OLED的功耗低,更加適合小系統(tǒng);由于兩者發(fā)光材料的不同,在不同的環(huán)境中,OLED的顯示效果更佳。模塊供電可以是3.3V也可以是5V,不需要修改模塊電路,OLED屏具有多個控制指令,可以控制OLED的亮度、對比度、開關(guān)升壓電路等指令。操作方便,功能豐富??娠@示漢字、ASClI、圖案等。同時為了方便應(yīng)用在產(chǎn)品上,預(yù)留4個M3固定孔,方便用戶固定在機殼上。

1.2產(chǎn)品參數(shù):

1、高分辨率:128*64(和12864LCD相同分辨率,但該OLED屏的單位面積像素點多)

2、超廣可視角度:大于160°

3、超低功耗:正常顯示時0.06W

4、寬供電范圍:直流3.3V-5V

5、工業(yè)級:工作溫度范圍-30℃~70℃

6、體積小:27mm27mm2mm

7、通信方式:l2C

8:、亮度、對比度可以通過程序指令控制

9:、使用壽命不少于16000小時

10、OLED屏幕內(nèi)部驅(qū)動芯片:SSD1306

2. RT-theard配置

2.1 硬件需求

1、需要0.96寸I2C驅(qū)動的OLED屏幕進行動態(tài)顯示, SDA---p511(p50b);SCL---p512(p50c) ,公式首先將p去掉還有三位,以p511為例,最后轉(zhuǎn)換的數(shù)字為 “(5x16x16)+(1x10)+1”算出來為 1291 轉(zhuǎn)換為16進制為0x50b。注:在程序里的話需要將字符轉(zhuǎn)為數(shù)字。

實現(xiàn)功能:

OLED屏幕;畫直線、矩形框、畫圓、畫光標(biāo)、字體。

板載按鍵中斷交互,LED3 1Hz頻閃。

在這里插入圖片描述

ssd1306屏幕地址看電阻接線情況為:0x3c(后面需要用到)

2、RA6M4開發(fā)板

在這里插入圖片描述

3、USB下載線,ch340串口和附帶6根母母線,rx---p613;tx---p614

在這里插入圖片描述

2.2 軟件配置

Renesas RA6M4開發(fā)板環(huán)境配置參照:【基于 RT-Thread Studio的CPK-RA6M4 開發(fā)板環(huán)境搭建】

1、新建項目RA6M4-IIC工程

在這里插入圖片描述

2、點擊RT-theard Setting,在軟件包下添加軟件包,然后搜索ssd相關(guān)軟件支持包,點擊添加即可,然后出現(xiàn)對應(yīng)包。

在這里插入圖片描述

3、配置ssd306,右鍵選擇配置項

在這里插入圖片描述

4、在軟件包中配置上述地址0x3c,開啟示例

在這里插入圖片描述

5、在硬件中,啟動I2C,設(shè)置端口

在這里插入圖片描述

6、全部保存剛剛的配置,更新當(dāng)前配置文件

在這里插入圖片描述

保存完是灰色,沒有保存是藍(lán)色。

3. 代碼分析

1、剛剛加載軟件包在packages文件夾下,示例代碼為

ssd1306_tests.c

/*
 * Copyright (c) 2020, RudyLo 

#include 
#include 
#include 

#include 
#include 
#include "ssd1306.h"
#include "ssd1306_tests.h"

void ssd1306_TestBorder()
{
    ssd1306_Fill(Black);

    uint32_t start = rt_tick_get();
    uint32_t end = start;
    uint8_t x = 0;
    uint8_t y = 0;
    do {
        ssd1306_DrawPixel(x, y, Black);

        if((y == 0) && (x < 127))
            x++;
        else if((x == 127) && (y < 63))
            y++;
        else if((y == 63) && (x > 0)) 
            x--;
        else
            y--;

        ssd1306_DrawPixel(x, y, White);
        ssd1306_UpdateScreen();
    
        rt_thread_mdelay(5);
        end = rt_tick_get();
    } while((end - start) < 8000);
   
    rt_thread_mdelay(1000);
}

void ssd1306_TestFonts()
{
    ssd1306_Fill(Black);
    ssd1306_SetCursor(2, 0);
    ssd1306_WriteString("Font 16x26", Font_16x26, White);
    ssd1306_SetCursor(2, 26);
    ssd1306_WriteString("Font 11x18", Font_11x18, White);
    ssd1306_SetCursor(2, 26+18);
    ssd1306_WriteString("Font 7x10", Font_7x10, White);
    ssd1306_SetCursor(2, 26+18+10);
    ssd1306_WriteString("Font 6x8", Font_6x8, White);
    ssd1306_UpdateScreen();
}

void ssd1306_TestFPS()
{
    ssd1306_Fill(White);
   
    uint32_t start = rt_tick_get();
    uint32_t end = start;
    int fps = 0;
    char message[] = "ABCDEFGHIJK";
   
    ssd1306_SetCursor(2,0);
    ssd1306_WriteString("Testing...", Font_11x18, Black);
   
    do {
        ssd1306_SetCursor(2, 18);
        ssd1306_WriteString(message, Font_11x18, Black);
        ssd1306_UpdateScreen();
       
        char ch = message[0];
        memmove(message, message+1, sizeof(message)-2);
        message[sizeof(message)-2] = ch;

        fps++;
        end = rt_tick_get();
    } while((end - start) < 5000);
   
    rt_thread_mdelay(1000);

    char buff[64];
    fps = (float)fps / ((end - start) / 1000.0);
    snprintf(buff, sizeof(buff), "~%d FPS", fps);
   
    ssd1306_Fill(White);
    ssd1306_SetCursor(2, 18);
    ssd1306_WriteString(buff, Font_11x18, Black);
    ssd1306_UpdateScreen();
}

void ssd1306_TestLine()
{
    ssd1306_Line(1,1,SSD1306_WIDTH - 1,SSD1306_HEIGHT - 1,White);
    ssd1306_Line(SSD1306_WIDTH - 1,1,1,SSD1306_HEIGHT - 1,White);
    ssd1306_UpdateScreen();
    return;
}

void ssd1306_TestRectangle()
{
    uint32_t delta;

    for(delta = 0; delta < 5; delta ++) 
    {
        ssd1306_DrawRectangle(1 + (5*delta),1 + (5*delta) ,SSD1306_WIDTH-1 - (5*delta),SSD1306_HEIGHT-1 - (5*delta),White);
    }
    ssd1306_UpdateScreen();
    return;
}

void ssd1306_TestCircle()
{
    uint32_t delta;

    for(delta = 0; delta < 5; delta ++) 
    {
        ssd1306_DrawCircle(20* delta+30, 30, 10, White);
    }
    ssd1306_UpdateScreen();
    return;
}

void ssd1306_TestArc()
{
    ssd1306_DrawArc(30, 30, 30, 20, 270, White);
    ssd1306_UpdateScreen();
    return;
}

void ssd1306_TestPolyline()
{
    SSD1306_VERTEX loc_vertex[] =
    {
        {35,40},
        {40,20},
        {45,28},
        {50,10},
        {45,16},
        {50,10},
        {53,16}
    };

    ssd1306_Polyline(loc_vertex,sizeof(loc_vertex)/sizeof(loc_vertex[0]),White);
    ssd1306_UpdateScreen();
    return;
}

void ssd1306_TestAll()
{
    ssd1306_Init();

    ssd1306_TestFPS();
    rt_thread_mdelay(3000);

    ssd1306_TestBorder();

    ssd1306_TestFonts();
    rt_thread_mdelay(3000);

    ssd1306_Fill(Black);
    ssd1306_TestRectangle();
    ssd1306_TestLine();
    rt_thread_mdelay(3000);

    ssd1306_Fill(Black);
    ssd1306_TestPolyline();
    rt_thread_mdelay(3000);

    ssd1306_Fill(Black);
    ssd1306_TestArc();
    rt_thread_mdelay(3000);

    ssd1306_Fill(Black);
    ssd1306_TestCircle();
    rt_thread_mdelay(3000);
}

#ifdef FINSH_USING_MSH
MSH_CMD_EXPORT(ssd1306_TestAll, test ssd1306 oled driver);
#endif

2、此庫包含畫直線(ssd1306_TestPolyline();)、矩形框(ssd1306_TestRectangle();)、畫圓(ssd1306_TestCircle();)、畫光標(biāo)(ssd1306_TestArc();)、字體(ssd1306_TestFonts();)。調(diào)用時直接在串口CMD命令輸入“ssd1306_TestAll”,即可查看對應(yīng)切換。

在這里插入圖片描述

3、main.c文件在re_gen文件夾下,主程序圍繞“hal_entry();”函數(shù)(在src文件夾)

main.c

/* generated main source file - do not edit */
#include "hal_data.h"
            int main(void) {
              hal_entry();
              return 0;
            }

hal_entry.c

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author        Notes
 * 2021-10-10     Sherman       first version
 * 2021-11-03     Sherman       Add icu_sample
 */

#include 
#include "hal_data.h"
#include 

#define LED3_PIN    BSP_IO_PORT_01_PIN_06
#define USER_INPUT  "P105"

void hal_entry(void)
{
    rt_kprintf("
Hello RT-Thread!
");

    while (1)
    {
        rt_pin_write(LED3_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED3_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }
}

void irq_callback_test(void *args)
{
    rt_kprintf("
 IRQ00 triggered 
");
}

void icu_sample(void)
{
    /* init */
    rt_uint32_t pin = rt_pin_get(USER_INPUT);
    rt_kprintf("
 pin number : 0x%04X 
", pin);
    rt_err_t err = rt_pin_attach_irq(pin, PIN_IRQ_MODE_RISING, irq_callback_test, RT_NULL);
    if(RT_EOK != err)
    {
        rt_kprintf("
 attach irq failed. 
");
    }
    err = rt_pin_irq_enable(pin, PIN_IRQ_ENABLE);
    if(RT_EOK != err)
    {
        rt_kprintf("
 enable irq failed. 
");
    }
}
MSH_CMD_EXPORT(icu_sample, icu sample);

4. 下載驗證

1、編譯重構(gòu)

在這里插入圖片描述

在這里插入圖片描述

編譯成功

2、下載程序

在這里插入圖片描述

下載成功

3、CMD串口調(diào)試

在這里插入圖片描述

然后板載復(fù)位

輸入:ssd1306_TestAll,開始顯示!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • OLED
    +關(guān)注

    關(guān)注

    119

    文章

    6219

    瀏覽量

    224817
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1495

    瀏覽量

    124545
  • Renesas
    +關(guān)注

    關(guān)注

    0

    文章

    1758

    瀏覽量

    22914
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5121

    瀏覽量

    98190
  • RA6M4
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    479
收藏 人收藏

    評論

    相關(guān)推薦

    Renesas RA6M4開發(fā)板I2C讀取BMP180氣壓溫度】

    本篇通過Renesas RA6M4開發(fā)板采用I2C讀取BMP180傳感器的氣壓溫度示例程序演示。
    的頭像 發(fā)表于 01-16 09:29 ?4077次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>之</b><b class='flag-5'>I2C</b>讀取BMP180氣壓溫度】

    SSD1306的相關(guān)資料分享

    SSD1306(OLED驅(qū)動芯片介紹)在介紹0.96寸 SSD1306之前先附上模塊鏈接:點擊購買SSD1306
    發(fā)表于 11-17 06:24

    SSD1306I2C通信的方式

    SSD1306后,接上GND,VCC,SCL,SDA四條線后,屏幕是不會自動亮起的,需要CPU寫入數(shù)據(jù)驅(qū)動它顯示。查閱SSD1306的手冊,我們可以發(fā)現(xiàn)與其通信的方式。在這里我們使用的
    發(fā)表于 12-01 08:35

    OpenHarmony輕量系統(tǒng)開發(fā)【7】驅(qū)動I2C顯示OLED屏幕

    摘要:本文簡單介紹如何操作I2C去顯示OLED屏幕,并且實現(xiàn)動畫播放、中文英文顯示、繪圖等功能適合群體:適用于潤和Hi3861開發(fā)板,L0輕量系統(tǒng)驅(qū)
    發(fā)表于 01-21 16:37

    淺論I2C驅(qū)動ssd1306 OLED顯示屏示例程序演示

    功能:OLED屏幕;畫直線、矩形框、畫圓、畫光標(biāo)、字體。板載按鍵中斷交互,LED3 1Hz頻閃。ssd1306屏幕地址看電阻接線情況為:0x3c
    發(fā)表于 07-13 10:41

    【觸覺智能 Purple Pi開發(fā)板試用】點亮I2C_SSD1306

    Purple Pi開發(fā)板 板載了兩個i2c,今天使用i2c0來驅(qū)動SSD1306。1、前面有幾個大佬已經(jīng)
    發(fā)表于 11-03 14:30

    Renesas RA6M4開發(fā)板USB-H評測活動

    1、Renesas RA6M4開發(fā)板USB-H評測  這次是第二次接觸這塊開發(fā)板了,但是還是第一次仔細(xì)觀察這塊
    發(fā)表于 11-22 16:08

    【BPI-Pico-RP2040 開發(fā)板SSD1306 OLED顯示

    模塊,內(nèi)部驅(qū)動芯片是SSD1306。二、OLED驅(qū)動(一)接線OLED提供I2C接口,線序如下:
    發(fā)表于 03-26 22:52

    使用RT-Thread Studio和CPK-RA2L1點亮0.96寸OLED ssd1306

    設(shè)備名字,打開SSD1306 I2C example hardware  5、配置 RA Smart Configurator, 選擇r_iic_master,根據(jù)上面使用的I2通的,
    發(fā)表于 04-03 16:14

    基于SSD1306OLED開發(fā)模塊

    基于SSD1306OLED開發(fā)模塊,包含SSD1306-Revision-1.1.pdf和SSD1306命令.doc
    發(fā)表于 02-24 14:03 ?98次下載

    SSD1306(OLED驅(qū)動芯片介紹)

    SSD1306(OLED驅(qū)動芯片介紹)在介紹0.96寸 SSD1306之前先附上模塊鏈接:點擊購買SSD1306
    發(fā)表于 11-09 18:36 ?63次下載
    <b class='flag-5'>SSD1306</b>(<b class='flag-5'>OLED</b><b class='flag-5'>驅(qū)動</b>芯片介紹)

    開發(fā)板評測】Renesas RA6M4開發(fā)板SDIO(SDHI)

    本次評測的開發(fā)板Renesas的CPK-RA6M4開發(fā)板,它是一款Renesas官方基于RA6M4
    的頭像 發(fā)表于 12-27 13:15 ?2659次閱讀

    Renesas RA6M4開發(fā)板I2C讀取mpu6050】

    本篇通過Renesas RA6M4開發(fā)板采用I2C讀取mpu6050傳感器的角加速度,角速度和溫度示例程序演示。
    的頭像 發(fā)表于 01-17 09:07 ?8597次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>之</b><b class='flag-5'>I2C</b>讀取mpu6050】

    Renesas RA6M4開發(fā)板DHT11溫濕度讀取】

    本篇通過Renesas RA6M4開發(fā)板DHT11溫濕度讀取示例程序演示。
    的頭像 發(fā)表于 01-18 17:18 ?1736次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>之</b>DHT11溫濕度讀取】

    RA4M2開發(fā)(2)----基于IIC驅(qū)動OLED

    在e2studio中創(chuàng)建新的工程并導(dǎo)入必要的文件,包括I2C驅(qū)動代碼和SSD1306 OLED顯示驅(qū)動
    的頭像 發(fā)表于 07-27 10:04 ?1784次閱讀
    <b class='flag-5'>RA4M2</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>2</b>)----基于IIC<b class='flag-5'>驅(qū)動</b><b class='flag-5'>OLED</b>
    香港六合彩图| 至尊百家乐娱乐| 百家乐官网庄闲| 太阳城申博娱乐城| 百家乐官网群| 百家乐官网怎么玩呀| 威尼斯人娱乐棋牌平台| 24山吉凶视频| 博彩通百家乐官网概率| 大发888博狗博彩| 百家乐庄闲客户端| 玩百家乐官网678娱乐城| 大连娱网棋牌步步为赢| 澳门百家乐怎玩| 金百家乐官网网站| 崇信县| 威尼斯人娱乐城易博| 怎么赢百家乐官网的玩法技巧和规则 | 百家乐官网视频游戏视频| 澳门顶级赌场百家乐| 百家乐和| CEO百家乐官网的玩法技巧和规则| 博盈百家乐官网游戏| 998棋牌游戏| 金冠百家乐的玩法技巧和规则| 阳宅24山流年吉凶方位| 百家乐官网投注心态| 百家乐天下| 大发888娱乐城下载lm0| 百家乐技巧何为百家乐之路| 沙龙百家乐官网娱乐场开户注册 | 凤凰百家乐的玩法技巧和规则| 八卦与24山| 樱桃木百家乐官网桌| 百家乐官网赢钱皇冠| 娱乐城送| 百家乐剁手| 百家乐官网怎么发牌| 网上百家乐官网真实吗| 新濠娱乐城| 大发888为什么这么卡|