[综合信息] 【华大测评】+OLED

[复制链接]
 楼主| Cjy_JDxy 发表于 2020-6-7 14:23 | 显示全部楼层 |阅读模式
今天搞了一下OLED.
原理图:
4.jpg
程序:
  1. #include "hc32_ddl.h"
  2. #include "oled.h"
  3. /*******************************************************************************
  4. * Local type definitions ('typedef')
  5. ******************************************************************************/

  6. /*******************************************************************************
  7. * Local pre-processor symbols/macros ('#define')
  8. ******************************************************************************/


  9. /* LED0 Port/Pin definition */
  10. #define  LED0_PORT        (PortE)
  11. #define  LED0_PIN         (Pin06)

  12. /* LED1 Port/Pin definition */
  13. #define  LED1_PORT        (PortA)
  14. #define  LED1_PIN         (Pin07)

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

  18. /*******************************************************************************
  19. * Global variable definitions (declared in header file with 'extern')
  20. ******************************************************************************/

  21. /*******************************************************************************
  22. * Local function prototypes ('static')
  23. ******************************************************************************/

  24. /*******************************************************************************
  25. * Local variable definitions ('static')
  26. ******************************************************************************/



  27. /**
  28. ******************************************************************************
  29. ** \brief  Initialize the system clock for the sample
  30. **
  31. ** \param  None
  32. **
  33. ** \retval None
  34. ******************************************************************************/
  35. static void SysClkIni(void)
  36. {
  37.     en_clk_sys_source_t     enSysClkSrc;
  38.     stc_clk_sysclk_cfg_t    stcSysClkCfg;
  39.     stc_clk_xtal_cfg_t      stcXtalCfg;
  40.     stc_clk_mpll_cfg_t      stcMpllCfg;

  41.     MEM_ZERO_STRUCT(enSysClkSrc);
  42.     MEM_ZERO_STRUCT(stcSysClkCfg);
  43.     MEM_ZERO_STRUCT(stcXtalCfg);
  44.     MEM_ZERO_STRUCT(stcMpllCfg);

  45.     /* Set bus clk div. */
  46.     stcSysClkCfg.enHclkDiv = ClkSysclkDiv1;   // Max 168MHz
  47.     stcSysClkCfg.enExclkDiv = ClkSysclkDiv2;  // Max 84MHz
  48.     stcSysClkCfg.enPclk0Div = ClkSysclkDiv1;  // Max 168MHz
  49.     stcSysClkCfg.enPclk1Div = ClkSysclkDiv2;  // Max 84MHz
  50.     stcSysClkCfg.enPclk2Div = ClkSysclkDiv4;  // Max 60MHz
  51.     stcSysClkCfg.enPclk3Div = ClkSysclkDiv4;  // Max 42MHz
  52.     stcSysClkCfg.enPclk4Div = ClkSysclkDiv2;  // Max 84MHz
  53.     CLK_SysClkConfig(&stcSysClkCfg);

  54.     /* Switch system clock source to MPLL. */
  55.     /* Use Xtal32 as MPLL source. */
  56.     stcXtalCfg.enMode = ClkXtalModeOsc;
  57.     stcXtalCfg.enDrv = ClkXtalLowDrv;
  58.     stcXtalCfg.enFastStartup = Enable;
  59.     CLK_XtalConfig(&stcXtalCfg);
  60.     CLK_XtalCmd(Enable);

  61.     /* MPLL config. */
  62.     stcMpllCfg.pllmDiv = 1u;
  63.     stcMpllCfg.plln =50u;
  64.     stcMpllCfg.PllpDiv = 4u;
  65.     stcMpllCfg.PllqDiv = 4u;
  66.     stcMpllCfg.PllrDiv = 4u;
  67.     CLK_SetPllSource(ClkPllSrcXTAL);
  68.     CLK_MpllConfig(&stcMpllCfg);

  69.     /* flash read wait cycle setting */
  70.     EFM_Unlock();
  71.     EFM_SetLatency(EFM_LATENCY_5);
  72.     EFM_Lock();

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

  75.     /* Wait MPLL ready. */
  76.     while(Set != CLK_GetFlagStatus(ClkFlagMPLLRdy))
  77.     {
  78.         ;
  79.     }

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



  83. /**
  84. *******************************************************************************
  85. ** \brief  Main function of template project
  86. **
  87. ** \param  None
  88. **
  89. ** \retval int32_t return value, if needed
  90. **
  91. ******************************************************************************/
  92. int32_t  main(void)
  93. {
  94.    
  95.     uint32_t i;
  96.    
  97.     stc_port_init_t stcPortInit;

  98.    

  99.     /* Initialize system clock*/
  100.     SysClkIni();

  101.     /*initiallize LED port*/
  102.     MEM_ZERO_STRUCT(stcPortInit);

  103.     stcPortInit.enPinMode = Pin_Mode_Out;
  104.     stcPortInit.enExInt = Enable;
  105.     stcPortInit.enPullUp = Enable;

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

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

  110.     OLED_Init();
  111.                 OLED_Clear();
  112.                
  113.                 OLED_ShowString(10,1,"I Love You!");// OLED TEST

  114.    

  115.    

  116.     /* I2C master polling comunication successed */
  117.     while(1)
  118.     {
  119.         LED1_TOGGLE();
  120.         Ddl_Delay1ms(500ul);
  121.     }
  122. }

  123. /*******************************************************************************
  124. * EOF (not truncated)
  125. ******************************************************************************/
效果图:
5.jpg
工程:
OLED.rar (812.44 KB, 下载次数: 41)
凡人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 | 显示全部楼层
你们都试用一个星期了,我的都没有收到货。论坛也不给个说法。
 楼主| Cjy_JDxy 发表于 2020-6-9 08:00 | 显示全部楼层
she20191204 发表于 2020-6-9 07:55
你们都试用一个星期了,我的都没有收到货。论坛也不给个说法。

你问问·小管家
yljon 发表于 2020-6-9 10:20 | 显示全部楼层
又看见楼主的日记本啦
 楼主| Cjy_JDxy 发表于 2020-6-9 10:29 | 显示全部楼层
yljon 发表于 2020-6-9 10:20
又看见楼主的日记本啦

哈哈,我就放在桌子上,很容易拍到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

553

主题

3530

帖子

20

粉丝
快速回复 返回顶部 返回列表