LCD I 2 C/Serial RX Backpack. Data Sheet. LCD to I2C/Serial RX Backpack I2C or Serial RX communication with Standard 16 Pin LCD modules



Similar documents
Data Acquisition Module with I2C interface «I2C-FLEXEL» User s Guide

- 35mA Standby, mA Speaking pre-defined phrases with up to 1925 total characters.

Table 1 below is a complete list of MPTH commands with descriptions. Table 1 : MPTH Commands. Command Name Code Setting Value Description

Adafruit MCP9808 Precision I2C Temperature Sensor Guide

NHD-0420D3Z-FL-GBW-V3

Character LCDs. Created by Ladyada. Last updated on :45:29 PM EDT

RS232 Board datasheet

Programming Flash Microcontrollers through the Controller Area Network (CAN) Interface

Yun Shield Quick Start Guide VERSION: 1.0 Version Description Date 1.0 Release 2014-Jul-08 Yun Shield Quick Start Guide 1 / 14

PC Base Adapter Daughter Card UART GPIO. Figure 1. ToolStick Development Platform Block Diagram

BIT COMMANDER. Serial RS232 / RS485 to Ethernet Converter

USB / Data-Acquisition Module NOW LEAD-FREE

RB-See-211. Seeedstudio Grove 6-15V, 2A Dual I2C Motor Driver. Grove - I2C Motor Driver. Introduction

Arduino ADK Back. For information on using the board with the Android OS, see Google's ADK documentation.

Using HyperTerminal with Agilent General Purpose Instruments

SYMETRIX SOLUTIONS: TECH TIP August 2015

Arduino Lesson 5. The Serial Monitor

SUDT AccessPort TM Advanced Terminal / Monitor / Debugger Version 1.37 User Manual

ARDUINO SEVERINO SERIAL SINGLE SIDED VERSION 3 S3v3 (REVISION 2) USER MANUAL

Board also Supports MicroBridge

Using IDENT M System T with Modbus/TCP

Serial Communications

PN532 NFC RFID Module User Guide

AN601 I2C 2.8 Communication Protocol. SM130 SM130 - Mini APPLICATION NOTE

Using Xbee in Serial Communication

MS830 / MS833 Barcode Reader v1.0 9-December-2014

RS-485 Protocol Manual

IR Communication a learn.sparkfun.com tutorial

In-System Programmer USER MANUAL RN-ISP-UM RN-WIFLYCR-UM

USB + Serial RGB Backlight Character LCD Backpack

Summer Project Report. Fingerprint Based Attendance System

E-Blocks Easy Internet Bundle

Designing VM2 Application Boards

AXE033 SERIAL/I2C LCD

Interface and Simulation of a LCD Text Display

1602 LCD adopts standard 14 pins(no backlight) or 16pins(with backlight) interface, Instruction of each pin interface is as follows:

TCP/IP MODULE CA-ETHR-A INSTALLATION MANUAL

