Vamos a realizar un ejercicio en el que aprenderemos a utilizar un lcd gráfico programando en PIC.
Será necesario utilizar la libreria <math.h> e indicar que utilizaremos el LCD gráfico <HDM64GS12.c>
Se adjunta descarga de archivo *.zip con codigo, diseño en proteus y los archivos cof y hex.
Descarga
//////////////////////////////////////////////////////////////////////////////////////
// AUTOR: Cesar Zazo Serrano Noviembre 2012/////
/////////////////////////////////////////////////////////////////////////////////////
// PROGRAMA: Lcd_Gráfico //
// DISPOSITIVO: PIC 18F4550 COMPILADOR: CCS 4.104 //
// Entorno IDE: SIMULADOR: ISIS Proteus 7.8 //
// TARJETA DE APLICACIÓN: DEBUGGER: //
////////////////////////////////////////////////////////////////////////////////////
// ENUNCIADO: Escribir y dibujar en un LCD gráfico a través del PIC 18F4550 //
////////////////////////////////////////////////////////////////////////////////////
// CABECERA //////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
#include <math.h>
#include <18f4550.h> // Seleccionamos el pic a utilizar
#fuses INTHS // activar el cristal
#use delay(Internal=8mhz) // utilizamos el reloj interno con el retardo indicado.
#include <HDM64GS12.c> // indicamos que utilizamos este LCD.
#include <graphics.c> // utilizamos esta librería para poder sacar gráficos en el LCD
////////////////////////////////////////////////////////////////////////////////////
// VARIABLES //
////////////////////////////////////////////////////////////////////////////////////
float val2; // valor decimal que deseamos incluir en el lcd gráfico
char text1[]="CESAR"; // es la variable texto que en este caso será mi nombre.
char text2[]="ZAZO";
char text3[]="SERRANO";
char val[7]; //
////////////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //
////////////////////////////////////////////////////////////////////////////////////
void main()
{
val2=77.87;
do
{
glcd_init(on); //Inicializo el LCD.
glcd_text57(5,0,text1,1,on); //Escribo el texto que contiene la variable mensaje.
delay_ms(250);
glcd_text57(37,0,text2,1,on);
delay_ms(250);
glcd_text57(70,0,text3,1,on);
delay_ms(250);
glcd_circle(80,30, 4, Yes, ON); //Dibujo círculo (x, y, radio, relleno, color).
delay_ms(250);
glcd_circle(80,45, 10, no, ON); //Dibujo círculo relleno.
delay_ms(250);
glcd_circle(40,45, 10, no, ON);//Dibujo círculo relleno.
delay_ms(250);
glcd_circle(40,30, 4, yes, ON);
delay_ms(250);
glcd_circle(40,45, 10, no, ON);
delay_ms(250);
glcd_rect(16,60,120,20,no,ON); Dibujo cuadrado (los dos primeros valores indican el punto de una de las esquinas y los dos siguientes el punto de la otra esquina, el siguiente valor (yes-no) referencia el relleno y el último el color.)
delay_ms(250);
sprintf(val,"%3.2f",val2);
delay_ms(250);
glcd_text57(37,15,val,1,on);
delay_ms(250);
glcd_bar(10, 10,56, 1, 10, 1);
}
//glcd_line(1,200,30,yes,on); // Dibuja una línea desde el primer punto al segundo punto con el color dado
while(true);
}
Aquí mostramos una captura del diseño realizado en Proteus para que observéis que hemos partido del microcontrolador creado anteriormente.
Y por último un video en el que se puede ver en funcionamiento el programa en una placa microcontroladora.
No hay comentarios:
Publicar un comentario