lab 1
Post on 13-Dec-2015
212 Views
Preview:
DESCRIPTION
TRANSCRIPT
UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA
“ANTONIO JOSÉ DE SUCRE”VICERRECTORADO PUERTO ORDAZ
DEPARTAMENTO DE INGENIERÍA ELECTRONICACÁTEDRA: Microprocesadores 2
CIUDAD GUAYANA, FEBRERO 2014.
Profesor: Rafael Surga
BachillerEvelyn Gómez. C.I: 18.451.867Cristal Martinez C.I: 19905329
Se debe diseñar un menú principal que tenga las siguientes opciones:
2.1.- Si se activa la primera opción debe generarse en la interfaz gráfica un histograma para
medir el número de veces que son activados 3 pulsadores externos. Todos los pulsadores
serán atendidos por interrupción de la siguiente manera.
2.1.1.- Al activarse cualquiera de ellos producirá un aumento del histograma respectivo a la
vez de aumentar el valor del contador encima de ella como indica la figura (Será explicada
en clase)
2.1.2.- Cuando se llegue al máximo del tamaño el histograma debe autoescalarse y los
contadores continuaran trabajando igual al caso anterior (máximo 3 escalamientos).
2.2.- Si se activa la segunda opción debe generarse una calculadora digital con las opciones
básicas aritméticas (+,-,*,/) y con al menos 3 dígitos de precisión. Los valores serán
introducidos por teclado y se visualizarán en la interfaz gráfica.
2.3.- Si se activa la tercera opción debe generarse una rutina que permita que el valor de 8
Dip-switch conectados al DSPIC sean visualizados en 8 Leds que también están conectados
al mismo respectivamente.
int menu=0,menu_2,boton_1,boton_2,boton_3,ultimo=1,ultimo2=1,inter=1,y=0;
char txt_cuenta[20]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char conversion[15]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char tecla;
int op=0,operacion,opx=0,x=0,operando=0,hay_decimal_1=0,hay_decimal_2=0,cant_decimal_1=0,cant_decimal_2=0;
float aux_op1,aux_op2,resul=0.0,n1=0.0,op1=0,dato_1=0.0,dato_2=0.0,num_decimal_1=0.0,num_decimal_2=0.0;
unsigned short keydata = 0, special = 0, down = 0;
// ------------------------------------------------------
// GLCD Picture name: hist.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
const code char hist[1024] = {
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 15, 247, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 247, 15, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 128, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 127, 128, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 31, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 31, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 63, 30, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 63, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 255, 255, 254, 252, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 252, 254, 255, 255, 255, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
};
// ------------------------------------------------------
// GLCD Picture name: cal.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
const code char cal[1024] = {
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 15, 7, 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, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 15, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 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, 0, 0, 0, 0, 0, 128, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 31, 239, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 239, 31, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 63, 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 30, 63, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 255, 255, 254, 252, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 252, 254, 255, 255, 255, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
};
// ------------------------------------------------------
// GLCD Picture name: leds.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
const code char leds[1024] = {
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 15, 7, 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, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 15, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 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, 0, 0, 0, 0, 0, 128, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 31, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 31, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 63, 222, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 222, 63, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 255, 255, 254, 253, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 253, 254, 255, 255, 255, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
};
// ------------------------------------------------------
// GLCD Picture name: hist_1.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
const code char hist_1[1024] = {
0, 0, 240, 24, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 24, 240, 0, 0,
0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 252, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 66, 66, 255, 66, 66, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 136, 136, 255, 136, 136, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 255, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 66, 66, 255, 66, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
0, 0, 3, 6, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 8, 8, 8, 63, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 12, 6, 3, 0, 0
};
// ------------------------------------------------------
// ------------------------------------------------------
// ------------------------------------------------------
// GLCD Picture name: CAL_1.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
const code char CALC_1[1024] = {
112, 112, 0, 112, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 112, 112, 0, 112, 112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
240, 240, 0, 240, 240, 240, 240, 252, 254, 254, 254, 254, 254, 254, 254, 254, 254, 126, 62, 158, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 158, 62, 126, 254, 254, 254, 254, 254, 254, 254, 254, 254, 252, 240, 240, 240, 240, 0, 240, 240,
255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 136, 4, 4, 4, 136, 0, 192, 112, 76, 76, 112, 192, 0, 252, 0, 0, 0, 112, 136, 4, 4, 4, 136, 0, 252, 0, 0, 0, 0, 252, 0, 252, 0, 0, 0, 192, 112, 76, 76, 112, 192, 0, 252, 4, 4, 4, 136, 112, 0, 112, 136, 4, 4, 4, 136, 112, 0, 252, 36, 100, 164, 24, 0, 192, 112, 76, 76, 112, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255,
255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 231, 200, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 208, 208, 209, 208, 208, 208, 208, 209, 208, 209, 209, 209, 209, 208, 208, 209, 209, 209, 208, 208, 208, 209, 209, 209, 209, 208, 208, 209, 209, 209, 208, 209, 208, 208, 208, 208, 209, 208, 209, 209, 209, 209, 208, 208, 208, 208, 208, 209, 209, 209, 208, 208, 208, 209, 208, 208, 208, 209, 208, 209, 208, 208, 208, 208, 209, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 200, 231, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255,
195, 195, 192, 195, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 193, 193, 192, 193, 193
};
// ------------------------------------------------------
// GLCD Picture name: LEDS_1.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------
const code char LEDS_1[1024] = {
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 48, 16, 16, 16, 16, 16, 16, 16, 48, 112, 240, 240, 240, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 112, 48, 16, 16, 16, 16, 16, 16, 16, 48, 112, 240, 240, 240, 240, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 128, 0, 0, 0, 0, 0, 0, 0, 128, 192, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 128, 0, 0, 0, 0, 0, 0, 0, 128, 192, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 7, 3, 3, 3, 3, 3, 3, 3, 7, 15, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 7, 3, 3, 3, 3, 3, 3, 3, 7, 15, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 240, 96, 96, 96, 96, 96, 96, 96, 240, 248, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 240, 96, 96, 96, 96, 96, 96, 96, 240, 248, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 30, 12, 12, 12, 12, 12, 12, 12, 30, 63, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 30, 12, 12, 12, 12, 12, 12, 12, 30, 63, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 192, 128, 128, 128, 128, 128, 128, 192, 192, 224, 255, 255, 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 192, 128, 128, 128, 128, 128, 128, 128, 192, 224, 255, 255, 255, 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
};
// Glcd module connections
sbit GLCD_D7 at RG7_bit;
sbit GLCD_D6 at RG8_bit;
sbit GLCD_D5 at RB5_bit;
sbit GLCD_D4 at RB4_bit;
sbit GLCD_D3 at RB3_bit;
sbit GLCD_D2 at RB2_bit;
sbit GLCD_D1 at RB1_bit;
sbit GLCD_D0 at RB0_bit;
sbit GLCD_D7_Direction at TRISG7_bit;
sbit GLCD_D6_Direction at TRISG8_bit;
sbit GLCD_D5_Direction at TRISB5_bit;
sbit GLCD_D4_Direction at TRISB4_bit;
sbit GLCD_D3_Direction at TRISB3_bit;
sbit GLCD_D2_Direction at TRISB2_bit;
sbit GLCD_D1_Direction at TRISB1_bit;
sbit GLCD_D0_Direction at TRISB0_bit;
sbit GLCD_CS1 at LATB6_bit;
sbit GLCD_CS2 at LATG6_bit;
sbit GLCD_RS at LATF3_bit;
sbit GLCD_RW at LATF5_bit;
sbit GLCD_EN at LATF4_bit;
sbit GLCD_RST at LATB7_bit;
sbit GLCD_CS1_Direction at TRISB6_bit;
sbit GLCD_CS2_Direction at TRISG6_bit;
sbit GLCD_RS_Direction at TRISF3_bit;
sbit GLCD_RW_Direction at TRISF5_bit;
sbit GLCD_EN_Direction at TRISF4_bit;
sbit GLCD_RST_Direction at TRISB7_bit;
// End Glcd module connections
// PS2 pinout definition
sbit PS2_Data at RD1_bit;
sbit PS2_Clock at RD2_bit;
sbit PS2_Data_Direction at TRISD1_bit;
sbit PS2_Clock_Direction at TRISD2_bit;
// End of PS2 pinout definition
// interruciones de pulsadores para el histograma
void INT0() org 0x000014
{ delay_ms(200);
boton_3++;
inter=1;
if(boton_3>120)boton_3=121;
IFS0BITS.INT0IF=0;
}
void INT1() org 0x00003C
{ delay_ms(200);
boton_2++;
inter=1;
if(boton_2>120)boton_2=121;
IFS1BITS.INT1IF=0;
}
void INT2() org 0x00004E
{ delay_ms(200);
boton_1++;
inter=1;
if(boton_1>120)boton_1=121;
IFS1BITS.INT2IF=0;
}
//////////////////////////////////////////////////
char keyboard(void){ //funcion que retorna tecla pulsada
do {
if (Ps2_Key_Read(&keydata, &special, &down)) {
if (down && keydata) break;
}
} while (1);
return keydata;
}
/////////////////////////////////////////////////////////
///funcion menu principal
void PANTALLA_PRINCIPAL(void){
Glcd_Set_Font(FontSystem5x7_v2, 5, 7, 32); // Change font
switch (menu)
{
case 0:
Glcd_Image(hist);//imagen de fondo del histograma
Glcd_Write_Text("HISTOGRAMA", 30, 2, 0);
Glcd_Write_Text("CALCULADORA", 30, 4, 1);
Glcd_Write_Text("LEDs", 30, 6, 1);
break;
case 1:
Glcd_Image(cal);//imagen de fondo de la calculadora
Glcd_Write_Text("HISTOGRAMA", 30, 2, 1);
Glcd_Write_Text("CALCULADORA", 30, 4, 0);
Glcd_Write_Text("LEDs", 30, 6, 1);
break;
case 2:
Glcd_Image(leds);//imagen de fondo de la visualizacion de leds
Glcd_Write_Text("HISTOGRAMA", 30, 2, 1);
Glcd_Write_Text("CALCULADORA", 30, 4, 1);
Glcd_Write_Text("LEDs", 30, 6, 0);
break;
}
}
////////////////////////////////////////////////////////////
//con esta funcion se procesa la operacion en pantalla
void conver_operacion(char *txt_cuenta,int x)
{ int i=0;
///iniciolizacion de variables
operacion=-1;
operando=0;
ultimo=0;
dato_1=0.0;
dato_2=0.0;
num_decimal_1=0.0;
num_decimal_2=0.0;
cant_decimal_1=0;
cant_decimal_2=0;
hay_decimal_1=0;
hay_decimal_2=0;
//////////////////////////////////
for(y=0; y<x; y++){//se recorre la cadena en pantalla
tecla=txt_cuenta[y];//se extraen cada valor ascii
switch (tecla){ //caracteres de operacion y punto decimal
case 43://si es +
operando=1; //indica primer operando ya introducido
operacion=0;//contiene la operacion a realizar
i++;//para el control de no mas de dos operando
break;
case 45://si es -
operando=1;//indica primer operando ya introducido
operacion=1;//contiene la operacion a realizar
i++;//para el control de no mas de dos operando
break;
case 42:// si es *
operando=1; //indica primer operando ya introducido
operacion=2;//contiene la operacion a realizar
i++; //para el control de no mas de dos operando
break;
case 47:// si es /
operando=1;//indica primer operando ya introducido
operacion=3;//contiene la operacion a realizar
i++;//para el control de no mas de dos operando
break;
case '.':// punto decimal
if(operando==0)hay_decimal_1=1;//setea bandera de punto decimal para operando 1
else hay_decimal_2=1; //setea bandera de punto decimal para operando 2
break;
}
if(isdigit(tecla)){//si se pulsa un caracter alfanumerico
if(operando==0){//si es el primer operando
if(hay_decimal_1==0){dato_1=(float)(tecla-48)+(dato_1*10.0);//si no hay decimal compacta dato1
}else{
num_decimal_1=(float)(tecla-48)+(num_decimal_1*10.0);//si hay decimal compacta dato decimal2
cant_decimal_1++;//numero de decimales del primer operando
}
}else//entonces es el segundo operando
{ if(hay_decimal_2==0){dato_2=(float)(tecla-48)+(dato_2*10.0);//si no hay decimal compacta dato2
}else{
num_decimal_2=(float)(tecla-48)+(num_decimal_2*10.0);//si hay decimal compacta dato decimal2
cant_decimal_2++;//numero de decimales del segundo operando
}
}
}
}
if(i<=1){//indica que no hay error de varios signos
if(hay_decimal_1){//si hay decimal se le agraga a dato1
switch (cant_decimal_1){
case 1:
dato_1=dato_1+(num_decimal_1/10); //dato con 1 decimal
break;
case 2:
dato_1=dato_1+(num_decimal_1/100);//dato con 2 decimal
break;
case 3:
dato_1=dato_1+(num_decimal_1/1000);//dato con 3 decimal
break;
}
}
if(hay_decimal_2){//si hay decimal se le agraga a dato2
switch (cant_decimal_2){
case 1:
dato_2=dato_2+(num_decimal_2/10); //dato con 1 decimal
break;
case 2:
dato_2=dato_2+(num_decimal_2/100); //dato con 2 decimal
break;
case 3:
dato_2=dato_2+(num_decimal_2/1000);//dato con 3 decimal
break;
}
}
if(operacion==0){// realiza la suma
resul=dato_1 + dato_2;
}
if(operacion==1){//realiza la resta
resul=dato_1- dato_2;
}
if(operacion==2){//realiza la multiplicacion
resul=dato_1 * dato_2;
}
if(operacion==3){//realiza la division
resul=dato_1 / dato_2;
}
FloatToStr(resul, conversion);//pasa el dato a string
Glcd_Write_Text(conversion, 20, 3, 1); //muestra el resultado
}
else{//en caso de error de signo
Glcd_Write_Text("Solo dos operando", 20, 3, 1);//avisa
delay_ms(2000);
//inicializa variables y limpia pantalla
Glcd_Image(CALC_1);
for(x=0; x<20; x++){txt_cuenta[x]=' ';}//limpia cadena
operacion=-1;
operando=0;
dato_1=0.0;
dato_2=0.0;
num_decimal_1=0.0;
num_decimal_2=0.0;
cant_decimal_1=0;
cant_decimal_2=0;
hay_decimal_1=0;
hay_decimal_2=0;
x=0;
/////////////////////////////////////////
}
}
void init()
{
//CONFIGURACION DEL PLL PARA ALCANZAR UNA VELOCIDAD DE 40MHZ
// Configure PLL prescaler, PLL postscaler, PLL divisor
PLLFBD=78; // M=80
CLKDIVbits.PLLPOST=1; // N2=4
CLKDIVbits.PLLPRE=0; // N1=2
// Wait for Clock switch to occur
while (OSCCONbits.COSC!= 0b011);
// Wait for PLL to lock
while (OSCCONbits.LOCK!= 1);
ANSELC=0x0000; //Configuracion de E/S digitales
ANSELD=0x0000; //Configuracion de E/S digitales
ANSELE=0x0000; //RE6 como entrada analogica
ANSELB=0x0000; //Configuracion de E/S digitales
ANSELG=0x0000; //Configuracion de E/S digitales
//mapeo de puertos e/s
OSCCON=0x46;
OSCCON=0x57;
OSCCONBITS.IOLOCK=0;
RPINR0BITS.INT1R=75; //ENTRADA INT1
RPINR1BITS.INT2R=74; //ENTRADA INT2
OSCCONBITS.IOLOCK=1;
//configuracion entradas y salidas
TRISD=0x0000;
TRISB=0xFF00;
TRISC=0x0000;
TRISDbits.TRISD10=1;
TRISDbits.TRISD11=1;
TRISDbits.TRISD0=1;
////////////////////////////
}
void main() {
int graf_1=0,graf_2=0,graf_3=0,scal=1,num_lock=1;;
init();//iniciliza dspic
Ps2_Config();// Init PS/2 Keyboard
Glcd_Init(); // Initialize GLCD
Glcd_Fill(0x00);// Clear GLCD
IFS0BITS.INT0IF=0;//bandera de interrupcion para int0
IFS1BITS.INT1IF=0;//bandera de interrupcion para int1
IFS1BITS.INT2IF=0; //bandera de interrupcion para int2
IEC0BITS.INT0IE=1; //habilita interrupcion para int0
IEC1BITS.INT1IE=1; //habilita interrupcion para int0
IEC1BITS.INT2IE=1; //habilita interrupcion para int0
INTCON2BITS.INT0EP=1;//interrupcion por fanco de subida
INTCON2BITS.INT1EP=1;//interrupcion por fanco de subida
INTCON2BITS.INT2EP=1; //interrupcion por fanco de subida
//inicilizacion de variables
menu_2=0;
boton_1=0;
boton_2=0;
boton_3=0;
scal=1;
///////////////////////////////////////
Glcd_Image(hist);// imangen por defecto
//formato del fondo
Glcd_Write_Text("HISTOGRAMA", 30, 2, 0);
Glcd_Write_Text("CALCULADORA", 30, 4, 1);
Glcd_Write_Text("LEDs", 30, 6, 1);
////////////////////////////////////////
while(1) {
tecla=keyboard();//pregunta por una tecla
if(tecla==32){ //es tecla up
menu--; //sube menu
if(menu==-1)menu=2; }
if(tecla==33){//es tecla down
menu++; //baja menu
if(menu==3)menu=0;}
PANTALLA_PRINCIPAL();//muestra menu actualizado
if(tecla==13){//la tecla es ENTER
switch (menu)
{
case 0: //se seleccionó histograma
inter=1;
Glcd_Image(hist_1);
Glcd_Set_Font(FontSystem5x7_v2, 5, 7, 32); // Change font
Glcd_Write_Text_Adv("HISTOGRAMA",30, 3 );
Glcd_Write_Text_Adv("1X",8, 44);
while(1){
if(inter){//grafica si hay cambio en las variables
inter=0;
if(boton_1>120 || boton_2>120 ||boton_3>120 ){//se llego al maximo en un pulsador
Glcd_Write_Text("max", 105, 6, 2);
delay_ms(1000);
}
if((boton_1>=40||boton_2>=40 ||boton_3>=40) && ultimo)
{
Glcd_Image(hist_1);//limpia fondo de pantalla
Glcd_Write_Text_Adv("HISTOGRAMA",30, 3 );
scal=2;
ultimo=0;//para que lo haga una sola vez
}
if((boton_1>=80||boton_2>=80 ||boton_3>=80) && ultimo2)
{ Glcd_Image(hist_1);//limpia fondo de pantalla
Glcd_Write_Text_Adv("HISTOGRAMA",30, 3 );
scal=3;
ultimo2=0;//para que lo haga una sola vez
}
if(scal==1)//sin autoescala
{
graf_1=(boton_1);
graf_2=(boton_2);
graf_3=(boton_3);
}
if(scal==2)//autoescala 2x
{
Glcd_Write_Text_Adv("2X",8, 44);
graf_1=(boton_1/2);
graf_2=(boton_2/2);
graf_3=(boton_3/2);
}
if(scal==3)//autoescala 3x
{
Glcd_Write_Text_Adv("3X",8, 44);
graf_1=(boton_1/3);
graf_2=(boton_2/3);
graf_3=(boton_3/3);
}
//grafica cuadro
Glcd_Box(38, 59-graf_1, 57, 59, 1);
Glcd_Box(59, 59-graf_2, 78, 59, 1);
Glcd_Box(80, 59-graf_3, 99, 59, 1);
/////////////////////////////////////
}
Ps2_Key_Read(&keydata, &special, &down);
if(keydata==34)break;//si se presiona ESC sale al mernu
}
break;
case 1: //se seleccionó calculadora
Glcd_Set_Font(FontSystem5x7_v2, 5, 7, 32); // Change font
x=0;
ultimo=0;
Glcd_Image(CALC_1);
while(1){
tecla=keyboard();
if(tecla==29 && num_lock){num_lock=0;}//desbloqueo y bloqueo del teclado numerico
else {if(tecla==29 && num_lock==0)num_lock=1;}
if(num_lock==1){//desbloqueo teclado numerico
if(tecla==34){ //iniciliza si se preciona ESC
ultimo++;//dos veces pulsada ESC y se sale al menu
Glcd_Image(CALC_1);
for(x=0; x<20; x++){txt_cuenta[x]=' ';}
x=0;
operacion=-1;
operando=0;
dato_1=0.0;
dato_2=0.0;
num_decimal_1=0.0;
num_decimal_2=0.0;
cant_decimal_1=0;
cant_decimal_2=0;
hay_decimal_1=0;
hay_decimal_2=0;
}else{
if(tecla==13){
}else{//si no es enter
txt_cuenta[x]=tecla;
Glcd_Write_Text(txt_cuenta, 20, 1, 1);
x++;}}
if(tecla==13){//si se presiona ENTER
conver_operacion(txt_cuenta,x);//opera y saca la cuenta
x=0;
}
if(ultimo>=1)break;//dos veces pulsada ESC y se sale al menu
}
}
break;
case 2://se seleccionó visualizacion de leds
//formato pantalla de fondo
Glcd_Image(LEDS_1);
Glcd_Write_Text_Adv("LEDs",57, 2 );
Glcd_Write_Text_Adv("RB15",32, 13 );
Glcd_Write_Text_Adv("RB14",32, 26 );
Glcd_Write_Text_Adv("RB13",32, 39 );
Glcd_Write_Text_Adv("RB12",32, 52 );
Glcd_Write_Text_Adv("RB11",87, 13 );
Glcd_Write_Text_Adv("RB10",87, 26 );
Glcd_Write_Text_Adv("RB9",87, 39 );
Glcd_Write_Text_Adv("RB8",87, 52 );
//////////////////////////////////////
while(1) {
if(!(PORTDBITS.RD8==PORTBBITS.RB15)){//en caso que cambie
PORTDBITS.RD8=PORTBBITS.RB15;
if(!PORTBBITS.RB15)Glcd_Circle_Fill(19,18, 3, 0);
else Glcd_Circle_Fill(19,18, 3, 1);}
if(!( PORTCBITS.RC13==PORTBBITS.RB14)){//en caso que cambie
PORTCBITS.RC13=PORTBBITS.RB14;
if(!PORTBBITS.RB14)Glcd_Circle_Fill(19,31, 3, 0);
else Glcd_Circle_Fill(19,31, 3, 1); }
if(!(PORTCBITS.RC14==PORTBBITS.RB13)){//en caso que cambie
PORTCBITS.RC14=PORTBBITS.RB13;
if(!PORTBBITS.RB13)Glcd_Circle_Fill(19,44, 3, 0);
else Glcd_Circle_Fill(19,44, 3, 1); }
if(!(PORTDBITS.RD3==PORTBBITS.RB12)){//en caso que cambie
PORTDBITS.RD3=PORTBBITS.RB12;
if(!PORTBBITS.RB12)Glcd_Circle_Fill(19,57, 3, 0);
else Glcd_Circle_Fill(19,57, 3, 1); }
if(!(PORTDBITS.RD4==PORTBBITS.RB11)){//en caso que cambie
PORTDBITS.RD4=PORTBBITS.RB11;
if(!PORTBBITS.RB11)Glcd_Circle_Fill(74,18, 3, 0);
else Glcd_Circle_Fill(74,18, 3, 1); }
if(!(PORTDBITS.RD5==PORTBBITS.RB10)){//en caso que cambie
PORTDBITS.RD5=PORTBBITS.RB10;
if(!PORTBBITS.RB10)Glcd_Circle_Fill(74,31, 3, 0);
else Glcd_Circle_Fill(74,31, 3, 1); }
if(!(PORTDBITS.RD6==PORTBBITS.RB9)){//en caso que cambie
PORTDBITS.RD6=PORTBBITS.RB9;
if(!PORTBBITS.RB9) Glcd_Circle_Fill(74,44, 3, 0);
else Glcd_Circle_Fill(74,44, 3, 1); }
if(!(PORTDBITS.RD7==PORTBBITS.RB8)){//en caso que cambie
PORTDBITS.RD7=PORTBBITS.RB8;
if(!PORTBBITS.RB8)Glcd_Circle_Fill(74,57, 3, 0);
else Glcd_Circle_Fill(74,57, 3, 1); }
Ps2_Key_Read(&keydata, &special, &down);//pregunta por tecla
if(keydata==34)break;//si se preciona ESC se regresa a el menu
}
break;
}
}
}
}
top related