[Aprendizaje de STC MCU] Lección 17: Pantalla LCD1602

[Intrusión del resumen del curso del Sr. Zhu]

La primera parte, lista de capítulos

1.17.1_2. Fondo relacionado con la pantalla LCD 1_2

1.17.3. Empiece a aprender LCD1602

1.17.4. Temporización de bajo nivel del controlador LCD1602 1

1.17.5. Temporización de bajo nivel del controlador LCD1602 2

1.17.6. Código de práctica


Segunda parte, Registro del aula

1.17.1_2. Fondo relacionado con la pantalla LCD 1_2

1.17.1.1 Introducción a LCD
(1) Pantalla Pantalla
CRT (TV de cabeza grande)
Pantalla LCD de cristal líquido Pantalla
LED de cristal líquido, etc.

(2) LCD (Pantalla de cristal líquido), pantalla de cristal líquido, introducción del principio
El principio de funcionamiento de la pantalla de cristal líquido es utilizar las características físicas del cristal líquido , Cuando se enciende la electricidad, la disposición de cristal líquido se vuelve ordenada, lo que facilita el paso de la luz; cuando no se enciende la electricidad, la disposición se vuelve caótica, evitando el paso de la luz.
¡Transmitancia!
(3) Áreas de aplicación LCD
Tablet PC, computadoras portátiles, pantallas de teléfonos móviles, pantallas de TV inteligentes ...
(4) LED OLED (reconocido como la pantalla de próxima generación)
OLED: pantalla curva, especialmente Samsung


1.17.1.2, el principio de las pantallas electrónicas
(1 ) Píxeles (resolución):

  • Pixel (px): la unidad más pequeña que forma una imagen
  • Resolución: la resolución de la pantalla se refiere al número máximo de píxeles en direcciones vertical y horizontal.
  • PPI: número de píxeles por pulgada


¡Tome el dibujo como demostración!

(2) Memoria de video (memoria de la tarjeta gráfica): memoria utilizada para la visualización

  • La memoria de video se usa para almacenar información gráfica que se procesará , se usa para almacenar datos de píxeles
  • Tarjeta gráfica = memoria de video + GPU + placa de circuito + firmware BIOS
  • Al programar, ¡no tiene que preocuparse por almacenar los píxeles que desea manipular en la memoria de video!

(3) Fuente: la fuente es el código correspondiente cuando el carácter se muestra en la matriz de puntos

  • Las fuentes se utilizan al mostrar caracteres chinos o caracteres
  • Lo he tocado antes al mostrar caracteres chinos en la matriz de puntos LED
  • La fuente no es única: Times New Roman, Kaiti, HeiTi, Time New Rome, etc., el mismo carácter y diferentes fuentes tienen diferentes códigos
    Descripción de la fuente generada

(4) Biblioteca de fuentes: la biblioteca que contiene fuentes es
     similar a la impresión de tipos móviles
(5) Controlador y controlador

  • El controlador de la pantalla: el chip de control es responsable de comunicarse con la CPU, que está más cerca del software.
  • Controlador de pantalla: tome el controlador de LCD como ejemplo, se utiliza para modular la fase, el valor pico, la frecuencia, etc. de la señal potencial aplicada al electrodo del dispositivo de pantalla de cristal líquido para establecer un campo eléctrico de conducción para lograr el efecto de pantalla durante la pantalla de cristal líquido, que está más cerca del hardware .
  • Tenga en cuenta el controlador al programar, el controlador no es sensible.

(6) Función de realización de software + hardware

  • Solo es necesario comprender el hardware y el controlador se utiliza para controlar la memoria de video y luego el hardware para realizar la función.


1.17.3. Empiece a aprender LCD1602


1.17.3.1 Introducción
(1) Introducción a LCD1602

  • 16 columnas x 2 filas, la pantalla muestra 2 filas, cada una con 16 caracteres.
  • Módulo LCD de matriz de puntos especialmente utilizado para mostrar letras, números y símbolos
  • Puede mostrar 32 caracteres, pero el número de píxeles no es 32, porque un carácter está compuesto por varios píxeles. Es posible que un carácter esté compuesto por 5 * 7 = 35 píxeles, o puede estar compuesto por 5 * 10 = 50 píxeles.
  • LCD1602 tiene una biblioteca de fuentes incorporada. ¡Puedes obtener la fuente directamente!

