0% encontró este documento útil (0 votos)
70 vistas19 páginas

Práctica II

Cargado por

Enrique Zuñiga
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
70 vistas19 páginas

Práctica II

Cargado por

Enrique Zuñiga
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MICROCONTROLADORES

Universidad Autónoma de Querétaro


Facultad de Ingeniería
Campus San Juan Del Rio

MICROCONTROLADORES
Profesor: Moreno Suárez Leonardo Esteban

PRÁCTICA II

PANTALLA LCD
SÉPTIMO SEMESTRE

ESTUDIANTES:

Ing. Electromecánica
Mendoza Ortiz José Manuel
298494

Ing. Electromecánica
Zúñiga Lima Enrique Isaac
298505

08 / 09 / 2023

0
MICROCONTROLADORES

I. Introducción

De acuerdo al Instituto Smithsoniano, el primer microcontrolador surgió en la década de


los 70’s, creado por la compañía de Texas Instruments, a cargo de los ingenieros Gary Boone
y Michael Cochran, se basaba con una arquitectura de cuatro bits, con la función de ROM y
RAM, con nombre denominado TMS 1000.

Su diseño trae consigo una gama de oportunidades, entre las cuales se pueden enumerar
la versatilidad que ofrece en cuanto a la disposición de realización de tareas primordiales,
haciendo que se mantengan presentes en cualquier mercado del tipo competente, otras son lo
económico que resulta, produciéndolos en masa por supuesto, el hardware se ve reducido en
tamaño.

Se da una importante revolución en cuestión del diseño de estos elementos ya que, la


aparición del microcontrolador impulsa al desarrollo e implementación de circuitos
integrados para usos específicos y esto toma una relevancia en el ámbito industrial agilizando
procesos, lo que confluye hacia el mundo de la automatización y control de sistemas. ([1]
Oscar, 2012)

La práctica como tal implica el uso de un dispositivo electrónico denominado como


pantalla LCD, la cual es una pantalla de cristal líquida con una matriz que puede mostrar 16,
32, 40 u 80 caracteres, tales caracteres pueden ser del código ASCII o caracteres japoneses,
griegos y símbolos matemáticos. Su peculiaridad es que son de muy bajo consumo de energía
y son ideales para prácticas en las que se requiere la visualización para monitoreo de un
fenómeno físico. ([2] Ingeniería en procesos industriales, 2014)

II. Objetivo

Mostrar el nombre completo de cada miembro del equipo, incluyendo caracteres


especiales, en una pantalla LCD 16*2, mediante la configuración por registros del
microcontrolador STM32U575ZI.

III. Metodología

La metodología a seguir se muestra en el diagrama de flujo presentado en la ilustración


1, con el objetivo de desarrollar de forma eficiente y correcta la práctica.

1
MICROCONTROLADORES

Ilustración 1: Proceso general para la experimentación física y simulada.

Se inicia con el planteamiento del problema, en donde se ha de proponer el resultado


esperado, así como los medios y componentes físicos para cumplir con tal resultado, en este
caso, mostrar los nombres completos, incluyendo los caracteres especiales de cada integrante
del equipo, con el uso de pines de propósito general de entrada y salida (GPIO). Una vez
descrito el problema a atacar, se han de indicar las instrucciones mediante programación a
fin de resolver el problema, en este punto se pueden detectar errores y propuestas de mejora
para obtener un código lo más eficiente posible. A continuación del proceso de indicación de
instrucciones, se tiene la simulación, en tal apartado se experimenta de manera simulada el
comportamiento del circuito físico, sirve como método de depuración de errores, así como el
planteamiento de las conexiones físicas necesarias, tal proceso se desarrolla mediante el
software Proteus.

Se muestra el diagrama de flujo en la ilustración 2 donde se detalla de manera más


específica las actividades necesarias para el desarrollo de la práctica en cuestión.

Ilustración 2: Actividades puntuales para el desarrollo de la práctica.

Se describe de manera breve y concisa los pasos necesarios para cumplir con el objetivo
planteado en la sección II, del presente reporte, ejemplificados mediante el diagrama de flujo
de la ilustración 2.

2
MICROCONTROLADORES

• Lectura y comprensión de registros: Para realizar la correcta programación de los


microcontroladores propuestos para esta práctica, se debe comprender el
funcionamiento de los mismos, en ese sentido y para recabar información importante,
es propuesto el análisis de las hojas de datos de ambos microcontroladores.

• Configuración de registros y código adicional para microcontrolador


