野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13643|回复: 5

232串口数据,液晶显示

[复制链接]
发表于 2016-3-6 20:36:02 | 显示全部楼层 |阅读模式
已完成232串口通讯,液晶屏可以显示数字和字符,但不清楚如何将从232串口传来的数据传到液晶屏上,相应的主函数复制如下
int main ( void )
{
        //char cStr [ 10 ];
       
  //uint32_t ulCount;
  uint8_t ch;

        USART2_Config();
       
        NVIC_Configuration();

        printf("\r\n #0101\r\n");
       

        LCD_Init ();
ILI9341_GramScan ( 1 );
       
  ILI9341_Clear ( 0, 0, 240, 320, macBACKGROUND);
       
  ILI9341_DispString_EN ( 0, 10, "This is a lcd demo to display ascii", macBACKGROUND, macRED );
       
        ch = USART_ReceiveData(USART2);
        ILI9341_DispChar_EN ( 60, 60, ch, macBACKGROUND, macRED );
        while ( 1 );        }


液晶屏上显示"This is a lcd demo to display ascii",是不是说明我之前USART2_Config();
       
        NVIC_Configuration();

        printf("\r\n #0101\r\n");(这个是通讯协议)
        这段代码可以通过,但是还是无法显示数据,求大神指导
回复

使用道具 举报

发表于 2016-3-7 08:49:02 | 显示全部楼层
会使用串口接收数据到变量吗?
参考例程
会使用LCD显示变量吗?
使用sprintf函数转换成字符串,再调用液晶字符串显示函数
回复 支持 反对

使用道具 举报

发表于 2016-3-7 08:49:09 | 显示全部楼层
会使用串口接收数据到变量吗?
参考例程
会使用LCD显示变量吗?
使用sprintf函数转换成字符串,再调用液晶字符串显示函数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-15 16:22:03 | 显示全部楼层
flyleaf 发表于 2016-3-7 08:49
会使用串口接收数据到变量吗?
参考例程
会使用LCD显示变量吗?

static void Delay ( __IO uint32_t nCount )
{
  for ( ; nCount != 0; nCount -- );
       
}

       
         uint8_t ch;
   uint8_t che;
int SendUrt()
{
        printf("\r#0101\r");       

       
}
int DisplayDemo()
{
        /* í¨1yDT¸ÄGRAMμÄé¨Ãè·½Ïò£¬è»oóí¨1y¿′òo¾§ÇåÆáμÄ髿飬¾í¿éòÔÖaμàGRAMμÄêμ¼êé¨Ãè·½ÏòáË */
  ILI9341_GramScan ( 1 );
       
  ILI9341_Clear ( 0, 0, 240, 320, macBACKGROUND);
       
  ILI9341_DispString_EN ( 0, 10, "This is a lcd demo to display ascii", macBACKGROUND, macRED );
}
static void delay_ms(u16 time)
{
        u16 i=0;
        while(time--)
        {
                i=12000;
                while(i--){}
        }
}

/**
  * @brief  Ö÷oˉêy
  * @param  ÎT  
  * @retval ÎT
  */
int main ( void )
{
        //char cStr [ 10 ];
       
  //uint32_t ulCount;
    ch=0;
    che=0;
        USART2_Config();
        LED_GPIO_Config();
        NVIC_Configuration();
        LCD_Init ();         //LCD 3õê¼»ˉ
        DisplayDemo();
        while(1){
                SendUrt();
                sprintf((char*)che,"%c",ch);
                ILI9341_DispString_EN ( 60, 60,(char*) che, macBACKGROUND, macRED );
        }       
}
这是我主函数上的代码,不知道是不是关于sprintf函数的用法不对,液晶上还是显示不出来数据
回复 支持 反对

使用道具 举报

发表于 2016-3-15 16:34:15 | 显示全部楼层
liuyushangwang 发表于 2016-3-15 16:22
static void Delay ( __IO uint32_t nCount )
{
  for ( ; nCount != 0; nCount -- );

独立测试,不要用串口。
先自己定义一个变量存储一个数字进去,然后使用sprint,再显示,测试成功了再加串口。

sprintf的用法跟printf差不多,具体百度下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-20 21:22:22 | 显示全部楼层
flyleaf 发表于 2016-3-15 16:34
独立测试,不要用串口。
先自己定义一个变量存储一个数字进去,然后使用sprint,再显示,测试成功了再加 ...

自己定义的变量可以在显示屏上用sprintf函数显示出来,但是加上串口后又不行了,不清楚是不是我的串口函数有问题,
void USART2_IRQHandler(void)
{
        extern uint8_t ch;
       
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
        {        
            //ch = USART1->DR;
                        ch = USART_ReceiveData(USART2);
                  //printf( "%c", ch );    //½«½óêüμ½μÄêy¾YÖ±½ó·μ»Ø′òó¡
        }
         
}
主函数如下
int main ( void )
{
        //char cStr [ 10 ];
       
  //uint32_t ulCount;
  ch=0;
        USART2_Config();
        LED_GPIO_Config();
        NVIC_Configuration();
        LCD_Init ();         //LCD 3õê¼»ˉ
        DisplayDemo();

                       
        while(1)
                {
                        SendUrt();
                Delay(1000);
    sprintf((char*)che,"%s",&ch);
                ILI9341_DispString_EN ( 60, 60, (char*)che, macBACKGROUND, macRED );
        }       

}        我是将串口传回来的数据传递给ch,再在主函数中运用数组che[]存进来,最后用ILI9341_DispString_EN打印出来,但是一直显示的字母‘J’并且一直运行,调试了一晚都没搞出来,请大神能不能帮我看看是不是逻辑上有问题


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-5 21:07 , Processed in 0.043154 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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