Haz una pregunta
  Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/03/2011 #1


No logro simular un LCD-4bit en Proteus
Que tal amigos, estoy ya agotado de tanto buscar en la web sin encontrar la respuesta a mi problema, y por eso acudo al mejor foro que conozco. Tengo un programa en asm que debe mostrar un simple "Hola" en un Modulo LCD LM016L (hitachi HD 44780) con un PIC 16F84A empleando solo 4 bits. Los otros bits disponibles los tengo ocupados en un contador (un par de displays 7-SEG), entonces la idea es que cuando el contador llegue a un numero (por ejemplo 11) aparezca el mensaje en el LCD.

Para no enrrollarlos mucho les adjunto el codigo y la simulacion. LCD.rar

Ah una curiosidad es que con la frecuencia que trae el modulo en proteus (250KHz) me sale un error de "controller received data whilst busy" pero al cambiar la frecuencia en propiedades a 4MHz esto no sucede, pero igual no sale nada en el LCD.

Por cierto uso otro PIC como codificador para el 7-SEG por que en mi casa no tengo un 74LS47 pero si otro PIC jejeje...
13/03/2011 #2
Moderador

Avatar de Vick

Cambio la pregunta al foro de simuladores ya que estamos hablando de Proteus...

Respecto a tu duda:

No debes cambiar la frecuencia del LCD es la frecuencia normal de funcionamiento.

El error que te da es por que el LCD esta ocupado cuando intentas mandar un dato, y así no puede recibirlo, debes tener algún error en los retardos para esperar a que el LCD este disponible chaca las temporizaciones.

En la simulación no coloques dos PICs, esto puede afectar (a la simulación)
13/03/2011 #3


bueno lo de colocar 2 pic's se soluciona facil.. solo queria acercarme mas a la realidad, lo que pasa es que aun no he comprado el modulo LCD.

Respecto a cambiar la frecuencia, bueno la puedo revertir y volver a obtener el error, pero respecto al codigo... No se que hacer! no se donde esta el error.. creo que estoy haciendo todo bien, la inicializacion del modulo, los retardos, todo! y aun asi el proteus nada..!!

bueno agradeceria su ayuda por eso mismo colgué todos los archivos, asi tienen full acceso a lo que he hecho hasta ahora. Gracias.
22/05/2012 #4


Solucion al error "Controller received data whilst busy" en la simulacion con Proteus en lenguaje C del CCS y PIC 18F4550.


//------------------------------------------------MODIFICAR FUNCION EN LCD.C-------------------------------------------

Según mi experiencia modificando la funcion "void lcd_send_byte( BYTE address, BYTE n )" que vien en lcd.c se puede simular sin errores el LCD en Proteus



1.- La función modificada quedaría así:

//---
void lcd_send_byte( BYTE address, BYTE n ) {

lcd.rs = 0;
while ( bit_test(lcd_read_byte(),7) ) ; //Original
delay_ms(10); //Añado un retardo para que funcione la simulación en Proteus
lcd.rs = address;
delay_cycles(1);
lcd.rw = 0;
delay_cycles(1);
lcd.enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}

//---

2.- Conclusión

Creo que el problema se debe a que se "pisan" los comandos o los datos en el envío y/o recepción. Añadiendo la línea "delay_ms(10); //Añado un retardo para que funcione la simulación en Proteus" se soluciona.


3.- Ejecución en tiempo real

En la ejecución real del programa en el PIC (según mi experiencia) se visualiza correctamente tanto si hacemos los cambios en la función como si no.


4.- El programa completo básico

El programa en c bajo el que se simula correctamente el LCD es el siguiente:


//------------------------------------------------PROGRAMA MAIN-------------------------------------------

#include <18f4550.h>
#fuses hs,nowdt,noprotect,nolvp
#use delay(clock=20000000)
#use standard_io(B)
#define use_portB_lcd TRUE
#include <lcd.c>


/*


El sistema funciona correctamente.

Para las conexiones y la generación de código ver:

*/

void main()
{

int x;
lcd_init();

while (1)
{

printf(lcd_putc, "\f Uno");
delay_ms(100);

printf(lcd_putc, "\f Dos");
delay_ms(500);

printf(lcd_putc, "\f Tres");
delay_ms(1000);

printf(lcd_putc, "\f Cuatro");
delay_ms(2000);

printf(lcd_putc, "\f Cinco");
delay_ms(3000);


x = 0;


}
}
20/01/2016 #5


¿Cuál sería la configuración para un PIC18F2550? Porque no estoy viendo que en el código hayas declarado pin a pin.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Software de Simulación y Diseño Electrónico

Todo lo relacionado con estos programas.

Cerrar
Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.