野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8943|回复: 9

oled刷新屏幕有错误

[复制链接]
发表于 2019-3-26 19:12:11 | 显示全部楼层 |阅读模式
我设置显示数据是小数点后三位,可屏幕显示的确是小数点后好几位,有时采集的数据,显示屏上也会出错。改了好长时间就是改不过来/。望指教。

int main(void)
{   
    char str1[8]={0};
    char str2[8]={0};
    char str3[6]={0};
    unsigned char i;

   LED_GPIO_Config();     /* LED³õʼ»¯ */
  USART_Config();        /* ´®¿Ú³õʼ»¯ */

   SysTick_Init();        /*³õʼ»¯ÑÓ³Ùº¯Êý*/
  i2c_CfgGpio();     /*I2C×ÜÏßµÄGPIO³õʼ»¯*/
   OLED_Init();      /* OLED³õʼ»¯ */
   ADVANCE_TIM_Init();     //²¶»ñpwmµÄ
  

   /*OLED¼ì²â²âÊÔ*/
   
  
  while(1)
{
  OLED_Fill(0xFF);//È«ÆÁµãÁÁ
  Delay_s(2);
  
  OLED_Fill(0x00);//È«ÆÁÃð
  Delay_s(2);
   for(i=0;i<2;i++)
  {
   OLED_ShowCN(0+i*16,0,i);         //&sup2;&acirc;&Ecirc;&Ocirc;&Iuml;&Ocirc;&Ecirc;&frac34;&Ouml;&ETH;&Icirc;&Auml;
   
  }
  for(i=2;i<4;i++)
   {
   OLED_ShowCN(0+(i-2)*16,2,i);
   }
  for(i=4;i<7;i++)
   {
    OLED_ShowCN(0+(i-4)*16,4,i);
   }
  while(1)
  {
    sprintf(str1,"%.3f",Frequency); //这里出错
    sprintf(str2,"%8d",pinlvalue);    //这里出错
  sprintf(str3,"%.3f",DutyCycle);    //这里出错
  OLED_ShowStr(33,0,(unsigned char*)str1,2);   
  OLED_ShowStr(33,2,(unsigned char*)str2,2);  
  OLED_ShowStr(49,4,(unsigned char*)str3,2);
  Delay_ms(200);
   printf("\r\n time value = %d \r\n",pinlvalue);



回复

使用道具 举报

 楼主| 发表于 2019-3-26 19:12:35 | 显示全部楼层
自顶 。。。。。。。。。。。
回复

使用道具 举报

 楼主| 发表于 2019-3-26 19:12:56 | 显示全部楼层
自顶。。。。。。。。。。。。。。。。。。
回复

使用道具 举报

 楼主| 发表于 2019-3-27 10:10:40 | 显示全部楼层
自顶   别沉呀
回复 支持 反对

使用道具 举报

发表于 2019-3-27 10:36:20 来自手机 | 显示全部楼层
每次循环都清屏试下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-27 20:51:41 | 显示全部楼层
zhanshi445 发表于 2019-3-27 10:36
每次循环都清屏试下

还是不i行呀,清屏时屏幕明显有闪烁,这个又怎么解决呢。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-27 21:19:38 | 显示全部楼层
zhanshi445 发表于 2019-3-27 10:36
每次循环都清屏试下

原因找到了,pwm的频率太高。读取的时候进入到了中断服务函数里,导致写入数组的数值有时候刷新了两次。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-27 21:19:38 | 显示全部楼层
zhanshi445 发表于 2019-3-27 10:36
每次循环都清屏试下

原因找到了,pwm的频率太高。读取的时候进入到了中断服务函数里,导致写入数组的数值有时候刷新了两次。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-27 21:19:38 | 显示全部楼层
zhanshi445 发表于 2019-3-27 10:36
每次循环都清屏试下

原因找到了,pwm的频率太高。读取的时候进入到了中断服务函数里,导致写入数组的数值有时候刷新了两次。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-27 21:21:30 | 显示全部楼层
zhanshi445 发表于 2019-3-27 10:36
每次循环都清屏试下

原因找到了,pwm的频率太高。读取的时候进入到了中断服务函数里,导致写入数组的数值有时候刷新了两次。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 19:40 , Processed in 0.029796 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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