“”“Proporciona una API para comunicarse con pantallas LCD de caracteres compatibles con HD44780”.“”
importación Hora
…class LcdApi:
“”“HD44780 implementa una API para comunicarse con pantallas LCD de caracteres compatibles.
Esta clase solo conoce los comandos que envía a la pantalla LCD y no cómo obtenerlos.
Póngalos en la pantalla LCD.
Se espera que la clase derivada implemente hal_xxx función.
““”
# Los siguientes nombres constantes se han eliminado de avrlib lcd.h:
#ヘッダーファイル, pero cambié la definición del número de bits
# Máscara de bits.
#
# HD44780 Conjunto de comandos del controlador LCD
LCD_CLR = 0x01 # DB0: Borrar
LCD_HOME = 0x02 # DB1: Volver a la posición de inicio
LCD_ENTRY_MODE = 0x04 # DB2: Configuración del modo de entrada
LCD_ENTRY_INC = 0x02 # –DB1: Incremento
LCD_ENTRY_SHIFT = 0x01 # –DB0: Mayús
LCD_ON_CTRL = 0x08 # DB3: Activar LCD/cursor
LCD_ON_DISPLAY = 0x04 # –DB2: Activar pantalla
LCD_ON_CURSOR = 0x02 # –DB1: Activar el cursor
LCD_ON_BLINK = 0x01 # –DB0: Cursor parpadeante
LCD_MOVE = 0x10 # DB4: Mover cursor/pantalla
LCD_MOVE_DISP = 0x08 # –DB3: Mover pantalla (0-> mover cursor)
LCD_MOVE_RIGHT = 0x04 # –DB2: Mover a la derecha (0->Mover a la izquierda)
LCD_FUNCTION = 0x20 # DB5: Conjunto de funciones
LCD_FUNCTION_8BIT = 0x10 # –DB4: Configuración del modo de 8 bits (modo 0->4 bits)
LCD_FUNCTION_2LINES = 0x08 # –DB3: 2 líneas (0->1 líneas)
LCD_FUNCTION_10DOTS = 0x04 # –DB2: fuente 5×10 (fuente 0->5×7)
LCD_FUNCTION_RESET = 0x30 # Ver “Inicialización por instrucción”
LCD_CGRAM = 0x40 # DB6: Establecer dirección RAM CG
LCD_DDRAM = 0x80 # DB7: DD Establecer la dirección RAM
LCD_RS_CMD = 0
LCD_RS_DATA = 1
LCD_RW_WRITE = 0
LCD_RW_READ = 1
Def __Init__(propio, num_lines, num_columns):
propio.num_lines = num_lines
Si propio.num_lines > 4:
propio.num_lines = 4
propio.num_columns = num_columns
Si propio.num_columns > 40:
propio.num_columns = 40
propio.cursor_x = 0
propio.cursor_y = 0
propio.Luz de fondo = verdadero
propio.display_off()
propio.backlight_on()
propio.claro()
propio.hal_write_command(propio.LCD_ENTRY_MODE | propio.LCD_ENTRY_INC)
propio.hide_cursor()
propio.display_on()
Def claro(propio):
“”“Borre la pantalla LCD y mueva el cursor a la parte superior izquierda
Esquina.
““”
propio.hal_write_command(propio.LCD_CLR)
propio.hal_write_command(propio.LCD_HOME)
propio.cursor_x = 0
propio.cursor_y = 0
Def show_cursor(propio):
“”“Haz visible el cursor”.“”
propio.hal_write_command(propio.LCD_ON_CTRL | propio.LCD_ON_DISPLAY |
propio.LCD_ON_CURSOR)
Def hide_cursor(propio):
“”“Oculta el cursor”.“”
propio.hal_write_command(propio.LCD_ON_CTRL | propio.LCD_ON_DISPLAY)
Def blink_cursor_on(propio):
“”“Enciende el cursor y haz que parpadee”.“”
propio.hal_write_command(propio.LCD_ON_CTRL | propio.LCD_ON_DISPLAY |
propio.LCD_ON_CURSOR | propio.LCD_ON_BLINK)
Def blink_cursor_off(propio):
“”“Enciende el cursor para que no parpadee (es decir, se ilumine)”“”
propio.hal_write_command(propio.LCD_ON_CTRL | propio.LCD_ON_DISPLAY |
propio.LCD_ON_CURSOR)
Def display_on(propio):
“”“Encienda la pantalla LCD (es decir, desenvíe)”“”
propio.hal_write_command(propio.LCD_ON_CTRL | propio.LCD_ON_DISPLAY)
Def display_off(propio):
“”“Apague la pantalla LCD (es decir, en blanco)”.“”
propio.hal_write_command(propio.LCD_ON_CTRL)
Def backlight_on(propio):
“”“Enciende la luz de fondo.
Esto no es realmente un comando LCD, pero algunos módulos tienen una luz de fondo
El control permite que el HAL pase comandos.
““”
propio.Luz de fondo = verdadero
propio.hal_backlight_on()
Def backlight_off(propio):
“”“Apaga la luz de fondo.
Esto no es realmente un comando LCD, pero algunos módulos tienen una luz de fondo
El control permite que el HAL pase comandos.
““”
propio.Luz de fondo = falso
propio.hal_backlight_off()
Def move_to(propio, cursor_x, cursor_y):
“”“Mueve la posición del cursor a la posición especificada.
La posición es basada en cero (es decir, cursor_x == 0 indica la primera columna).
““”
propio.cursor_x = cursor_x
propio.cursor_y = cursor_y
dirección = cursor_x & 0x3f
Si cursor_y & 1:
dirección += 0x40 # Las líneas 1 y 3 añaden 0x40
Si cursor_y & 2:
dirección += 0x14 # Las líneas 2 y 3 añaden 0x14
propio.hal_write_command(propio.LCD_DDRAM | dirección)
Def Putcher(propio, chamuscar):
“”“Escribe los caracteres especificados en la pantalla LCD del cursor actual
Especifique una posición y avance el cursor una posición.
““”
Si chamuscar != ‘\n’:
propio.hal_write_data(oda(chamuscar))
propio.cursor_x += 1
Si propio.cursor_x >= propio.num_columns o chamuscar == ‘\n’:
propio.cursor_x = 0
propio.cursor_y += 1
Si propio.cursor_y >= propio.num_lines:
propio.cursor_y = 0
propio.move_to(propio.cursor_x, propio.cursor_y)
Def Putstol(propio, hilo):
“”“Escribe la cadena especificada en la pantalla LCD del cursor actual
Especifique la posición y avance la posición del cursor adecuadamente.
““”
para chamuscar Y hilo:
propio.Putcher(chamuscar)
Def custom_char(propio, lugar, Mapa de caracteres):
“”“Escribe una carta en una de las ocho ubicaciones disponibles de CGRAM
De chr(0) a chr(7).
““”
lugar &= 0x7
propio.hal_write_command(propio.LCD_CGRAM | (lugar << 3))
Hora.sleep_us(40)
para Yo Y gama(8):
propio.hal_write_data(Mapa de caracteres[i])
Hora.sleep_us(40)
propio.move_to(propio.cursor_x, propio.cursor_y)
Def hal_backlight_on(propio):
“”“Permita que la capa HAL encienda la luz de fondo.
Las clases HAL derivadas implementan esta función según sea necesario.
““”
pasar
Def hal_backlight_off(propio):
“”“Permita que la capa HAL apague la luz de fondo.
Las clases HAL derivadas implementan esta función según sea necesario.
““”
pasar
Def hal_write_command(propio, Teletipo):
“”“Escribe un comando en la pantalla LCD.
Se esperaría que una clase HAL derivada implemente esto
Función.
““”
levantar Error no implementado
Def hal_write_data(propio, datos):
“”“Escriba datos en la pantalla LCD.
Se esperaría que una clase HAL derivada implemente esto
Función.
““”
levantar Error no implementado