#define uint unsigned int unsigned char Key_Scan(); #define GPIO" />
#include <reg51.h>
#include"lcd.h"
#include <intrins.h>
#define uint unsigned int
unsigned char Key_Scan();
#define GPIO_LED P3 //led使用P3口
//--定义全局变量--//
unsigned char PuZh1[]="status: foreward"; //正转unsigned char PuZh2[]="status:inversion"; //反转unsigned char PuZh3[]=" stop "; unsigned char PuZh4[]="";
sbit a=P1^0;
sbit c=P1^1;
sbit d=P1^2;
sbit e=P1^3;
sbit K1=P1^5;
sbit K2=P1^7;
sbit K3=P1^6;
void Delay10ms(unsigned int c); //延时10ms
void motorzheng(void)//正转
{
a=0;
c=1;
d=1;
e=0;
Delay10ms(100);
}
void motorting(void)//电机停止
{
a=0;
c=0;
d=0;
e=0;
Delay10ms(100);
}
void motorfan(void)//反转
{
a=1;
c=0;
d=0;
e=1;
Delay10ms(100);
}
void main()
{
while(1)
{
unsigned char ledValue, keyNum,i;
keyNum = Key_Scan(); //扫描键盘
if(keyNum==1)
{ LcdInit(); //初始化显示屏
for(i=0;i<16;i++)
{ LcdWriteCom(0x80+i);
LcdWriteData(PuZh1[i]);
LcdWriteCom(0x80+0X40+i);
LcdWriteData(PuZh4[i]);
} //lcd显示正转
GPIO_LED = ledValue;
motorzheng();
}
if(keyNum==2)
{ LcdInit(); //初始化显示屏
for(i=0;i<16;i++)
{ LcdWriteCom(0x80+i);
LcdWriteData(PuZh2[i]);
LcdWriteCom(0x80+0X40+i);
LcdWriteData(PuZh4[i]);
} //lcd显示反转
GPIO_LED = ledValue;
motorfan();
}
if(keyNum==3)
{ LcdInit(); //初始化显示屏
for(i=0;i<16;i++)
{ LcdWriteCom(0x80+i);
LcdWriteData(PuZh3[i]);
LcdWriteCom(0x80+0X40+i);
LcdWriteData(PuZh4[i]);
}
GPIO_LED = ledValue;
motorting();
}
}
}
unsigned char Key_Scan()
{
unsigned char keyValue = 0 , i; //保存键值
//--检测按键1--//
if (K1==0) //检测按键K1是否按下
{
Delay10ms(1); //消除抖动
if (K1==0) //再次检测按键是否按下
{
keyValue = 1;
i = 0;
while ((i<10) && (K1==0)) //检测按键是否松开
{
Delay10ms(1);
i++;
}
}
}
if (K3==0) //检测按键K1是否按下
{
Delay10ms(1); //消除抖动
if (K3==0) //再次检测按键是否按下
{
keyValue = 3;
i = 0;
while ((i<10) && (K1==0)) //检测按键是否松开
{
Delay10ms(1);
i++;
}
}
}
//--检测按键2--//
if (K2==0) //检测按键K2是否按下
{
Delay10ms(1); //消除抖动
if (K2==0) //再次检测按键是否按下
{
keyValue = 2;
i = 0;
while ((i<10) && (K2==0)) //检测按键是否松开
{
Delay10ms(1);
i++;
}
}
}
return keyValue; //将读取到键值的值返回
}
void Delay10ms(unsigned int c) //延时
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
} } }。