PIC16F690 - LCD
Resumen:
Hoy conectaremos una LCD a nuestro PIC16F690.
Materiales:
Preparar el Hardware:
Para preparar nuestro hardware seguiremos el esquemático de la figura:
Compilador:
Se requiere tener instalado el compilador CCS, puedes descargar desde aquí
Una vez instalado el compilador ír a File--> New--> Source File
Referencias:
http://www.ccsinfo.com/
Hoy conectaremos una LCD a nuestro PIC16F690.
Materiales:
- PIC16F690
- LCD HD44780
- Potenciometro 5K Ohm
- Resistencia 220 Ohm
- Mini-Protoboard
- Cables
- +5V para alimentar el circuito
- CCS C Compilador
- Pickit2
Preparar el Hardware:
Para preparar nuestro hardware seguiremos el esquemático de la figura:
Compilador:
Se requiere tener instalado el compilador CCS, puedes descargar desde aquí
Una vez instalado el compilador ír a File--> New--> Source File
y guardar el proyecto con el nombre que desees, en nuestro caso demolcd16f690
En la primera parte definimos los fuses y el clock a utilizar,
y luego la configuración de la LCD y el PIC
#include <16f690.h>
#FUSES WDT //Watch Dog Timer
#FUSES HS //HS Oscilator
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOPUT //No Power Up Timer
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#use delay(clock=8M)
#define LCD_ENABLE_PIN PIN_A1
#define LCD_RS_PIN PIN_A0
#define LCD_RW_PIN PIN_A2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <lcd.c>
void main (){
set_tris_a(0);
set_tris_b(0);
lcd_init();
delay_ms(100);
lcd_putc("\f");
delay_ms(100);
lcd_gotoxy(1,1);
printf(lcd_putc,"mikro.cl");
lcd_gotoxy(1,2);
printf(lcd_putc,"Testing LCD");
while (TRUE){
}
}
En la primera parte definimos los fuses y el clock a utilizar,
y luego la configuración de la LCD y el PIC
#include <16f690.h>
#FUSES WDT //Watch Dog Timer
#FUSES HS //HS Oscilator
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOPUT //No Power Up Timer
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#use delay(clock=8M)
#define LCD_ENABLE_PIN PIN_A1
#define LCD_RS_PIN PIN_A0
#define LCD_RW_PIN PIN_A2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <lcd.c>
void main (){
set_tris_a(0);
set_tris_b(0);
lcd_init();
delay_ms(100);
lcd_putc("\f");
delay_ms(100);
lcd_gotoxy(1,1);
printf(lcd_putc,"mikro.cl");
lcd_gotoxy(1,2);
printf(lcd_putc,"Testing LCD");
while (TRUE){
}
}
Ahora contruiremos nuestro firmware, click en Build, una vez generado el archivo .hex y utilizando pickit2 programamos nuestro PIC16F690. El resultado en la figura siguiente.
Testing LCD:
Referencias:
http://www.ccsinfo.com/
https://www.microchip.com/forums/m400176.aspx