打印
[综合信息]

【华大测评】+OLED

[复制链接]
1307|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天搞了一下OLED.
原理图:

程序:
#include "hc32_ddl.h"
#include "oled.h"
/*******************************************************************************
* Local type definitions ('typedef')
******************************************************************************/

/*******************************************************************************
* Local pre-processor symbols/macros ('#define')
******************************************************************************/


/* LED0 Port/Pin definition */
#define  LED0_PORT        (PortE)
#define  LED0_PIN         (Pin06)

/* LED1 Port/Pin definition */
#define  LED1_PORT        (PortA)
#define  LED1_PIN         (Pin07)

/* LED0~1 toggle definition */
#define  LED0_TOGGLE()    (PORT_Toggle(LED0_PORT, LED0_PIN))
#define  LED1_TOGGLE()    (PORT_Toggle(LED1_PORT, LED1_PIN))

/*******************************************************************************
* Global variable definitions (declared in header file with 'extern')
******************************************************************************/

/*******************************************************************************
* Local function prototypes ('static')
******************************************************************************/

/*******************************************************************************
* Local variable definitions ('static')
******************************************************************************/



/**
******************************************************************************
** \brief  Initialize the system clock for the sample
**
** \param  None
**
** \retval None
******************************************************************************/
static void SysClkIni(void)
{
    en_clk_sys_source_t     enSysClkSrc;
    stc_clk_sysclk_cfg_t    stcSysClkCfg;
    stc_clk_xtal_cfg_t      stcXtalCfg;
    stc_clk_mpll_cfg_t      stcMpllCfg;

    MEM_ZERO_STRUCT(enSysClkSrc);
    MEM_ZERO_STRUCT(stcSysClkCfg);
    MEM_ZERO_STRUCT(stcXtalCfg);
    MEM_ZERO_STRUCT(stcMpllCfg);

    /* Set bus clk div. */
    stcSysClkCfg.enHclkDiv = ClkSysclkDiv1;   // Max 168MHz
    stcSysClkCfg.enExclkDiv = ClkSysclkDiv2;  // Max 84MHz
    stcSysClkCfg.enPclk0Div = ClkSysclkDiv1;  // Max 168MHz
    stcSysClkCfg.enPclk1Div = ClkSysclkDiv2;  // Max 84MHz
    stcSysClkCfg.enPclk2Div = ClkSysclkDiv4;  // Max 60MHz
    stcSysClkCfg.enPclk3Div = ClkSysclkDiv4;  // Max 42MHz
    stcSysClkCfg.enPclk4Div = ClkSysclkDiv2;  // Max 84MHz
    CLK_SysClkConfig(&stcSysClkCfg);

    /* Switch system clock source to MPLL. */
    /* Use Xtal32 as MPLL source. */
    stcXtalCfg.enMode = ClkXtalModeOsc;
    stcXtalCfg.enDrv = ClkXtalLowDrv;
    stcXtalCfg.enFastStartup = Enable;
    CLK_XtalConfig(&stcXtalCfg);
    CLK_XtalCmd(Enable);

    /* MPLL config. */
    stcMpllCfg.pllmDiv = 1u;
    stcMpllCfg.plln =50u;
    stcMpllCfg.PllpDiv = 4u;
    stcMpllCfg.PllqDiv = 4u;
    stcMpllCfg.PllrDiv = 4u;
    CLK_SetPllSource(ClkPllSrcXTAL);
    CLK_MpllConfig(&stcMpllCfg);

    /* flash read wait cycle setting */
    EFM_Unlock();
    EFM_SetLatency(EFM_LATENCY_5);
    EFM_Lock();

    /* Enable MPLL. */
    CLK_MpllCmd(Enable);

    /* Wait MPLL ready. */
    while(Set != CLK_GetFlagStatus(ClkFlagMPLLRdy))
    {
        ;
    }

    /* Switch system clock source to MPLL. */
    CLK_SetSysClkSource(CLKSysSrcMPLL);
}



/**
*******************************************************************************
** \brief  Main function of template project
**
** \param  None
**
** \retval int32_t return value, if needed
**
******************************************************************************/
int32_t  main(void)
{
   
    uint32_t i;
   
    stc_port_init_t stcPortInit;

   

    /* Initialize system clock*/
    SysClkIni();

    /*initiallize LED port*/
    MEM_ZERO_STRUCT(stcPortInit);

    stcPortInit.enPinMode = Pin_Mode_Out;
    stcPortInit.enExInt = Enable;
    stcPortInit.enPullUp = Enable;

    /* LED0 Port/Pin initialization */
    PORT_Init(LED0_PORT, LED0_PIN, &stcPortInit);

    /* LED1 Port/Pin initialization */
    PORT_Init(LED1_PORT, LED1_PIN, &stcPortInit);

    OLED_Init();
                OLED_Clear();
               
                OLED_ShowString(10,1,"I Love You!");// OLED TEST

   

   

    /* I2C master polling comunication successed */
    while(1)
    {
        LED1_TOGGLE();
        Ddl_Delay1ms(500ul);
    }
}

/*******************************************************************************
* EOF (not truncated)
******************************************************************************/
效果图:

工程:
OLED.rar (812.44 KB)

使用特权

评论回复
沙发
凡人8000| | 2020-6-8 10:12 | 只看该作者
我也刚测试了一下OLED,想实现字符向左或向右持续滚动,利用驱动库实现有限制,一行只能显示16个字符,多出的字符就显示到下一行,如果能把字符整个在一行滚动显示,就比较理想了。

使用特权

评论回复
板凳
Cjy_JDxy|  楼主 | 2020-6-8 10:18 | 只看该作者
凡人8000 发表于 2020-6-8 10:12
我也刚测试了一下OLED,想实现字符向左或向右持续滚动,利用驱动库实现有限制,一行只能显示16个字符,多出 ...

嗯嗯,我是模拟时序

使用特权

评论回复
地板
she20191204| | 2020-6-9 07:55 | 只看该作者
你们都试用一个星期了,我的都没有收到货。论坛也不给个说法。

使用特权

评论回复
5
Cjy_JDxy|  楼主 | 2020-6-9 08:00 | 只看该作者
she20191204 发表于 2020-6-9 07:55
你们都试用一个星期了,我的都没有收到货。论坛也不给个说法。

你问问·小管家

使用特权

评论回复
6
yljon| | 2020-6-9 10:20 | 只看该作者
又看见楼主的日记本啦

使用特权

评论回复
7
Cjy_JDxy|  楼主 | 2020-6-9 10:29 | 只看该作者
yljon 发表于 2020-6-9 10:20
又看见楼主的日记本啦

哈哈,我就放在桌子上,很容易拍到

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

19

粉丝