Está en la página 1de 28

CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

EJERCICIO 24
Descripción (Display LCD)
Presentación de caracteres en un display lcd.

Código Arduino
#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
void setup() {
lcd.begin(16,2);
lcd.clear();
msj_1();
}

void loop() {

}
void msj_1(){
lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print(" F. Tipantocta ");
lcd.setCursor(0,1);
lcd.print(" ELECTRONICA ");

Esquema realizado en Proteus 7.

Ejercicio N25
Descripción (Display LCD)
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Presentación de caracteres en un display lcd y un contador ascendente.

Código Arduino
#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int x;
void setup() {
lcd.begin(16,2);
lcd.clear();
msj_1();delay(1000);
lcd.clear();
}

void loop() {
x++;
lcd.setCursor(0,0);
lcd.print(x);
delay(100);

}
void msj_1(){
lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print(" F. Tipantocta ");
lcd.setCursor(0,1);
lcd.print(" ELECTRONICA ");

Esquema realizado en Proteus 7.


CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Ejercicio N26
Descripción (Display LCD)
Presentación de caracteres en un display lcd entradas digitales.
Con B1 incremento la variable x
Con B2 decremento la variable x
Con B3 x será igual a 0

Código Arduino.
#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int x=0,y=0;
int b1,b2,b3,b4,b5,b6;
void setup() {
lcd.begin(16,2);
lcd.clear();
msj_1();delay(1000);
lcd.clear();
pinMode(37,INPUT_PULLUP);
pinMode(36,INPUT_PULLUP);
pinMode(35,INPUT_PULLUP);
pinMode(34,INPUT_PULLUP);
pinMode(33,INPUT_PULLUP);
pinMode(32,INPUT_PULLUP);
}

void loop() {
lcd.setCursor(0,0);
lcd.print("x=");
lcd.print(x);
lcd.print(" ");
lcd.setCursor(8,0);
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

lcd.print("y=");
lcd.print(y);
lcd.print(" ");
leer();
if(b1==0){
x++;
delay(200);
}
if(b2==0){
x--;
delay(200);
}
if(b3==0){
x=0;
}
delay(100);
}
void leer(){
b1=digitalRead(37);
b2=digitalRead(36);
b3=digitalRead(35);
b4=digitalRead(34);
b5=digitalRead(33);
b6=digitalRead(32);
}
void msj_1(){
lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print(" F. Tipantocta ");
lcd.setCursor(0,1);
lcd.print(" ELECTRONICA ");

}
Esquema realizado en Proteus 7.
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Ejercicio N27
Descripción (Display LCD)
Presentación de caracteres en un display lcd, entradas digitales.
Con B1 incremento la variable x
Con B2 decremento la variable x
Con B3 x será igual a 0
Con B4 incremento la variable y
Con B5 decremento la variable y
Con B6 y será 0
Se multiplica los valores de X y Y

Código Arduino
#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int x=0,y=0,r=0;
int b1,b2,b3,b4,b5,b6;
void setup() {
lcd.begin(16,2);
lcd.clear();
msj_1();delay(1000);
lcd.clear();
pinMode(37,INPUT_PULLUP);
pinMode(36,INPUT_PULLUP);
pinMode(35,INPUT_PULLUP);
pinMode(34,INPUT_PULLUP);
pinMode(33,INPUT_PULLUP);
pinMode(32,INPUT_PULLUP);
}

void loop() {
lcd.setCursor(0,0);
lcd.print("x=");
lcd.print(x);
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

lcd.print(" ");
lcd.setCursor(8,0);
lcd.print("y=");
lcd.print(y);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Res=");
lcd.print(r);
lcd.print(" ");
leer();
if(b1==0){x++;delay(200);}
if(b2==0){x--;delay(200);}
if(b3==0){x=0;}
if(b4==0){y++;delay(200);}
if(b5==0){y--;delay(200);}
if(b6==0){y=0;}
r=x*y;

delay(100);
}
void leer(){
b1=digitalRead(37);
b2=digitalRead(36);
b3=digitalRead(35);
b4=digitalRead(34);
b5=digitalRead(33);
b6=digitalRead(32);
}
void msj_1(){
lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print(" F. Tipantocta ");
lcd.setCursor(0,1);
lcd.print(" ELECTRONICA ");

}
Esquema realizado en Proteus 7.
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Ejercicio N28
Descripción (Display LCD)
Presentación de caracteres en un display lcd entradas digitales
Selección de menús área de un rectángulo y área de un círculo.

Código Arduino

#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int x=0,y=0,r=0;
int b1,b2,b3,b4,b5,b6,salir=0;
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

int l=0,a=0,ar;
int rad=0,area;
float pi=3.14;
void setup() {
lcd.begin(16,2);
lcd.clear();
msj_1();delay(1000);
msj_opciones();
pinMode(37,INPUT_PULLUP);
pinMode(36,INPUT_PULLUP);
pinMode(35,INPUT_PULLUP);
pinMode(34,INPUT_PULLUP);
pinMode(33,INPUT_PULLUP);
pinMode(32,INPUT_PULLUP);
}

void loop() {
x=0;
leer();
if(b1==0){x=1;}
if(b2==0){x=2;}
if(b3==0){x=3;}
switch(x){
case 1: msj_1();
delay(2000);
msj_opciones();
break;
case 2: msj_rectangulo();
salir=0;
a=0;l=0;
while(salir==0){
leer();
rectangulo();
control_rectangulo();
ar=a*l;
}
msj_opciones();
break;
case 3:msj_circulo();
salir=0;
pi=3.14;rad=0;
while(salir==0){
leer();
circulo();
control_circulo();
area=pi*(rad*rad);
}
msj_opciones();
break;

}
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

}
void control_rectangulo(){
if(b1==0){
l++;
delay(200);
}
if(b2==0){
if(l>0){
l--;
}
delay(200);
}
if(b3==0){
a++;
delay(200);
}
if(b4==0){
if(a>0){
a--;
}
delay(200);
}
if(b5==0){
a=0;l=0;
}
if(b6==0){
salir=1;
}

}
void rectangulo(){
lcd.setCursor(0,1);
lcd.print("base=");
lcd.print(l);
lcd.print(" ");
lcd.setCursor(8,1);
lcd.print("alt=");
lcd.print(a);
lcd.print(" ");
lcd.setCursor(8,0);
lcd.print("=");
lcd.print(ar);
lcd.print(" ");

}
void control_circulo(){
if(b1==0){
pi=3.14;
delay(200);
}
if(b2==0){
if(l>0){
pi--;
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

}
delay(200);
}
if(b3==0){
rad++;
delay(200);
}
if(b4==0){
if(rad>0){
rad--;
}
delay(200);
}
if(b5==0){
pi=3.14;rad=0;
}
if(b6==0){
salir=1;
}

}
void circulo(){
lcd.setCursor(0,1);
lcd.print("pi=");
lcd.print(pi);
lcd.print(" ");
lcd.setCursor(8,1);
lcd.print("rad=");
lcd.print(rad);
lcd.print(" ");
lcd.setCursor(8,0);
lcd.print("=");
lcd.print(area);
lcd.print(" ");

}
void leer(){
b1=digitalRead(37);
b2=digitalRead(36);
b3=digitalRead(35);
b4=digitalRead(34);
b5=digitalRead(33);
b6=digitalRead(32);
}
void msj_1(){
lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print(" Dario Jara ");
lcd.setCursor(0,1);
lcd.print(" ELECTRONICA ");
}
void msj_opciones(){
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print(" MENU ");
lcd.setCursor(0,1);
lcd.print("1.PR 2.aRe 3.aCi");
}
void msj_rectangulo(){
lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print("A.Rect ");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_circulo(){
lcd.clear();
// x,y
lcd.setCursor(0,0);
lcd.print("A.Circ ");
lcd.setCursor(0,1);
lcd.print(" ");
}

Esquema realizado en Proteus 7.


CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Ejercicio N29
Descripción (Display LCD y teclado matricial)
Asignación de un número a todas las teclas del teclado matricial.

Código Arduino
#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int f1,f2,f3,f4,tecla,dato;
void setup() {
lcd.begin(16,2);
lcd.clear();
DDRC=0B11110000;
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

PORTC=0B11111111;//PULL_UP
}

void loop() {
lcd.setCursor(0,0);
lcd.print(dato);
lcd.print(" ");
teclado();

}
void teclado(){
tecla=16;
PORTC=0B11101111;
leer();
if(f1==0){tecla=7;}
if(f2==0){tecla=4;}
if(f3==0){tecla=1;}
if(f4==0){tecla=10;}
PORTC=0B11011111;
leer();
if(f1==0){tecla=8;}
if(f2==0){tecla=5;}
if(f3==0){tecla=2;}
if(f4==0){tecla=0;}
PORTC=0B10111111;
leer();
if(f1==0){tecla=9;}
if(f2==0){tecla=6;}
if(f3==0){tecla=3;}
if(f4==0){tecla=11;}
PORTC=0B01111111;
leer();
if(f1==0){tecla=12;}
if(f2==0){tecla=13;}
if(f3==0){tecla=14;}
if(f4==0){tecla=15;}
if(tecla<16){
dato=tecla;
delay(200);
}

}
void leer(){
f1=digitalRead(37);
f2=digitalRead(36);
f3=digitalRead(35);
f4=digitalRead(34);
}
Esquema realizado en Proteus 7.
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Ejercicio N30
Descripción (Display LCD y teclado matricial)
Asignación de menús iniciando por suma
Menú asignado de suma tecla 1

Código Arduino

#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int f1,f2,f3,f4,tecla,dato;
int salir=0,numero,num,aux,opera;//+-32000 long
void setup() {
lcd.begin(16,2);
lcd.clear();
DDRC=0B11110000;
PORTC=0B11111111;//PULL_UP
msj_menu();
}

void loop() {
dato=16;
teclado();
switch(dato){
case 1: msj_calc_lcd();
salir=0;numero=0;num=0;dato=16;aux;
while(salir==0){
lcd.setCursor(0,1);
lcd.print(numero);
lcd.print(" ");
teclado();
if(dato==11){
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

lcd.setCursor(15,1);
lcd.print("=");
if(opera==1){
numero=numero+aux;
}
dato=16;
}
if(dato==15){
lcd.setCursor(15,1);
lcd.print("+");
aux=numero;
opera=1;//+
num=0;
dato=16;
}
if(dato<10){
num++;
if(num==1){numero=dato;}
if(num==2){numero=numero*10+dato;}
if(num==3){numero=numero*10+dato;}
if(num==4){numero=numero*10+dato;num=0;}
dato=16;
}
}
msj_menu();
break;
case 2: msj_calc_7seg();
break;
case 3:
break;
}
}
void msj_calc_lcd(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calculadora LCD");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_calc_7seg(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calculadora 7Sg");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_menu(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Menu ");
lcd.setCursor(0,1);
lcd.print("1.C_L 2.C_7 3.P");
}
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

void teclado(){
tecla=16;
PORTC=0B11101111;
leer();
if(f1==0){tecla=7;}
if(f2==0){tecla=4;}
if(f3==0){tecla=1;}
if(f4==0){tecla=10;}
PORTC=0B11011111;
leer();
if(f1==0){tecla=8;}
if(f2==0){tecla=5;}
if(f3==0){tecla=2;}
if(f4==0){tecla=0;}
PORTC=0B10111111;
leer();
if(f1==0){tecla=9;}
if(f2==0){tecla=6;}
if(f3==0){tecla=3;}
if(f4==0){tecla=11;}
PORTC=0B01111111;
leer();
if(f1==0){tecla=12;}
if(f2==0){tecla=13;}
if(f3==0){tecla=14;}
if(f4==0){tecla=15;}
if(tecla<16){
dato=tecla;
delay(200);
}

}
void leer(){
f1=digitalRead(37);
f2=digitalRead(36);
f3=digitalRead(35);
f4=digitalRead(34);
}

Esquema realizado en Proteus 7.


CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Ejercicio N31
Descripción (Display LCD y teclado matricial)
Asignación de menús calculadora con las 4 operaciones
Menú asignado de suma tecla 1

Código Arduino

#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int f1,f2,f3,f4,tecla,dato;
int salir=0;
int numero,num,aux,opera;//+-32000 long
void setup() {
lcd.begin(16,2);
lcd.clear();
DDRC=0B11110000;
PORTC=0B11111111;//PULL_UP
msj_menu();
}

void loop() {
dato=16;
teclado();
switch(dato){
case 1: msj_calc_lcd();
salir=0;numero=0;num=0;dato=16;aux=0;opera=0;
while(salir==0){
lcd.setCursor(0,1);
lcd.print(numero);
lcd.print(" ");
teclado();
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

if(dato==10){salir=1;}

if(dato==11){
delay(200);

lcd.setCursor(15,1);
lcd.print("=");
if(opera==1){
numero=numero+aux;
}
if(opera==2){
numero=-1*(numero-aux);
}
if(opera==3){
numero=numero*aux;
}
if(opera==4){
numero=numero/aux;
}
num=0;

dato=16;
}
if(dato==12){
delay(200);
lcd.setCursor(15,1);
lcd.print("+");
aux=numero;
opera=1;
num=0;
dato=16;
}
if(dato==13){
delay(200);
lcd.setCursor(15,1);
lcd.print("-");
aux=numero;
opera=2;
num=0;
dato=16;
}
if(dato==14){
delay(200);
lcd.setCursor(15,1);
lcd.print("*");
aux=numero;
opera=3;
num=0;
dato=16;
}
if(dato==15){
delay(200);
lcd.setCursor(15,1);
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

lcd.print("/");
aux=numero;
opera=4;
num=0;
dato=16;
}
if(dato<10){
num++;
if(num==1){numero=dato;}
if(num==2){numero=numero*10+dato;}
if(num==3){numero=numero*10+dato;}
if(num==4){numero=numero*10+dato;num=0;}
dato=16;
}
}
msj_menu();
break;
case 2: msj_calc_7seg();
break;
case 3:
break;
}
}
void msj_calc_lcd(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calculadora LCD");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_calc_7seg(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calculadora 7Sg");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_menu(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Menu ");
lcd.setCursor(0,1);
lcd.print("1.C_L 2.C_7 3.P");
}
void teclado(){
tecla=16;
PORTC=0B11101111;
leer();
if(f1==0){tecla=1;}
if(f2==0){tecla=4;}
if(f3==0){tecla=7;}
if(f4==0){tecla=10;}
PORTC=0B11011111;
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

leer();
if(f1==0){tecla=2;}
if(f2==0){tecla=5;}
if(f3==0){tecla=8;}
if(f4==0){tecla=0;}
PORTC=0B10111111;
leer();
if(f1==0){tecla=3;}
if(f2==0){tecla=6;}
if(f3==0){tecla=9;}
if(f4==0){tecla=11;}
PORTC=0B01111111;
leer();
if(f1==0){tecla=12;}
if(f2==0){tecla=13;}
if(f3==0){tecla=14;}
if(f4==0){tecla=15;}
if(tecla<16){
dato=tecla;
delay(300);
}

}
void leer(){
f1=digitalRead(37);
f2=digitalRead(36);
f3=digitalRead(35);
f4=digitalRead(34);
}

Esquema realizado en Proteus 7.

Ejercicio N32
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

Descripción (Display de 7 segmentos, Display LCD y teclado matricial)


Asignacion de menús calculadora lcd, calculadora en display de 7 segmentos.

Código Arduino
#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int x[10]={192,249,164,176,153,146,131,248,128,152};//array
int mil=1,centena=2,decena=3,unidad=4;
int f1,f2,f3,f4,tecla,dato;
int salir=0,numero,num,aux,aux2,opera;//+-32000 long
void setup() {
lcd.begin(16,2);
lcd.clear();
DDRC=0B11110000;
PORTC=0B11111111;//PULL_UP
msj_menu();
DDRK=255;
DDRF=255;
}

void loop() {
dato=16;
teclado();
switch(dato){
case 1: msj_calc_lcd();
salir=0;numero=0;num=0;dato=16;aux=0;opera=0;
while(salir==0){
lcd.setCursor(0,1);
lcd.print(numero);
lcd.print(" ");
teclado();
operaciones();
}
msj_menu();
break;
case 2: msj_calc_7seg();
salir=0;numero=0;num=0;dato=16;aux=0;opera=0;
while(salir==0){
separa();
presenta();
teclado();
operaciones();
}
msj_menu();
break;
case 3:
break;
}
}
void separa(){
mil=numero/1000;
centena=numero-mil*1000;
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

aux2=centena;
centena=centena/100;
decena=aux2-centena*100;
aux2=decena;
decena=decena/10;
unidad=aux2-decena*10;

}
void presenta(){
PORTF=0B11111110;
PORTK=x[mil];
delay(50);
PORTF=0B11111101;
PORTK=x[centena];
delay(50);
PORTF=0B11111011;
PORTK=x[decena];
delay(50);
PORTF=0B11110111;
PORTK=x[unidad];
delay(50);
}
void operaciones(){
if(dato==10){salir=1;}
if(dato==11){
lcd.setCursor(15,1);
lcd.print("=");
if(opera==1){
numero=numero+aux;
}
num=0;

dato=16;
}
if(dato==15){
lcd.setCursor(15,1);
lcd.print("+");
aux=numero;
opera=1;//+
num=0;
dato=16;
}
if(dato<10){
num++;
if(num==1){numero=dato;}
if(num==2){numero=numero*10+dato;}
if(num==3){numero=numero*10+dato;}
if(num==4){numero=numero*10+dato;num=0;}
dato=16;
}
}
void msj_calc_lcd(){
lcd.clear();
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

lcd.setCursor(0,0);
lcd.print("Calculadora LCD");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_calc_7seg(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calculadora 7Sg");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_menu(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Menu ");
lcd.setCursor(0,1);
lcd.print("1.C_L 2.C_7 3.P");
}
void teclado(){
tecla=16;
PORTC=0B11101111;
leer();
if(f1==0){tecla=7;}
if(f2==0){tecla=4;}
if(f3==0){tecla=1;}
if(f4==0){tecla=10;}
PORTC=0B11011111;
leer();
if(f1==0){tecla=8;}
if(f2==0){tecla=5;}
if(f3==0){tecla=2;}
if(f4==0){tecla=0;}
PORTC=0B10111111;
leer();
if(f1==0){tecla=9;}
if(f2==0){tecla=6;}
if(f3==0){tecla=3;}
if(f4==0){tecla=11;}
PORTC=0B01111111;
leer();
if(f1==0){tecla=12;}
if(f2==0){tecla=13;}
if(f3==0){tecla=14;}
if(f4==0){tecla=15;}
if(tecla<16){
dato=tecla;
delay(200);
}

}
void leer(){
f1=digitalRead(37);
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

f2=digitalRead(36);
f3=digitalRead(35);
f4=digitalRead(34);
}

Esquema realizado en Proteus 7.

Ejercicio N33
Descripción (corrección de la prueba de la unidad 2)

Código Arduino
#include <LiquidCrystal.h>
// RS E D4 D5 D6 D7
LiquidCrystal lcd(24,25,26,27,28,29);
int x[10]={192,249,164,176,153,146,131,248,128,152};//array
int mil=1,centena=2,decena=3,unidad=4;
int f1,f2,f3,f4,tecla,dato;
int cont_ac1,cont_ac2,cont_total,salir=0,numero,num,aux,aux2,opera,cnt=0;//+-32000
long
void setup() {
lcd.begin(16,2);
lcd.clear();
DDRC=0B11110000;
PORTC=0B11111111;//PULL_UP
msj_menu();
DDRK=255;
DDRF=255;
pinMode(46,INPUT_PULLUP);
pinMode(47,INPUT_PULLUP);
pinMode(48,INPUT_PULLUP);
pinMode(49,INPUT_PULLUP);
pinMode(53,OUTPUT);
}
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

void loop() {
dato=16;
teclado();
switch(dato){
case 1: msj_EMPRESA();
msj_menu();
break;
case 2: msj_COMERCIAL();
salir=0;numero=0;num=0;dato=16;aux=0;opera=0;
while(salir==0){
lcd.setCursor(0,0);lcd.print("ac1:");lcd.print(cont_ac1);lcd.print(" ");
lcd.setCursor(0,1);lcd.print("ac2:");lcd.print(cont_ac2);lcd.print(" ");
lcd.setCursor(7,0);lcd.print("PM:");lcd.print(numero);lcd.print(" ");
lcd.setCursor(7,1);lcd.print("tot:");lcd.print(cont_total);lcd.print(" ");
separa();
presenta();
teclado();
if(teclado==10){salir=1;}
int p1=digitalRead(46);
int p2=digitalRead(47);
int p3=digitalRead(48);
int p4=digitalRead(49);
if(p1==0){
if(cont_ac1<999){
cont_ac1++;
numero++;
delay(200);
}
}
if(p2==0){
if(cont_ac2<999){
cont_ac2++;
numero++;
delay(200);
}
}
if(p3==0){
numero--;
delay(200);
}
if(p4==0){
numero--;
delay(200);
}
if(numero>50){
parpadeo();
}
cont_total=cont_ac1 + cont_ac2;

}
msj_menu();
break;
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

case 3:
break;
}
}
void parpadeo(){
cnt++;
if(cnt==5){
digitalWrite(53,HIGH);
}
if(cnt==10){
digitalWrite(53,LOW);cnt=0;
}
}
void separa(){
mil=numero/1000;
centena=numero-mil*1000;
aux2=centena;
centena=centena/100;
decena=aux2-centena*100;
aux2=decena;
decena=decena/10;
unidad=aux2-decena*10;

}
void presenta(){
PORTF=0B11111110;
PORTK=x[centena];
delay(50);
PORTF=0B11111101;
PORTK=x[decena];
delay(50);
PORTF=0B11111011;
PORTK=x[unidad];
delay(50);
}
void operaciones(){
if(dato==10){salir=1;}
if(dato==11){
lcd.setCursor(15,1);
lcd.print("=");
if(opera==1){
numero=numero+aux;
}
num=0;

dato=16;
}
if(dato==15){
lcd.setCursor(15,1);
lcd.print("+");
aux=numero;
opera=1;//+
num=0;
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

dato=16;
}
if(dato<10){
num++;
if(num==1){numero=dato;}
if(num==2){numero=numero*10+dato;}
if(num==3){numero=numero*10+dato;}
if(num==4){numero=numero*10+dato;num=0;}
dato=16;
}
}
void msj_EMPRESA(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_COMERCIAL(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_calc_lcd(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calculadora LCD");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_calc_7seg(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calculadora 7Sg");
lcd.setCursor(0,1);
lcd.print(" ");
}
void msj_menu(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Menu ");
lcd.setCursor(0,1);
lcd.print("1.C_L 2.C_7 3.P");
}
void teclado(){
tecla=16;
PORTC=0B11101111;
leer();
if(f1==0){tecla=7;}
if(f2==0){tecla=4;}
if(f3==0){tecla=1;}
CARRERA DE TECNOLOGIA SUPERIOR EN ELECTRONICA

Ejercicios de la unidad 2
Nivel de Académico 3BR-N
Microcontroladores/ Semestre 3ro

if(f4==0){tecla=10;}
PORTC=0B11011111;
leer();
if(f1==0){tecla=8;}
if(f2==0){tecla=5;}
if(f3==0){tecla=2;}
if(f4==0){tecla=0;}
PORTC=0B10111111;
leer();
if(f1==0){tecla=9;}
if(f2==0){tecla=6;}
if(f3==0){tecla=3;}
if(f4==0){tecla=11;}
PORTC=0B01111111;
leer();
if(f1==0){tecla=12;}
if(f2==0){tecla=13;}
if(f3==0){tecla=14;}
if(f4==0){tecla=15;}
if(tecla<16){
dato=tecla;
delay(200);
}

}
void leer(){
f1=digitalRead(37);
f2=digitalRead(36);
f3=digitalRead(35);
f4=digitalRead(34);
}

Esquema realizado en Proteus 7.

También podría gustarte