http://www.flamingoeda.com/2009/11/29/%E7%94%B5%E5%AD%90%E7%A7%AF%E6%9C%A8-%E4%B8%B2%E8%A1%8C%E6%B6%B2%E6%99%B6%E6%98%BE%E7%A4%BA%E5%B1%8F-%E5%AD%97%E7%AC%A6%E5%9E%8B-1602-lcd/

管脚分布示意图:

flamingoeda LCD显示屏管脚分布

以下是按键计数器的代码: int a=0;
int b;
int c=0,d=1;
void setup()
{
Serial.begin(9600);
pinMode(7,OUTPUT);
Serial.print(“$CLEAR\r\n”);
Serial.print(“$PRINT Number:0\r\n”);
}
void loop()
{
digitalWrite(7,HIGH);
b=analogRead(0);
if(b>1000)
{
delay(400);
if(b>1000)
{
c=1;
}
}
if(b<1000)
{
delay(400);
if(b<1000)
{
d=0;
}
}
if(c==1&&d==0)
{
a++;
Serial.print(“$CLEAR\r\n”);
Serial.print(“$GO 1 1\r\n”);
Serial.print(“$PRINT Number:”);
Serial.print(a);
Serial.print(“\r\n”);
Serial.print(“$CURSOR 0 0\r\n”);
c=0;
d=1;
}
}

遗留问题:对于按键,上述代码解决了长时间按住数值不断变化的问题,但是笔者认为处理方式不好,不知道有没有更好的方式来处理:判断一次按键,这个问题。

能否借鉴“边沿触发”的想法:长时间按键只计数一次?如这么做,能否避免快速按键时出现漏计数? — 乐永康 2013/07/21 13:22

在复制代码的时候一地要把代码中的中文双引号改成英文双引号,否则程序会报错! — 沈金辉 2013/09/20 14:18

  • home/xiaole/group_meetings/yejing.txt
  • 最后更改: 2015/03/05 11:24
  • (外部编辑)