STM32F103C8T6: Con la información recabada y analizada se realiza la
configuración y programación de los registros necesarios para la aplicación propuesta
en este documento buscando optimizar los recursos del microcontrolador y la
eliminación de errores.

• Realizar simulación de circuito con microcontrolador STM32F103C8T6: Con el


objetivo de comprobar, planear y predecir el comportamiento del circuito físico junto
con las conexiones necesarias se realiza una simulación. En este punto es obtenido
un primer acercamiento al circuito físico final.

• Configuración de registros y código adicional para microcontrolador


STM32U575ZI: Con el conocimiento y los códigos obtenidos en los pasos anteriores
se realiza una reprogramación adecuando los registros a este microcontrolador

• Realizar circuito físico con microcontrolador STM32U575ZI: En esta última


actividad es obtenido el circuito final, el cual es resultado de la compresión de
información y la experimentación realizada en las actividades anteriores.

IV. Desarrollo, resultados y discusión

El proceso para indicar las instrucciones puntuales que ha de ejecutar el microcontrolador,


se realizan mediante el IDE STM32CUBE 1.13.1®, el cual es una plataforma para desarrollo
y configuración de periféricos, generación de código, compilación y debug para toda la
familia de microprocesadores STM32. ([3] Cuerva Gutierrez, s.f.)

La programación se realiza mediante el manejo de registros del microcontrolador, el


código se divide en tres secciones, una sección donde se describe la librería, la segunda
sección destinada creación de funciones para la comunicación entre el microcontrolador y la
pantalla LCD y la última para la parte estática y dinámica del código. En la primera sección,
se definen los prototipos de funciones. Con respecto a la segunda sección se describe la
creación de funciones que permiten realizar acciones en la pantalla LCD, como visualizar
caracteres, o en su defecto, guardarlos para posteriormente mostrar en la pantalla. En la
tercera sección es en donde se configuran los registros del microcontrolador, es decir, se
configuran los puertos y el tipo de pines, si estos son entradas y salidas y a que ciclo de reloj
se habilitan.

3
MICROCONTROLADORES

Como primer paso, se presenta la tabla 1, donde contiene el código de instrucciones para
la pantalla de cristal líquida, se observa que el código para limpiar la pantalla es 0b1, o su
representación en hexadecimal 0x1. Por otro lado, para añadir un carácter a la memoria RAM
en binario sería 0b0100 0000, y en hexadecimal 0x40. Finalmente, para escribir en la pantalla
LCD sería 0b1000 0000, que en hexadecimal corresponde a 0x80. ([4] ADM1602K-NSW-FBSE
datashet, s.f.)

Tabla 1: Código de instrucciones para LCD.

Mediante la hoja de registros para el microcontrolador común “STM32F103CBT6” [4],


se requiere extraer información importante para poder habilitar y configurar el modo de
operación de los puertos y pines, respectivamente. Accediendo a dicha hoja de registros, en
la sección 8.3.8 APB1 peripheral clock enable register (RCC_APB1ENR), página 148, se
aprecia que el valor inicial por defecto es 0x0000 0000, por lo que se habilita el bit de poder.
Se presenta tabla 2 para una visualización más cómoda para el lector. ([5] STMicroelecronics.,
s.f.)

Tabla 2: Registro de habilitación de reloj periférico (APB1).

Continuando con la configuración, se ha de habilitar los puertos, se accede a la sección


8.3.7 APB2 peripheral clock enable register (RCC_APB2ENR), página 146, y se habilitan

4
MICROCONTROLADORES

los puertos A, B y C, correspondientes a los bits (dos, tres y cuatro). Se presenta tabla 3 para
una visualización más cómoda para el lector. ([5] STMicroelecronics., s.f.)

Tabla 3: Registro de habilitación de reloj periférico (APB2).

Accediendo a la sección 9.2.1 Port configuration register low (GPIOx_CRL) (x=A..G),


página 171, para los modos de configuración para pines de entradas y salidas, se sabe que la
configuración por defecto es 0x4444 4444, por lo que está configurado todos los pines del
modo Input Mode, y Floating input. (0xb0100). Sin embargo, se requiere una salida a una
velocidad de 50 MHz, y de propósito general open-drain. Por otro lado, para el puerto B, se
ha designado dos entradas (pines uno y dos), exceptuando el primer pin (cero), se configuran
como Input with pull-up/ pull-down. Se presenta tabla 4 para una visualización más cómoda
para el lector. ([5] STMicroelecronics., s.f.)

