不能再玩啦ovo 2023-05-22 14:02 采纳率: 0%
浏览 23

51单片机 lcd1602显示问题

在用51单片机时出现一个问题,设置按键用来切换lcd的显示界面 现在可以显示内容 就是按键设置的时候只能切换一个界面是怎么回事呢?
以下是代码:

LcdWriteCom(0x01);
        LCDWrite_String(0, 0, "Set PH L:");
        while(state==1)
        {
            if(K1==0)
            {
                state++;
                while(K1==0);
            }    

            if(K2==0)
            {
                war=war+1;
                if(war>=14)
                war=14;
                while(K2==0);
            }    
            
            if(K3==0)
            {
                war=war-1;
                if(war<=1)
                war=1;
                while(K3==0);
            }        
    
            LcdWriteCom(0xC0+6);    
            LcdWriteData('0'+war/10%10);
            LcdWriteData('0'+war%10);
        }


        LcdWriteCom(0x01);
        LCDWrite_String(0, 0, "Set PH H:");
        while(state==2)
        {
            if(K1==0)
            {
                state=3;
                while(K1==0);
            }    

            if(K2==0)
            {
                war2=war2+1;
                if(war2>=14)
                war2=14;
                while(K2==0);
            }    
            
            if(K3==0)
            {
                war2=war2-1;
                if(war2<=1)
                war2=1;
                while(K3==0);
            }        
    
            LcdWriteCom(0xC0+6);    
            LcdWriteData('0'+war2/10%10);
            LcdWriteData('0'+war2%10);
        }

  • 写回答

4条回答 默认 最新

  • AllenGd 大数据领域优质创作者 2023-05-22 14:27
    关注

    结合ChatGPT部分内容参考给出建议:
    你的代码中只有两个状态(state==1和state==2),因此只能切换两个界面。要实现切换多个界面,需要增加状态的数量,并在每个状态下设置不同的显示内容和按键响应。以下是一个示例代码,其中有三个状态(state==1、state==2和state==3),分别对应不同的显示内容和按键响应:

    LcdWriteCom(0x01);
    LCDWrite_String(0, 0, "Set PH L:");
    while(state==1)
    {
        if(K1==0)
        {
            state++;
            while(K1==0);
        }    
    
        if(K2==0)
        {
            war=war+1;
            if(war>=14)
            war=14;
            while(K2==0);
        }    
    
        if(K3==0)
        {
            war=war-1;
            if(war<=1)
            war=1;
            while(K3==0);
        }        
    
        LcdWriteCom(0xC0+6);    
        LcdWriteData('0'+war/10%10);
        LcdWriteData('0'+war%10);
    }
    
    
    LcdWriteCom(0x01);
    LCDWrite_String(0, 0, "Set PH H:");
    while(state==2)
    {
        if(K1==0)
        {
            state++;
            while(K1==0);
        }    
    
        if(K2==0)
        {
            war2=war2+1;
            if(war2>=14)
            war2=14;
            while(K2==0);
        }    
    
        if(K3==0)
        {
            war2=war2-1;
            if(war2<=1)
            war2=1;
            while(K3==0);
        }        
    
        LcdWriteCom(0xC0+6);    
        LcdWriteData('0'+war2/10%10);
        LcdWriteData('0'+war2%10);
    }
    
    
    LcdWriteCom(0x01);
    LCDWrite_String(0, 0, "Set PH T:");
    while(state==3)
    {
        if(K1==0)
        {
            state=1;
            while(K1==0);
        }    
    
        if(K2==0)
        {
            war3=war3+1;
            if(war3>=14)
            war3=14;
            while(K2==0);
        }    
    
        if(K3==0)
        {
            war3=war3-1;
            if(war3<=1)
            war3=1;
            while(K3==0);
        }        
    
        LcdWriteCom(0xC0+6);    
        LcdWriteData('0'+war3/10%10);
        LcdWriteData('0'+war3%10);
    }
    

    在这个示例代码中,增加了一个状态(state==3),并在该状态下设置了不同的显示内容和按键响应。当按下K1键时,状态会从state==3切换到state==1,从而实现了多个界面的切换。你可以根据需要增加更多的状态和相应的显示内容和按键响应。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月22日