Vous êtes sur la page 1sur 26

MARZO – JULIO 2010

UNIVERSIDAD POLITÉCNICA
SALESIANA
SISTEMAS MICROPROCESADOS 1

INFORME PRÁCTICA #04


TEMA: Display alfanuméricos y gráficos.

DAVID ESPÍN
ANDRÉS MOGRO

QUITO - ECUADOR
PRACTICA #04

OBJETIVO: Utilizar con el microcontrolador pic display alfanuméricos y


gráficos.

4.1 Escribir la sentencia Hola e Ingeniería Electrónica en un display.

Entradas:

Los datos que se van a guardar en el microcontrolador.

Procesos:

• Habilitar el display mediante el puerto B como salida.


• Escribir sentencias en el puerto B y enviarlas hacia el display.

Salidas:

Salida del puerto B hacia el display alfanumérico.

CÓDIGO
program escribiring

'programa para escribir en un LCD 16X2

'D7=PORTB.7,D6=PORTB.6,D5=PORTB.5,D4=PORTB.4;

'RS=PORT.0,/W=PORTB.1,E=PORTB.2

'PARA ELIMINAR EL CURSOR SE APAGA MEDIANTE EL SIGUIENTE COMANDO

'LCD_cmd(LCD_CURSOR_OFF)

main:

'trisb=0

'portb=255

LCD_cmd(LCD_CURSOR_OFF)

Lcd_config(portb,7,6,5,4,portb,0,1,2)
lcd_out(1,1,"HOLA")

delay_ms(2000)

lcd_cmd(lcd_clear)

lcd_out(1,1,"INGENIERIA")

lcd_out(2,1,"ELECTRONICA")

end.

DIAGRAMA DE FLUJO

INICIO

CONFIGURAR LCD
COMO SALIDA

ESCRIBIR “HOLA” EN EL LCD

RETRASO 2000 mS.

ESCRIBIR “INGENIERIA
ELECTRONICA” EN EL LCD

RETRASO 2000 mS.


ESQUEMÁTICO Y SIMULACIÓN
FOTOS

4.2 Elaborar un programa para que aparezca los nombres de los integrantes
del grupo por 3 segundos.

Entradas:

Los datos que se van a guardar en el microcontrolador.

Procesos:

• Habilitar el display mediante el puerto B como salida.


• Escribir sentencias en el puerto B y enviarlas hacia el display.

Salidas:

Salida del puerto B hacia el display alfanumérico.


CÓDIGO
program escribirnombres

main:

'trisb=0

'portb=255

LCD_cmd(LCD_CURSOR_OFF)

Lcd_config(portb,7,6,5,4,portb,0,1,2)

lcd_out(1,1,"DAVID ESPIN")

delay_ms(3000)

lcd_cmd(lcd_clear)

lcd_out(1,2,"ANDRES MOGRO")

delay_ms(3000)

GOTO MAIN

end.
DIAGRAMA DE FLUJO

INICIO

CONFIGURAR LCD
COMO SALIDA

ESCRIBIR “DAVID ESPIN” EN EL


LCD

RETRASO 3000 mS.

ESCRIBIR “ANDRES MOGRO” EN


EL LCD

RETRASO 3000 mS.


ESQUEMÁTICO Y SIMULACIÓN
FOTOS
4.3 Elabore un programa para que se observe un contador ascendente, cuyo
valor se observa en un display 16x2, con un intervalo de tiempo entre cada
valor de 2 segundos. Utilice el esquema del numeral 1.

Entradas:

Los datos que se van a guardar en el microcontrolador.

Procesos:

• Habilitar el display mediante el puerto B como salida.


• Realizar la cuenta de 0 a 255 y enviar datos al puerto B para
posteriormente enviarlos hacia el display.

Salidas:

Salida del puerto B hacia el display alfanumérico.

CÓDIGO
program contadorLcd

dim A as STRING

dim X as string[6]

main:

trisb=0

Lcd_config(portb,7,6,5,4,portb,0,1,2)

Lcd_cmd(lcd_cursor_off)

while true
A=A+1

WORDTOSTR(A,X)

Lcd_cmd(lcd_clear)

