Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/10/2017 #1


LCD 16x2 y Display 7 segmentos con el mismo PIC
Buenas noches. Desearía una ayuda sobre el título por favor, pues logro generar el código que adjunto.
Resulta que requiero mostrar caracteres de esta forma: C 1 2 3 4, tanto en el display 7 segmentos, como en el display LCD 16x2, paralelos a la misma vez, puesto que en primero de 7 segmentos sale conforme, pero en el segundo sale diferente.

Busqué cambiando %d y varias formas, pero no logro realizarlo, por eso requiero su ayuda.
Ya que el código está en hexadecimal y al parecer no lo interpreta el LCD.

Código PHP:
#use fast_io(d) 
#define use_portb_lcd TRUE         //definir portb lcd
#include<lcd.c>                  //libreria manejo lcd

int8 unide[10]={0x6f,0x66,0x7f,0x66,0x39,0x6f,0x6f,0x7f,0x66,0x39};
int e;


void main()
{
   
lcd_init();         //inicializa lcd
   
   
set_tris_c(0x01);
   
set_tris_d(0b00000000);
   
output_d(0b00000000);
   {
   
delay_ms(1000);
   for (
e=0e<9e++)
   {
   
output_d(unide[e]);
  
printf (lcd_putc,"%D",unide[e]);
   
delay_ms(100);
   
output_d(0b00000000);
   
printf(lcd_putc,"\f");   //borra pantalla del lcd
   
delay_ms(100);
   }
  }
 } 
08/10/2017 #2
Moderador

Avatar de D@rkbytes

Tal vez el siguiente programa te sirva de base.
Código PHP:
#include <18f4550.h>
#fuses NOFCMEN, NOVREGEN, NOUSBDIV
#use delay(internal = 4 MHz)

#include <lcd.c>

// Tabla hexadecimal para displays de 7 segmentos. (Cátodo común)
int8 const tabla_7_segmentos[16] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,7,0x7F,0x6F,
                                    
0x77,0x7C,0x39,0x5E,0x79,0x71};
                                    
// Mostrar el número en ambos displays:
void mostrar_en_displays (int8 numero)
{
    
output_b(tabla_7_segmentos[numero]);    // Se pone el contenido de la tabla en el puerto B.
    
lcd_gotoxy(1,1);
    
printf(lcd_putc,"HEX = %01X",numero);    // Se muestra el número en hexadecimal en la LCD.
}


void main (void)
{
    
int8 contador 0;
    
    
lcd_init();
    
mostrar_en_displays(0);
    
    while (
true)
    {
        if(!
input(PIN_A1))                    // Si RA1 está en 0...
        
{
            if(
contador-- > 0)                // Decrementar el contador sólo si es mayor a 0.
                
mostrar_en_displays(contador);
            else
                
contador 0;                // Si se desborda, el contador permanecerá en 0. 
            
while(!input(PIN_A1));            // Esperar hasta que RA1 esté en 1.
        
}
        
        if(!
input(PIN_A0))                    // Si RA0 está en 0...
        
{
            if(
contador++ < 15)                // Incrementar el contador sólo si es menor a 15.
                
mostrar_en_displays(contador);
            else
                
contador 15;                // Si es mayor a 15, el contador permanecerá en 15.
            
while(!input(PIN_A0));            // Esperar hasta que RA0 esté en 1.
        
}
    }

Click en la imagen para aumentar. LCD16x2 & 7Segm.jpg
09/10/2017 #3


Muchas gracias amigo, mejoro mis espectativas de lo propuesto ahora hare unas implementaciones adicionales ahi hare o adicionare un reloj externo a controlarlo. muchas gracias
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

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