#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;
sta
tic 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文件。就看主程序的话为什么不能实现按第一个键进入第一个菜单,按第二个键入第二个按第三个返回呢?
一周热门 更多>