Autor Tema: LCD16x2 "Hola mundo"  (Leído 4580 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
LCD16x2 "Hola mundo"
« en: 06 de Julio de 2018, 05:44:33 »
Buenas, estoy buscando un código para que pueda probar un LCD16x2 (ST7066U) en la placa STM32F469I-Disco, pero no encuentro nada. Ustedes han visto algo por ahí? Algo que pueda ayudarme a reflejar el típico "Hello Word!"?



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242

Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
Re:LCD16x2 "Hola mundo"
« Respuesta #2 en: 06 de Julio de 2018, 12:39:21 »
Sí, he visto infinidad de ejemplos pero todos para la placa inferior. La que yo tengo, STM32F469I-Disco, trae menos pines y no se moverlos en las librerías para que me funcione. Por eso preguntaba en concreto si había alguno específico en para este modelo.

Gracias de todas maneras! Seguiré probando a modificar los GPIO

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD16x2 "Hola mundo"
« Respuesta #3 en: 06 de Julio de 2018, 13:07:37 »
Si tenes una interface que necesita minimo 6 pines, y vos NO dispones 6 pines, entonces no va existir ningún código (software) que pueda solucionarte el problema...

Vas a tener que buscar algún integrado que use algún protocolo o crear el tuyo para que use menos pines y luego lo transformas..

Opciones:
- Usar un "expansor de puertos" si posees una salida I2C ( 2 hilos ) ejemplo: http://www.ti.com/lit/ds/symlink/pcf8574.pdf, y de alli tratar de agregar la parte de conversión SOBRE la libreria del LCD (modificar 2 o 3 funciones )
- Usar otro microcontrolador que controle el LCD, y que reciba las cosas por UART, de esa forma si posees al menos 1 pin con salida UART, podrías enviarle los datos a el otro microcontrolador y de allí imprimirlo.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:LCD16x2 "Hola mundo"
« Respuesta #4 en: 06 de Julio de 2018, 13:45:31 »
Sí, he visto infinidad de ejemplos pero todos para la placa inferior. La que yo tengo, STM32F469I-Disco, trae menos pines y no se moverlos en las librerías para que me funcione. Por eso preguntaba en concreto si había alguno específico en para este modelo.

¿ como que tu placa tiene menos pines ?, es justo al revés, las librerías que te han puesto para la Discovery, son para los F4xx, osea para todos los F4.

Tu placa monta un BGA de 216 bolas (STM32F469NIH6), y esas librerías se pueden usar perfectamente a partir de LQFP de 100 patillas, tienes pines más que de sobra para usarlas.

Solo tienes que fijarte que los puertos por defecto que usan las librerías no los tenga ocupados tu placa por algún periférico, como un acelerómetro o algo así. Cambiarlo es bien fácil, por ejemplo en una de esas librerías, tienes definidos los puertos que se usan en el archivo defines.h

Código: C
  1. /* Control pins */
  2. /* RS - Register select pin */
  3. //#define HD44780_RS_PORT            GPIOB
  4. //#define HD44780_RS_PIN            GPIO_Pin_2
  5. /* E - Enable pin */
  6. //#define HD44780_E_PORT            GPIOB
  7. //#define HD44780_E_PIN                GPIO_Pin_7
  8.  
  9. /* D4 - Data 4 pin */
  10. //#define HD44780_D4_PORT            GPIOC
  11. //#define HD44780_D4_PIN            GPIO_Pin_12
  12. /* D5 - Data 5 pin */
  13. //#define HD44780_D5_PORT            GPIOC
  14. //#define HD44780_D5_PIN            GPIO_Pin_13
  15. /* D6 - Data 6 pin */
  16. //#define HD44780_D6_PORT            GPIOB
  17. //#define HD44780_D6_PIN            GPIO_Pin_12
  18. /* D7 - Data 7 pin */
  19. //#define HD44780_D7_PORT            GPIOB
  20. //#define HD44780_D7_PIN            GPIO_Pin_13
« Última modificación: 06 de Julio de 2018, 13:55:02 por planeta9999 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD16x2 "Hola mundo"
« Respuesta #5 en: 06 de Julio de 2018, 20:17:34 »
Ahora que veo el esquematico de la placa, esa placa tiene el conector de Arduino, asi que tenes señales de sobra como para conectarlo.

Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
Re:LCD16x2 "Hola mundo"
« Respuesta #6 en: 11 de Julio de 2018, 05:09:45 »
Buenas, aunque parezca mentira sigo con esto del LCD...

Estoy cargando un ejemplo en Keil pero el LCD no me escribe nada y me gustaría saber si es que está roto o estoy haciendo algo mal.

+Modelo de LCD16x2: RC1602B2-BIW-JSX

Configuración de pines y cableado:
     PIN                  DEFINICIÓN                     PUERTO
  ---------------------------------------------------------------
      1                          5V                               CN6-5V
      2                          0V                               CN6-GND
      3                          Adj                              2K2 a GND
      4                          RS                               PB14
      5                          R/W                             GND
      6                           E                                PB15
   7-10                     DB0-DB3                         -----
  11-14                    DB4-DB7                         PA2, PG12, PA1, PG13
     15                          5V                              CN6-5V
     16                          0V                              CN6-GND


Código:
https://drive.google.com/open?id=1mdCxgRXOaMq0B0oovvxAmtEopRf8rwUq

Está sacado del famoso stm32f429-master


El resultado es este:
https://drive.google.com/open?id=1V05MlgFNgO8ErLtBaB0gHkYXBRGHtVWw

El procedimiento que hago en Keil es: Rebuild-->Load. Con eso he esta mirando que ya tendría que aparecer en el LCD lo escrito no?


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD16x2 "Hola mundo"
« Respuesta #7 en: 11 de Julio de 2018, 09:17:44 »
Citar
3                          Adj                              2K2 a GND

pone un potencriometro de 10K, con el pin central al pin Adj, otro pin a VCC y otro pin a GND, asi podes variar el contraste. Proba con eso y luego veo el codigo

Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
Re:LCD16x2 "Hola mundo"
« Respuesta #8 en: 11 de Julio de 2018, 09:46:32 »
Puse la resistencia por no tener potenciómetro. De todas formas aunque el contraste no sea el correcto vería los caracteres no?

OK!!

Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
Re:LCD16x2 "Hola mundo"
« Respuesta #9 en: 12 de Julio de 2018, 07:26:09 »
Con el LCD pc1602lrs-hwa-bq me hace lo mismo. Aparece lo de la fila 1 y 2 para los contrastes pero no muestra mensajes ni nada

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD16x2 "Hola mundo"
« Respuesta #10 en: 12 de Julio de 2018, 09:57:07 »
Si le pusiste un potenciometro y aun asi variando los contrastes no aparece nada, entonces en la libreria del LCD deberias aumentar los tiempos.

Aumentale el tiempo a:

Código: C
  1. #define HD44780_E_BLINK             HD44780_E_HIGH; HD44780_Delay(20); HD44780_E_LOW; HD44780_Delay(20)

si le pones 100 o 150, lo unico que vas a lograr es que sea mas lento, pero te aseguras que no sean los tiempos, luego vas a tener que ir bajando de a poco
En otra funcion como

Código: C
  1. void TM_HD44780_Init(uint8_t cols, uint8_t rows) {

Tambien tenes delays, me aseguraria poniendole un poco mas de delays y luego probaria.


Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
Re:LCD16x2 "Hola mundo"
« Respuesta #11 en: 12 de Julio de 2018, 12:21:37 »
Gracias! Lo probaré y os digo!

Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
Re:LCD16x2 "Hola mundo"
« Respuesta #12 en: 13 de Julio de 2018, 07:28:14 »
Nop... resultado negativo. Creo que tiene que ser algo de ajustes de configuración del IDE o lo que sea porque por más que lo intento se queda como alimentado pero no programado

Desconectado Kspids

  • PIC16
  • ***
  • Mensajes: 192
Re:LCD16x2 "Hola mundo"
« Respuesta #13 en: 13 de Julio de 2018, 08:47:53 »
He conseguido que el led que hay de COM en la placa de prueba disco cambie de colores rápidamente, luego quiere decir que el programa está corriendo no?? pero el LCD no hace nada, sigue comportándose como si solo estuviera alimentado.

Digo yo: Si alimento la el LCD a 5V, y la placa saca 3v3 en los pines... 0.7*VDD (mínimo nivel alto) = 0,7x5V= 3V5... puede que no se esté dando cuenta de que le están llegando niveles altos? ya que su nivel alto es a partir de estos 3,5V????


 

anything