OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3431|回复: 4

stm32TFTLCD显示出现问题,显示如图

[复制链接]

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2016-9-23
在线时间
20 小时
发表于 2017-7-21 14:31:28 | 显示全部楼层 |阅读模式
3金钱
为什么显示是会多出100000??提问原子哥,也同问各位大佬,串口接收的数据液晶显示,有没有也遇到这样的问题??求解谢谢啦
显示部分代码[mw_shl_code=c,true]u8 RX_BUF[40];
int main(void)
{               
  u8 i;
        u16 times=0;
        long  temp=0,temp1=0;
  double temp2;         
       

        delay_init();                                                            //延时函数初始化          
  LED_Init();       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);             //设置NVIC中断分组2:2位抢占优先级,2位响应优先级                     
        LCD_Init();
        uart_init(9600);
        POINT_COLOR=RED;
        LCD_Clear(WHITE);
        POINT_COLOR=RED;                                           
        while(1)
        {
                if(USART_RX_STA&0x8000)
                {               
        if((USART_RX_BUF[0]==0x60)&&(USART_RX_BUF[9]==0x55))
                                {
                                   for(i=1;i<9;i++)
                                        {
                                          RX_BUF[i-1]=USART_RX_BUF;                                                 
                                        }
                                  temp = RX_BUF[0]*10000000;
                                        temp+= RX_BUF[1]*1000000;
                                  temp+= RX_BUF[2]*100000;
                                        temp+= RX_BUF[3]*10000;
                                        temp+= RX_BUF[4]*1000;
                                        temp+= RX_BUF[5]*100;
                                        temp+= RX_BUF[6]*10;
                                        temp+= RX_BUF[7]*1;
                                       
                                        printf("\r\n%ld\r\n",temp);
                                        for(i=10;i<20;i++)
                                        {
                                          RX_BUF[i-2]=USART_RX_BUF;                                                 
                                        }
                                        temp1  =  RX_BUF[8]*100000000;
                                        temp1 +=  RX_BUF[9]*10000000;
                                  temp1 += RX_BUF[10]*1000000;
                                        temp1 += RX_BUF[11]*100000;
                                        temp1 += RX_BUF[12]*10000;
                                        temp1 += RX_BUF[13]*1000;
                                        temp1 += RX_BUF[14]*100;
                                        temp1 += RX_BUF[15]*10;
                                        temp1 += RX_BUF[16]*1;
                                       
                                        printf("\r\n%ld\r\n",temp1);
                                       
                                        temp2=(50000000.0*temp1)/(temp*1.0);
                                        printf("\r\n%f\r\n",temp2);
                                       
                                  LCD_ShowString(130,30,400,30,16,"   Frequency Indicator");
                               
                                  LCD_ShowString(0,120,210,30,16,"      TIME:");
                                        LCD_ShowNum(90,120,temp1,16,16);
                                        LCD_ShowString(400,120,400,30,16,"s");
                                       
                                        LCD_ShowString(0,150,210,30,16,"Duty Cycle:");
                                        LCD_ShowNum(90,150,temp,16,16);
                                        LCD_ShowString(400,150,400,30,16,"%");
                                       
                                                               
                                        LCD_ShowString(0,90,210,30,16," Frequency:");
                                  LCD_ShowxNum(90,90,temp2,16,16,0);
                                        LCD_ShowString(400,90,400,30,16,"Hz");
//                                delay_ms(1000);       
                            USART_RX_STA=0;
                                       
                                }
        else
                         {
                             USART_RX_STA=0;
                                   LCD_ShowString(130,30,400,30,16,"   Fthis is error!!!");       
                         }                                                       
                }
}[/mw_shl_code]

屏幕显示的部分

屏幕显示的部分
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2016-9-23
在线时间
20 小时
 楼主| 发表于 2017-7-21 14:32:18 | 显示全部楼层
看到朋友给点建议,,急用
回复

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2016-9-23
在线时间
20 小时
 楼主| 发表于 2017-7-21 14:55:51 | 显示全部楼层
我把LCD_ShowxNum(90,90,temp2,16,16,0);的位数16给成14以下的就没问题,超过14就有问题
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2017-7-21 17:45:01 | 显示全部楼层
显示前是否对上一次显示区域进行清屏
回复

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2016-9-23
在线时间
20 小时
 楼主| 发表于 2017-7-21 19:56:12 | 显示全部楼层
龙之谷 发表于 2017-7-21 17:45
显示前是否对上一次显示区域进行清屏

清屏了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-23 03:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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