ZX-NUNCHUK (# )

The Answer to the 14 Most Frequently Asked Modbus Questions

Virtual Integrated Design Getting started with RS232 Hex Com Tool v6.0

MAX6683 Evaluation System/Evaluation Kit

User Manual. AS-Interface Programmer

EvB 5.1 v5 User s Guide

CAN-Bus Shield Hookup Guide

User s Manual of Board Microcontroller ET-MEGA2560-ADK ET-MEGA2560-ADK

Master-Touch and ValuMass. Modbus Communications. INSTRUCTION MANUAL (Rev. 2.1)

Cart Interface Installation & Control Board Manual for M38 XP and RX Carts and Legacy M39 Carts

PCMCIA 1 Port RS EDITION OCTOBER 1999

Web Site: Forums: forums.parallax.com Sales: Technical:

RN-131-PICTAIL & RN-171-PICTAIL Evaluation Boards

NB3H5150 I2C Programming Guide. I2C/SMBus Custom Configuration Application Note

USBSPYDER08 Discovery Kit for Freescale MC9RS08KA, MC9S08QD and MC9S08QG Microcontrollers User s Manual

BE635 User Manual. Rev. V Bolymin, Inc. All Rights Reserved.

KTA-223 Arduino Compatible Relay Controller

ModBus Server - KNX. Gateway for integration of KNX equipment into Modbus (RTU and TCP) control systems.

CONCEPT1 RS232 COMMUNICATION

Android, Bluetooth and MIAC

MCP4725 Digital to Analog Converter Hookup Guide

Arduino Lesson 1. Blink

STIM202 Evaluation Kit

USER GUIDE. Ethernet Configuration Guide (Lantronix) P/N: Rev 6

MODULE BOUSSOLE ÉLECTRONIQUE CMPS03 Référence :

USER GUIDE EDBG. Description

EARTH PEOPLE TECHNOLOGY SERIAL GRAPH TOOL FOR THE ARDUINO UNO USER MANUAL

2.2" TFT Display. Created by Ladyada. Last updated on :15:09 PM EDT

SRF08 Ultra sonic range finder Technical Specification

Adafruit's Raspberry Pi Lesson 5. Using a Console Cable

Yun Shield User Manual VERSION: 1.0. Yun Shield User Manual 1 / 22.

Adafruit's Raspberry Pi Lesson 5. Using a Console Cable

Develop a Dallas 1-Wire Master Using the Z8F1680 Series of MCUs

Troubleshooting and Diagnostics

Waspmote. Quickstart Guide

Definitions and Documents

Bluetooth + USB 16 Servo Controller [RKI-1005 & RKI-1205]

AN4032 Application note

PolyBot Board. User's Guide V1.11 9/20/08

HD44780-Based LCD Modules. Introduction to the LM018L

Modbus and ION Technology

Adafruit SHT31-D Temperature & Humidity Sensor Breakout

Keil C51 Cross Compiler

Arduino Due Back. Warning: Unlike other Arduino boards, the Arduino Due board runs at 3.3V. The maximum. Overview

Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking

Programming the On-Chip Flash on a phycore-xc161 phycore-xc167

DS1307 Real Time Clock Breakout Board Kit

IntesisBox KNX Modbus RTU master

S88XPressNetLI v1.0. Installation, user and reference manual KDesign Electronics, PCB design by RoSoft

Introduction. Getting familiar with chipkit Pi

SKP16C62P Tutorial 1 Software Development Process using HEW. Renesas Technology America Inc.

RN-131-PICTAIL & RN-171-PICTAIL Web-Server Demo Application

[F/T] [5] [KHz] [AMP] [3] [V] 4 ) To set DC offset to -2.5V press the following keys [OFS] [+/-] [2] [.] [5] [V]

ARM Thumb Microcontrollers. Application Note. Software ISO 7816 I/O Line Implementation. Features. Introduction

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Microprocessor Project Laboratory

BV4513 Serial LED Display. Product specification. October 2009 V0.a. ByVac Page 1 of 19

PICAXE RF CONNECT KIT (AXE213)

Modbus Communications for PanelView Terminals

How to setup a serial Bluetooth adapter Master Guide

Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout

UniPi technical documentation REV 1.1

Intro to Intel Galileo - IoT Apps GERARDO CARMONA

Work with Arduino Hardware

Transcription:

LCD I 2 C/Serial RX Backpack Data Sheet LCD to I2C/Serial RX Backpack I2C or Serial RX communication with Standard 16 Pin LCD modules Version 203 Sep 2013

Contents Contents 2 Introduction3 Voltage Levels3 Specifications3 Pinout 4 Fitting the backpack to an LCD 4 Command Interface5 I2C Slave Address Configuration 5 Serial RX Baud Rate Configuration 6 Reset Configuration to Defaults 6 Arduino I2C Library6 Software Updates7 Example Programs8 Arduino I2C Example9 Arduino Serial RX Example 11 Raspberry Pi Python Serial RX Example 14 Raspberry Pi I2C example using i2cset 15 Hobbytronics Ltd Version 20 Page 2

Introduction The Hobbytronics LCD Backpack is a useful little board that can be soldered onto the back of LCD s that use the standard Hitachi HD44780 compatible interface This allows the LCD (and backlight if fitted) to be controlled directly from a microcontroller using either the I2C interface or via a serial RX connection at baud rates from 2400 up to 115200 This has a number of advantages Reduces the minimum number of connections needed from 12 (for an LCD with backlight) to only 3 or 4 thus saving many input/output pins on the microcontroller Control an LCD using virtually any microcontroller either through the I2C interface or via a serial RX connection (either in hardware or software) Simplifies wiring Digital control of LCD backlight brightness from off (0) to fully on (250) and any level in between LCD Contrast adjustment potentiometer fitted to backpack Allows the connection of multiple LCD displays to one microcontroller without additional pins The backpack uses a 160 byte command buffer to alleviate any need for delays in your code Send commands and data in a stream and the backpack will process then in order Note: Digital LCD backlight control is suitable for common Anode LCD backlights Ie Anode (+) is pin 15, Cathode is pin 16 If used on an LCD that is common cathode DO NOT use the backlight functionality Voltage Levels The LCD Backpack requires a 5V supply This is primarily because the LCD itself runs at 5V This means that communication using I2C will be at 5V levels To connect to a 33V microcontroller using the I2C interface you will need to use a voltage logic level shifter This does not apply to the Serial connection however Because only the RX in pin of the backpack is used, this can be connected directly to the TX of a system running at 33V without any level shifting This makes it ideally suited to connecting directly to a Raspberry Pi for instance Specifications Suitable for 5V common Anode LCD s with Hitachi HD44780 compatible interface I2C address defaults to 58 (0x3A) but can be set to any valid I2C address in the range 1-127 Digital control of LCD backlight brightness with 250 brightness levels LCD contrast set by trimmer potentiometer Space for I2C pullup resistors (if needed) Bootloader installed for easy software updates Serial connection at 2400, 4800, 9600, 14400, 19200, 28800, 57600, 115200 160 byte command buffer I2C Communication at 5V levels Serial RX communication at 5V or 33V levels Hobbytronics Ltd Version 20 Page 3

