User Tools

Site Tools


lcd.py

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lcd.py [2016/07/25 17:08] – created walkeradminlcd.py [2023/03/09 22:35] (current) – external edit 127.0.0.1
Line 1: Line 1:
-#!/usr/bin/python +    #!/usr/bin/python 
-+    
-# HD44780 LCD Test Script for +    # HD44780 LCD Test Script for 
-# Raspberry Pi +    # Raspberry Pi 
-+    
-# Author : Matt Hawkins +    # Author : Matt Hawkins 
-# Site   : http://www.raspberrypi-spy.co.uk +    # Site   : http://www.raspberrypi-spy.co.uk 
-#  +    #  
-# Date   : 03/08/2012 +    # Date   : 03/08/2012 
-+    
- +     
-# 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)       - GROUND THIS PIN +    # 5 : R/W (Read Write)       - GROUND THIS PIN 
-# 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, True) +      GPIO.output(LED_ON, True) 
-  time.sleep(1) +      time.sleep(1) 
-  GPIO.output(LED_ON, False) +      GPIO.output(LED_ON, False) 
-  time.sleep(1) +      time.sleep(1) 
-  GPIO.output(LED_ON, True) +      GPIO.output(LED_ON, True) 
-  time.sleep(1) +      time.sleep(1) 
- +     
-  # Send some centred test +      # Send some centred test 
-  lcd_byte(LCD_LINE_1, LCD_CMD) +      lcd_byte(LCD_LINE_1, LCD_CMD) 
-  lcd_string("Rasbperry Pi",2) +      lcd_string("Rasbperry Pi",2) 
-  lcd_byte(LCD_LINE_2, LCD_CMD) +      lcd_byte(LCD_LINE_2, LCD_CMD) 
-  lcd_string("Model B",2) +      lcd_string("Model B",2) 
- +     
-  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_CMD) +      lcd_byte(LCD_LINE_1, LCD_CMD) 
-  lcd_string("1234567890123456",1) +      lcd_string("1234567890123456",1) 
-  lcd_byte(LCD_LINE_2, LCD_CMD) +      lcd_byte(LCD_LINE_2, LCD_CMD) 
-  lcd_string("abcdefghijklmnop",1) +      lcd_string("abcdefghijklmnop",1) 
- +     
-  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_CMD) +      lcd_byte(LCD_LINE_1, LCD_CMD) 
-  lcd_string("Raspberrypi-spy",3) +      lcd_string("Raspberrypi-spy",3) 
-  lcd_byte(LCD_LINE_2, LCD_CMD) +      lcd_byte(LCD_LINE_2, LCD_CMD) 
-  lcd_string(".co.uk",3) +      lcd_string(".co.uk",3) 
- +     
-  time.sleep(30) +      time.sleep(30) 
- +     
-  # Turn off backlight +      # Turn off backlight 
-  GPIO.output(LED_ON, False) +      GPIO.output(LED_ON, False) 
- +     
-def lcd_init(): +    def lcd_init(): 
-  GPIO.setmode(GPIO.BCM)       # Use BCM GPIO numbers +      GPIO.setmode(GPIO.BCM)       # Use BCM GPIO numbers 
-  GPIO.setup(LCD_E, GPIO.OUT)  # E +      GPIO.setup(LCD_E, GPIO.OUT)  # E 
-  GPIO.setup(LCD_RS, GPIO.OUT) # RS +      GPIO.setup(LCD_RS, GPIO.OUT) # RS 
-  GPIO.setup(LCD_D4, GPIO.OUT) # DB4 +      GPIO.setup(LCD_D4, GPIO.OUT) # DB4 
-  GPIO.setup(LCD_D5, GPIO.OUT) # DB5 +      GPIO.setup(LCD_D5, GPIO.OUT) # DB5 
-  GPIO.setup(LCD_D6, GPIO.OUT) # DB6 +      GPIO.setup(LCD_D6, GPIO.OUT) # DB6 
-  GPIO.setup(LCD_D7, GPIO.OUT) # DB7 +      GPIO.setup(LCD_D7, GPIO.OUT) # DB7 
-  GPIO.setup(LED_ON, GPIO.OUT) # Backlight enable   +      GPIO.setup(LED_ON, GPIO.OUT) # Backlight enable   
-  # Initialise display +      # Initialise display 
-  lcd_byte(0x33,LCD_CMD) +      lcd_byte(0x33,LCD_CMD) 
-  lcd_byte(0x32,LCD_CMD) +      lcd_byte(0x32,LCD_CMD) 
-  lcd_byte(0x28,LCD_CMD) +      lcd_byte(0x28,LCD_CMD) 
-  lcd_byte(0x0C,LCD_CMD)   +      lcd_byte(0x0C,LCD_CMD)   
-  lcd_byte(0x06,LCD_CMD) +      lcd_byte(0x06,LCD_CMD) 
-  lcd_byte(0x01,LCD_CMD)   +      lcd_byte(0x01,LCD_CMD)   
- +     
-def lcd_string(message,style): +    def lcd_string(message,style): 
-  # 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_CHR) +        lcd_byte(ord(message[i]),LCD_CHR) 
- +     
-def lcd_byte(bits, mode): +    def lcd_byte(bits, mode): 
-  # 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, mode) # RS +      GPIO.output(LCD_RS, mode) # RS 
- +     
-  # High bits +      # High bits 
-  GPIO.output(LCD_D4, False) +      GPIO.output(LCD_D4, False) 
-  GPIO.output(LCD_D5, False) +      GPIO.output(LCD_D5, False) 
-  GPIO.output(LCD_D6, False) +      GPIO.output(LCD_D6, False) 
-  GPIO.output(LCD_D7, False) +      GPIO.output(LCD_D7, False) 
-  if bits&0x10==0x10: +      if bits&0x10==0x10: 
-    GPIO.output(LCD_D4, True) +        GPIO.output(LCD_D4, True) 
-  if bits&0x20==0x20: +      if bits&0x20==0x20: 
-    GPIO.output(LCD_D5, True) +        GPIO.output(LCD_D5, True) 
-  if bits&0x40==0x40: +      if bits&0x40==0x40: 
-    GPIO.output(LCD_D6, True) +        GPIO.output(LCD_D6, True) 
-  if bits&0x80==0x80: +      if bits&0x80==0x80: 
-    GPIO.output(LCD_D7, True) +        GPIO.output(LCD_D7, True) 
- +     
-  # Toggle 'Enable' pin +      # Toggle 'Enable' pin 
-  time.sleep(E_DELAY)     +      time.sleep(E_DELAY)     
-  GPIO.output(LCD_E, True)   +      GPIO.output(LCD_E, True)   
-  time.sleep(E_PULSE) +      time.sleep(E_PULSE) 
-  GPIO.output(LCD_E, False)   +      GPIO.output(LCD_E, False)   
-  time.sleep(E_DELAY)       +      time.sleep(E_DELAY)       
- +     
-  # Low bits +      # Low bits 
-  GPIO.output(LCD_D4, False) +      GPIO.output(LCD_D4, False) 
-  GPIO.output(LCD_D5, False) +      GPIO.output(LCD_D5, False) 
-  GPIO.output(LCD_D6, False) +      GPIO.output(LCD_D6, False) 
-  GPIO.output(LCD_D7, False) +      GPIO.output(LCD_D7, False) 
-  if bits&0x01==0x01: +      if bits&0x01==0x01: 
-    GPIO.output(LCD_D4, True) +        GPIO.output(LCD_D4, True) 
-  if bits&0x02==0x02: +      if bits&0x02==0x02: 
-    GPIO.output(LCD_D5, True) +        GPIO.output(LCD_D5, True) 
-  if bits&0x04==0x04: +      if bits&0x04==0x04: 
-    GPIO.output(LCD_D6, True) +        GPIO.output(LCD_D6, True) 
-  if bits&0x08==0x08: +      if bits&0x08==0x08: 
-    GPIO.output(LCD_D7, True) +        GPIO.output(LCD_D7, True) 
- +     
-  # Toggle 'Enable' pin +      # Toggle 'Enable' pin 
-  time.sleep(E_DELAY)     +      time.sleep(E_DELAY)     
-  GPIO.output(LCD_E, True)   +      GPIO.output(LCD_E, True)   
-  time.sleep(E_PULSE) +      time.sleep(E_PULSE) 
-  GPIO.output(LCD_E, False)   +      GPIO.output(LCD_E, False)   
-  time.sleep(E_DELAY)    +      time.sleep(E_DELAY)    
- +     
-if __name__ == '__main__': +    if __name__ == '__main__': 
-  main()+      main()    
lcd.py.1469462918.txt.gz · Last modified: 2023/03/09 22:35 (external edit)