miércoles, 16 de abril de 2014

PWM y Desplazamiento de texto en la LCD

En este proyecto aprenderemos a generar un texto en la LCD y que empiece a desplazarse hacia la derecha.
Necesitaremos:
- Tener previamente cableada y configurada nuestra LCD CHAR Custom, que se explica en detalle aquí.
Empecemos:
Primero añadimos la libreria al proyecto para poder hacer uso de ella,  esta configuración ya se ha explicado en otro proyecto, que se encuentra en detalle aquí.

Una vez configurada nuestra LCD nos deberá quedar así:





Luego de esto añadiremos un contador y un PWM, empecemos con el PWM, añadiremos un reloj y un cero lógico que ira conectado al reset.



El PWM nos genera señales que podemos modificar ampliando o reduciendo su ciclo útil  en el ancho de banda, para configurarlo damos doble clic y se desplegara una ventana de configuración.




Podemos ponerle el nombre que nosotros queramos en este caso lo dejare con el nombre que trae PWM_1
Nos muestra un diagrama de la señal que generara de acuerdo a nuestras especificaciones.
Podemos generar dos señales diferentes y esta opción se encuentra en PWM mode, en este caso lo dejare en ONE Output ya que solo utilizare una salida del PWM.

Nos permite escoger entre dos tipos de resoluciones, de 8-bit y de 16-bit, la diferencia es la cuenta que puede alcanzar, en de 8 bit puede contar hasta 256 operando 2^8 y el de 16 bit puede contar hasta 65536 operando 2^16.

En donde dice period escribiremos el numero hasta donde queremos que cuente y automáticamente nos mostrara el periodo que tiene, este periodo nos muestra el tiempo que se demora en repetir la señal. Este periodo o tiempo se genera realizando la operación del valor que tiene la cuenta dividido entre el valor del reloj que llega al PWM y esto nos dará como resultado el periodo o tiempo, si queremos un periodo o tiempo en especial simplemente despejamos la cuenta para saber hasta donde tenemos que contar, en caso de que nuestra cuenta sobrepase el valor de 65536 que sería el máximo del PWM entonces simplemente modificamos el reloj para así poder obtener el periodo o tiempo que deseamos, en este caso el reloj que utilizamos fue de 1KHz, este reloj se puede modificar dando doble clic sobre él, la señal que estamos generando tiene un ciclo útil de ¼ de segundo prendido y ¼ de segundo apagado, nuestra señal debe repetirse cada medio segundo es decir cada 500ms, realizando la operación anterior quedaría 500ms*1k=500, esa es la cuenta que debemos colocar en periodo, para variar el ciclo útil lo decidimos en CMP value1, como queremos dejar ¼ de segundo prendido y ¼ de segundo apagado entonces lo ponemos a la mitad del periodo en este caso de 250, en CMP type1 configuramos si queremos que primero el PWM arranque con un uno lógico o con un cero lógico en este caso lo dejaremos empezando en un uno lógico (less sor equal) “menor o igual” en dead band podemos configurar si queremos más ciclos de reloj pero en este caso lo dejaremos en la opción disabled, si quieren pueden observar las opciones de configuración más a detalle en el datasheet, luego aplicamos y damos en OK.

Ahora configuraremos en contador dando doble clic sobre él.



Podemos nombrarlo a nuestro gusto, la resolución es el número de cuentas que puede alcanzar.

8-bit  = 2^8 =256
16-bit  = 2^16 =65536
24-bit  = 2^24 =16777216
32-bit  = 2^32 =4294967296

En el periodo pondremos el número de cuenta hasta el que queremos llegar, en este caso lo pondré hasta 16 para que el letrero siga corriendo una vez llegue al borde de la pantalla LCD y empiece a desaparecer.
El número de pulsaciones que deberá identificar nuestro contador para contar lo generara la señal que produce el PWM, para esto debemos cablear la salida del PWM a la entrada del contador, el reloj lo podemos compartir con el PWM y el contador igualmente el cero lógico y deberá quedar así.


Finalmente procederemos a generar nuestro código en C, tiene comentarios que explican cada línea al detalle y su respectiva función.


En la línea donde escribimos lo que queremos visualizar
LCD_PrintString (“  Richard          ”); debemos realizar un espacio al principio y luego si comenzar a escribir y al final dejar varios espacios, ya que si no lo hacemos de esta manera comenzara a dejar escrito parte del texto en el camino.

La asignación de pines se hace igual que en el proyecto de LCD Custom que esta aquí.

si hacen todo como dije al compilar tendrán 0 errores y 0 advertencias, después de esto, programamos nuestra tarjeta.

Aqui un video demostrativo de lo que hace.





y aquí el proyecto

-LCD.rar

Richard Forero
Estudiante.


















No hay comentarios.:

Publicar un comentario