Lcd_out(2,1,x)

delay_ms(500)

wend

end.

DIAGRAMA DE FLUJO

INICIO

CONFIGURAR LCD
COMO SALIDA

DECLARAR VARIABLES PARA


REALIZAR LA CUENTA

REALIZAR LAZO WHILE-WEND


PARA LA CUENTA

RESTRASO 2000 ms
ESQUEMÁTICO Y SIMULACIÓN

FOTOS
4.4 Utilice el temporizador 1 del 16f877A, para crear un contador ascendente
por señal externa, muestre el valor en un display, la señal de reloj se genera
mediante un pulsante externo, realice los ajustes necesarios al esquema del
numeral 1.

Entradas:

• Los datos que se van a guardar en el microcontrolador.


• Los pulsos externos ingresados por el usuario.

Procesos:

• Habilitar el display mediante el puerto B como salida.


• Realizar la cuenta de 0 a 255 mediante el timer externo.
• Enviar datos al puerto B para posteriormente enviarlos hacia el
display.

Salidas:

Salida del puerto B hacia el display alfanumérico.

CÓDIGO
program contLCD

dim A as STRING

dim X as string[6]

main:

trisa=$FF

trisb=$0

'Option_reg=%10100000 'solo para ir de 2, 4, 8, 16, etc.


intcon=$0

tmr0=0

Lcd_config(portb,7,6,5,4,portb,0,1,2)

Lcd_cmd(lcd_cursor_off)

while true

A=tmr0

WORDTOSTR(A,X)

Lcd_cmd(lcd_clear)

Lcd_out(2,1,x)

delay_ms(500)

wend

end.

DIAGRAMA DE FLUJO

INICIO

CONFIGURAR LCD
COMO SALIDA

DECLARAR VARIABLES PARA


REALIZAR LA CUENTA

REALIZAR LAZO WHILE-WEND


USANDO EL TMR0 PARA LA
CUENTA

RESTRASO 2000 ms
ESQUEMÁTICO Y SIMULACIÓN

FOTOS
5.5 Programa de ejemplo para el uso de display gráfico.

Entradas:

• Los datos que se van a guardar en el microcontrolador.

Procesos:

• Habilitar el display gráfico mediante el puerto B como salida.


• Cargar la imagen de una imagen predeterminada.
• Dibujar círculos en el display gráfico.
• Dibujar círculos en el display gráfico.
• Dibujar líneas en el display gráfico.

Salidas:

Salida del puerto B hacia el display gráfico.

CÓDIGO

program Glcd1

include "imagen1"'librería de imagenes mikrobasic

dim j, k as byte

main:

Glcd_init(Portb, 0,1,2,3,4,5, portd)

do

Glcd_Set_Font(@FontSystem5x8, 5, 8, 32)

Glcd_Image(carsun_bmp)
Delay_ms(1000)

Glcd_Fill(0)

Glcd_Set_font(@FontSystem5x8, 5, 8, 32)

delay_ms(1000)

Glcd_Write_Text("Circulos", 0, 0,1)

j=4

While j<31

Glcd_Circle(63, 31, j, 2)

j=j+4

wend

Delay_ms(4000)

Glcd_Fill(0)

Glcd_Set_Font(@FontSystem5x8, 5, 8,32)

Glcd_Write_Text("Rectangulos", 0, 0,1)

delay_ms(1000)

Glcd_Fill(0)

j=0

While j<31

Glcd_Box(j, 0, j+20, j+25,2)


j=j+4

wend

delay_ms(4000)

Glcd_Fill(0)

Glcd_Set_Font(@FontSystem5x8, 5, 8, 32)

Glcd_Write_Text("lineas", 0, 0, 1)

delay_ms(1000)

Glcd_Fill(0)

for j=0 to 15

k=j*4+3

Glcd_Line(0, 0, 127, k, 2)

next j

for j=0 to 31

k=j*4+3

Glcd_Line(0, 63, k, 0, 2)

next j

delay_ms(4000)

loop until False

end.
Creamos un nuevo programa no proyecto y lo guardamos en la misma
carpeta en donde se guardó proyecto.

