TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mariacontenis en 02 de Octubre de 2011, 23:53:01
-
Un saludo amigos del foro y visitantes del mismo.
Bueno pues tengo un pequeño codigo que he desarrollado y que les sera muy util para los que quierean saber como realizar animaciones con la CGRAM.
Bien, pues se trata de un pequeño ventilador animado, espero les guste y en un par de dias subo el video para quienes lo quieran implementar.
Un saludo y cualquier comentario lo respondere, gracias.
Soy su amigo el Victor Manuel, lo de mariacontenis es por una banda de Rock que asi lleva el nombre.
:D
#include <18F4550.h> // Pic a utilizar
#device *=16 // Dispositivo de 16 bit´s
#device adc=10 // ADC a 10 Bits
#fuses PLL1,CPUDIV1,USBDIV,XTPLL,NOFCMEN,NOIESO,PUT,NOBROWNOUT,VREGEN,NOWDT,NOPBADEN,MCLR,NOSTVREN,NOLVP,NODEBUG,NOPROTECT,NOSTVREN,NOCPB,NOWRT
#use delay(clock=48000000) // Frecuancia del CPU.
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS=8, STOP=1, TIMEOUT=1000, ERRORS) // Configuración del datos serie
#byte porta = 0xF80 // Dirección del puerto A para la familia 18Fxx5x.
#byte portb = 0xF81 // Dirección del puerto B para la familia 18Fxx5x.
#byte portc = 0xf82
#byte portd = 0xf83
#byte porte = 0xf84
#byte use_portd_lcd=8 // Define el puerto_d para la lcd.
#include <lcd4x20d.c> // Librería para el manejo del LCD
void FAN (void)
{
lcd_send_byte(0,0x40); // escribimos en la cgram en la direccion 0x40
lcd_send_byte(1,0b11001); lcd_send_byte(1,0b01111); lcd_send_byte(1,0b01010); lcd_send_byte(1,0b11110);
lcd_send_byte(1,0b10011); lcd_send_byte(1,0b00100); lcd_send_byte(1,0b01110); lcd_send_byte(1,0b0);
lcd_send_byte(0,0x48);
lcd_send_byte(1,0b00100); lcd_send_byte(1,0b01110); lcd_send_byte(1,0b11011); lcd_send_byte(1,0b01110);
lcd_send_byte(1,0b00100); lcd_send_byte(1,0b00100); lcd_send_byte(1,0b01110); lcd_send_byte(1,0b0);
lcd_send_byte(0,0x50);
lcd_send_byte(1,0b00110); lcd_send_byte(1,0b11110); lcd_send_byte(1,0b11011); lcd_send_byte(1,0b01111);
lcd_send_byte(1,0b01100); lcd_send_byte(1,0b00100); lcd_send_byte(1,0b01110); lcd_send_byte(1,0b0);
lcd_gotoxy(2,2); lcd_send_byte(1,0);
delay_ms(160);
lcd_gotoxy(2,2); lcd_send_byte(1,1);
delay_ms(80);
lcd_gotoxy(2,2); lcd_send_byte(1,2);
delay_ms(80);
lcd_send_byte(0,0x58); // escribimos en la cgram en la direccion 0x58
lcd_send_byte(1,0b00000); lcd_send_byte(1,0b01110); lcd_send_byte(1,0b01000); lcd_send_byte(1,0b01110);
lcd_send_byte(1,0b01000); lcd_send_byte(1,0b01000); lcd_send_byte(1,0b00000); lcd_send_byte(1,0b0);
lcd_send_byte(0,0x60);
lcd_send_byte(1,0b00000); lcd_send_byte(1,0b01110); lcd_send_byte(1,0b01010); lcd_send_byte(1,0b01110);
lcd_send_byte(1,0b01010); lcd_send_byte(1,0b01010); lcd_send_byte(1,0b00000); lcd_send_byte(1,0b0);
lcd_send_byte(0,0x68);
lcd_send_byte(1,0b00000); lcd_send_byte(1,0b10010); lcd_send_byte(1,0b11010); lcd_send_byte(1,0b10110);
lcd_send_byte(1,0b10010); lcd_send_byte(1,0b10010); lcd_send_byte(1,0b00000); lcd_send_byte(1,0b0);
lcd_gotoxy(4,2); lcd_send_byte(1,3);
lcd_gotoxy(5,2); lcd_send_byte(1,4);
lcd_gotoxy(6,2); lcd_send_byte(1,5);
}
void main(void)
{
lcd_init();
while(true)
{
FAN ();
}
}
-
:-/
Aqui les dejo una imagen por que el video es muy pesado.
Si utilian el 18F4550 como el del codigo y estos mismos fuses, utilicen un cristal de 4 Mhz externo por qaue para este esta el PLL1, CPUDIV1. Ok, se los digo para que no tengan falla y de otra manera si utilizan un 16F como el 16f877a pues los fuses se tendran que modificar.
Aaaaaah, simulado en el proteus no funciona, tiene que ser fisico, pero creanme se ve bien y no se van arepentir al verlo.
Un saludo..
-
Gracias mariacontenis, lo probare
-
Este programa puede serles útil: Generador de Caracteres CG-RAM (http://www.todopic.com.ar/foros/index.php?topic=14552.0).
Saludos!
-
Orale!! Esta bien el software ya lo implemente, sin embargo le veo la deficiencia en que es muy largo el codigo que se genera. Pero es bueno al final de cuentas, gracias por compartirlo.
:-/
-
hola
mariacontenis tengo una pregunta adonde encontraste la libreria lcd4x20d.c es que tengo un proyecto con un 16f877a y y no e podido encontrar esta libreria para poder utilizar el puerto d con el lcd 4x20
muchas gracias
-
esta con su codigo, puedes modificarlo si quieres y optimizarlos pero no creo que haga falta... quedo de lujo :mrgreen: