风轻云淡愿君赏,消尽烦忧心亮敞。夏去秋来添衣裳,一声问候祝安康!

1602 LCDKeypad Shield

LCD Keypad Shield 是一款提供2行16字符液晶显示的Arduino扩展板。扩展了多个按键输入,可供用户作为LCD显示屏的菜单选择按键或者操控按键使用。

 

具有对比度调节和背光灯,使用1个模拟口便完成5个按键的输入,1个复位按键,未使用的IO口都扩展出来备用,充分利用IO口。占用数字端口:PIN4(DB4),5(DB5),6(DB6),7(DB7),8(RS),9(E),10(背光控制),模拟按键端口A0。

按键控制

 1 #include <LiquidCrystal.h>
 2 
 3 /*******************************************************
 4 
 5 这个程序用来测试LCD液晶显示模块和5个按键。
 6 
 7 ********************************************************/
 8 
 9 // 选择LCD上使用到的引脚
10 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
11 
12 // 定义各按键
13 int lcd_key     = 0;
14 int adc_key_in  = 0;
15 
16 #define btnRIGHT  0
17 #define btnUP     1
18 #define btnDOWN   2
19 #define btnLEFT   3
20 #define btnSELECT 4
21 #define btnNONE   5
22 
23 //读取按键值
24 int read_LCD_buttons()
25 {
26  adc_key_in = analogRead(0);          // 从模拟口0读值 
27  // 直接读到的5个按键值在以下值附近:0,144,329,504,741
28  // 通过设定不同的阀值,就可以对应读到相应的按键
29  if (adc_key_in > 1000) return btnNONE; 
30  if (adc_key_in < 50)   return btnRIGHT;  
31  if (adc_key_in < 250)  return btnUP; 
32  if (adc_key_in < 450)  return btnDOWN; 
33  if (adc_key_in < 650)  return btnLEFT; 
34  if (adc_key_in < 850)  return btnSELECT;  
35 
36  // V1.0的版本使用以下的阀值:
37 /*
38  if (adc_key_in < 50)   return btnRIGHT;  
39  if (adc_key_in < 195)  return btnUP; 
40  if (adc_key_in < 380)  return btnDOWN; 
41  if (adc_key_in < 555)  return btnLEFT; 
42  if (adc_key_in < 790)  return btnSELECT;   
43 */
44 
45  return btnNONE; 
46 }
47 
48 void setup()
49 {
50  lcd.begin(16, 2);              // 开始
51  lcd.setCursor(0,0);
52  lcd.print("Push the buttons"); // 输出“Push the buttons”
53 }
54  
55 void loop()
56 {
57  lcd.setCursor(9,1);            // 光标定在第二行,空开9格
58  lcd.print(millis()/1000);      // 输出等待时间
59 
60 
61  lcd.setCursor(0,1);            // 光标移动到第二行开头
62  lcd_key = read_LCD_buttons();  // 读取按键
63 
64  switch (lcd_key)               // 选择按键
65  {
66    case btnRIGHT:
67      {
68      lcd.print("RIGHT ");
69      break;
70      }
71    case btnLEFT:
72      {
73      lcd.print("LEFT   ");
74      break;
75      }
76    case btnUP:
77      {
78      lcd.print("UP    ");
79      break;
80      }
81    case btnDOWN:
82      {
83      lcd.print("DOWN  ");
84      break;
85      }
86    case btnSELECT:
87      {
88      lcd.print("SELECT");
89      break;
90      }
91      case btnNONE:
92      {
93      lcd.print("NONE  ");
94      break;
95      }
96  }
97 }
按键控制

 

posted on 2021-08-15 15:50  荣林  阅读(283)  评论(0编辑  收藏  举报

导航