hujj 发表于 2020-9-13 17:28

【CH579M-R1】+驱动LCD5110显示屏

<p>&nbsp; &nbsp; 经过一天时间的调试,LCD5110显示屏终于驱动成功,程序是从STM32移植过来的,调整时序时还借助了逻辑分析仪。调试过程中还犯了低级错误,忘记对LCD5110初始化了,时序已经调整的非常理想,但LDC就是无显示,百思不得其解,最后才发现问题。下图为调试过程:</p>

<p></p>

<p>&nbsp; &nbsp; 这是用逻辑分析仪调整时序的截图:</p>

<p></p>

<p>&nbsp; &nbsp; 下面是main.c代码:</p>

<pre>
<code class="language-cs">int main()
{
    UINT8 len,i,dir;
   
   
/* 配置串口1:先配置IO口模式,再配置串口 */   
    GPIOA_SetBits(GPIO_Pin_9);
    GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);                          // RXD-配置上拉输入
    GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);                // TXD-配置推挽输出,注意先让IO口输出高电平
    UART1_DefInit();
   
#if 1       // 测试串口发送字符串
    UART1_SendString( TxBuff, sizeof(TxBuff) );

#endif
/* 配置LED和PWM */
    GPIOA_ModeCfg(GPIO_Pin_6, GPIO_ModeOut_PP_5mA); // PA6 - PWM4(LED4)
    GPIOB_ModeCfg(GPIO_Pin_6, GPIO_ModeOut_PP_5mA); // PB6 - LED3
    PWMX_CLKCfg( 4 );
    PWMX_CycleCfg( PWMX_Cycle_64 );
       

    GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA); // PB4 - LED_G
    GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA); // PB7 - LED_Y
    GPIOB_InverseBits(4);

    LCD_init();         //LCD5110初始化
        display_main();       //显示主界面
       
    // 中断方式:接收数据后发送出去
    UART1_ByteTrigCfg( UART_7BYTE_TRIG );
    trigB = 7;
    UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
    NVIC_EnableIRQ( UART1_IRQn );

#if 1       // 查询方式:接收数据后发送出去
    while(1)
    {
/*      //串口测试
      len = UART1_RecvString(RxBuff);
      if( len )
      {
            UART1_SendString( RxBuff, len );            
      }
*/
                //PWM测试
      if(dir){
            i--;
            if(i == 0){
                dir = 0;
                          GPIOB_InverseBits(GPIO_Pin_4);
                        }
      }
      else{
            i++;
            if(i == 64){
                dir = 1;
                                GPIOB_InverseBits(GPIO_Pin_7);
                        }
                }
      PWMX_ACTOUT( CH_PWM4, i, Low_Level, ENABLE);

//      PWMX_ACTOUT( CH_PWM7, 64-i, Low_Level, ENABLE);
      mDelaymS(10);
      //LED3闪烁测试
      time++;
      if(time &gt; 50){
            time = 0;
            GPIOB_InverseBits(GPIO_Pin_6);

      }
    }
   
#endif   

#if 0      // 中断方式:接收数据后发送出去
    UART1_ByteTrigCfg( UART_7BYTE_TRIG );
    trigB = 7;
    UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
    NVIC_EnableIRQ( UART1_IRQn );
#endif   

//    while(1);   
}

</code></pre>

<p>&nbsp; &nbsp; 这是LCD显示状况:</p>

<p></p>

okhxyyo 发表于 2020-9-14 11:32

<p><a href="https://bbs.eeworld.com.cn/thread-1140005-1-1.html" target="_blank">沁恒CH579M-R1开发板测评</a></p>

<p>汇总贴:<a href="https://bbs.eeworld.com.cn/thread-1140005-1-1.html">https://bbs.eeworld.com.cn/thread-1140005-1-1.html</a></p>

宋元浩 发表于 2020-9-14 09:42

<p>楼主时间很充足啊,看您申请不少板子评测</p>

jinglixixi 发表于 2020-9-14 11:44

宋元浩 发表于 2020-9-14 09:42
楼主时间很充足啊,看您申请不少板子评测

<p>的确,好像还有南芯SC8905那。</p>

jinglixixi 发表于 2020-9-14 11:47

<p>屏下面显示的时间是调用的RTC吗?</p>

hujj 发表于 2020-9-14 12:52

jinglixixi 发表于 2020-9-14 11:44
的确,好像还有南芯SC8905那。

<p>是的,这次比较幸运,同时获得了CH579M和SC8905两块板子的评测机会。</p>

hujj 发表于 2020-9-14 12:54

jinglixixi 发表于 2020-9-14 11:47
屏下面显示的时间是调用的RTC吗?

<p>准备使用DS1307日历模块,这个时间更方便,开机时不用设置。</p>

hujj 发表于 2020-9-14 12:55

宋元浩 发表于 2020-9-14 09:42
楼主时间很充足啊,看您申请不少板子评测

<p>退休在家,除了搞卫生和外出锻炼身体,基本上就折腾板子。</p>

jinglixixi 发表于 2020-9-14 18:03

hujj 发表于 2020-9-14 12:55
退休在家,除了搞卫生和外出锻炼身体,基本上就折腾板子。

<p>啊,幸福!!!</p>

jinglixixi 发表于 2020-9-14 18:04

hujj 发表于 2020-9-14 12:54
准备使用DS1307日历模块,这个时间更方便,开机时不用设置。

<p>原来如此,知道了!</p>
页: [1]
查看完整版本: 【CH579M-R1】+驱动LCD5110显示屏