Pinout For I2C connection use 5V GND SDA SCL For Serial RX Connection use 5V GND RX connected to microcontroller s TX TX does NOT need to be connected The TX pin is only used for software updates Fitting the backpack to an LCD The six pin (straight or right-angle) header pins should be soldered on first Then the backpack should be soldered to the back of the LCD using the 16 row header pins supplied with the backpack Alternatively, a combination 16 pin male headers and a 16 pin female socket can be used Ensure you leave sufficient room underneath the backpack so as no pins touch any of the metal tabs that are quite often found on the back of LCD s Hobbytronics Ltd Version 20 Page 4

Command Interface The backpack can be used by any microcontroller with an I2C or serial RX/TX interface by sending a command code followed by one or more bytes of data The command codes are as follows Command Description Data 1 Data 2 Code 1 Print a string Character 1 Character 2 etc 2 Set Cursor Position Line number Column Number 3 Clear line Afterwards, places Line number cursor at beginning of the line ready for write 4 Clear Display 5 Set LCD Type Num Lines Num Columns 6 Send a HD44780 command to the HD44780 command LCD 7 Backlight Brightness Brightness value (0-250) 10 Write single character Ascii Character code 32 Change I2C Address 1-127 Note: I2C address change command can only be sent using the serial connection 33 Set Baud Rate 0-2400 1-4800 2-9600 3-14400 4-19200 5-28800 6-57600 7-115200 64 Create a character Character storage position (0-7) Send 8 bytes defining character Commands are the same whether you are using I2C or serial RX connection, with one difference With the Serial Connection we need to send an end of command character (0xFF) otherwise the backpack doesn t know the command is complete With I2C this is not required This is easier to see in the example programs at the end of the document I2C Slave Address Configuration The default address is 58 (hex 0x3A) and no change is necessary if this address is to be used To change the I2C address, send the command 32 followed by a number between 1 and 127 (hex 0x01 to 0x7F) After changing the I2C address, the backpack needs to be powered off and back on again NOTE: The I2C address can only be changed using the serial connection We have implemented this security feature due to the possibility of changing the I2C address if erroneous data or commands are received Hobbytronics Ltd Version 20 Page 5

Serial RX Baud Rate Configuration To set the Baud rate, send the command 33 followed by a number between 0 and 7 (hex 0x00 to 0x07) based on the following table 0-2400 1-4800 2-9600 3-14400 4-19200 5-28800 6-57600 7 115200 After changing the Baud Rate, the backpack needs to be powered off and back on again Reset Configuration to Defaults If you have set the I2C address or baud rate and you can t remember what they are, you can reset then to the defaults of I2C Address 58 (0x3A) Baud Rate 9600 Do this by connecting the TX pin to GND then briefly applying power Arduino I2C Library We have created a free I2C Arduino Library for the LCD Backpack to make it even easier to use with the I2C protocol The library can be easily modified for use with other programming languages The following commands are available in the library clear write createchar clearline backlight settype setcursor print command Clear the screen Write a single character to the LCD Create a user defined character Clear a complete line Send a backlight brightness command Set the type of display (number of rows, columns) Set cursor position Print a string Send an HD44780 command to the LCD Ie Turn cursor on/off To install the library Download the HTI2CLCDzip file from the product page on our website open the HTI2CLCDzip file drag and drop the HTI2CLCD directory into your Arduino Libraries folder Hobbytronics Ltd Version 20 Page 6