Tabla 4: Configuración de pines para propósito general.

La configuración de los pines se lleva a cabo en el código de instrucciones presentado en


el anexo 3, en la sección VII de este documento.

5
MICROCONTROLADORES

Tabla 5: Nombres y funciones de los pines.

En la tabla 5 se muestran los nombres de los pines y sus funciones, al estar estandarizados,
casi todas las pantallas de cristal liquido trabajan con tal configuración. Para realizar las
conexiones en el software Proteus®, la pantalla LCD se alimenta con cinco volts, y mediante
una resistencia variable se conecta en las terminales o pines Vee y Vss, esto para modificar el
contraste de la pantalla y apreciar una mejor visualización dependiendo del ángulo de
incidencia de la vista del usuario.

Una vez que se ha cargado el documento con extensión (.hex) presionando dos veces
consecutivas sobre el microcontrolador y se selecciona la ruta de dirección del archivo, se
simula el código para el microcontrolador “STM32F103CBT6”.

Ilustración 3: Simulación en el software Proteus.

En la ilustración 3 se aprecia la simulación donde se muestran los nombres de los


integrantes del equipo, de igual manera se cumple con el objetivo de crear y almacenar un

6
MICROCONTROLADORES

carácter para su posterior visualización en la pantalla de cristal líquida. Se crearon tres


caracteres en total, ‘é’, ‘ñ’ y ‘ú’.

Para la implementación del circuito físico con el microcontrolador STM32U575ZI, se


realizaron los cambios correspondientes a los pines, manteniendo la misma estructura en el
código, salvo por esos cambios, esto se debe a que la sintaxis para acceder a los puertos,
pines y al reloj periférico es diferente, dichos cambios se realizaron basándose enteramente
en la hoja de registros para el microcontrolador en cuestión. El circuito físico se realiza en
base al diagrama de conexiones mostrado en la ilustración 3, cambiando los pines de entrada
de PB1 y PB2 a los pines PB10 y PB11, respectivamente. La configuración de los pines para
el microcontrolador STM32U575ZI se lleva a cabo en el código de instrucciones presentado
en el anexo 5.

Ilustración 4: Implementación física con el microcontrolador STM32U575ZI.

Ilustración 5: Visualización del nombre completo del primer integrante del equipo.

7
MICROCONTROLADORES

Ilustración 6: Visualización del nombre completo del segundo integrante del equipo.

En la ilustración 5 se aprecian las conexiones de manera física, siguiendo el mismo


diagrama mostrado en la parte simulada, cambiando los pines de entrada como se
menciona anteriormente. En la ilustración 6 y 7 se aprecia la implementación física donde
se muestran los nombres de los integrantes del equipo, de igual manera se cumple con el
objetivo de crear y almacenar un carácter para su posterior visualización en la pantalla de
cristal líquida. Como método de apoyo se presenta la tabla 6, donde se aprecian las
principales conexiones entre el microcontrolador STM32U575ZI y la pantalla LCD.

Conexiones físicas entre microcontrolador STM32U575ZI y pantalla LCD


Pin de pantalla LCD
Pin de microcontrolador
o botón pulsador
PA0 RS
PA1 E
PA4 D4
PA5 D5
PA6 D6
PA7 D7
PB10 botón pulsador 1
PB11 botón pulsador 2
Tabla 6: Principales conexiones de pines físicos.

V. Conclusiones

• Mendoza Ortiz José Manuel

El control de una pantalla LCD permite la comunicación de manera escrita entre el


usuario y el sistema. Por lo tanto, el correcto despliegue de información en la pantalla
es de vital importancia, ya que proyecta alguna variable, instrucción o el estado del
proceso que se esté desarrollando. En general, la comunicación entre un
microcontrolador y la pantalla LCD se realiza mediante pines que cambian de un valor

8
MICROCONTROLADORES

alto a un valor bajo y viceversa. De esta manera, la velocidad de cambio de valor (alto
o bajo), junto con las diferentes combinaciones posibles entre todos los pines, hace
posible enviar instrucciones a la pantalla LCD, la cual procesará y realizará la
operación correspondiente, como escribir, guardar un dato, mover el cursor o encender
la pantalla.

El principal reto de esta implementación consiste en el guardado de un carácter


