You are on page 1of 10

DISPLAY DE 7 SEGMENTOS

Componente electrónico compuesto por 7 LED's uno en cada segmento

Existen dos tipos de este display: ánodo común (el punto común entre todos los
segmentos es Vcc) y cátodo común (punto común entre segmentos es la tierra-
GND)

1
DISPLAY DE 7 SEGMENTOS

2
Esta ultima imagen muestra como esta conectado cada segmento y el punto
común entre ellos
¿Cómo conecto el display?
En el caso de un ánodo común, el pin común debe de estar conectado a Vcc (5V-
12V) y el segmento que queremos que encienda a 0V o GND

La imagen muestra como conectar para poder visualizar el numero 1

En el caso de cátodo común, el pin común debe ir conectado a 0V-GND, y el


segmento que queremos encender a Vcc (5V-12V)

La imagen muestra la conexión para poder visualizar el numero 4

¿COMO LO CONECTAMOS AL PIC?

Para poder trabajar directamente con el PIC sin hacer uso de un 7447 o 7448
(conversor de BCD a 7 segmentos), para poder visualizar los números del 0 al 9

3
en un display cátodo común, haremos lo siguiente:

La imagen nos muestra que valor debemos darle al puerto (el que vamos a usar)
para poder visualizar el numero que deseamos.
Ejemplo: para poder visualizar el numero 5, hacemos lo siguiente:

output_b(0x6D); ó output_b(109);

Recordar que esto sirve para un display cátodo común.


Ustedes lo pueden realizar para un display ánodo común, recordando que estos
tienen Vcc en común y para poder encender un segmento éste tiene que estar
conectado a 0V.

ejemplo como dibujar un cero en el display

#include <16f887.h>
#fuses NOWDT //Deshabilita Watchdog
//#fuses INTRC //Cristal Interno RC
#fuses NOMCLR //No Master Clear
#use delay(clock=4000000) //Clock interno de 4MHZ

void main()
{
int numeroDecimal[10];

set_tris_d(0xFF); //Puerto D como entrada, colocando 1 en cada Pin


set_tris_b(0x00); //Puerto B como salida, colocando 0 en cada pin
set_tris_c(0x00); //Puerto C como salida

4
output_c(0xFF);

while(1)
{
output_b(input_d());
//output_b(0b11111110);
delay_ms(100);
}
}

2. QUÉ ES UN LCD?

El LCD(Liquid Crystal Dysplay) o pantalla de cristal líquido es un dispositivo


empleado para la visualización de contenidos, mediante carácteres, símbolos o
pequeños dibujos dependiendo del modelo.
En este caso vamos a emplear un LCD de 16x2, esto quiere decir que dispone de
2 filas de 16 caracteres cada una. Los píxeles de cada símbolo o carácter, varían
en función de cada modelo.

¿Cómo se conecta?

En la siguiente imagen de Proteus se puede observar la estructura de sus pines.


Lo podemos dividir en los Pines de alimentación, pines de control y los pines del
bus de datos bidireccional. Por lo general podemos encontrar ademas en su
estructura los pines de Ánodo y cátodo de led.

5
Pinout (patillaje) del LCD 16x2 (LCD 2X16) con HD44780
El LCD 16x2 tiene en total 16 pines (tome en cuenta que la posición correcta del
display es con los pines en la parte superior, aunque existen modelos en los que la
posición correcta es con los pines en la parte inferior) . La datasheet (pdf) muestra
14 pines, los dos pines adicionales son el ánodo (15) y el cátodo (16) del LED
de fondo. Debe notarse que el controlador Hitachi HD44780 se encuentra
incorporado al circuito impreso del módulo LCD y sirve de interfaz entre la propia
pantalla LCD (donde se muestran los caracteres) y el microcontrolador PIC. Por lo
tanto, de todos los pines del HD44780 únicamente se tiene acceso a aquellos
necesarios para la conexión al PIC y para el control de contraste.

6
La polarización del LED de fondo se logra conectando una resistencia externa de
50 ohm-1/4 W con lo que se asegura el correcto encendido sin una corriente
excesiva. El control de contraste se consigue con un potenciómetro de 10 k con el
cual se ajusta el nivel de voltaje en el pin 3 (Vee ó VLC).

7
Pines de alimentación:
Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de
10K
Pines de control:
RS: Corresponde al pin de selección de registro de control de datos (0) o registro
de datos(1). Es decir el pin RS funciona paralelamente a los pines del bus de
datos. Cuando RS es 0 el dato presente en el bus pertenece a un registro de
control/instrucción. y cuando RS es 1 el dato presente en el bus de datos
pertenece a un registro de datos o un carácter.
RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un
dato en la pantalla o leer un dato desde la pantalla.
E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el
LCD no esta activado para recibir datos, pero si E(1) se encuentra activo y
podemos escribir o leer desde el LCD.
Pines de Bus de datos:
El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la
comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos(D0
a D7) o empleando los 4 bits mas significativos del bus de datos(D4 a D7)

La librería del LCD:

8
Para poder visualizar los caracteres o símbolos en el LCD es necesario que en el
programa de código fuente a emplear, incluyamos la librería.
En este caso empleamos la librería "lcd.c".
La librería viene configurada de esta manera
#define LCD_ENABLE_PIN PIN_E0
#define LCD_RS_PIN PIN_E1
#define LCD_RW_PIN PIN_E2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7

Vamos a configurar para poder usar el PIN que nosotros deseamos, en este caso
para usar el puerto D del PIC.

#define LCD_ENABLE_PIN PIN_D0


#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7

o también de esta manera

#define LCD_DATA_PORT getenv("SFR:PORTD")


#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2

Funciones a usar:

 lcd_init(): Inicializa el lcd

 lcd_gotoxy(x,y): Establece la posición de escritura en el lcd.

 lcd_putc(char s): nos muestra un dato en la siguiente posición del lcd.

\f se limpia el lcd
\n el cursor se posiciona al inicio de la segunda línea
\b el cursor retrocede una posición

 lcd_getc(x,y): lee el carácter de la posición (x,y)

9
 printf(lcd_putc, cadena, variable)

Ejemplo: printf(lcd_putc,"\n %2.2f la temperatura es: ",temp);


donde temp: variable

EL PROGRAMA

#include <16f887.h> //Nuestro pic


#use delay (clock=8000000) //Fosc=8Mhz
#include <lcd.c> //Libreria de la lcd

void main()
{
setup_oscillator(OSC_8MHZ|OSC_INTRC); //Programamos oscilador interno del
Pic a 8MHZ
set_tris_b(0); //Puerto B como salida
lcd_init(); //Inicializamos LCD
lcd_putc("Hola Mundo"); //"Hola Mundo"
}

10

You might also like