(SKU:RB-01C020)1602液晶按鍵擴展板

來自ALSROBOT WiKi
2015年7月2日 (四) 16:35Arduino77討論 | 貢獻的版本

跳轉(zhuǎn)至: 導(dǎo)航、 搜索


Arduino LCD 1602 Keypad Shield01.jpg

目錄

產(chǎn)品介紹

Arduino LCD1602字符液晶擴展板v2.0集國內(nèi)外多款擴展板優(yōu)點于一體所設(shè)計,PCB沉金工藝加工,用料十足,主板采用全新優(yōu)質(zhì)2行16個字符液晶,不僅具有對比度調(diào)節(jié)旋鈕、背光燈選擇開關(guān),還具4個方向按鍵、1個選擇按鍵和一個復(fù)位按鍵;4個傳感器模擬接口、RB URF v1.1超聲波傳感器接口、藍牙模塊接口、APC220無線數(shù)傳模塊通信接口、獨立擴出更加易用方便。對于Arduino初學(xué)者來說,不必為繁瑣復(fù)雜液晶驅(qū)動電路連線而頭疼了,這款1602液晶擴展板真正意義上的將電路簡化,直接將此板插到Arduino Duemilanove控制器上即可,傳感器也僅需一根通用3P傳感器連接線(不分數(shù)字連接線與模擬連接線)連接,可輕松實現(xiàn)傳感器數(shù)據(jù)的記錄顯示。

規(guī)格參數(shù)

1.模塊尺寸:20.5mm×41mm
2.模塊重量:57g

1602字符型LCD簡介

1602LCD主要技術(shù)參數(shù)

1.顯示容量:16×2個字符
2.芯片工作電壓:4.5—5.5V
3.工作電流:2.0mA(5.0V)
4.模塊最佳工作電壓:5.0V
5.字符尺寸:2.95×4.35(W×H)mm

引腳功能說明

1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下表所示:

Arduino LCD 1602 Keypad Shield02.jpg

第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。
第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負極。

1602LCD的指令說明

1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表下表所示:

Arduino LCD 1602 Keypad Shield03.jpg

1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)
指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。
指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。
指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。
指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標(biāo)或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。
指令6:功能設(shè)置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。
指令7:字符發(fā)生器RAM地址設(shè)置。
指令8:DDRAM地址設(shè)置。
指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。
指令10:寫數(shù)據(jù)。
指令11:讀數(shù)據(jù)。
與HD44780相兼容的芯片時序表如下:

Arduino LCD 1602 Keypad Shield04.jpg

讀操作時序圖

Arduino LCD 1602 Keypad Shield05.jpg

寫操作時序圖

Arduino LCD 1602 Keypad Shield06.jpg

1602LCD的一般初始化(復(fù)位)過程

延時15mS
寫指令38H(不檢測忙信號)
延時5mS
寫指令38H(不檢測忙信號)
延時5mS
寫指令38H(不檢測忙信號)
以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號
寫指令38H:顯示模式設(shè)置
寫指令08H:顯示關(guān)閉
寫指令01H:顯示清屏
寫指令06H:顯示光標(biāo)移動設(shè)置
寫指令0CH:顯示開及光標(biāo)設(shè)置

Arduino LCD1602字符液晶擴展板功能圖解

Arduino LCD 1602 Keypad Shield07.jpg

Arduino LCD1602字符液晶擴展板v2.0測試

我們使用Arduino控制器來做個測試,要用到硬件設(shè)備如下:
1、Arduino控制器×1
2、Arduino LCD1602字符液晶擴展板v2.0×1
3、RB URF v1.1超聲波傳感器模塊×1
4、4P超聲波傳感器連接線×1
5、USB數(shù)據(jù)通信線×1

Arduino LCD 1602 Keypad Shield08.jpg

下面為按鍵測試,Arduino實驗代碼如下:

#include <LCD4Bit_mod.h> 
LCD4Bit_mod lcd = LCD4Bit_mod(2); 
char msgs[5][15] = {   "Right Key OK ", 
                    "Up Key OK    ", 
                    "Down Key OK  ", 
                    "Left Key OK  ", 
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup() { 
  pinMode(13, OUTPUT);  
  lcd.init();
  lcd.clear();
  lcd.printIn("KEYPAD testing... pressing");
}
void loop()
 {
	adc_key_in = analogRead(0);   
  digitalWrite(13, HIGH);  
  key = get_key(adc_key_in);
	
	if (key != oldkey)		
	{
    delay(50);		
		adc_key_in = analogRead(0);  
    key = get_key(adc_key_in);		    
    if (key != oldkey)				
    {			
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0);  //line=2, x=0
  			lcd.printIn(msgs[key]);
      }
    }
  }
  digitalWrite(13, LOW);
}
int get_key(unsigned int input)
{
	int k;
  for (k = 0; k < NUM_KEYS; k++)
	{
		if (input < adc_key_val[k])
		{
         return k;
      }
	}
   if (k >= NUM_KEYS)
     k = -1;
   return k;
}

代碼功能是,按下SELECT鍵顯示Select Key OK,按下RIGHT鍵顯示Right Key OK,按下LEFT鍵顯示Left Key OK,按下UP鍵顯示Up Key OK,按下DOWN鍵顯示Down Key OK,按下RESET鍵顯示KEYPAD testing... pressing。

產(chǎn)品相關(guān)推薦

論壇地址:奧松機器人技術(shù)論壇
購買地址:1602液晶按鍵擴展板