(2) No se puede mostrar chino

  • LCD1602 tiene una biblioteca de fuentes de código ASCII. Cuando queremos que LCD1602 muestre un cierto carácter de código ASCII, solo necesitamos enviar el código ASCII correspondiente a este carácter al controlador dentro de LCD1602, el controlador verificará la biblioteca de fuentes para obtener la fuente y luego enviará la fuente Proporcione el controlador interno para controlar la pantalla LCD.

(3) Propósito: Rara vez se usa,
Ver imagen de origen

1.17.3.2, el esquema y los pines de cableado se pueden usar en la calculadora

(1) Pin:

  • 8 interfaces de datos: DB0-DB7: transmisión de datos en paralelo
  • 3 interfaces de control: RS: bit de selección de datos / comando (H / L), RW: bit de selección de lectura / escritura (H / L), E: señal de habilitación
  • Ajustar el contraste 1: VO
  • VCC / GND 4: GND, VCC, BG VCC, BG GND: fuente de alimentación positiva y negativa y retroiluminación positiva y negativa

(2) Interfaz paralela (DB0-DB7)
Paralela significa que hay varias líneas de datos, cada una de las cuales puede transmitir 1 bit, por lo que se pueden transmitir varios bits al mismo tiempo. LCD1602 tiene 8 líneas de datos, por lo que se transmiten 8 bits simultáneamente a la vez.
(3) Confirmación de cableado

  • Cómo conectar LCD1602 a la placa de desarrollo (demostración)
  • Cómo conectar la MCU al enchufe LCD1602: se ha conectado, siempre que el sbit esté bien declarado



1.17.3.3. Manual de datos
Haga clic en el manual de datos SMC1602 para descargar
(1) Concepto: LCM: Módulo LCD (módulo LCD)
(2) Análisis de los principales parámetros técnicos
(3) Definición de pines (combinado con diagrama esquemático para análisis comparativo)

(4) Control Descripción de la interfaz del controlador (tenga en cuenta el modelo del controlador)

Cuando RS = H, D0-D7 transmite datos. Cuando
RS = L, D0-D7 transmite comandos. Cuando
RW = H, significa que queremos leer. Cuando
RW = L, significa que queremos escribir
E = H. Cuando habilita           
E = L, significa prohibición (deshabilitar)

1.17.4. Temporización de bajo nivel del controlador LCD1602 1

1.17.4.1 Puntos clave
(1) Pines de la interfaz de control de tiempo


(2) La palabra de estado, el código de instrucción y los datos se encuentran todos a través de la interfaz de datos DB0-DB7
>> Palabra de estado:

  • Función de detección de lectura y escritura de rutina oficial

STA0-6 es el valor de la dirección actual, que es el cursor.
El controlador viene con un búfer de RAM de 80 * 8 bits (80 bytes), como se muestra a continuación:
Rango de direcciones de RAM:

  • Función de visualización de coordenadas de rutina oficial
  • Realice la configuración de coordenadas escribiendo instrucciones

>> Código de comando:

  • Inicialización:
    0x38 (abierto, 5 * 7, datos de 8 bits)
  • Configuración de encendido / apagado de la pantalla :
    0x0C enciende la pantalla sin mostrar el cursor
    0x08 apaga la pantalla
    0x0F enciende la pantalla y muestra el cursor y el cursor parpadea

  • Configuración del cursor:
    0x06 (leer y escribir un carácter, agregar uno al puntero de dirección y al cursor)

  • Pantalla clara:
    0x01
  • Retorno de carro:
    0x02
  • Establezca las coordenadas de inicio
    0x80 + (0x00-0x0F) La primera instrucción de puntero de dirección de conjunto de línea
    0x80 + (0x40-0x4F) La instrucción de puntero de dirección de conjunto de segunda línea

    addr | 0x80, puede darse cuenta de addr plus 0x80, piense por qué

