打印

lcd显示~汉字上下两个~~~求助

[复制链接]
1330|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨思小米粥|  楼主 | 2013-7-24 09:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


从串口调试助手输入汉字,在lcd上面显示~~~现在的情况是输入一个汉字显示两个,如输入“啊”显示的是









u16  RxData,data_RxData, data_str16[512],data_str8[512];          //串口接收数据


int main(void)
{
//                  int num,n;                    /* 显示lcd型号 n 扇区开始数*/
        u8 i,j;                              /* ifor循环使用,j判断数据高低位 */
        u8 s1,s2;                /* s汉字字符串长度   h,w 16*16汉字换行使用*/
    int        y = 50, x = 0;


//        u8 data_read[512], data_write[512];
        unsigned char TxBuf[100] = "\rARM第八组\r\n";
//        u8 data_read[512], data_write[512] , *ptr;
//        n= 500; //数据从扇区数500开始写
//        ptr=(u8 *)data_str8;
//        int q=0;
        s1 = s2 = 0;                         /*汉字字符串长度*/       
        j=0;                          /*j判断数据高低位*/
          /* System clocks configuration ---------------------------------------------*/
          SystemInit();
          /* Initialize the LCD */
          STM3210C_LCD_Init();
          /* Clear the LCD */
          LCD_Clear(White);
          /* Set the LCD Text Color */
          LCD_SetTextColor(Black);
  
            USART_Configuration();       
        printf("\rHello contex-M3\r\n");




        /* 串口提示信息 */
        for (i = 0; TxBuf[i] !='\0'; i++)
        {          
                USART_SendData(USART2, TxBuf[i]);
                while (USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET);
        }

        while (1)
        {       
                /*PD7 灯亮,可以从串口输入数据*/
//                GPIO_ResetBits(GPIOD , GPIO_Pin_7);

                /* 从串口接收数据, */
            while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET){}
            RxData = USART_ReceiveData(USART2);            //汉字存的区位码
                while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET){}
            USART_SendData(USART2, RxData);
//                 printf("RxData:%x",RxData);
                if(RxData>= 0x00 && RxData<=0x7f)            // ascii 码对照表
                {
                printf("%c",RxData);

                }  
                /*显示汉字*/
                 else     
                {
                        /*将高低字节组合在一起*/       
                         if (j == 0)
                                 {data_RxData = RxData;        j=1;}           //低字节
                        else
                         if(j == 1)
                        {
                                data_RxData += RxData<<8;         j = 0; //高字节
                                /*将每个字 存入字符组*/
//                                data_RxData=data_RxData1;
                                data_str16[s1++] = data_RxData;                          
                                data_str8[s2++]        = RxData;
                                   /*控制x,y,将汉字显示在同一行,并到行尾时换行*/
                        if(y<239)
                        {
                                if(x<303)
                                {
                                 ili9320_PutChinese(y, x,data_RxData,0x0000,0xFFFF);
                                 x+=16;
                                }
                                else
                                {
                                 x=0;
                                 y+=36;
                                }
                        }
                        else{
                                  y=0;
                                  LCD_Clear(White);
                                }
                         }
                }         

相关帖子

沙发
雨思小米粥|  楼主 | 2013-7-24 09:41 | 只看该作者
求助攻

使用特权

评论回复
板凳
雨思小米粥|  楼主 | 2013-7-24 10:46 | 只看该作者

使用特权

评论回复
地板
雨思小米粥|  楼主 | 2013-7-24 11:11 | 只看该作者
求助攻啊~~~小弟是小白~~~

使用特权

评论回复
5
雨思小米粥|  楼主 | 2013-7-24 12:36 | 只看该作者
主函数没问题,~~其他地方的错误~~改出来了~~~

使用特权

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

本版积分规则

8

主题

55

帖子

1

粉丝