1602 LCD
来自Labplus盛思维基百科
概述
16x2液晶显示字符模块,可用于显示字母、数字、字符等。I2C LCD1602液晶模块可以显示2行,每行16个字符。
对于初学者来说,不必为繁琐复杂液晶驱动电路连线而头疼了,这款LCD扩展板将电路简化,使用相关文档中的库文件,您只需使用几行简单控制代码便能完成LCD控制显示的功能。背面的电位器还能提供你调节液晶显示器对比度的功能。
技术参数
- 工作电压:VCC 3.3-5V
- I2C数字信号输出
- 背光:蓝色,白色字符
- 可调节对比度
- 模块尺寸:80x36x18.6mm
引脚定义
VCC | 电源 |
SDA | I2C数据 |
SCL | I2C时钟 |
GND | 地 |
使用教程
Arduino示例
//程序功能:显示"hello,world和时间(S)// /* LiquidCrystal Library - Hello World Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch prints "Hello World!" to the LCD and shows the time. The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * LCD VSS pin to ground * LCD VCC pin to 5V * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystal */ // include the library code: #include <LCD1602.h> #include <Wire.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd; void setup() { // set up the LCD's number of columns and rows: Wire.begin(); lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000); }
MicroPython示例
from microbit import * # commands LCD_CLEARDISPLAY = 0x01 LCD_RETURNHOME = 0x02 LCD_ENTRYMODESET = 0x04 LCD_DISPLAYCONTROL = 0x08 LCD_CURSORSHIFT = 0x10 LCD_FUNCTIONSET = 0x20 LCD_SETCGRAMADDR = 0x40 LCD_SETDDRAMADDR = 0x80 # flags for display entry mode LCD_ENTRYRIGHT = 0x00 LCD_ENTRYLEFT = 0x02 LCD_ENTRYSHIFTINCREMENT = 0x01 LCD_ENTRYSHIFTDECREMENT = 0x00 #flags for display on/off control LCD_DISPLAYON = 0x04 LCD_DISPLAYOFF = 0x00 LCD_CURSORON = 0x02 LCD_CURSOROFF = 0x00 LCD_BLINKON = 0x01 LCD_BLINKOFF = 0x00 #flags for display/cursor shift LCD_DISPLAYMOVE = 0x08 LCD_CURSORMOVE = 0x00 LCD_MOVERIGHT = 0x04 LCD_MOVELEFT = 0x00 #flags for function set LCD_8BITMODE = 0x10 LCD_4BITMODE = 0x00 LCD_2LINE = 0x08 LCD_1LINE = 0x00 LCD_5x10DOTS = 0x04 LCD_5x8DOTS = 0x00 _displayfunction = LCD_8BITMODE | LCD_2LINE | LCD_5x8DOTS _row_offsets = [0, 0, 0, 0] _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF def lcdInit(): setRowOffsets(0x00, 0x40, (0x00 + 16), (0x40 + 16)) sleep(50) lcdDisplay() lcdClear() sendCommand(LCD_ENTRYMODESET | _displaymode) def lcdPrint(str): for c in str: sendCharacter(ord(c)) # 清屏 def lcdClear(): sendCommand(LCD_CLEARDISPLAY) sleep(2) # 设置光标位置 def lcdSetCursor(col, row): sendCommand(LCD_SETDDRAMADDR | (col + _row_offsets[row])) # 消隐光标 def lcdNoCursor(): global _displaycontrol _displaycontrol &= ~LCD_CURSORON sendCommand(LCD_DISPLAYCONTROL | _displaycontrol) # 显示光标 def lcdCursor(): global _displaycontrol _displaycontrol |= LCD_CURSORON sendCommand(LCD_DISPLAYCONTROL | _displaycontrol) # 光标不闪烁 def lcdNoBlink(): global _displaycontrol _displaycontrol &= ~LCD_BLINKON sendCommand(LCD_DISPLAYCONTROL | _displaycontrol) # 光标闪烁 def lcdBlink(): global _displaycontrol _displaycontrol |= LCD_BLINKON sendCommand(LCD_DISPLAYCONTROL | _displaycontrol) # 左滚动显示 def lcdScrollDisplayLeft(): sendCommand(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT) # 右滚动显示 def lcdScrollDisplayRight(): sendCommand(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT) # 字符串流从左到右 def lcdLeftToRight(): global _displaymode _displaymode |= LCD_ENTRYLEFT sendCommand(LCD_ENTRYMODESET | _displaymode) # 字符串流从右到左 def lcdRightToLeft(): global _displaymode _displaymode &= ~LCD_ENTRYLEFT sendCommand(LCD_ENTRYMODESET | _displaymode) # 以光标位置为起点,将显示字符往左挤 def lcdAutoscroll(): global _displaymode _displaymode |= LCD_ENTRYSHIFTINCREMENT sendCommand(LCD_ENTRYMODESET | _displaymode) # 取消往左挤,恢复正常显示方式(即往右显示字符) def lcdNoAutoscroll(): global _displaymode _displaymode &= ~LCD_ENTRYSHIFTINCREMENT sendCommand(LCD_ENTRYMODESET | _displaymode) # 制作用户自定义 def lcdCreateChar(location, charmap = []): _location = location & 0x7 sendCommand(LCD_SETCGRAMADDR | (_location << 3)); for i in range(0,8): sendCharacter(charmap[i]) # 光标返回屏幕原点 def lcdHome(): sendCommand(LCD_RETURNHOME) sleep(2) # 非用户调用函数------------------------------------------------ #关显示 def lcdNoDisplay(): global _displaycontrol _displaycontrol &= ~LCD_DISPLAYON; sendCommand(LCD_DISPLAYCONTROL | _displaycontrol) #开显示 def lcdDisplay(): global _displaycontrol _displaycontrol |= LCD_DISPLAYON sendCommand(LCD_DISPLAYCONTROL | _displaycontrol) #设置行偏移 def setRowOffsets(row0, row1, row2, row3): _row_offsets[0] = row0 _row_offsets[1] = row1 _row_offsets[2] = row2 _row_offsets[3] = row3 def sendCommand(cmd): command = bytearray([0x01, cmd]) i2c.write(24,command) sleep(1) def sendCharacter(c): character = bytearray([0x02,c]) i2c.write(24, character) sleep(1) lcdInit() lcdSetCursor(0, 0) lcdPrint("hello, world") lcdSetCursor(0, 1) lcdPrint("hello, world") #lcdCursor() #lcdBlink() while True: for i in range(0,8): lcdScrollDisplayRight() sleep(500) for i in range(0,8): lcdScrollDisplayLeft() sleep(500)
图形化示例
程序功能:LCD屏显示hello world和hello labplus字符串
版本历史记录
Version | Date | Note [+]新增[-]删除[^]修复 |
---|---|---|
V2.0 |