module imagen1

' ------------------------------------------------------

' GLCD Picture name: carsun.bmp

' GLCD Model: KS0108 128x64

' ------------------------------------------------------

const carsun_bmp as byte[1024] = (

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128,128,128,128, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

128,128,128,128,128,144,144,144,144,144,144,128,144,128, 0,144,

144, 0, 0, 32, 32, 0, 0, 0, 0, 16, 0, 0, 4, 4, 4,132,

128,128,128, 64, 64, 64, 64, 64, 64, 68, 64, 64, 64, 64, 64, 68,

64, 64, 64, 64, 0, 0, 0, 68, 36,164, 4, 4,132,132,132, 4,

36, 36, 36, 4,132,188,226,161, 56,192, 2,130,130,130, 66, 68,

25,129,102, 0, 0, 0, 0, 0, 0, 0, 70, 66, 66, 2, 66, 2,

32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 8, 72, 72, 72, 72,

8, 40, 40, 8, 8, 8, 64, 64, 64, 64, 64, 64, 0, 0, 0, 0,

0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 64, 66,

2, 66,129, 1, 1, 67, 1, 34, 34, 34, 34, 2, 0, 0, 80,136,

8, 0, 0, 0,128,194, 96, 2,209, 9, 9, 9,137, 81, 16, 16,

28, 31,224,136, 24, 72,152,152, 32,148, 44,156, 68, 52,128,224,

248, 64, 72, 72,184,120,184, 24, 25,164, 86,158,215,211,187,181,

189,173,164,236,160,200,184,248,232,240,236,208,215,239,203,213,

229,253,237,209,168, 89,169, 81,145,113, 80, 48, 96,160,160, 64,

193, 65,121, 60,128,128,128,248,112,128, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1,

1, 2, 17, 23, 30, 1,128, 64, 64, 37, 36, 7, 18, 18, 10, 7,
6, 6, 7, 7, 6, 2, 3, 2, 2, 3, 2, 3, 3, 3, 2, 2,

7, 6, 7, 7, 6, 7,134,198,182,158,199,235,127, 65, 94,110,

102, 94, 94, 94, 94,114,115, 99, 67, 67, 67, 67, 67, 67, 67, 83,

83, 94, 94, 76, 79,124,100, 68,134,133, 4, 5, 5, 6, 5, 6,

20, 15, 0,224, 47, 32, 8, 23,112, 19, 8, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, 16, 8, 8,

4, 4, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0,128,224, 48,216,126,127, 79, 75,105, 72, 72, 72, 72, 72, 72,

72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,

64, 64, 64, 64, 64, 64, 64, 64, 64, 81,111,111,110,124,240, 32,

64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,

6, 1, 0, 0, 3, 6, 7, 31, 31, 31, 31, 3, 3, 3, 3, 3,

3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,

3, 3, 3, 3, 3, 3, 3, 3, 3, 15, 15, 15, 15, 7, 3, 0,

0, 0, 1, 3, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

end.
DIAGRAMA DE FLUJO

INICIO

CONFIGURAR LOS
PUERTOS PARA EL
GLCD

DIBUJAR UNA IMAGEN


PREDETERMINADA

DIBUJAR CÍRCULOS

DIBUJAR RECTÁNGULOS

DIBUJAR LÍNEAS
ESQUEMÁTICO Y SIMULACIÓN

FOTOS
CONCLUSIONES.

• Utilizamos con el microcontrolador pic displays alfanuméricos y


gráficos.
• Para el display gráfico lo ideal es utilizar un PIC de la familia 18FXX, con
la familia 16FXX los programas funcionan pero las imágenes se ven un
poco distorsionadas.
• Aprendimos a utiñizar la herramienta para la generación de arreglos
para mapa de bits GLCD BITMAP EDITOR.

BIBLIOGRAFÍA

• MICROCONTROLADORES PIC. Diseño práctico de aplicaciones SEGUNDA PARTE: PIC


16F87X PIC 18FXXXX. Segunda edición. Segundo Angulo, Susana Romero, Mc Graw
Hill. España.
• Hojas guías de la práctica.
• Ayuda del software Mikrobasic.