Autor Tema: lcd con picc  (Leído 3800 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cerc151

  • PIC10
  • *
  • Mensajes: 17
lcd con picc
« en: 12 de Febrero de 2005, 11:02:00 »
Hola a todos.
Estoy comenzando con el picc y no he podido visualizar datos con el lcd.
Si alguien sabe de librerias o comandos rapidos para visualizacion les agradeceria su ayuda.

Desconectado odukec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 174
RE: lcd con picc
« Respuesta #1 en: 12 de Febrero de 2005, 14:05:00 »
Hola

Codigo:

Libreria --> #include <LCD.C>

Funcion --> prinft(lcd_putc, "f Hola
 Mundo" ); para imprimir variables es igual que
el ansi C estandar ej. prinft(lcd_putc, "%d", var);
          --> lcd_putc("f Hola
 mundo" );

Al abrir la libreria se ve como es la conexion de los pines al LCD



Saludos

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: lcd con picc
« Respuesta #2 en: 12 de Febrero de 2005, 15:43:00 »
Aparte de la exelente explicacion que te dio el pana Odukec, en el post del Microcursillo c, hay una pagina de la web del pana Modulay, en la que encontraras una gran variedad de ejemplos muy buenos, algunos de esos usan LCD, revizalos y no te olvides de postear tus dudas. Cheka este Magnifico ejemplo del pana Modulay:
http://personal.auna.com/asencio5/Ejemplos%20C/MEMORIA%20EXTERNA/RAM/

Salu2 pana

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: lcd con picc
« Respuesta #3 en: 12 de Febrero de 2005, 20:04:00 »
Una duda quieres manejar un LCD de 4 o de 8 bit.




Desconectado cerc151

  • PIC10
  • *
  • Mensajes: 17
RE: lcd con picc
« Respuesta #4 en: 13 de Febrero de 2005, 12:15:00 »
Para manejarlo con 8 bits

Desconectado cerc151

  • PIC10
  • *
  • Mensajes: 17
RE: lcd con picc
« Respuesta #5 en: 13 de Febrero de 2005, 12:24:00 »
Gracias a todos por su ayuda me ha servido mucho. Pero tengo otra inquietud. Usando el picc como compilador se puede simular el codigo a traves de MPLAB SIM?. Si es asi por favor diganme como.

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: lcd con picc
« Respuesta #6 en: 14 de Febrero de 2005, 03:06:00 »
Si estas usando un LCD de 8 bit necesitas el driver lcd2.c creado por microsystem, el que trae el PCW (LCD.c) es para 4 bit.


// Funciones para la gestion del display LCD de la MicroPIC Trainer.

// lcd_init() Debe ser llamada antes que las otras funciones.
//
// lcd_putc(c) Visualiza c en la siguiente posición del display.
// Caracteres especiales de control:
// f Borrar display
//
 Saltar a la segunda linea
//  Retroceder una posición.
//
// lcd_gotoxy(x,y) Selecciona la nueva posicion de escritura en el display.
// (la esquina superior izquierda es 1,1)
//
// lcd_getc(x,y) Devuelve el caracter de la posicion x,y del display.

// poner los valores correspondientes en lcd2.h y quitar comentarios
#bit lcd_enable = 5.2
#bit lcd_rw = 5.1
#bit lcd_rs = 5.0
#byte lcd_a = 5 //portc
#byte lcd_b = 6 //portb


#define LCD_LINEA2 0x40 // Direccion de memoria para la segunda linea
#define LCD_DATO 1
#define LCD_COMANDO 0

#define LCD_CLEAR 0x01
#define LCD_HOME 0x02

#define LCD_DISPLAY_OFF 0x08
#define LCD_DISPLAY_ON 0x0C
#define LCD_CURSOR_ON 0x0E
#define LCD_CURSOR_BLINK 0x0F

#define LCD_CURSOR_SHIFT_RIGHT 0x10
#define LCD_CURSOR_SHIFT_LEFT 0x14
#define LCD_DISPLAY_SHIFT_RIGHT 0x18
#define LCD_DISPLAY_SHIFT_LEFT 0x1C


int lcd_leer()
{
int valor;

set_tris_c(0x18);
set_tris_b(0xFF);

lcd_rw = 1;
delay_cycles(1);
lcd_enable = 1;
delay_cycles(1);
valor = lcd_b;
lcd_enable = 0;
delay_us(40);

set_tris_b(0x00);
return valor;
}


void lcd_enviar(int dir, int valor)
{
set_tris_c(0x00);
set_tris_b(0x00);

lcd_rs = 0;
while( bit_test(lcd_leer(),7) );
lcd_rs = dir;
delay_cycles(1);

lcd_rw = 0;
delay_cycles(1);
lcd_enable = 0;
lcd_b = valor;
delay_cycles(1);
lcd_enable = 1;
delay_us(2);
lcd_enable = 0;
delay_us(40);
}


void lcd_init()
{
int i;

set_tris_c(0x18);
set_tris_b(0x00);

lcd_enable = 0;
lcd_rw = 0;
lcd_rs = 0;
delay_ms(15);

for(i=0; i<3; i++)
{
lcd_enviar(LCD_COMANDO,0x38);
delay_ms(5);
}
lcd_enviar(LCD_COMANDO,LCD_DISPLAY_ON);
lcd_enviar(LCD_COMANDO,0x06);
lcd_enviar(LCD_COMANDO,LCD_CLEAR);
lcd_enviar(LCD_COMANDO,LCD_HOME);
}


void lcd_gotoxy( byte x, byte y) {
byte dir;

if(y!=1)
dir=LCD_LINEA2;
else
dir=0;
dir+=x-1;
lcd_enviar(LCD_COMANDO,0x80|dir);
}


void lcd_putc( char c) {
switch (c) {
case "f" : lcd_enviar(LCD_COMANDO,0x01);
delay_ms(2);
break;
case "
" : lcd_gotoxy(1,2); break;
case "" : lcd_enviar(LCD_COMANDO,0x10); break;
default : lcd_enviar(LCD_DATO,c); break;
}
}


char lcd_getc( int x, int y) {
char valor;

lcd_gotoxy(x,y);

lcd_rs = 1;
valor = lcd_leer();
lcd_rs = 0;

return valor;
}

Salud2

Desconectado soidutse

  • PIC10
  • *
  • Mensajes: 1
Re: lcd con picc
« Respuesta #7 en: 07 de Marzo de 2013, 10:08:01 »
Hola buenas estoy intentando enviar un texto por visual basic 2010 y visualizarlo en una pantalla de LCD en preoteus, la LCD esta controlador por el PIC 16F877A, el PIC genero el codigo fuente por PIC-C y la comunicacion entre proteus y VB2010 la realizo por COM1 y COM2.

La comunicacion no tengo problemas, ya que funciona bien pero no se si tengo algun error en el codigo fuente de visual o de PIC-C.
Si alguien podria ayudarme se lo agradeceria mucho.


-------PIC C--------
#include <16F877A.h>
#fuses HS, NOWDT, NOPROTECT
#use delay(clock=8000000)

#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)   
                                                                       
                                                                   
#include <lcd.c>                   
char dato_recibido[16];         


#byte porte=0x09

#int_rda                           
void rda_isr()
 {
  gets(dato_recibido);       
                                       
                                       
 }

void main()

{
   enable_interrupts(int_rda);
                                       
   enable_interrupts(global);

  set_tris_d(0b00000000);

   lcd_init();
   lcd_gotoxy(1,1);
   lcd_putc("    com RS232   ");

   while(true)
   {
   lcd_gotoxy(1,2);
   printf(lcd_putc,"%c",dato_recibido);     

   }
}



-------VB--------

Public Class Form1
    Dim dato_recibido As String

    Private Sub cmdledoff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdledoff.Click
        port.Open()
        dato_recibido = txtlcd.Text
        port.Write(dato_recibido)
        port.Close()
    End Sub


    Private Sub cmddcon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmddcon.Click
        cbopuertos.Items.Clear()

        For Each puertodisponible As String In My.Computer.Ports.SerialPortNames
            cbopuertos.Items.Add(puertodisponible)
        Next

        If cbopuertos.Items.Count > 0 Then
            cbopuertos.Text = cbopuertos.Items(0)
            MessageBox.Show("Seleccione el puerto a trabajar")
            btnconectar.Enabled = True
        Else
            MessageBox.Show("Ningun puerto encontrado")
            btnconectar.Enabled = False
            cbopuertos.Items.Clear()
            cbopuertos.Text = ("       ")
        End If
    End Sub

    Private Sub btnconectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnconectar.Click
        port.PortName = cbopuertos.Text
        cmdledoff.Enabled = True
    End Sub

    Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem.Click
        End
    End Sub


 

anything