Software Updates The LCD Backpack uses a bootloader which enables the software to be upgraded without needing a special programmer A suitable serial connection to a PC is required Note: This is NOT an RS232 connection do not connect to a PC serial port Downloading software to the board is easy because it has a bootloader already installed You can download software using the free ds30loader You can download the ds30loader application from http://mrmackeyno-iporg/elektronik/ds30loader/ Run the ds30loader application and Select the hex file to upload (our latest software version for the Backpack) Set the device to be PIC18F and 14K22 Set Baud rate to 115200 Set Port to your serial port connection In order to make the bootloader active we need to reset the board Use a small loop of wire to connect the reset pin to earth The reset pin is the top one on the 5-way header at the left of the board, just below the text PROG Connect this to the centre (0V) pin on the same connector Once you have this setup, click on the Write button just below the Commands menu, then immediately remove the wire The software will attempt to connect to the bootloader and upload the firmware Hobbytronics Ltd Version 20 Page 7

Example Programs We have some example programs written using Arduino using I2C Arduino using software serial Hi-Tech C compiler Python on Raspberry Pi These examples should be easily ported to other languages The Arduino examples are shown below Please refer to our website at wwwhobbytronicscouk for other examples and library functions Hobbytronics Ltd Version 20 Page 8

Arduino I2C Example Here is an Arduino Sketch which uses the I2C Library It creates 2 special characters, displays some text and sets the backlight /* I2CLCD Example Arduino sketch to communicate with HobbyTronics I2CLCD backpack The I2CLCD backpack turns a standard HD44780 LCD display into an I2C addressable Device which will free up many pins for use elsewhere Requires the Hobbytronics HTI2CLCD library Copyright (c) 2011 wwwhobbytronicscouk This example code is in the public domain */ #include <Wireh> #include <HTI2CLCDh> HTI2CLCD lcd; // Include the Library // Create an instance of the HTI2CLCD const int lcd_address=58; // I2C Address of LCD backpack unsigned long counter=0; int bl=0; // Backlight power value unsigned long currenttime; unsigned long blooptime; unsigned long clooptime; byte updown=0; // We can create up to 8 of our own characters to display // Here we define 2 characters to be uploaded byte ht_logo[8] = { B10100, B10100, B11111, B10110, B10110, B00010, B00010, ; byte smiley[8] = { B10001, B10001, B01110, ; void setup() { delay(800); Wirebegin(); lcdsettype(lcd_address,4,20); // Give LCD time to configure itself // join i2c bus // Define rows and columns for LCD lcdcreatechar(lcd_address,0, ht_logo); // Upload ht_logo as character 0 lcdcreatechar(lcd_address,1, smiley); // Upload smiley as character 1 Hobbytronics Ltd Version 20 Page 9

lcdclear(lcd_address); lcdbacklight(lcd_address,10); // Display String lcdwrite(lcd_address,0); lcdprint(lcd_address," HobbyTronics "); lcdwrite(lcd_address,1); // Clear LCD // Set backlight to dim // Display our ht_logo character // Display our smiley character currenttime = millis(); clooptime = currenttime; blooptime = currenttime; void loop() { currenttime = millis(); if(currenttime >= (clooptime + 1000)){ // Create String with Text and Number lcdsetcursor(lcd_address,2,1); char ascii[32]; sprintf(ascii,"counter: %07d",counter); lcdprint(lcd_address,ascii); counter++; clooptime = currenttime; // Updates clooptime if(currenttime >= (blooptime + 30)){ // Lets increase the brightness until we hit 150, then we reduce back to 0 again if(updown==0) bl++; else bl--; if(bl==150) updown=1; if(bl==0) updown=0; lcdbacklight(lcd_address,bl); blooptime = currenttime; // Updates blooptime Hobbytronics Ltd Version 20 Page 10

Arduino Serial RX Example Here is an Arduino Sketch which shows most of the features of the LCD backpack using the Serial Interface Note the sending of the 0xFF character to terminate each command /* Hobbytronics LCD Backpack RX Demo We use Software Serial so the program upload doesn't interfere with the LCD This example code is in the public domain */ #include <SoftwareSerialh> SoftwareSerial myserial(2, 3); // RX, TX unsigned long currenttime; unsigned long clooptime; unsigned long counter=0; unsigned char pdelay=1; // We can create up to 8 of our own characters to display // Here we define 2 characters to be uploaded byte ht_logo[8] = { B10100, B10100, B11111, B10110, B10110, B00010, B00010, ; byte smiley[8] = { B10001, B10001, B01110, ; void setup() { myserialbegin(9600); // Need to give LCD and backpack time to initialise delay(800); // Set display 20x4 myserialwrite(5); myserialwrite(4); myserialwrite(20); myserialwrite(0xff); // Create HT character in position 0 (0-7) myserialwrite(64); myserialwrite((byte) 0); for (int i=0; i<8; i++) { myserialwrite((byte) ht_logo[i]); Hobbytronics Ltd Version 20 Page 11

