lcd.py
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| lcd.py [2016/07/25 16:09] – walkeradmin | lcd.py [2016/07/25 16:12] (current) – walkeradmin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | # | + | |
| - | # | + | # |
| - | # HD44780 LCD Test Script for | + | # HD44780 LCD Test Script for |
| - | # Raspberry Pi | + | # Raspberry Pi |
| - | # | + | # |
| - | # Author : Matt Hawkins | + | # Author : Matt Hawkins |
| - | # Site : http:// | + | # Site : http:// |
| - | # | + | # |
| - | # Date : 03/ | + | # Date : 03/ |
| - | # | + | # |
| - | + | ||
| - | # The wiring for the LCD is as follows: | + | # The wiring for the LCD is as follows: |
| - | # 1 : GND | + | # 1 : GND |
| - | # 2 : 5V | + | # 2 : 5V |
| - | # 3 : Contrast (0-5V)* | + | # 3 : Contrast (0-5V)* |
| - | # 4 : RS (Register Select) | + | # 4 : RS (Register Select) |
| - | # 5 : R/W (Read Write) | + | # 5 : R/W (Read Write) |
| - | # 6 : Enable or Strobe | + | # 6 : Enable or Strobe |
| - | # 7 : Data Bit 0 - NOT USED | + | # 7 : Data Bit 0 - NOT USED |
| - | # 8 : Data Bit 1 - NOT USED | + | # 8 : Data Bit 1 - NOT USED |
| - | # 9 : Data Bit 2 - NOT USED | + | # 9 : Data Bit 2 - NOT USED |
| - | # 10: Data Bit 3 - NOT USED | + | # 10: Data Bit 3 - NOT USED |
| - | # 11: Data Bit 4 | + | # 11: Data Bit 4 |
| - | # 12: Data Bit 5 | + | # 12: Data Bit 5 |
| - | # 13: Data Bit 6 | + | # 13: Data Bit 6 |
| - | # 14: Data Bit 7 | + | # 14: Data Bit 7 |
| - | # 15: LCD Backlight +5V** | + | # 15: LCD Backlight +5V** |
| - | # 16: LCD Backlight GND | + | # 16: LCD Backlight GND |
| - | + | ||
| - | #import | + | #import |
| - | import RPi.GPIO as GPIO | + | import RPi.GPIO as GPIO |
| - | import time | + | import time |
| - | + | ||
| - | # Define GPIO to LCD mapping | + | # Define GPIO to LCD mapping |
| - | LCD_RS = 26 | + | LCD_RS = 26 |
| - | LCD_E = 19 | + | LCD_E = 19 |
| - | LCD_D4 = 13 | + | LCD_D4 = 13 |
| - | LCD_D5 = 6 | + | LCD_D5 = 6 |
| - | LCD_D6 = 5 | + | LCD_D6 = 5 |
| - | LCD_D7 = 11 | + | LCD_D7 = 11 |
| - | LED_ON = 15 | + | LED_ON = 15 |
| - | + | ||
| - | # Define some device constants | + | # Define some device constants |
| - | LCD_WIDTH = 16 # Maximum characters per line | + | LCD_WIDTH = 16 # Maximum characters per line |
| - | LCD_CHR = True | + | LCD_CHR = True |
| - | LCD_CMD = False | + | LCD_CMD = False |
| - | + | ||
| - | LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line | + | LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line |
| - | LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line | + | LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line |
| - | + | ||
| - | # Timing constants | + | # Timing constants |
| - | E_PULSE = 0.00005 | + | E_PULSE = 0.00005 |
| - | E_DELAY = 0.00005 | + | E_DELAY = 0.00005 |
| - | + | ||
| - | def main(): | + | def main(): |
| - | # Main program block | + | # Main program block |
| - | + | ||
| - | # Initialise display | + | # Initialise display |
| - | lcd_init() | + | lcd_init() |
| - | + | ||
| - | # Toggle backlight on-off-on | + | # Toggle backlight on-off-on |
| - | GPIO.output(LED_ON, | + | GPIO.output(LED_ON, |
| - | time.sleep(1) | + | time.sleep(1) |
| - | GPIO.output(LED_ON, | + | GPIO.output(LED_ON, |
| - | time.sleep(1) | + | time.sleep(1) |
| - | GPIO.output(LED_ON, | + | GPIO.output(LED_ON, |
| - | time.sleep(1) | + | time.sleep(1) |
| - | + | ||
| - | # Send some centred test | + | # Send some centred test |
| - | lcd_byte(LCD_LINE_1, | + | lcd_byte(LCD_LINE_1, |
| - | lcd_string(" | + | lcd_string(" |
| - | lcd_byte(LCD_LINE_2, | + | lcd_byte(LCD_LINE_2, |
| - | lcd_string(" | + | lcd_string(" |
| - | + | ||
| - | time.sleep(3) # 3 second delay | + | time.sleep(3) # 3 second delay |
| - | + | ||
| - | # Send some left justified text | + | # Send some left justified text |
| - | lcd_byte(LCD_LINE_1, | + | lcd_byte(LCD_LINE_1, |
| - | lcd_string(" | + | lcd_string(" |
| - | lcd_byte(LCD_LINE_2, | + | lcd_byte(LCD_LINE_2, |
| - | lcd_string(" | + | lcd_string(" |
| - | + | ||
| - | time.sleep(3) # 3 second delay | + | time.sleep(3) # 3 second delay |
| - | + | ||
| - | # Send some right justified text | + | # Send some right justified text |
| - | lcd_byte(LCD_LINE_1, | + | lcd_byte(LCD_LINE_1, |
| - | lcd_string(" | + | lcd_string(" |
| - | lcd_byte(LCD_LINE_2, | + | lcd_byte(LCD_LINE_2, |
| - | lcd_string(" | + | lcd_string(" |
| - | + | ||
| - | time.sleep(30) | + | time.sleep(30) |
| - | + | ||
| - | # Turn off backlight | + | # Turn off backlight |
| - | GPIO.output(LED_ON, | + | GPIO.output(LED_ON, |
| - | + | ||
| - | def lcd_init(): | + | def lcd_init(): |
| - | GPIO.setmode(GPIO.BCM) | + | GPIO.setmode(GPIO.BCM) |
| - | GPIO.setup(LCD_E, | + | GPIO.setup(LCD_E, |
| - | GPIO.setup(LCD_RS, | + | GPIO.setup(LCD_RS, |
| - | GPIO.setup(LCD_D4, | + | GPIO.setup(LCD_D4, |
| - | GPIO.setup(LCD_D5, | + | GPIO.setup(LCD_D5, |
| - | GPIO.setup(LCD_D6, | + | GPIO.setup(LCD_D6, |
| - | GPIO.setup(LCD_D7, | + | GPIO.setup(LCD_D7, |
| - | GPIO.setup(LED_ON, | + | GPIO.setup(LED_ON, |
| - | # Initialise display | + | # Initialise display |
| - | lcd_byte(0x33, | + | lcd_byte(0x33, |
| - | lcd_byte(0x32, | + | lcd_byte(0x32, |
| - | lcd_byte(0x28, | + | lcd_byte(0x28, |
| - | lcd_byte(0x0C, | + | lcd_byte(0x0C, |
| - | lcd_byte(0x06, | + | lcd_byte(0x06, |
| - | lcd_byte(0x01, | + | lcd_byte(0x01, |
| - | + | ||
| - | def lcd_string(message, | + | def lcd_string(message, |
| - | # Send string to display | + | # Send string to display |
| - | # style=1 Left justified | + | # style=1 Left justified |
| - | # style=2 Centred | + | # style=2 Centred |
| - | # style=3 Right justified | + | # style=3 Right justified |
| - | + | ||
| - | if style==1: | + | if style==1: |
| - | message = message.ljust(LCD_WIDTH," | + | message = message.ljust(LCD_WIDTH," |
| - | elif style==2: | + | elif style==2: |
| - | message = message.center(LCD_WIDTH," | + | message = message.center(LCD_WIDTH," |
| - | elif style==3: | + | elif style==3: |
| - | message = message.rjust(LCD_WIDTH," | + | message = message.rjust(LCD_WIDTH," |
| - | + | ||
| - | for i in range(LCD_WIDTH): | + | for i in range(LCD_WIDTH): |
| - | lcd_byte(ord(message[i]), | + | lcd_byte(ord(message[i]), |
| - | + | ||
| - | def lcd_byte(bits, | + | def lcd_byte(bits, |
| - | # Send byte to data pins | + | # Send byte to data pins |
| - | # bits = data | + | # bits = data |
| - | # mode = True for character | + | # mode = True for character |
| - | # False for command | + | # False for command |
| - | + | ||
| - | GPIO.output(LCD_RS, | + | GPIO.output(LCD_RS, |
| - | + | ||
| - | # High bits | + | # High bits |
| - | GPIO.output(LCD_D4, | + | GPIO.output(LCD_D4, |
| - | GPIO.output(LCD_D5, | + | GPIO.output(LCD_D5, |
| - | GPIO.output(LCD_D6, | + | GPIO.output(LCD_D6, |
| - | GPIO.output(LCD_D7, | + | GPIO.output(LCD_D7, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D4, | + | GPIO.output(LCD_D4, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D5, | + | GPIO.output(LCD_D5, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D6, | + | GPIO.output(LCD_D6, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D7, | + | GPIO.output(LCD_D7, |
| - | + | ||
| - | # Toggle ' | + | # Toggle ' |
| - | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
| - | GPIO.output(LCD_E, | + | GPIO.output(LCD_E, |
| - | time.sleep(E_PULSE) | + | time.sleep(E_PULSE) |
| - | GPIO.output(LCD_E, | + | GPIO.output(LCD_E, |
| - | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
| - | + | ||
| - | # Low bits | + | # Low bits |
| - | GPIO.output(LCD_D4, | + | GPIO.output(LCD_D4, |
| - | GPIO.output(LCD_D5, | + | GPIO.output(LCD_D5, |
| - | GPIO.output(LCD_D6, | + | GPIO.output(LCD_D6, |
| - | GPIO.output(LCD_D7, | + | GPIO.output(LCD_D7, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D4, | + | GPIO.output(LCD_D4, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D5, | + | GPIO.output(LCD_D5, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D6, | + | GPIO.output(LCD_D6, |
| - | if bits& | + | if bits& |
| - | GPIO.output(LCD_D7, | + | GPIO.output(LCD_D7, |
| - | + | ||
| - | # Toggle ' | + | # Toggle ' |
| - | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
| - | GPIO.output(LCD_E, | + | GPIO.output(LCD_E, |
| - | time.sleep(E_PULSE) | + | time.sleep(E_PULSE) |
| - | GPIO.output(LCD_E, | + | GPIO.output(LCD_E, |
| - | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
| - | + | ||
| - | if __name__ == ' | + | if __name__ == ' |
| - | main() | + | main() |
lcd.py.1469462990.txt.gz · Last modified: (external edit)