>> Datos: Para
escribir datos directamente, simplemente configure RS / RW / E y coloque los datos en DB0-DB7. Debido a que los datos se transmiten en paralelo, ¡se pueden transmitir al mismo tiempo!

1.17.4.2 Análisis de la función de serie temporal subyacente

  • Read_Busy ()
  • Lcd1602_Write_Cmd ()
  • Lcd1602_Write_Data ()

1.17.5.1 、 Leer datos

  • El código de muestra no tiene esta función para leer datos.
  • Los datos se pueden leer desde LCD1602 y luego imprimirlos en el puerto serie.

1.17.5. Temporización de bajo nivel del controlador LCD1602 2

1.17.5.1 espacio RAM

(1) Rango de direcciones de RAM (el rango de direcciones es 00-39 por línea, pero solo usamos 00-16 por línea)

(2) ¿Cuáles son los
datos: datos: el valor del código ASCII del carácter que se mostrará?
Método de escritura de datos:

  • La cadena "" o el carácter ''
  • Envíe el valor del código en la tabla de códigos ascii directamente             

1.17.6. Código de práctica

//main.c
#include "lcd1602.h"

void LCD_init(void);
void LCD_show(u8 *str);
void main(void)
{
	u8 str[] = "hello,everyone!";
	LCD_init();
	LCD_show(str);
	while(1);
}

void LCD_init(void)
{
	Lcd1602_Write_Cmd(0x38); //初始化
	Lcd1602_Write_Cmd(0x0C); //显示开/关设置
	Lcd1602_Write_Cmd(0x06); //光标设置
	Lcd1602_Write_Cmd(0x01); //清屏
	LCD_setcursor(0,0);
}
void LCD_show(u8 *str)
{
	while(*str != '\0')
	{
		Lcd1602_Write_Data(*str);
		str++;
	}
}
//lcd1602.h
#ifndef __LCD1602_H_
#define __LCD1602_H_

#include <reg51.h>

#define  u8  unsigned char
#define  u16  unsigned int
#define LCD_DB  P0  //DB0-DB7

sbit LCD_EN = P2^7;
sbit LCD_RS = P2^6;
sbit LCD_WR = P2^5;

void RW_Busy();  //忙检测函数
void Lcd1602_Write_Cmd(unsigned char cmd);   //写命令
void Lcd1602_Write_Data(unsigned char dat);  //写数据
void LCD_setcursor(u8 x,u8 y); //设置坐标


#endif
//lcd1602.c
#include "lcd1602.h"

void RW_Busy()  //忙检测函数,读状态
{
	  unsigned char sta;    
    LCD_DB = 0xff;		//
    LCD_RS = 0;
    LCD_WR = 1;
    do
    {
        LCD_EN = 1;
        sta = LCD_DB;
        LCD_EN = 0;    //使能,用完就拉低,释放总线
    }while(sta & 0x80);//判断第7位是否为0
}
void Lcd1602_Write_Cmd(unsigned char cmd) //写命令
{
	RW_Busy();
	LCD_RS = 0;
  LCD_WR = 0;
	LCD_DB = cmd;
	LCD_EN = 1;
	LCD_EN = 0;	
}
void Lcd1602_Write_Data(unsigned char dat) //写数据
{
	RW_Busy();
	LCD_RS = 1;
  LCD_WR = 0;
	LCD_DB = dat;
	LCD_EN = 1;
	LCD_EN = 0;
}
void LCD_setcursor(u8 x,u8 y) //设置坐标
{
	unsigned char addr;
  if(y == 0)
			addr = 0x00 + x;
	else
			addr = 0x40 + x;
    
 Lcd1602_Write_Cmd(addr|0x80);
	
}

Enlace de descarga del programa para esta lección: LCD1602

¡Esta lección ha terminado!

Supongo que te gusta

Origin blog.csdn.net/qq_27148893/article/details/110581194
Recomendado
Clasificación