新人想问一下关于1602多级菜单显示的东西

2019-07-15 11:18发布

#include<reg51.h>
#include<intrins.h>       
#include"lcd.h"




sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;







typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

static      flag =3;                   //标记
void delay(u16 i)                           //延时
{

        while(i--);       
}




void menu0 ()                                                              
{       

    Lcd1602_Write_Cmd(0x01);
        LcdShowStr(0,0," welcome ")        ;
       


}          

void menu1 ()                                                    
{       
    Lcd1602_Write_Cmd(0x01);

        LcdShowStr(0,0," nihao ") ;
       
       
}

void keyvalue()
{
if(k1==0)
    {
        delay(1000);
          if(k1==0)
          {
       flag=0;
           }
    }
         else
         {
          flag=3;
         }
     while(!k1);


    if(k2==0)

     {
         delay(1000) ;
         if(k2==0)
          {
             flag=1;
          }
     }
          else
         {
          flag=3;
         }
     while(!k2);


}




void key()
{
  keyvalue();
  switch(flag)
  {
   case 0:
   {
      menu0();
          if(k3==0)
             {
            delay(1000);
                if(k3==0)
                {
          flag=3 ;
                }
       }

      while(!k3);
          break;
   }


   case 1:
   {
        menu1();
        if(k3==0)
           {
                     delay(1000);
                         if(k3==0)
                         {
             flag=3 ;
                         }   
           }
          while(!k3);
                  break;
   }
   case 3:
   {
     u8 i;
    for(;i<10;i++)
              {
                Lcd1602_Write_Data('C');
              }
        break;
   }
  }
}

          





void main(void)
{


        InitLcd1602();
        while(1)
         {
          key();
         }

}       





这是我写的一个程序,没有加lcd.h文件。就看主程序的话为什么不能实现按第一个键进入第一个菜单,按第二个键入第二个按第三个返回呢?

0条回答

一周热门 更多>