myserialwrite(0xff); // Create Smiley character in position 1 (0-7) myserialwrite(64); myserialwrite((byte) 1); for (int i=0; i<8; i++) { myserialwrite((byte) smiley[i]); myserialwrite(0xff); // Clear Display myserialwrite(4); myserialwrite(0xff); // Set backlight on bright myserialwrite(7); myserialwrite(250); myserialwrite(0xff); // Print single character - HT Character myserialwrite(10); myserialwrite((byte) 0); myserialwrite(0xff); // Print Hello myserialwrite(1); myserialprint(" Hello "); myserialwrite(0xff); // Print single character - Smiley Character myserialwrite(10); myserialwrite((byte) 1); myserialwrite(0xff); // Move to line 2 column 1 myserialwrite(2); myserialwrite(2); myserialwrite(1); myserialwrite(0xff); // Print Hobbytronics myserialwrite(1); myserialprint("hobbytronics"); myserialwrite(0xff); currenttime = millis(); clooptime = currenttime; void loop() { currenttime = millis(); if(currenttime >= (clooptime + 1000)){ // Move to line 1 column 10 myserialwrite(2); myserialwrite(1); myserialwrite(10); myserialwrite(0xff); Hobbytronics Ltd Version 20 Page 12

// Create right justified counter text char ascii[32]; sprintf(ascii,"%70d",counter); myserialwrite(1); myserialprint(ascii); myserialwrite(0xff); counter++; clooptime = currenttime; // Updates clooptime Hobbytronics Ltd Version 20 Page 13

Raspberry Pi Python Serial RX Example Raspberry Pi Python script which uses the serial port at the default 9600 baud Uses the python-serial library If you don t have this installed use sudo apt-get install python-serial Code Comments serialportwrite(chr(5)+chr(2)+chr(16)+chr(0xff)) Set to 16x2 serialportwrite(chr(4)+chr(0xff)) Clear LCD serialportwrite(chr(7)+chr(250)+chr(0xff)) Backlight to max serialportwrite(chr(1)+"welcome to"+chr(0xff)) Print Welcome to serialportwrite(chr(2)+chr(2)+chr(1)+chr(0xff)) Move to line 2, column 1 serialportwrite(chr(1)+"hobbytronics"+chr(0xff)) Print Hobbytronics Then in the loop we have while 1 : serialportwrite(chr(2)+chr(1)+chr(13)+chr(0xff)) Move to line 1 column 13 serialportwrite(chr(1)+str(count)+chr(0xff)) Print variable count timesleep(1) Wait for 1 second count = count + 1 Increment count variable Source Code listing # # Hobbytronics LCD Backpack - example code # import serial import time serialport = serialserial("/dev/ttyama0", 9600, timeout=5) timesleep(1) serialportwrite(chr(5)+chr(2)+chr(16)+chr(0xff)) serialportwrite(chr(4)+chr(0xff)) serialportwrite(chr(7)+chr(250)+chr(0xff)) serialportwrite(chr(2)+chr(1)+chr(1)+chr(0xff)) serialportwrite(chr(1)+"welcome to"+chr(0xff)) serialportwrite(chr(2)+chr(2)+chr(1)+chr(0xff)) serialportwrite(chr(1)+"hobbytronics"+chr(0xff)) count = 0 while 1 : serialportwrite(chr(2)+chr(1)+chr(13)+chr(0xff)) serialportwrite(chr(1)+str(count)+chr(0xff)) timesleep(1) count = count + 1 serialportclose() Hobbytronics Ltd Version 20 Page 14

Raspberry Pi I2C example using i2cset We tested it out using a 20x4 LCD display and the following commands // Turn Backlight on (value 0xF0) i2cset -y 0 0x3A 0x07 0xf0 // Set display type to 20x4 i2cset -y 0 0x3A 0x05 0x04 0x14 i // Print Hello i2cset -y 0 0x3A 0x01 0x48 0x65 0x6C 0x6C 0x6F i // Move to line 2 position 1 i2cset -y 0 0x3A 0x02 0x02 0x01 i // Print Hello again i2cset -y 0 0x3A 0x01 0x48 0x65 0x6C 0x6C 0x6F i Hobbytronics Ltd Version 20 Page 15