lcd.py
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
lcd.py [2016/07/25 17:08] – created walkeradmin | lcd.py [2023/03/09 22:35] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
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.1469462918.txt.gz · Last modified: 2023/03/09 22:35 (external edit)