#include <C:\Archivos de programa\PICC\devices\16f876A.h>
#use delay(clock=4000000)
#fuses xt,put,brownout,nowdt
#byte porta=5 //Definicion de variables del pic
#byte portb=6
#byte portc=7
#define cd porta,0 //Definicion de bits
#define ce porta,1
#define rs porta,2
#define port_lcd portb
void enviar_a_lcd(short bit_cd, int dato);
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#zero_ram //Borrado de la memoria ram
void main() //Rutina principal
{
set_tris_a(0b000000); //Configuracion de entradas y salidas del puerto A
set_tris_b(0b00000000); //Configuracion de entradas y salidas del puerto B
port_b_pullups(true); //Habilitación de las resistencias pull-ups
porta = 0;
portb = 0;
setup_adc(adc_off);
///////////////////////////////////////////////////////////////////////////////
bit_clear(rs); //reset a la pantalla
delay_ms(1);
bit_set(rs);
//enviar_a_lcd(1,0b10000100); //atributo texto
enviar_a_lcd(1,0b10010100); //lcd como texto
//enviar_a_lcd(0,0b00000000); //direccion alta
//enviar_a_lcd(0,0b00000000); //direccion baja
//enviar_a_lcd(1,0b01000000); //direccion del texo
//enviar_a_lcd(0,0b00000000); //codigo 0x00
//enviar_a_lcd(0,0b00000001); //columnas
//enviar_a_lcd(1,0b01000001); //area de texto
enviar_a_lcd(1,0b10000000); //se utiliza patrones internos cg-rom
//enviar_a_lcd(1,0b10011000); //lcd como grafico
enviar_a_lcd(1,0b10100111); //cursor de 8 lineas
enviar_a_lcd(1,0b10010011); //cursor parpadeo
enviar_a_lcd(0,0b00000000); //posicion vertical del cursos
enviar_a_lcd(0,0b00000000); //posicion horizontal del cursos
enviar_a_lcd(1,0b00100001); //configurar posicion del cursor
enviar_a_lcd(0,16); //caracter de la cg-rom
enviar_a_lcd(1,0xc0); //enviar dato
enviar_a_lcd(0,16); //caracter de la cg-rom
enviar_a_lcd(1,0xce); //enviar dato
//////////////////////////
while(true) //Rutina general
{
}
}
///////////////////////////////////////////////////////////////////////////////
void enviar_a_lcd(short bit_cd, int dato) //rutina que escribe dato en el lcd
{
if(bit_cd) {bit_set(cd);}
else {bit_clear(cd);}
bit_set(ce);
delay_us(100);
port_lcd = dato;
delay_us(100);
bit_clear(ce);
delay_ms(1);
}
///////////////////////////////////////////////////////////////////////////////
#include <16f876A.h>
#use delay(clock=4mhz)
#fuses xt,put,brownout,nowdt
#byte porta=5 //Definicion de variables del pic
#byte portb=6
#byte portc=7
#define cd porta,0 //Definicion de bits
#define ce porta,1
#define rs porta,2
#define rd porta,3
#define wr porta,5
#define port_lcd portb
void enviar_a_lcd(short bit_cd, int dato);
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#zero_ram //Borrado de la memoria ram
void main() //Rutina principal
{
set_tris_a(0b000000); //Configuracion de entradas y salidas del puerto A
set_tris_b(0b00000000); //Configuracion de entradas y salidas del puerto B
port_b_pullups(true); //Habilitación de las resistencias pull-ups
porta = 0;
portb = 0;
setup_adc(adc_off);
///////////////////////////////////////////////////////////////////////////////
bit_clear(rs); //reset a la pantalla
delay_ms(10);
bit_set(rs);
enviar_a_lcd(1,0b10010100); //lcd como texto
enviar_a_lcd(1,0b10000100); //atributo texto
enviar_a_lcd(1,0b10000000); //se utiliza patrones internos cg-rom
enviar_a_lcd(1,0b10100111); //cursor de 8 lineas
enviar_a_lcd(1,0b10010011); //cursor parpadeo
enviar_a_lcd(0,0b00000100); //posicion vertical del cursos
enviar_a_lcd(0,0b00000100); //posicion horizontal del cursos
enviar_a_lcd(1,0b00100001); //configurar posicion del cursor
enviar_a_lcd(0,16); //caracter de la cg-rom
enviar_a_lcd(1,0xc0); //enviar dato
//////////////////////////
while(true) //Rutina general
{
}
}
///////////////////////////////////////////////////////////////////////////////
void enviar_a_lcd(short bit_cd, int dato) //rutina que escribe dato en el lcd
{
bit_set(rd);
bit_clear(wr);
delay_ms(5);
if(bit_cd) {bit_set(cd);}
else {bit_clear(cd);}
delay_us(100);
output_b(dato);
bit_set(ce);
delay_us(100);
bit_clear(ce);
delay_ms(5);
}
///////////////////////////////////////////////////////////////////////////////
enviar_a_lcd(0,40); //area de texto de cada caracter
enviar_a_lcd(0,0); //
enviar_a_lcd(1,0x41); //codigo para area de texo
enviar_a_lcd(0,0); //area de texto de cada caracter
enviar_a_lcd(0,0); //
enviar_a_lcd(1,0x40); //codigo para area de texo
enviar_a_lcd(0,40); //area de grafico por cada dato
enviar_a_lcd(0,0); //
enviar_a_lcd(1,0x42); //codigo para area de grafico
enviar_a_lcd(1,0b10010011); //cursor con parpadeo
//enviar_a_lcd(1,0b10011000); //pantalla solo grafico
enviar_a_lcd(1,0b10010100); //pantalla solo texo
enviar_a_lcd(1,0b10100111); //grosor del cursos
enviar_a_lcd(0,0);
enviar_a_lcd(0,0);
enviar_a_lcd(1,0x21); //configurar addres pointer set
enviar_a_lcd(0,0);
enviar_a_lcd(0,0);
enviar_a_lcd(1,0x22); //configurar posicion offset
enviar_a_lcd(0,2);
enviar_a_lcd(0,0);
enviar_a_lcd(1,0x24); //configurar addres pointer set
enviar_a_lcd(0,16); //dato para escribir
enviar_a_lcd(1,0xc0); //comando para escribir e incrementar
enviar_a_lcd(0,2);
enviar_a_lcd(0,0);
enviar_a_lcd(1,0x24); //configurar addres pointer setenviar_a_lcd(0,2);
enviar_a_lcd(0,1);
enviar_a_lcd(1,0x24); //configurar addres pointer set