#!/usr/bin/python # #';; LCD-Routinen fuer M50530 ;; #';; ======================== ;; #';; ;; #';; Titel : 4 Bit LCD M50530 ;; #';; Autor : Arno Schweissinger ;; #';; Datum : 14.12.2013 ;; #';; Code : Python 3 ;; #';; MC : Raspberry Pi ;; #';; LCD : M505300 24x8 LCD ;; #';; Stromversorgung: LCD 5V & 8,2V ;; #';; ;; #';; 4bit-Interface M50530 ;; #';; ;; #';;LCD Signsl PasPi GPIO ;; #';;Pin Pin ;; #';; 6 D4 Pin 22 GPIO25 ;; #';; 7 D5 Pin 18 GPIO24 ;; #';; 8 D6 Pin 16 GPIO23 ;; #';; 9 D7 Pin 12 GPIO18 ;; #';; 10 EX Pin 15 GPIO22 ;; #';; 11 RW auf GND Pin 06 ;; #';; 12 OC2 Pin 24 GPIO8 ;; #';; 13 OC1 Pin 26 GPIO7 ;; #';; 14 Kontrast 8V aus einer 9V Batterie ;; #';; 15 5V Pin 02 ;; #';; 16 GND Pin 06 ;; import time import RPi.GPIO as GPIO from time import gmtime, strftime from datetime import datetime # Zuordnung der GPIO Pins (ggf. anpassen) LCD_OC1 = 7 # Pin 26 LCD_OC2 = 8 # Pin 24 LCD_EX = 22 # Pin 15 LCD_DATA4 = 25 # Pin 22 LCD_DATA5 = 24 # Pin 18 LCD_DATA6 = 23 # Pin 16 LCD_DATA7 = 18 # Pin 12 LCD_EX_wait = 0.0001 Line = [0x00,0x30,0x60,0x90,0x18,0x48,0x78,0xa8] #'------------------------- #' Begin Hauptprogramm #'------------------------- def main(): # Main program block Lcd_init() while True: Lcd_cls() Lcd_xy(3,4) Lcd_str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')) time.sleep(0.3) def Lcd_init(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(LCD_OC1 , GPIO.OUT) GPIO.setup(LCD_OC2 , GPIO.OUT) GPIO.setup(LCD_EX , GPIO.OUT) GPIO.setup(LCD_DATA4 , GPIO.OUT) GPIO.setup(LCD_DATA5 , GPIO.OUT) GPIO.setup(LCD_DATA6 , GPIO.OUT) GPIO.setup(LCD_DATA7 , GPIO.OUT) #Lcd_parameter = &B1101 1010 #'set function mode (SF) 0b11011010 Lcd_command(0xDA) #'4bit-Modus einstellen 11 -4/8bit-FONT-2xDUTY-2xRAM #'set entry mode (SE) 0b01010000 Lcd_command(0x50) #'Cursor selbst setzen #'set display mode (SD) 0b00110011 Lcd_command(0x33) #'Display ein, Cursor nicht anzeigen Lcd_cls() def Lcd_cls(): Lcd_command(0x01) time.sleep(0.001) def Lcd_str(message): for i in range(len(message)): Lcd_byte(ord(message[i])) def Lcd_byte(ch): GPIO.output(LCD_OC1, False) GPIO.output(LCD_OC2, True) Lcd_out(ch) def Lcd_command(command): GPIO.output(LCD_OC1, False) GPIO.output(LCD_OC2, False) Lcd_out(command) def Lcd_xy(x,y): CurPos = Line[y-1] + x-1 GPIO.output(LCD_OC1, True) GPIO.output(LCD_OC2, True) Lcd_out(CurPos) def Lcd_out(command): # high nibble GPIO.output(LCD_DATA4, False) GPIO.output(LCD_DATA5, False) GPIO.output(LCD_DATA6, False) GPIO.output(LCD_DATA7, False) if command&0x80==0x80: GPIO.output(LCD_DATA7, True) if command&0x40==0x40: GPIO.output(LCD_DATA6, True) if command&0x20==0x20: GPIO.output(LCD_DATA5, True) if command&0x10==0x10: GPIO.output(LCD_DATA4, True) Lcd_Enable() # low nibble GPIO.output(LCD_DATA4, False) GPIO.output(LCD_DATA5, False) GPIO.output(LCD_DATA6, False) GPIO.output(LCD_DATA7, False) if command&0x08==0x08: GPIO.output(LCD_DATA7, True) if command&0x04==0x04: GPIO.output(LCD_DATA6, True) if command&0x02==0x02: GPIO.output(LCD_DATA5, True) if command&0x01==0x01: GPIO.output(LCD_DATA4, True) Lcd_Enable() def Lcd_Enable(): GPIO.output(LCD_EX, True) time.sleep(LCD_EX_wait) GPIO.output(LCD_EX, False) time.sleep(LCD_EX_wait) if __name__ == '__main__': main()