OpenEdv-开源电子网

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

用网上给的程序反白速度很慢,等6秒才出现反白,刷新速度慢

[复制链接]

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2016-1-6 16:05:03 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 ssssssssssss 于 2016-1-6 16:54 编辑

12864指定位置反白,用网上给的程序反白刷新速度很慢,等5.6秒才出现反白,有哪个大神可以指点一下?程序给人的感觉是执行这个反白函数好5s左右一样,之后我尝试把(void display()                  //为反白做准备,目地是在图形显示时防止有噪点),这个函数屏蔽掉,刷新速度上去了,但是有噪点,有什么方法可以刷新速度快,而且没噪点吗?
[mw_shl_code=c,true]void display()                  //为反白做准备,目地是在图形显示时防止有噪点
{
  uchar i,j;
  lcd_wcmd(0x34);        //写数据时,关闭图形显示

  for(i=0;i<32;i++)
  {
    lcd_wcmd(0x80+i);    //先写入水平坐标值
    lcd_wcmd(0x80);      //写入垂直坐标值
    for(j=0;j<16;j++)   //再写入两个8位元的数据   
    lcd_wdat(0x00);     
    delay(1);
  }

  for(i=0;i<32;i++)
  {
    lcd_wcmd(0x80+i);
    lcd_wcmd(0x88);
    for(j=0;j<16;j++)         
        lcd_wdat(0x00);   
        delay(1);
  }
  lcd_wcmd(0x36);       //写完数据,开图形显示
}


void photodisplay(uchar x,uchar y,uchar width)                //反白,X值为0-7,Y值为0-3,width为行反白格数
{
  uchar i,j,flag=0x00;
  display();
  if(y>1)
  {
   flag=0x08;
   y=y-2;
  }
  lcd_wcmd(0x34);        //写数据时,关闭图形显示,且打开扩展指令集
        for(i=0;i<16;i++)
        {
                lcd_wcmd(0x80+(y<<4)+i);
                lcd_wcmd(0x80+flag+x);
                for(j=0;j<width;j++)
                {
                lcd_wdat(0xff);
                lcd_wdat(0xff);
                }
                delay(1);
        }
        lcd_wcmd(0x36);       //写完数据,开图形显示
//        lcd_wcmd(0x30);       //从扩展指令到基本指令
}



  lcd_init();                 //初始化LCD
   clr_screen();             //清屏   
   while(1)
   {
     clr_screen();
     lcd_pos(1,0);             //设置显示位置为第一行
     lcd_wstr(DIS1);
     delay(30);

     lcd_pos(2,0);             //设置显示位置为第二行
     lcd_wstr(DIS2);

     lcd_pos(3,0);             //设置显示位置为第三行
     lcd_wstr(DIS3);

     lcd_pos(4,0);             //设置显示位置为第四行
     lcd_wstr(DIS4);

         delay(1000);
         delay(1000);
         photodisplay(3,2,3);
         delay(1000);
         delay(1000);
         lcd_wcmd(0x30);         //基本指令集
         delay(1000);
         delay(1000);
        }

}[/mw_shl_code]



最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2016-1-6 16:05:04 | 显示全部楼层
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-1-7 09:05:28 | 显示全部楼层
解决后  最好附上解决方法  以供后来者参考
学无止境
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2016-1-7 09:11:47 | 显示全部楼层
lcd_wcmd(0x80);lcd_wdat(0xff);数据读写函数,写时序的时候延时过长,函数内部for循环嵌套,导致大量延时,才会出现这样的问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 06:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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