打印
[AVR单片机]

文本显示器画面问题,基于MODBUSS协议485通信的

[复制链接]
2903|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yangbo_hover|  楼主 | 2010-11-1 19:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCU=ATMega16;8M晶振
文本显示器:显示器和按键综合到一个模块里的。
这一路代码问题出在那哦?
写进去后,文本显示器画面轮流跳转很快,而其屏幕上的文字闪烁很快,而且按键也不起反映,把(wb_flag置1)按键又可以起作用了

//--------------文本画面跳转控制----------
  
   if(wb_flag==0)
   {
    if(auto_flag)  //自动模式下轮流显示 2 ,3, 4, 5
{
    comdata[4]=0;
comdata[5]=(wb_page/3)+1;
}
else    //手动模式下轮流显示 9 ,10, 11, 12
{
    comdata[4]=0;
    comdata[5]=(wb_page/3)+8;
}
//-------跳出 输入密码后 赋值0

comdata[36]=0x00;  //xx------
comdata[37]=0x00;  //--xx----
   }
   //-----------------------------------------
   if((zjsj[3]&0x20))     //连按按F6四次进入密码
   {
      if(biaozhi==0x55)
   {
       f6_count++;       //日**文本按键也要考虑按键松开,
    biaozhi=0xaa;
    }
   }else biaozhi=0x55;
if(f6_count>=4)
   {
    comdata[4]=0;   
comdata[5]=6;    //第6个画面
wb_flag=0x01;
f6_count=0;
f6_flag=0;
   }  
   if(wb_flag==0x01)
   {                                                               
  if((comdata[36]==mima_y)&&(comdata[37]==mima_e))  //输入密码正确
  {
    wb_flag=0x02;       //密码正确进入时限设置画面  
    comdata[4]=0;   
    comdata[5]=7;                                               
   }  
  if((comdata[36]==0x15)&&(comdata[37]==0xbe))  //通用密码5566  =15BE
  {
    wb_flag=0x02;       //密码正确进入时限设置画面  
    comdata[4]=0;   
    comdata[5]=7;                                               
   }
   }
   //-----------------F5设置画面------------------
   if(zjsj[3]&0x10)    //F5进入参数设置
   {
     
  if(auto_flag)
  {
       wb_flag=0x03;
       comdata[4]=0;   
        comdata[5]=5;  
   }else
   {
    wb_flag=0x03;
       comdata[4]=0;   
       comdata[5]=12;  
   }                           

   }
   

   //---------设置后按ESC按键则返回循环流动画面------------
g=comdata[7];
    if(g==1)
{
   wb_flag=0;
  }
    //--------------阀门状态指示--------------
if(outdata&0x01) zsdss[6]=2;
else  zsdss[6]=0;
if(outdata&0x02) zsdss[7]=2;
else  zsdss[7]=0;
if(outdata&0x04) zsdss[8]=2;
else  zsdss[8]=0;
if(outdata&0x08) zsdss[9]=2;
else  zsdss[9]=0;
//---------------时限--------------------
if(shixian_flag==1) //时限到,继电器无输出
{
   zjsj[7]|=0x20 ;  
   outdata=0x00;
   for(i=0;i<10;i++)
    zsdss[i]=0;  
  }else zjsj[7]&=(~0x20) ;

相关帖子

沙发
yangbo_hover|  楼主 | 2010-11-2 15:53 | 只看该作者
问题已经得到解决,更改如下:
   //--------------文本画面跳转控制----------
  
   if(wb_flag==0)
   {
        if(auto_flag)  //自动模式下轮流显示 2 ,3, 4, 5
        {
                if(comdata[5]!=(wb_page/3+1))
                {
                comdata[4]=0;
                comdata[5]=(wb_page/3)+1;
                }
        }
        else    //手动模式下轮流显示 9 ,10, 11, 12
        {
                if(comdata[5]!=(wb_page/3+8))
                {
            comdata[4]=0;
            comdata[5]=(wb_page/3)+8;
            }
        }
        //-------跳出 输入密码后 赋值0
       
        comdata[36]=0x00;  //xx------
        comdata[37]=0x00;  //--xx----
   }

使用特权

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

本版积分规则

1

主题

7

帖子

1

粉丝