especial o diseñado por el programador. Este proceso se lleva a cabo accediendo a una
de las direcciones de memoria vacías de la pantalla y enviando la información de cada
renglón de bits necesarios que, en conjunto, forman el carácter o figura deseada. Por
último, se debe imprimir los datos de acuerdo a la dirección de memoria en la que
fueron guardados. La segunda implicación de esta práctica es la correcta interconexión
de los pines necesarios. En los casos en los cuales las interconexiones no fueron
realizadas correctamente, la pantalla LCD desplegaba figuras extrañas o parpadeaba
en distintas combinaciones de bits.

• Zúñiga Lima Enrique Isaac

Una vez culminada la práctica, se cumplió con el objetivo de manera satisfactoria,


aunque con una serie de complicaciones, donde se mostró el nombre de cada miembro
del equipo incluyendo los caracteres especiales, los cuales fueron diseñados y
guardados previamente. Las principales complicaciones se suscitaron al momento de
implementar en la tarjeta STM32U575ZI, esto debido a problemas con los ajustes de
código con respecto al realizado con el microcontrolador común ya que, en el software
de simulación utilizado, no existe tal microcontrolador con el cual se pueda reproducir
la prueba.

La pantalla de cristal líquida ofrece una serie de ventajas comparando contra un


display de siete segmentos, se puede mostrar de la amplia gama de caracteres, además
de su bajo consumo de energía y una reducción en el espacio físico que ocupa dicho
elemento, que es muy útil para la impresión de datos para una visualización de alguna
variable de monitoreo de algún fenómeno físico o aplicación que se desarrolle.

VI. Fuentes de consulta

[1] Oscar. (26 de febrero de 2012). Introducción a los microcontroladores. Obtenido de


https://www.circuitoselectronicos.org/2011/05/introduccion-los-
microcontroladores.html

9
MICROCONTROLADORES

[2] Ingenieria en procesos industriales. (27 de Mayo de 2014). LETRERO EN PANTALLA


LCD. Obtenido de https://itzelarmenta.wordpress.com/2014/05/27/practica-5-
letrero-en-pantalla-lcd/
[3] Cuerva Gutierrez. (s.f.). TFG-3362 Cuerva Gutierrez. Obtenido de
https://idus.us.es/bitstream/handle/11441/109123/TFG-3362-
CUERVA%20GUTIERREZ.pdf?sequence=1#:~:text=STM32CubeIDE%20es%20u
na%20avanzada%20plataforma,y%20GDB%20para%20realizar%20debugs.
[4] ADM1602K-NSW-FBSE datashet. (s.f.). Datasheetspdf.com. Obtenido de
https://datasheetspdf.com/pdf-file/905645/AMOTEC/ADM1602K-NSW-FBS/1
[5] STMicroelecronics. (s.f.). STM32F103CBT6 Datasheet. Obtenido de
https://pdf1.alldatasheet.com/datasheet-
pdf/view/499695/STMICROELECTRONICS/STM32F103CBT6.html
Xiamen amotec display. (s.f.). Specifications of LCD module. Obtenido de
https://datasheetspdf.com/pdf-file/905645/AMOTEC/ADM1602K-NSW-FBS/1

10
MICROCONTROLADORES

VII. Anexos

11
MICROCONTROLADORES

Anexo 1. Librería de encabezado para el microcontrolador STM32F103CBT6 y


STM32U575ZI6

A continuación, se agrega el código desarrollado, con extensión (.h), tiene la función de


declarar funciones para escritura de datos y ejecución de comandos en la pantalla LCD.

#ifndef SRC_LCD_H_
#define SRC_LCD_H_
#include "main.h"
/*
* port A bit LCD
* 7 dato 7
* 6 dato 6
* 5 dato 5
* 4 dato 4
* 1 E
* 0 RS
*/
void delay(void);

void wcom(char dato);


void wdat(char dato);
void init_lcd(void);

void ESCRIBIR(char texto[],int linea); //DECLARAMOS


FUNCIONES
void CrearCaracter(char caracter[],int numero); //DECLARAMOS FUNCIONES

#endif /* SRC_LCD_H_ */

12
MICROCONTROLADORES

Anexo 2. Código de comunicación entre microcontrolador STM32F103CBT6 y LCD

Se presenta el código desarrollado, con extensión (.c), tiene la función de establecer la


configuración inicial de la pantalla LCD y el microcontrolador STM32F103CBT6 en donde
se realizan las funciones para escritura de datos y ejecución de comandos en la pantalla LCD.
#include "lcd.h"
/*
* port A bit LCD
* 7 dato 7
* 6 dato 6
* 5 dato 5
* 4 dato 4
* 1 E
* 0 RS
*/
void delay(void){
int i;
for(i=0;i<20;i++);//50us
}

