Manual de Prácticas Easypic 6
Manual de Prácticas Easypic 6
Manual de Prácticas Easypic 6
Presenta:
Director:
Dr. Mario Gonzalez Lee
Asesor:
Dr. Rene Fabian Vazquez Bautista
Revisor:
Dr. Luis Javier Morales Mendoza
Universidad Veracruzana
Facultad de ingeniera Electrnica y
comunicaciones
INDICE
PRESENTACION..4
CARACTERISTICAS Y FUNCIONES ESENCIALES. 5
CONFIGURACION DE COMPILADOR7
PRACTICA 1 SALIDA DE SEALES SIMPLES10
MARCO TEORICO.11
ALGORITMO.12
DIAGRAMA DE FLUJO13
CODIGO FUENTE..14
EJECICIO PROPUESTO.15
PRACTICA 2 ENTRADAS DE SEALES DIGITALES CON BOTONES
DE PRESION.22
MARCO TEORICO.23
ALGORITMO.24
DIAGRAMA DE FLUJO....25
CODIGO FUENTE.26
EJECICIO PROPUESTO29
PRACTICA 3 LCD 2X16 VISUALIZADOR EXTERNO.34
MARCO TEORICO..36
ALGORITMO.36
DIAGRAMA DE FLUJO...37
CODIGO FUENTE.38
EJECICIO PROPUESTO41
PRACTICA 4 COG LCD 2X16 VISUALIZADOR INTER..47
MARCO TEORICO.49
ALGORITMO49
DIAGRAMA DE FLUJO50
CODIGO FUENTE..51
2
EJECICIO PROPUESTO54
PRACTICA 5 CONVERTIDOR DE SEALES AD.59
MARCO TEORICO..61
ALGORITMO61
DIAGRAMA DE FLUJO62
CODIGO FUENTE.63
EJECICIO PROPUESTO65
PRACTICA 6 CODIGO DE SEGURIDAD KEYPAD 4X4..74
MARCO TEORICO.75
ALGORITMO76
DIAGRAMA DE FLUJO...77
CODIGO FUENTE78
EJECICIO PROPUESTO..84
PRACTICA 7 WATCHDOG TIMER (WDT)..90
MARCO TEORICO..91
ALGORITMO92
DIAGRAMA DE FLUJO...92
CODIGO FUENTE93
PRACTICA 8 PANTALLA GLCD 128x64..96
MARCO TEORICO..98
ALGORITMO98
DIAGRAMA DE FLUJO...99
CODIGO FUENTE...100
PRESENTACION
3
Este Trabajo practico educativo est basado en una tarjeta
desarrollo Easypic6, este sistema de desarrollo cuenta con
diferentes tipos de mdulos los cuales se encuentran de
manera integral en comunicacin con otros mdulos para
cuando sean requeridos puedan lograr su interaccin entre
ellos. Una de las ventajas de este sistema de desarrollo es la
versatilidad que se obtiene al contar con todo lo necesario
dentro del sistema, con ello no necesitamos de adquirir
ningn tipo de hardware externo para su pleno
funcionamiento, aunque cabe mencionar que maneja tres
tipos de lenguaje de programacin como Basic, MikroC C y
pascal sin limitar al programador a el conocimiento de un solo
lenguaje.
Una de las maneras las que interactan es mediante
entradas y salidas perifricas, las cuales nos ayudaran a
utilizar diversos tipos de conexiones y accesorios externos
para la comunicacin con el sistema de desarrollo hacia la pc
o hacia el microcontrolador que se est utilizando.
En este manual de prcticas utilizaremos el PIC16F887 como
microcontrolador para los trabajos que se presentan. Los
motivos principales los cuales se eligi este microcontrolador
para ser utilizado de manera permanente fue por la facilidad
de adquirir este tipo de PIC ya que se pueden encontrar a un
precio accesible y son comunes dentro de la familia de
microcontroladores, cuenta con una capacidad de memoria
EEPROM de 256 bytes, 368 bytes de memoria RAM y 8k de
memoria ROM, lo cual nos ayuda a tener un amplio margen de
trabajo para almacenar grandes cantidades de datos. Sus
numerosas salidas lo hacen obtener una gran ventaja por
encima de los dems en comparacin a los que pertenecen a
la familia 16F existentes en el mercado.
4
Manual de prcticas con el sistema de desarrollo de
proyectos Easypic 6
OBJETIVO GENERAL.
Realizar un manual de prcticas con el sistema de desarrollo
easypic6 para uso de los estudiantes de la carrera de
ingeniera en electrnica y carreras afines cuyos planes de
estudio contemplen el estudio de los microcontroladores.
5
Es una gua clara para los estudiantes que requieren
superar los retos prcticos de la Experiencia Educativa
de microprocesadores y microcontroladores.
JUSTIFICACIN.
Una problemtica del rea de los microcontroladores y
microprocesadores es la dificultad inherente a la construccin
de los prototipos, lo cual en la mayora de los casos consume
una cantidad de tiempo considerable y si a esto agregamos la
dificultad asociada a la depuracin de los circuitos, tenemos
que la mayora del trabajo se centra en esta rea en lugar de
centrarse en el concepto terico que se persigue, esto termina
por desvirtuar a la prctica misma.
Si eliminamos la dificultad de construir al prototipo, entonces
la mayor cantidad de tiempo se centra en la depuracin de la
programacin, lo que permite centrar a la prctica en los
conceptos relacionados a los microcontroladores en lugar de
los conceptos relativos a la electrnica.
6
Keypad 4x4.
Visualizador GLCD 128X64.
Botones de presin.
Panel de leds.
Convertidor de seales ADC.
Watchdog timer (WDT)
7
Seleccin de
microcontrolador.
Frecuencia del
microcontrolador utilizado en
la prctica.
Proceso de
Tipo de depurador utilizado
depuracin.
para puntualizar y eliminar
errores.
8
programa y Debugger (depurador)es un programa que se
encarga de depurar y eliminar errores de otros programas.
Es una Depurador de
herramienta hardware en un
que permite circuito para una
identificar y depuracin pas a
corregir errores paso a nivel del
de hardware.
Figura 1-2 Sistema de compilador y depurador
9
Prctica
Salida de seales simples.
1
PRESENTACION
Una de las operaciones bsicas de los microcontroladores es
controlar diversos procesos, para lograrlo, es necesaria la
comunicacin al exterior, es decir, enviar seales a los
subsistemas conectados al microcontrolador, por ejemplo,
enviar una seal de activacin para hacer funcionar una
bomba de agua.
Para ilustrar la manera en que se pueden hacer este tipo de
tareas, se presenta una prctica que consiste en el encendido
y apagado de un LED. El mismo concepto se puede utilizar
para controlar seales de activacin a distintos dispositivo
perifricos al microcontrolador.
A continuacin, presentamos los detalles de la prctica.
OBJETIVO DE LA PRCTICA
Disear e implementar un software embebido que permita al
microcontrolador enviar seales de encendido o de apagado
de un LED.
10
DESTREZAS Y HABILIDADES ADQUIRIDAS
Con esta prctica, el alumno adquiere habilidades y destrezas
en:
El manejo de los puertos de salida.
La programacin de microcontroladores en lenguaje C.
El uso del sistema de desarrollo EASYPIC6.
MATERIAL:
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales.
Material/Recurso Cantidad
PIC16f887 1
Tarjeta de desarrollo 1
EASYPIC6
MARCO TERICO
MikroC permite la lectura y escritura de bits desde y hacia los
puertos, en nuestro caso, nos interesa la funcionalidad de
escribir bits a un puerto, en el caso particular de esta prctica,
ser el puerto B el que servir para tal fin, el proceso se
vuelve tan simple como asignar un valor a una direccin de
memoria, siendo en este caso la variable reservada PORTB, la
11
cual se encuentra direccionada al puerto B de manera que
para escribir un valor determinado en el puerto B, basta con
asignar el valor que deseamos escribir en la variable PORTB
igual al valor que deseamos escribir.
Algoritmo 1
12
DIAGRAMA DE FLUJO
El proceso a realizar se puede resumir a travs del siguiente
diagrama de flujo.
13
14
Cdigo fuente 1: Encendido y apagado de un grupo de leds.
void main() {
Configuracin:
Encendido y Apagado de led's utilizando el pic16f887
Habilitar los puertos B y C (SW9.2 y SW9.3)
15
Figura 1.- Activacin de puertos B y C (SW9.2 y SW9.3)
EJERCICIO PROPUESTO
Realiza un ejercicio cambiando las instrucciones en base al
ejemplo anterior donde se activen las salidas de los puertos
A,B,C,D del microcontrolador desplegando un mensaje de
Hola =) en el panel de leds.
16
Configuracin:
Encender el puerto A, B, C, y D respectivamente (SW9.1,
sw9.2, sw9.3, sw9.4)
17
El panel de leds se encuentra dividido en dos secciones, para
poder visualizar la letra H en el panel se deber contar el
nmero de bits que se va a ingresar dentro del puerto A,B,C y
D como se muestra en la siguiente figura 1.3.
8 4 2 1 8 4 2 1
0 0 0 1 1 1 1 1 A
0 0 0 0 0 1 0 0 B
0 0 0 0 0 1 0 0 C
0 0 0 1 1 1 1 1 D
18
Demostracin de la figura 1.3 configurado en Easy pic6
19
DIAGRAMA DE FLUJO: Mensaje utilizado el panel de
leds.
20
21
Cdigo fuente 2: Mensaje utilizado en el panel de leds.
void main() {
ansel= 0 ; // configura el pin AN como digital
anselh= 0;
c1on_bit= 0; //Inhabilitar comparadores
c2on_bit= 0;
TRISA = 0x00; // Establece direccin como salida
TRISB = 0x00; // Establece direccin como salida
TRISC = 0x00; // Establece direccin como salida
22
PORTD = 0x1F; // Encienda el LED en PORTD
Delay_ms(1000); // Retardo de 1 segundo
PORTA = 0x20; // Encienda el LED en PORTA
PORTB = 0x4e; // Encienda el LED en PORTB
PORTC = 0x4e; // Encienda el LED en PORTC
PORTD = 0x20; // Encienda el LED en PORTD
Delay_ms(1000); // Retardo de 1 segundo
} while(1); // Bucle sin fin
}
Prctica
Entradas digitales con Botones de
presin.
2
23
PRESENTACION
El propsito de esta prctica es controlar entradas y salidas
para lo cual es necesario contar con un subsistema el cual
deber de efectuar las instrucciones que desee para el
dispositivo. Unos de los principales ejemplos de una botonera
de presin (entradas digitales) se encuentran en diversas
formas y tamaos principalmente en aparatos electrnicos y
elctricos los podemos observar en un control remoto o en un
teclado. Para demostrar la manera en que se puede realizar
este tipo de acciones se presenta esta prctica la cual
consiste en el funcionamiento del encendido de leds por
medio del panel de botones. Este tipo de concepto se puede
utilizar para el encendido de dispositivos y puertos hacia el
microcontrolador.
OBJETIVO DE LA PRCTICA
Realizar un programa que permita al microcontrolador enviar
seales de encendido y apagado de un led con solo pulsar un
botn.
24
Configuraciones de instrucciones y uso de los botones de
presin
MATERIAL
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales.
Material/Recurso Cantidad
PIC16f887 1
software MikroC c Pro for PIC 1
Tarjeta de desarrollo EASYPIC6 1
MARCO TERICO
MikroC permite la lectura y escritura de bits desde y hacia los
puertos, en nuestro caso, nos interesa la funcionalidad de
escribir bits a un puerto, en el caso particular de esta prctica,
sern todos los puertos que se ocupan dentro de EASY PIC6
que servir para tal fin, el proceso se vuelve tan simple como
asignar un valor a una variable, siendo en este caso la
variable reservada de PORTA y PORTB , las cual se encuentra
direccionadas a los puertos de manera que para escribir un
valor determinado, basta con hacer la variable PORTA y PORTB
igual a la seal que se desee realizar.
A continuacin, presentamos el programa ejemplo para
ilustrar al concepto anterior.
Algoritmo 2
25
Hacer TRISB0= 1 (Activa RB0 como entrada del pulsador)
Mientras sea verdadero el ultimo estado (1)
Hacer PORTB=~PORTB y PORTC=~PORTC, esto hace que
si se encontraban encendidos los leds, ahora se apaguen
con tan solo mandar un pulso en RB0.
DIAGRAMA DE FLUJO
26
Cdigo fuente 1: Entradas digitales con botones de presin
27
ANSEL = 0; //configura los pines AN
como E/S digital
ANSELH = 0;
C1ON_bit = 0; // inhabilita los
comparadores
C2ON_bit = 0;
TRISB0_bit = 1; // Establece el pin RB0 como
entrada
TRISD = 0X00;
TRISC = 0x00; // Configura el PORTC como
salida
PORTD = 0X55;
PORTC = 0xAA; // Valor inicial del puerto
C
oldstate = 0;
do {
if (Button(&PORTB, 0, 1, 1)) // Detectar el uno logico
oldstate = 1; // Actualiza bandera
}
if (oldstate && Button(&PORTB, 0, // Detectar transicin uno a
1, 0)) { cero
PORTC = ~PORTC; // Invierte el PORTC
PORTD = ~PORTD; // Actualiza bandera
}
} whi // Bucle sin fin
Configuracin:
Encienda el dip switch del puerto C y D del panel de
leds (sw9.3, sw9.4).
Ponga el botn de puente (J17) en la posicin VCC y
apague el Puerto B (SW9.2).
28
Figura 2.- Configuracin de puerto B, C, D (SW9.2,
SW9.3, SW9.4)
29
circuito. Los usuarios con ms experiencia pueden, si es
necesario, cortocircuitar este resistor utilizando el puente
J24.
EJERCICIO PROPUESTO
Observe a detalle el ejemplo observando los diagramas de
flujo que le ayudara a realizar correctamente el programa.
30
Realice la modificacin del programa enciendo y apagando
tres columnas de leds por medio de botones de presin
(entradas digitales) siguiendo los pasos del ejemplo usted
deber cambiar los puerto de entrada del pulsador RB a RA
para hacer conmutar las tres columnas de leds.
31
Cdigo fuente 2: Conmutacin por medio del pulsador
32
bit oldstate; // Bandera de estado antiguo
void main() {
ANSEL = 0; // Configura los pines AN como E/S
digital
ANSELH = 0;
C1ON_bit = 0; // Inhabilita los comparadores
C2ON_bit = 0;
TRISA0_bit = 1; // Establece el pin RB0 como entrada
TRISB = 0X00;
TRISC = 0x00; // Configura PORTC como salida
TRISD = 0X00; // configura PORTD como salida
PORTC = 0xFF; // Valor inicial en PORTC
PORTD = 0XFF; // Valor Inicial en PORTD
PORTB = 0XFF; // Valor Inicial en PORTB
oldstate = 0;
do {
if (Button(&PORTA, 0, 1, // Detectar uno lgico
1)) {
oldstate = 1; // Actualizar bandera
}
if (Button(&PORTa, 0, 1, // Detectar uno lgico
1)) {
oldstate = 1; // Actualizar bandera
if (Button(&PORTa, 0, 1, // Detectar uno lgico
0)) {
oldstate = 0; // Actualizar Bandera
}
if (oldstate && // Detectar transicin uno-a-cero
Button(&PORTA, 1, 1, 0)) {
PORTC = ~PORTC; // Invierte PORTC
oldstate = 1;
}
33
if (oldstate && button
(&porta, 0, 1, 0)) {
PORTD = ~PORTD; // invierte PORTD
oldstate = 0;
}
if (oldstate && button
(&porta, 0, 1, 1)) {
PORTB = ~PORTB;
oldstate = 1; // Actualizar Bandera
}
} while(1); // Bucle sin fin
}
Configuracin:
Encender el interruptor PORTB, PORTC y PORTD del
panel de led's.
Poner el jumper J17 en posicin de VCC.
34
Figura 2.2.- Configuracin de puerto B, C, D (SW9.2,
SW9.3, SW9.4)
35
Prctica
LCD 2X16 VISUALIZADOR EXTERNO. 3
PRESENTACION
36
A continuacin, presentamos las generalidades de la prctica
en la que se hace el uso del LCD 2x16 visualizador externo
OBJETIVO DE LA PRCTICA
En esta prctica se realiza un ejemplo el cual consiste en
visualizar un mensaje de bienvenida para el programador con
el uso del visualizador LCD 2x16 mandando la instruccin por
medio del microcontrolador hacia el puerto B para su debida
comunicacin con la pantalla externa LCD 2x16.
MATERIAL
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales.
Material/Recurso Cantidad
PIC16f887 1
software MikroC c Pro for PIC 1
Tarjeta de desarrollo EASYPIC6 1
Visualizador LCD 2x16 1
37
MARCO TERICO
El uso del LCD es una de la principales razones las cuales se
hace esta prctica, en este display se utilizara completamente
cada una de las dos filas con diecisis caracteres cada una, la
cual cuenta con una resolucin de 7x5 pixeles. La
comunicacin de microcontrolador con el LCD se establece
mandando una tasa de 4 bits, en nuestro caso nos interesa la
funcionalidad del LCD y el desplegar texto dentro del
visualizador LCD con la que mandaremos ciertos comandos de
insertar texto como; lcd-out (f, c, texto) Lcd_cmd que sirve
para limpiar el texto en LCD entre otras funciones que nos
permitirn la manipulacin del LCD. Estos son conceptos
bsicos y esenciales para debido uso dentro del sistema de
desarrollo Easypic6.
A continuacin, presentamos el programa ejemplo para
ilustrar al concepto anterior.
Algoritmo 3
Configurar a los puertos de salida del Display LCD 2x16.
Configurar a los puertos analgicos como E/S digital.
Configurar los bits de comunicacin con el LCD.
Escribir texto en el LCD.
Recorrer el texto de Izquierda a derecha.
38
DIAGRAMA DE FLUJO
El proceso a realizar se puede resumir a travs del siguiente
diagrama de flujo.
39
Cdigo fuente 3: Visualizador externo pantalla LCD2x16
40
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at
TRISB4_bit;
sbit LCD_EN_Direction at
TRISB5_bit;
sbit LCD_D4_Direction at
TRISB0_bit;
sbit LCD_D5_Direction at
TRISB1_bit;
sbit LCD_D6_Direction at
TRISB2_bit;
sbit LCD_D7_Direction at // Fin de conexiones del mdulo LCD
TRISB3_bit;
char txt1[] = "EJEMPLO";
41
Lcd_Cmd(_LCD_CURSOR_OFF); // Apaga Cursor
Lcd_Out(1,3,txt3); // Escribe texto en la primera fila
Lcd_Out(2,3,txt4); // Escribe texto en la segunda fila
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Limpia Display
Lcd_Out(1,4,txt1); // Escribe texto en la primera fila
Lcd_Out(2,4,txt2); // Escribe texto en la segunda fila
Delay_ms(2000);
// Moving text
for(i=0; i<7; i++) { // Mueve el texto a la derecha 7
veces
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
while(1) { // Bucle sin fin
for(i=0; i<10; i++) { // Mueve el texto a la izquierda 10
veces
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
for(i=0; i<10; i++) { // Mueve el texto a la derecha 10
veces
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
Configuracin:
Encienda el interruptor de la luz de fondo del LCD
(SW6.8) en la placa
de desarrollo.
42
Figura 3.1- Configuracin del switch para activar el uso
de retroiluminacin en el Display LCD 2x16 (SW6.8)
43
proteccin de 10k se active al encender el sistema de
desarrollo para proteger el equipo de cualquier tipo de corto
circuito que se pueda presentar en la prctica. Podr observar
que se encuentra un potencimetro en la parte inferior del
Display LCD (P4) de 10k con la cual podr modificar el
contraste del visualizador LCD de manera que sea legible el
visualizar el texto que se introduzca al display LCD.
Se observara como se despliega el mensaje de texto
Bienvenido programador seguido del mensaje en
movimiento Ejemplo LCD 2x16 y observara los resultados.
EJERCICIO PROPUESTO
En esta prctica se debe realizar un programa desplegando un
mensaje de texto Universidad Veracruzana en el
visualizador seguido de escribir letra por letra las siglas de la
facultad de ingeniera electrnica y comunicaciones (FIEC) en
la primera fila y las siglas de la universidad veracruzana (UV)
en la segunda fila, seguido de un movimiento de texto de
derecha a izquierda.
44
DIAGRAMA DE FLUJO: Pantalla 2x16 indicador de
mensaje en movimiento
45
Cdigo fuente 2: Pantalla 2x16 indicador de mensaje en
movimiento
46
void Move_Delay() { // Funcin usada para el
movimiento de texto
Delay_ms(500); //Tu puedes cambiar la velocidad
de movimiento aqu
}
void main() {
ANSEL = 0; // Configura los pines AN como E/S
digitales
ANSELH = 0;
PORTB=0;
TRISB = 0; //Salida del PORTB
Lcd_Init(); //Inicializa LCD en PORTB
LCD_Cmd(_LCD_CLEAR); // Limpia el display
lcd_cmd(_lcd_return_home);
lcd_cmd(_LCD_MOVE_CURSOR_RIGHT);
Lcd_Cmd(_Lcd_BLINK_cursor_ON); //Apaga el cursor
delay_ms(1000);
lcd_out(1,1,txt12);
delay_ms(1000);
lcd_out(2,1,txt13);
delay_ms(1000);
lcd_cmd(_LCD_clear);
Lcd_Out(1,6,txt1);
delay_ms(1000);
lcd_out(1,7,txt2);
delay_ms(1000);
Lcd_Out(1,8,txt3);
delay_ms(1000);
lcd_out(1,9,txt4);
delay_ms(1000);
Lcd_Out(2,10,txt5);
delay_ms(1000);
47
lcd_out(2,11,txt6);
delay_ms(1000);
lcd_cmd(_LCD_CURSOR_OFF);
for(i=0; i<5; i++) { //Mueve el texto a la derecha 4
veces
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
while(1) { // Bucle sin fin
for(i=0; i<10; i++) { //Mueve el texto a la izquierda 4
veces
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
for(i=0; i<10; i++) { //Mueve el texto a la derecha 7
veces
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
Configuracin:
Encienda el interruptor de la luz de fondo del LCD
(SW6.8) en la placa de desarrollo (figura 3.1).
Ajustar los DIP SWITCH SW6.
Ajustar el potencimetro (P4) para modificar el contraste
de manera que se distinga adecuadamente el texto
desplegado.
48
Figura 3.2.- Configuracin del switch para activar el
uso de retroiluminacin en el Display LCD 2x16 (SW6.8)
49
Prctica
COG LCD 2X16 VISUALIZADOR
INTEGRADO.
4
PRESENTACION
50
A continuacin, presentamos los objetivos de la prctica.
OBJETIVO DE LA PRCTICA
En esta prctica se visualiza un mensaje de saludo utilizando
el COG LCD en nuestro caso nos interesa familiarizarnos con
las instrucciones necesarias que direccionan y activan el
visualizador COG LCD y en un futuro poder utilizar este tipo de
comandos para dar lugar a un proyecto con fines relacionados
con el mdulo COG LCD.
MATERIAL
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales.
Material/Recurso Cantidad
PIC16f887 1
software MikroC c Pro for PIC 1
Tarjeta de desarrollo 1
EASYPIC6
COG LCD 2x16 visualizador 1
integrado
51
MARCO TERICO
Una de las ventajas es que La tecnologa COG es una
metodologa de diseo alternativo en el que el conductor
del LCD se monta directamente sobre, el tamao de
cristal. El efecto global es una reduccin en el costo del
sistema. A diferencia del visualizador LCD, el
visualizador incorporado no dispone de la luz de fondo y
recibe los datos por medio del expansor de puertos que
utiliza la comunicacin SPI (interfaz serial perifrica),
esta interfaz es un estndar de comunicaciones que es
utilizada para la transmisin de informacin entre
dispositivos electrnicos, Con esto se establece la
comunicacin entre el microcontrolador y el display COG
LCD. Este visualizador tambin visualiza los dgitos en
dos lneas de las que cada una contiene hasta 16
caracteres de 7x5 pxeles y cuenta con un
potencimetro P5 para ajustar y establecer el contraste
para visualizar de manera correcta el mensaje a
desplegar.
Algoritmo 4
53
Cdigo fuente 4: Hola Bienvenido
54
sbit SPExpanderCS_Direction
at TRISA2_bit;
sbit SPExpanderRST_Direction // Terminar conexiones del mdulo de
at TRISA3_bit; ampliacin de puertos
void main() {
ANSEL = 0; // Configura los pins AN como digitales
ANSELH = 0;
C1ON_bit = 0; // Inhabilita comparadores
C2ON_bit = 0; //Si expansin del puerto de la
Biblioteca utiliza el mdulo SPI1
SPI1_Init(); // Inicializar el mdulo SPI utilizado
con expansin del puerto
SPI_Lcd_Config(0); // Inicializar Lcd sobre la interfaz SPI
SPI_Lcd_Cmd(_LCD_CLEAR); // Borrar pantalla
SPI_Lcd_Cmd(_LCD_CURSOR_OFF); // Desactivar cursor
SPI_Lcd_Out(1,6, "Hola"); // Imprimir texto de Lcd, primera fila,
sexta columna
SPI_Lcd_Chr_CP('!');
SPI_Lcd_Out(2,4, text); // Imprimir texto de Lcd, segunda fila,
primera columna
Configuracin:
Encienda el switch de los puertos expansores (SW6.1,
SW6.2, SW6.3, SW6.4 and SW6.5) como se muestra en la
figura 4.
Encienda el switch del COG LCD 2x16 (SW10.1, SW10.2,
SW10.3, SW10.4, SW10.5, SW10.6, SW10.7 y SW10.8)
como se muestra en la figura 4.1.
55
Figura 4.- Configuracin puertos SPI (SW6.1, SW6.2,
SW6.3, SW6.4, SW6.5).
57
Cdigo fuente 4: Pantalla COG 2x16 indicador de mensaje en
movimiento
// Conexiones del mdulo de ampliacin de puertos
sbit SPExpanderCS at RA2_bit;
sbit SPExpanderRST at RA3_bit;
sbit SPExpanderCS_Direction at TRISA2_bit;
sbit SPExpanderRST_Direction at TRISA3_bit;
// Terminar conexiones del mdulo de ampliacin de puertos
58
char txt2[] = "N";
char txt3[] = "G";
char txt4[] = ".";
char txt5[] = "E";
char txt6[] = "l";
char txt7[] = "e";
char txt8[] = "c";
char txt9[] = "t";
char txt10[] = "r";
char txt11[] = "o";
char txt12[] = "n";
char txt13[] = "i";
char txt14[] = "c";
char txt15[] = "a";
void main() {
59
SPI1_Init(); // Inicializar mdulo de SPI se utiliza con
PortExpander
SPI_Lcd_Out(1,6,txt1);
delay_ms(1000);
SPI_lcd_out(1,7,txt2);
delay_ms(1000);
SPI_Lcd_Out(1,8,txt3);
delay_ms(1000);
SPI_lcd_out(1,9,txt4);
delay_ms(1000);
SPI_Lcd_Out(2,3,txt5);
delay_ms(1000);
SPI_lcd_out(2,4,txt6);
delay_ms(1000);
SPI_Lcd_Out(2,5,txt7);
delay_ms(1000);
SPI_lcd_out(2,6,txt8);
delay_ms(1000);
SPI_Lcd_Out(2,7,txt9);
delay_ms(1000);
SPI_lcd_out(2,8,txt10);
delay_ms(1000);
SPI_Lcd_Out(2,9,txt11);
60
delay_ms(1000);
SPI_Lcd_Out(2,10,txt12);
delay_ms(1000);
SPI_Lcd_Out(2,11,txt13);
delay_ms(1000);
SPI_Lcd_Out(2,12,txt14);
delay_ms(1000);
SPI_Lcd_Out(2,13,txt15);
delay_ms(1000);
SPI_lcd_cmd(_LCD_CURSOR_OFF);
for(i=0; i<2; i++) { // Mover texto a la derecha 4 veces
SPI_Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
}
}
Configuracin:
61
Encienda el switch de los puertos expansores (SW6.1, SW6.2,
SW6.3, SW6.4 and SW6.5.)
Encienda el switch del COG LCD 2x16 (SW10.1, SW10.2,
SW10.3, SW10.4, SW10.5, SW10.6, SW10.7 and SW10.8. como
se muestra en la figura 4.3)
En este proyecto te ayudara a realizar y a conocer las
funciones de libreras SPI del COG 2X16 serial LCD. Conectar
los puertos de salida a la pantalla LCD.
Prctica
CONVERTIDOR DE SEALES. 5
PRESENTACION
62
Un Convertidor de seales ADC es aquel se encarga de
convertir una seal analgica en una seal digital con cierto
valor apropiado, tal y como se muestra en la figura 5. Una
seal analgica puede tomar cualquier valor real mientras que
una seal digital solo puede tomar valores discretos de un
conjunto predeterminado. Es por eso que se utiliza la seal
digital para procesamiento digital y compresin como por
ejemplo los MP3 y JPG o medir presiones y temperatura entre
otros, unas de las ventajas de la conversin es la oportunidad
deteccin y correccin de errores en la seal. Estos
convertidores se pueden encontrar en equipos electrnicos
como computadoras, grabadores de sonido y en los equipos
de telecomunicaciones.
X
X
63
Con esta prctica, el alumno adquiere habilidades y destrezas
en:
Manejo del mdulo ADC (Convertidor Analgico Digital)
programacin de microcontrolador para el uso y
comunicacin con el convertidor AD.
Uso y configuracin de switch y potencimetros
Manejo de jumpers de proteccin
MATERIAL:
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales.
Material/Recurso Cantidad
PIC16f887 1
software MikroC c Pro for PIC 1
Tarjeta de desarrollo 1
EASYPIC6
MARCO TERICO
El convertidor ADC (Convertidor Analgico Digital) es un
mdulo integrado en el sistema de desarrollo easypic6 capaz
de convertir una seal analgica de voltaje en una seal
digital. El conversor A/D dentro del microcontrolador
convierte un valor de voltaje analgico a un nmero de 10
bits. Los voltajes que varan de 0 a 5V DC se pueden
suministrar por las entradas del conversor Analgico
Digital. Se puede cambiar la entrada de comunicacin con el
64
microcontrolador con solo cambiar un puente (J15) el cual se
utiliza para seleccionar uno de los siguientes pines para la
conversin AD: RA0, RA1, RA2, RA3 o RA4. El resistor R63
tiene la funcin de proteccin y tiene como funcin limitar el
flujo de corriente por el potencimetro o por el pin del
microcontrolador. El valor del voltaje analgico de entrada
se puede cambiar linealmente utilizando el potencimetro
P1.
El programa a realizar contiene los pasos detallados en el
algoritmo 5 siguiente.
Algoritmo 5
DIAGRAMA DE FLUJO
El proceso a realizar se puede resumir a travs del siguiente
diagrama de flujo.
65
Cdigo fuente 5: Convertidor de seales
unsigned int
66
temp_res;
void main() {
ANSEL = 0x04; // Configura el pin AN2 como anlogo
ANSELH = 0; // Configura otro pin AN como E/S
digital
C1ON_bit = 0; // Inhabilita los comparadores
C2ON_bit = 0;
TRISA = 0xFF; // Entrada en PORTA
Configuracin:
Encender el puerto B, el puerto C y el puerto D del panel
de leds (sw9.2, sw9.3, sw9.4).
Para regular el voltaje analgico de entrada (RA2) en el
convertidor ADC, utilice el potencimetro incorporado P1
Configurar el puente J15 al pin RA2 correspondiente al
convertidor AD.
Configuracin de los puertos de entrada A, B, C, D.
67
Figura 5.1.- Demostracin de encendido de leds
gradualmente con el convertidor ADC.
68
EJERCICIO PROPUESTO
En el siguiente ejercicio deber realizar un indicador de
temperatura ambiental el cual se deber desplegar la
temperatura en grados Celsius y grados Fahrenheit utilizando
el sensor de temperatura MCP 9701.
LCD_printfix constants
69
la herramienta de Carcter MikroC LCD
personalizada :
*/
const char characterC[] = // C
{8,20,8,0,3,4,4,3};
const char characterF[] = // F
{8,20,8,0,7,4,6,4};
/*
* caracteres de impresin a la que
apunta def en pos_row lnea pos_char
columna en la pantalla LCD
*/
void CustomChar(const char *def,
unsigned char n, char pos_row, char
pos_char)
{
char i ;
LCD_Cmd(64 + n * 8) ;
LCD_Cmd(_LCD_RETURN_HOME) ;
LCD_Chr(pos_row, pos_char, n) ;
/*
70
unsigned int w ;
unsigned int d ;
unsigned char n ;
if(v >= 0)
LCD_Chr_Cp('+') ;
else
LCD_Chr_Cp('-') ;
v = abs(v) ;
w= v / DEC_RANGE ;
n = (w / d) % 10 ;
if(n)
blk = 0 ;
if(blk)
LCD_Chr_Cp(' ') ;
71
}
else
LCD_Chr_Cp('0' + n) ;
LCD_Chr_Cp('.') ;
w = v % DEC_RANGE ;
for(d = DEC_RANGE / 10 ; d > 0 ; d /= 10)
{
LCD_Chr_Cp('0' + (w / d) % 10) ;
}
}
/*
*/ rutina de interrupcin, pidi a cada
desbordamiento timer0
*/
void interrupt(void)
{
if(INTCON.T0IF) // 0 temporizador de
desbordamiento?
{
cntr++ ; // Incrementar el
contador
INTCON.T0IF = 0 ; // Terminado
}
}
/*
* Entrada de programa.
*/
// Modulo de conexiones LCD
72
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Final de mdulo de conexiones LCD
void main()
{
ANSEL = 0; // Configure los pines
AN como E/S digitales
ANSELH = 0; // Configure otros pines
AN como E/S digitales
ADCON1 = 0x00 ; // Establecer PORTA como
entrada analgica
TRISA = 0xff ; // Establecer las
entradas de PORTA
TRISB = 0 ; // PORTB es la salida
LCD_Init() ; // Inicializa LCD
conectado al PORTD
LCD_Cmd(_Lcd_CURSOR_OFF) ; // Apagar el cursor
LCD_Cmd(_Lcd_CLEAR) ; // Limpia display
LCD_Out(1, 1, "Temperatura Amb."); // Imprime mensaje de
bienvenida
OPTION_REG = 0x80 ; // iniciar el
temporizador 0, sin
prescaler
INTCON = 0xA0 ; // permitir temporizador
0 desbordamiento de
73
interrupcin
for(;;) // Para siempre
{
if(cntr >= 4000) // si el tiempo
suficiente desde la
ltima muestra
{
/*
* Leer el sensor
*/
temp = Adc_Read(7) * 10 - ref ; // leer RE2 ADC, ajustar
a 0C
/*
* obtener el resultado en Celsius * 10
* coeficiente del sensor de temperatura
es +10
* Resolucin ADC es 5000/1024 = 4.88 mV as un punto ADC
es 0.488C
* Modificar la resolucin a 1500/1024=1.46 despus
1.22/10=.146 y finalmente .122*1000=146
*/
temp *= 146 ;
temp /= 1000 ;
fahr = ((9 * temp) / 5 ) + 320 ; // convierte grados C
en F * 10
/*
* imprimir la temperatura en C en LCD
*/
LCD_Out(2, 1, "") ;
LCD_printFix(temp) ;
CustomChar(characterC, 0, 2, 7) ;
/*
74
*/
LCD_Out(2, 10, "") ;
LCD_printFix(fahr) ;
CustomChar(characterF, 1, 2, 16) ;
cntr = 0 ; // limpiar contador
}
}
}
75
El voltaje de resolucin del ADC quedara de la siguiente
manera:
Vr= RAD/RS=1500/1024 = 1.46 mV
Para obtener la temperatura en Celsius por punto obtenido en
ADC se divide el voltaje de la resolucin del ADC entre el
coeficiente de temperatura del sensor (Cs) que quedara de la
siguiente manera:
ADP =Vr/Cs =1.46/10=.146, esto quiere decir que por Cada
punto de ADC (ADP) equivale a 0.146C
Por ltimo se multiplica cada punto en Celsius *1000 y
quedara de la siguiente manera:
VR= ADP*1000 =.146*1000=146 Con ello obtenemos el valor
final de referencia (VR) para anexar al cdigo de
programacin y censar la temperatura ambiente con el
termistor MCP9701.
Nota:
RAD=Resolucin del ADC
RS=Referencia del sensor
Vr=Voltaje de resolucin
CS=coeficiente del sensor
ADP=Punto en Celsius de ADC
VR=Valor de referencia
76
Figura 5.3.- Demostracin en grados Celsius y grados
Fahrenheit en la pantalla LCD 2x16.
77
Prctica
Cdigo de seguridad Keypad 4x4.
6
PRESENTACION
OBJETIVO DE LA PRCTICA
En esta prctica se utiliza el keypad 4x4 en funcin con el
visualizador externo LCD2x16 en la cual se demuestra el uso
de los botones de presin que conforman el teclado matricial
para realizar un contador del nmero de veces que se
78
presiona cada botn. Para despus visualizar el conteo en la
pantalla LCD 2x16.
MATERIAL
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales.
Material/Recurso Cantidad
PIC16f887 1
software MikroC Pro for PIC 1
Tarjeta de desarrollo 1
EASYPIC6
MARCO TERICO
El funcionamiento de este dispositivo est basado en leer a
los pines se su respectiva entrada de cada pin por ejemplo
RD0, RD2 y RD3 estas se encuentran conectadas a los
resistores pull-down como entradas. Los pines RD4, RD5, RD6
y RD7 se configuran como salidas de alto nivel. Al pulsar
cualquier botn de presin se aplicara un uno (lgico) y este
se aplicara en los pines de entrada.
79
El programa a realizar contiene los pasos detallados en el
algoritmo 6.
Algoritmo 6
80
DIAGRAMA DE FLUJO
El proceso a realizar se puede resumir a travs del siguiente
diagrama de flujo.
81
Cdigo fuente 1: Ejemplo del programa
82
char keypadPort at PORTD;
// Fin de conexiones del mdulo de teclado
void main() {
cnt = 0; // Reiniciar contador
Keypad_Init(); // Inicialize teclado
ANSEL = 0; // Configura los pines
AN como E/S digital
ANSELH = 0;
83
Lcd_Out(2, 1, "Veces:");
do {
kp = 0; // Cambiar de cdigo
variable clave
while (!kp);
84
case 15: kp = 35; break; // #
case 16: kp = 68; break; // D
Configuracin:
85
Colocar el puente J17 en VCC-MCU.
Colocar el puente J4 a tierra
Los pines RD0,RD1,RD2,RD3y estn conectados a la
resistencia pull-down
Configurar el dip switch SW4
(SW4.1,SW4.2,SW4.3,SW4.4)
86
Figura 6.3.- Teclado matricial 4x4 configurado en la
pantalla 2x16 LCD.
87
DIAGRAMA PROPUESTO: Cerradura electrnica
88
EJERCICIO PROPUESTO
En este ejercicio el usuario deber realizar una prctica en la
cual utilice el keypad 4x4 para ingresar una clave de una
cerradura electrnica contando con los dgitos correctos,
despliegue las opciones para configurar la puerta y cambiar la
clave de acceso de la cerradura electrnica.
89
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
*/
// Conexiones del modulo teclado
char keypadPort at PORTD;
// Fin de conexiones del modulo teclado
void acceso2(){
do
kp = Keypad_Key_Click();
while (!kp);
if(kp==4){
k=2;
}
if(kp==8){
k=3;
i=0;
}
}
void acceso(){
lcd_out(1,1,"DIGITE CLAVE");
do
kp = Keypad_Key_Click();
while(!kp) ;
if (kp==eeprom_read(i)){
90
i++;
}
else{
i=0;
}
cont++;
if(cont==1){
lcd_out(2,6,"*");
}
if(cont==2){
lcd_out(2,6,"**");
}
if(cont==3){
lcd_out(2,6,"***");
}
if(cont==4){
lcd_out(2,6,"****");
delay_ms(500);
if(i==4){
i=0;
lcd_cmd(_lcd_clear);
lcd_out(1,1,"Correcto");
portb.F0=0;
k=1;
cont=0;
delay_ms(1000);
lcd_cmd(_lcd_clear);
lcd_out(1,3,"BIENVENIDO");
lcd_out(2,5,"Marcos");
91
delay_ms(2000);
}
else{
lcd_cmd(_lcd_clear);
lcd_out(1,1,"Incorrecto");
portb.F0=1;
portb.F1=1;
delay_ms(1000);
lcd_cmd(_lcd_clear);
k=0;
}
i=0;
cont=0;
}
}
void acceso3(){
do
kp = Keypad_Key_Click();
while (!kp);
Eeprom_write(i,kp);
delay_ms(30);
i++;
porta=kp;
if(i>3){
k=0;
i=0;
cont=0;
lcd_cmd(_lcd_clear);
}
92
}
void main(){
anselh=0;
ansel=0;
trisa=0;
porta=0;
trisb=0;
trisd=0b00001111;
portb=0;
lcd_init();
Keypad_Init();
lcd_cmd(_lcd_cursor_off);
delay_ms(100);
for(x=0;x<4;x++){
Eeprom_write(x,14);
delay_ms(30);
}
while(1){
while(k==0){
acceso();
}
while (k==1){
lcd_cmd(_lcd_clear);
lcd_out(1,1,"A:Abrir Puerta");
lcd_out(2,1,"B:Cambiar Clave");
acceso2();
}
while(k==2){
lcd_cmd(_lcd_clear);
lcd_out(1,1,"Puerta abierta");
93
portb.b0=1;
+
delay_ms(4000);
k=0;
lcd_cmd(_lcd_clear);
portb.b0=0;
}
while(k==3){
lcd_cmd(_lcd_clear);
lcd_out(1,1,"Nueva clave");
acceso3();
};
}
}
Configuraciones:
Configure el J17 en VCC-MCU para que utilice la
resistencia de proteccin R58.
OBJETIVO DE LA PRCTICA
El objetivo de esta prctica es hacer que el temporizador que
se encuentra dentro del microcontrolador es disminuir un
contador que arroje valores infinitos o muy grandes valores.
Es por eso que para evitar desbordamientos en los sistemas
de valores no deseados, es recomendable utilizar reset para
reiniciar al sistema.
95
DESTREZAS Y HABILIDADES ADQUIRIDAS
Con esta prctica, el alumno adquiere habilidades y destrezas
en:
El uso de whatchdog
Cocimiento del temporizador de 16 bits
Conocimientos del funcionamiento del microcontrolador
MATERIAL
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales.
Material/Recurso Cantidad
PIC16f887 1
software MikroC Pro for PIC 1
Tarjeta de desarrollo 1
EASYPIC6
MARCO TERICO
MikroC permite la escritura de bits con la posibilidad de
emplear una escala para el watchdog puede extenderse a 268
segundos con un temporizador de 16 bits, el temporizador
(timer) se deber encontrar en 0 cero y reducir el nmero de
interrupciones de 8 bits al mismo tiempo.
El reset puede evitarse si se reinicia el watch dog timer por
medio de la ejecucin de la instruccin CLRWDT (despejar al
WDT) antes del final de su ejecucin. En este caso particular
esta prctica, es necesario usar algo de ensamblador para
indicar que se est usando instrucciones del ensamblador
utilizando una lnea o extensin .asm o una declaracin del
lenguaje C.
96
A continuacin, presentamos el programa ejemplo para
ilustrar al concepto anterior.
97
Cdigo fuente 7: Watch dog (WDT)
void main() {
98
OPTION_REG = 0x0E; //asignar el prescaler al WDT, con tasa
de 1:64
trisa = 0;
TRISB = 0; // configura PORTB como salida
trisc = 0;
trisd = 0;
Delay_ms(500); // Retardo de .5 segundos
porta = 0x21;
PORTB = 0x3f; // cambia el valor del PORTB
portc = 0x3f;
portd = 0x21;
99
Figura 7.1.- Demostracin del watchdog reiniciando al
procesador despus
100
de que ocurra una falla o problema de software.
Prctica
VISUALIZADOR EXTERNO GLCD
128X64.
8
101
PRESENTACION
OBJETIVO DE LA PRCTICA
Tiene como objetivo el aprender a utilizar las libreras
disponibles para trabajar con visualizadores GLCD, que tenga
incorporado al controlador Samsung KS0108 y crear figuras,
mensaje de texto con diferentes tipos de fuentes y tamaos
de letras e imgenes monocromticas.
102
DESTREZAS Y HABILIDADES ADQUIRIDAS
Con esta prctica, el alumno adquiere habilidades y destrezas
en:
Uso del mdulo GLCD 128X64.
Control de imgenes monocromticas.
Manejo de las libreras
MATERIAL:
Para la realizacin de esta prctica se requieren los siguientes
recursos y materiales
Material/Recurso Cantidad
PIC16f887 1
software MikroC Pro for PIC 1
Tarjeta de desarrollo 1
EASYPIC6
MARCO TERICO
Esta pantalla contiene un controlador Samsung KS0108
cuenta con 64 canales de salidas para la matriz de puntos
para la visualizacin del GLDC tiene una memoria RAM que
almacena datos de la pantalla los cuales son transferidos a
un microcontrolador de 8 bits.
103
Algoritmo 8
DIAGRAMA DE FLUJO
El proceso a realizar se puede resumir a travs del siguiente
diagrama de flujo.
104
Cdigo fuente 8: Pantalla GLCD 128x64
//Declarations----------------------------------------------------
--------------
const code char house[1024];
105
//--------------------------------------------------------------
end-declarations
// ------------------------------------------------------
// GLCD Picture name: house.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
106
96, 96, 224, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 97, 99, 98, 102, 108, 248,
240, 96, 96, 0, 255, 255, 255, 255, 0, 0, 0,
0, 0, 0, 0, 2, 23, 29, 33, 33, 255, 255, 255, 255,
167, 167, 58, 24, 120, 248, 232, 121, 123, 122, 158, 144, 0,
252, 158, 159, 127, 96, 128, 14, 10, 10, 10, 10, 10, 10,
14, 0, 0, 0, 14, 10, 10, 10, 10, 10, 14, 14, 0,
0, 128, 255, 248, 232, 192, 192, 254, 254, 254, 34, 34, 34,
34, 34, 34, 254, 34, 34, 34, 34, 34, 34, 34, 254, 254,
254, 50, 0, 0, 0, 254, 130, 186, 58, 58, 98, 98, 98,
98, 2, 254, 0, 0, 0, 254, 254, 254, 254, 34, 34, 34,
34, 254, 254, 34, 34, 34, 34, 34, 254, 254, 254, 224, 127,
255, 194, 222, 126, 255, 255, 255, 255, 0, 0, 0,
0, 0, 0, 0, 0, 128, 128, 128, 96, 191, 255, 127, 255,
255, 225, 195, 207, 140, 137, 8, 8, 8, 8, 25, 63, 59,
11, 79, 79, 73, 233, 254, 168, 160, 160, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
60, 63, 39, 47, 63, 63, 125, 73, 9, 225, 64, 72, 120,
120, 120, 121, 73, 65, 77, 81, 25, 121, 73, 121, 49, 113,
73, 73, 200, 200, 120, 127, 80, 81, 64, 64, 64, 80, 80,
240, 224, 127, 24, 152, 144, 201, 233, 249, 249, 56, 136, 8,
144, 241, 121, 120, 160, 248, 240, 112, 9, 121, 63, 127, 120,
104, 77, 76, 124, 255, 255, 255, 255, 248, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3, 6, 6,
12, 12, 24, 24, 16, 48, 32, 96, 96, 192, 192, 128, 128,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2,
6, 6, 0, 0, 4, 0, 0, 2, 2, 34, 98, 98, 208,
209, 145, 145, 16, 16, 16, 8, 8, 8, 4, 6, 2, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 192,
192, 224, 224, 248, 231, 239, 255, 119, 67, 0, 0,
0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 192, 192, 192,
192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
192, 192, 192, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 96, 64, 64, 65, 65,
99, 99, 98, 102, 102, 108, 108, 120, 120, 120, 112, 112, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 3, 2, 6, 6, 12, 12, 24, 24, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 16, 16, 0, 0, 0, 0, 0, 0
107
};
// ------------------------------------------------------
// GLCD Picture name: UV.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
108
255, 255, 255, 255, 255, 127, 63, 159, 143, 135, 131, 131, 131,
129, 129, 129, 1, 1, 1, 1, 3, 3, 3, 7, 15, 31,
255, 255, 255, 255, 255, 255, 127, 30, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 7, 6, 4,
8, 8, 0, 0, 0, 0, 0, 63, 252, 249, 227, 207, 159,
63, 255, 255, 255, 255, 254, 248, 241, 231, 143, 31, 127, 127,
63, 159, 199, 243, 249, 252, 255, 255, 255, 255, 127, 31, 207,
231, 241, 252, 254, 0, 0, 0, 0, 0, 0, 8, 4, 6,
7, 3, 3, 1, 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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 127, 255, 255, 255, 255,
254, 252, 249, 227, 207, 159, 63, 255, 255, 255, 255, 254, 252,
255, 255, 255, 255, 127, 31, 207, 231, 241, 252, 254, 255, 255,
255, 255, 127, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3,
7, 7, 7, 15, 15, 15, 14, 28, 25, 3, 15, 15, 31,
15, 7, 17, 28, 14, 15, 15, 15, 7, 7, 7, 3, 3,
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 124, 64, 64, 64, 64, 120, 56, 0, 112, 112, 16,
112, 96, 0, 120, 112, 0, 16, 96, 96, 48, 0, 32, 112,
112, 112, 112, 0, 112, 112, 16, 16, 0, 80, 112, 112, 0,
0, 120, 0, 0, 112, 80, 80, 124, 0, 0, 80, 112, 112,
112, 0, 32, 112, 80, 80, 124, 0, 0, 0, 0, 0, 0,
0, 24, 48, 96, 48, 24, 12, 112, 112, 112, 112, 0, 0,
112, 16, 16, 16, 64, 112, 48, 112, 64, 0, 112, 80, 80,
80, 0, 0, 112, 16, 16, 0, 48, 112, 64, 64, 112, 0,
0, 80, 112, 80, 0, 0, 80, 112, 112, 112, 0, 0, 112,
16, 16, 112, 32, 0, 80, 48, 112, 112, 0, 0
109
};
void main() {
unsigned short ii;
char *someText;
110
#define COMPLETE
ANSEL = 0; // Configura los
pines AN como digitales
ANSELH = 0;
C1ON_bit = 0; // Inhabilita
comparadores
C2ON_bit = 0;
Glcd_Init(); // Inicializa
GLCD
Glcd_Fill(0x00); // Limpia GLCD
while(1) {
#ifdef COMPLETE
Glcd_Image(house); // Dibuja imagen
delay2S(); delay2S();
#endif
111
Glcd_Set_Font(Font5x7, 5, 7, 32); // Cambiar fuente
someText = "De GLCD 128x64";
Glcd_Write_Text(someText, 8, 5, 2); // Escribir cadena
delay2S();
Glcd_Rectangle(5,16,116,55,1); // Dibujar
rectangulo
Delay_ms(2000);
#ifdef COMPLETE
Glcd_Image(UV); // Dibujar imagen
delay2S(); delay2S();
#endif
/*
for(ii = 5; ii > 60; ii+=5 ){ // Dibuja
lineas horizontales y verticales
Glcd_V_Line(2, 54, ii, 1);
Glcd_H_Line(2, 120, ii, 1);
*/
}
delay2S();
}
Configuraciones:
Encienda el interruptor de la luz de fondo del GLCD
SW8.8.
Regular el contraste del visualizador grafico por medio
del potencimetro 3 ubicado en la parte superior GLCD.
112
Figura 8.1.-Demostracio en la pantalla GLCD.
113
Figura 8.3.- Ejemplo del visualizador GLCD
114