void wcom(char dato){


GPIOA->ODR &=~0x3;
GPIOA->ODR=(dato&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
GPIOA->ODR=(dato<<4&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
}
void wdat(char dato){
GPIOA->ODR &=~0x2;
GPIOA->ODR |=0x1;
GPIOA->ODR=(dato&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
GPIOA->ODR=(dato<<4&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
}
void init_lcd(void){
uint32_t i;
RCC->APB2ENR |=0x4; //HABILITA RELOJ
while(!(RCC->APB2ENR &=0x4));
GPIOA->CRL =0x33334433;
GPIOA->ODR =0;
wcom(0x03);
for(i=0;i<2000;i++);//5ms
wcom(0x03);
for(i=0;i<48;i++);//120us
wcom(0x03);
for(i=0;i<48;i++);//120us

13
MICROCONTROLADORES

wcom(0x02);
for(i=0;i<2000;i++);//5ms
wcom(0x28);//modo 4 bits
for(i=0;i<4000;i++);//10ms
wcom(0x28);//seguro de configuración
for(i=0;i<48;i++);//120us
wcom(0x0C);//on
for(i=0;i<48;i++);//120us
wcom(0x01);//clear
for(i=0;i<800;i++);//2ms
wcom(0x06);//entry mode
}

void ESCRIBIR(char texto[], int linea)


{
int pos = 0;

if((linea >= 0x80 && linea <= 0x8f) |


(linea >= 0xC0 && linea <= 0xCf) )
{
wcom(linea);
while(texto[pos] != '\0')
{
wdat(texto[pos]);
pos++;
}
}
}

void CrearCaracter(char caracter[],int numero)


{
int i;
wcom(numero);
for(i=0;i<8;i++)
{
wdat(caracter[i]);
}
}

14
MICROCONTROLADORES

Anexo 3. Instrucciones para el microcontrolador STM32F103CBT6

A continuación, se agrega el código desarrollado, con extensión (.c), tiene la función de


realizar el objetivo planteado en la sección II del presente reporte.

#include "lcd.h"
int main (void){

RCC->APB1ENR |=0x10000000; //HABILITAMOS EL POWER


while(!(RCC->APB1ENR&0x10000000)); // ESPERAMOS EL CONTROLADOR

RCC->APB2ENR |=0x1C; //HABILITAMOS PUERTOS A,B,C


while(!(RCC->APB2ENR&0x1C));

GPIOA->CRL= 0x77774477; //- salidas open drain 171


GPIOB->CRL &= 0x004; //PUERTO B PIN 1-2, Input with pull-up / pull-down
GPIOB->CRL |= 0x884;

init_lcd();
char c1[] = {0x0E, 0x00, 0x17, 0x19, 0x11, 0x11, 0x11, 0x00};//ñ Caracter 0x0
char c2[] = {0x02, 0x04, 0x11, 0x11, 0x11, 0x13, 0x0D, 0x00};//ú Caracter 0x1
char E1[] = {0x01, 0x02, 0x00, 0x0E, 0x11, 0x1F, 0x10, 0x0E};//é Caracter 0x2

CrearCaracter(c1,0x40);
CrearCaracter(c2,0x48);
CrearCaracter(E1,0x4F);

while(1){

if(GPIOB->IDR & 0x2) //298494


{
ESCRIBIR("Jos",0x81);
wdat(0x2);
ESCRIBIR("Manuel",0x86);
ESCRIBIR("Mendoza Ortiz",0xC1);
}
else if(GPIOB->IDR & 0x4)//298505
{
ESCRIBIR("Enrique Isaac",0x81);
ESCRIBIR("Z",0xC1);
wdat(0x1);
wdat(0x0);
ESCRIBIR("iga Lima",0xC4);
}
else
{
wcom(0x01);
}

}
}

15
MICROCONTROLADORES

Anexo 4. Código de comunicación entre microcontrolador STM32U575ZI6 y LCD

Se presenta el código desarrollado, con extensión (.c), tiene la función de establecer la


configuración inicial de la pantalla LCD y el microcontrolador STM32U575ZI en donde se
realizan las funciones para escritura de datos y ejecución de comandos en la pantalla LCD.

#include "lcd.h"
/*
* port A bit LCD
* 7 dato 7
* 6 dato 6
* 5 dato 5
* 4 dato 4
* 1 E
* 0 RS
*/
void delay(void){
int i;
//for(i=0;i<20;i++);//50us
for(i=0;i<800;i++);//50us
}

void wcom(char dato){


GPIOA->ODR &=~0x3;
GPIOA->ODR=(dato&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
GPIOA->ODR=(dato<<4&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
}
void wdat(char dato){
GPIOA->ODR &=~0x2;
GPIOA->ODR |=0x1;
GPIOA->ODR=(dato&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
GPIOA->ODR=(dato<<4&0xF0)|(GPIOA->ODR&0x0F);
GPIOA->ODR |=0x2;
delay();
GPIOA->ODR &=~0x2;
}
void init_lcd(void){
uint32_t i;
RCC->AHB3ENR |=0x4; //HABILITA RELOJ
while(!(RCC->AHB3ENR &=0x4));
GPIOA->MODER = 0x5555;
GPIOA->OTYPER = 0x0;
GPIOA -> OSPEEDR = 0xFFFF;
GPIOA->ODR =0;
wcom(0x03);
//for(i=0;i<2000;i++);//5ms

16
MICROCONTROLADORES

for(i=0;i<80000;i++);//5ms
wcom(0x03);
//for(i=0;i<48;i++);//120us
for(i=0;i<1920;i++);//120us
wcom(0x03);
for(i=0;i<1920;i++);//120us
wcom(0x02);
for(i=0;i<80000;i++);//5ms
wcom(0x28);//modo 4 bits
for(i=0;i<160000;i++);//10ms
wcom(0x28);//seguro de configuración
for(i=0;i<1920;i++);//120us
wcom(0x0C);//on
for(i=0;i<1920;i++);//120us
wcom(0x01);//clear
//for(i=0;i<800;i++);//2ms
for(i=0;i<32000;i++);//2ms
wcom(0x06);//entry mode
}

void ESCRIBIR(char texto[], int linea)


{
int pos = 0;

if((linea >= 0x80 && linea <= 0x8f) |


(linea >= 0xC0 && linea <= 0xCf) )
{
wcom(linea);
while(texto[pos] != '\0')
{
wdat(texto[pos]);
pos++;
}
}
}

void CrearCaracter(char caracter[],int numero)


{
int i;
wcom(numero);
for(i=0;i<8;i++)
{
wdat(caracter[i]);
}
}

17
MICROCONTROLADORES

Anexo 5. Instrucciones para el microcontrolador STM32U575ZI6

A continuación, se agrega el código desarrollado, con extensión (.c), tiene la función de


realizar el objetivo planteado en la sección II del presente reporte para la implementación del
circuito físico.
#include "lcd.h"
int main (void){
RCC->AHB3ENR |=0x4; //HABILITAMOS EL POWER
while(!(RCC->AHB3ENR&0x4)); // ESPERAMOS EL CONTROLADOR

RCC->AHB2ENR1 |=0x7;
while(!(RCC->AHB2ENR1&0x7)); //HABILITAMOS PUERTOS A,B,C

GPIOA->MODER = 0x5555; //PUERTO A PIN, General purpose output mode


GPIOA->OTYPER = 0x0;
GPIOA->OSPEEDR = 0xFFFF;

GPIOB->MODER &= 0x0FFEBF; //PUERTO B PIN 10-11, Input mode pagina 628
GPIOB->PUPDR |= 0XA00000;

int i;
init_lcd();
char c1[] = {0x0E, 0x00, 0x17, 0x19, 0x11, 0x11, 0x11, 0x00};//ñ Caracter 0x0
char c2[] = {0x02, 0x04, 0x11, 0x11, 0x11, 0x13, 0x0D, 0x00};//ú Caracter 0x1
char E1[] = {0x01, 0x02, 0x00, 0x0E, 0x11, 0x1F, 0x10, 0x0E}; //é Caracter 0x2

CrearCaracter(c1,0x40);
CrearCaracter(c2,0x48);
CrearCaracter(E1,0x4F);

while(1){

if(GPIOB->IDR & 0x400) //298494


{
ESCRIBIR("Jos",0x81);
wdat(0x2);
ESCRIBIR("Manuel",0x86);
ESCRIBIR("Mendoza Ortiz",0xC1);
}
else if(GPIOB->IDR & 0x800)//298505
{
ESCRIBIR("Enrique Isaac",0x81);
ESCRIBIR("Z",0xC1);
wdat(0x1);
wdat(0x0);
ESCRIBIR("iga Lima",0xC4);
}
else
{
wcom(0x01);
for(i=0;i<320000;i++);//2ms
}
}
}

18

También podría gustarte