0% encontró este documento útil (0 votos)
131 vistas17 páginas

Reporte Calculadora

Este documento presenta un reporte de práctica sobre el desarrollo de una calculadora utilizando un PIC16F887. Los estudiantes utilizaron el microcontrolador PIC16F887 y un LCD para crear una calculadora capaz de realizar cuatro operaciones aritméticas mediante Bluetooth. El código fue programado en C usando el entorno MikroC PRO y el hardware fue simulado en Proteus.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
131 vistas17 páginas

Reporte Calculadora

Este documento presenta un reporte de práctica sobre el desarrollo de una calculadora utilizando un PIC16F887. Los estudiantes utilizaron el microcontrolador PIC16F887 y un LCD para crear una calculadora capaz de realizar cuatro operaciones aritméticas mediante Bluetooth. El código fue programado en C usando el entorno MikroC PRO y el hardware fue simulado en Proteus.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

INSTITUTO TECNOLÓGICO SUPERIOR

DE LA REGIÓN DE LOS LLANOS


INGENIERÍA MECATRÓNICA
MATERIA: Microcontroladores
PROFESOR: M.C. Jesús Manuel Blanco Berumen
Unidad: 4
REPORTE PRÁCTICA: Calculadora

Alumnos: No. de control:


Francisco Miguel Alvarado Contreras 16B100002
Fritzy Candelaria Domínguez Nava 16B100009

Guadalupe Victoria, Dgo., 10 – Junio– 2019

1
INTRODUCCIÓN:
En esta práctica utilizamos el pic 16F887 para realizar una calculadora capaz de
hacer 4 operaciones aritméticas por medio de un LCD y un módulo de bluetooth En
este caso comenzamos la programación del código configurando las diferentes
periferias del LCD de acuerdo al tipo de código C, luego definimos las constantes
que utilizaremos por medio de un char, las constantes a utilizar nos servirán para
identificar las operaciones que hará el PIC, así como los datos que mostrara el LCD.
Programándolo de tal manera que el alumno ponga en práctica sus conocimientos
adquiridos en programación, conexión de periféricos o componentes electrónicos

2
MARCO TEÓRICO:
Pic 16F887

 El microcontrolador cuenta con solo 35 instrucciones diferentes


 Todas las instrucciones son uni-ciclo excepto por las de ramificación
 Frecuencia de operación 0-20 MHz
 Oscilador interno de alta precisión
 Calibrado de fábrica
 Rango de frecuencia de 8MHz a 31KHz seleccionado por software
 Voltaje de la fuente de alimentación de 2.0V a 5.5V
 Consumo: 220uA (2.0V, 4MHz), 11uA (2.0 V, 32 KHz) 50nA (en modo de espera)
 Ahorro de energía en el Modo de suspensión
 Brown-out Reset (BOR) con opción para controlar por software
 35 pines de entrada/salida
 alta corriente de fuente y de drenador para manejo de LED
 resistencias pull-up programables individualmente por software
 interrupción al cambiar el estado del pin
 memoria ROM de 8K con tecnología FLASH
 El chip se puede re-programar hasta 100.000 veces
 Opción de programación serial en el circuito
 El chip se puede programar incluso incorporado en el dispositivo destino.
 256 bytes de memoria EEPROM
 Los datos se pueden grabar más de 1.000.000 veces
 368 bytes de memoria RAM
 Convertidor A/D:
 14 canales
 resolución de 10 bits
 3 temporizadores/contadores independientes
 Temporizador perro guardián
 Módulo comparador analógico con
 Dos comparadores analógicos
 Referencia de voltaje fija (0.6V)
 Referencia de voltaje programable en el chip
 Módulo PWM incorporado

3
 Módulo USART mejorado
 Soporta las comunicaciones seriales RS-485, RS-232 y LIN2.0
 Auto detección de baudios
 Puerto Serie Síncrono Maestro (MSSP)
 Soporta los modos SPI e I2C

Figura 2.1.- Pic16F887


Pickit 3:

Pickit es una familia de programadores para microcontroladores PIC fabricados por


Microchip Technology. Se utilizan para programar y depurar microcontroladores, así
como para programar EEPROM. Algunos modelos también cuentan con un
analizador lógico y una herramienta de comunicaciones seriales (UART).

Las personas que desarrollan software de código abierto para el PICkit usan una
lista de correo para la colaboración. El PICkit 1, introducido el 31 de marzo de 2003
por US, fue un programador USB rudimentario para microcontroladores PIC,
producido por Microchip Technology, el fabricante de la serie de microcontroladores
PIC. Se integró en una placa demostradora, con ocho LED, un interruptor y un
potenciómetro. Su programa predeterminado, explicado en la documentación, hace
girar los LED en serie. La dirección de la pantalla de luz y la velocidad de rotación
se pueden cambiar con el botón y el potenciómetro en el tablero PICkit.

4
El PICkit 2, introducido en mayo de 2005 , reemplazó al PICkit . La diferencia más
notable entre los dos es que el PICkit 2 tiene una unidad de programador / depurador
separada que se enchufa en la placa que lleva el chip a programar, mientras que
PICkit 1 era una sola unidad. Esto hace posible utilizar el programador con una placa
de circuito personalizada a través de un encabezado de programación en serie en
circuito (ICSP). Sin embargo, esta función no está destinada a para la llamada
programación de "producción".

El PICkit 2 utiliza un PIC18F2550 interno con FullSpeed USB. El último firmware de


PICkit 2 permite al usuario programar y depurar la mayoría de los miembros de
PICmicro y dsPIC de 8 y 16 bits de la línea de productos Microchip.

El PICkit 2 está abierto al público, incluido su esquema de hardware, código fuente


de firmware (en lenguaje C) y programas de aplicación (en lenguaje C #). Los
usuarios finales y terceros pueden modificar fácilmente tanto el hardware como el
software para características mejoradas. p.ej. Versión para Linux del software de
aplicación PICkit 2, soporte CMD estilo DOS, etc.

Figura 2.2.- Pickit

5
Código Fuente:

El código fuente está compuesto por una serie de líneas del programa. Todos los
ficheros fuente poseen una estructura similar independiente del procesador
utilizado. Cada línea del programa suele estar compuesta por 4 campos o columnas
separados por uno o más espacios o tabulares. Estos campos son:

1- Campo de etiqueta:

a. Son Expresiones alfanuméricas escogidas por el usuario, su principal función


es identificar a una determinada instrucción del programa, asignando a esta etiqueta
el valor de la dirección de memoria correspondiente a dicha instrucción.

2- Campo de código de operación

a. Especifica la tarea a realizar por el microcontrolador. Suele ser una


instrucción del microcontrolador que es directamente traducida a código maquina
por el ensamblador, por ejemplo, “sleep” que es traducida a código maquina como
“00 0000 0110 0011”.

3- Campo de operandos y datos

a. Contiene operandos para el campo de instrucciones. Por ejemplo “movwf”,


“PORTB”. Este campo puede contener uno o más operandos separados por comas.
Dependiendo de las instrucciones pueden ser números o etiquetas que representen
constantes o direcciones.

4- Campo de comentarios

a. Son elementos indispensables que ayudan al programador a documentar su


programa, aclarar el sentido de las instrucciones y, con el tiempo, facilita la
posibilidad de correcciones y modificaciones que lo mejoren. Además, estos pueden
extenderse durante varias líneas y todos ellos deben de comenzar siempre por
punto y coma (;).

6
Entorno mikroC PRO for PIC

Es una poderosa herramienta para microcontroladores PIC. Está diseñado para


proveer al programador con las soluciones más fáciles posibles para desarrollar
aplicaciones en sistemas embebidos, sin comprometer rendimiento o control.

PIC y C encajan juntos bien: PIC es el chip de 8 bits más popular en el mundo, es
usado en una amplia variedad de aplicaciones, y C, es usado por su eficiencia, es
la elección natural para desarrollar sistemas embebidos. MikroC PRO para PIC
provee un completo paquete de características para IDE avanzado, para
compiladores ANSI, conjuntos de librerías para Hardware, documentación
comprensible, y ejemplos listos para ser compilados y ejecutados.

Registros Especiales

1- STATUS

a. EL registro de estado o STATUS indica el estado de la última operación


aritmética o lógica realizada, la causa de reset y los bits de selección de banco para
memoria de datos. A los bits de registro de estado se les suele denominar flags o
banderas

i. RP0 (Register Bank Select bit).: Selecciona el banco para el direccionamiento


directo. Selecciona el banco de datos 0.

2- PORTA

7
a. Puerto de entrada/ salida de 5 bits. El puerto A puede leerse o escribirse
como si se tratara de un registro cualquiera. El registro que controla la entrada o
salida es el TRISA.

3- PORTB

a. Puerto de entrada/ salida de 8 bits. El puerto B puede leerse o escribirse


como si se tratara de un registro cualquiera. El registro que controla la entrada o
salida es el registro TRISB.

4- TRISA

a. Registro de configuración de líneas de puerto A. Es el registro de control del


puerto A.

5- TRISB

a. Registro de configuración de líneas del puerto B. Es el registro de control del


puerto A.

Proteus:

Es un software de automatización de diseño electrónico desarrollado por lab center


electronis que consta de los dos programas principales Ares e Isis, y los modulos
VSM y Electra.

El programa System (Sistema de Enrutado de Esquemas Inteligente) permite


diseñar el plano eléctrico del circuito que se desea realizar con componentes muy
variados, desde simples resistencias, hasta alguno que otro microprocesador o
microcontrolador, incluyendo fuentes de alimentación, generadores de señales y
muchos otros componentes con prestaciones diferentes. Los diseños realizados en
Isis pueden ser simulados en tiempo real, mediante el módulo VSM, asociado
directamente con ISIS.

El módulo VSM

8
Una de las prestaciones de Proteus, integrada con ISIS, es VSM, el Virtual System
Modeling (Sistema Virtual de Modelado), una extensión integrada con ISIS, con la
cual se puede simular, en tiempo real, con posibilidad de más rapidez; todas las
características de varias familias de microcontroladores, introduciendo nosotros
mismos el programa que controlará el microcontrolador y cada una de sus salidas,
y a la vez, simulando las tareas que queramos que lleve a cabo con el programa.
Se pueden simular circuitos con microcontroladores conectados a distintos
dispositivos, como motores eléctricos, pantallas de cristal líquido (LCD), teclados en
matriz, etc. Incluye, entre otras, las familias de microcontrolador PIC, tal como
PIC10, PIC12, PIC16, PIC18, PIC24 y dsPIC33. ISIS es el corazón del entorno
integrado Proteus. Combina un entorno de diseño de una potencia excepcional con
una enorme capacidad de controlar la apariencia final de los dibujos.

CODIGO.

Se configuró el programa para programar el Pic

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;

9
#define Enter 'a'

#define Plus '+'

#define Minus '-'

#define Multiply '*'

#define Divide '/'

// Start of MAIN program

//

void main()

unsigned char MyKey, i,j,kbd[5],op[12], k;

unsigned long Calc, Op1, Op2,Key;

unsigned char msg1[] = "CALCULADORA";

unsigned char msg2[] = "Numero uno:";

unsigned char msg3[]= "Numero dos:";

unsigned char msg4[] = "Operacion:";

unsigned char msg5[] = "Resultado:";

ANSEL = 0;

ANSELH = 0;

//COnfiguracion de la LCD

LCD_Init();

//

// Configure the USART

//

UART1_Init(9600); // Baud=9600

Delay_ms(100);

//

10
// Program loop

//

for(;;) // Endless loop

LCD_Cmd(_LCD_CLEAR);

LCD_Cmd(_LCD_CURSOR_OFF);

MyKey = 0;

Op1 = 0;

Op2 = 0;

LCD_Out(1,3,msg1);

Delay_ms(2000);

LCD_Cmd(_LCD_CLEAR);

//

// Get the first number

//

LCD_Out(1,4,msg2); // Send TEXT to LCD

k = 0;

do // Get first number

if(UART1_Data_Ready()) // If a character ready

MyKey = UART1_Read(); // Get a character

if(MyKey == Enter)break; // If ENTER key

Key = MyKey - '0';

LCD_Chr(2,8+k,MyKey);

11
Op1 = 10 * Op1 + Key; // First number in Op1

//Delay_ms(1000);

k++;

}while(1);

//

// Get the second character

//

LCD_Cmd(_LCD_CLEAR);

LCD_Out(1,4,msg3); // Send TEXT to LCD

k = 0;

do // Get second number

if(UART1_Data_Ready())

MyKey = UART1_Read(); // Get a character

if(Mykey == Enter)break; // If ENTER key

Key = MyKey - '0';

LCD_Chr(2,8 + k,MyKey);

Op2 = 10 * Op2 + Key; // Second number in Op2

//Delay_ms(1000);

k++;

}while(1);

//

// Get the operation

12
//

LCD_Cmd(_LCD_CLEAR);

LCD_Out(1,4,msg4);

k = 0;

do

if(UART1_Data_Ready())

MyKey = UART1_Read(); // Get a character

if(MyKey == Enter)break; // If ENTER key

LCD_Chr(2,8 + k,MyKey);

Key = MyKey;

//Delay_ms(1000);

k++;

}while(1);

//

// Perform the operation

//

switch(Key) // Calculate

case Plus:

Calc = Op1 + Op2; // If ADD

break;

case Minus:

Calc = Op1 - Op2; // If Subtract

13
break;

case Multiply:

Calc = Op1 * Op2; // If Multiply

break;

case Divide:

Calc = Op1 / Op2; // If Divide

break;

LongToStr(Calc, op); // Convert to string

//

// Remove leading blanks

//

j=0;

for(i=0;i<=11;i++)

if(op[i] != ' ') // If a blank

kbd[j]=op[i];

j++;

LCD_Cmd(_LCD_CLEAR);

LCD_Out(1,4,msg5);

for(i=0; i<j;i++)LCD_Chr(2,8+i,kbd[i]); // Display result

Delay_ms(3000);

14
SIMULACION

Después de tener el código se procedió a simularlo en el software PROTEUS 8.5


para comprobar que nuestro código fuera correcto y nos arrojó lo siguiente:

Figura 4.1 simulación en el software Proteos

PROCEDIMIENTO (DESCRIPCIÓN)

EQUIPO NECESARIO y MATERIAL DE APOYO

Cantidad Descripción
1 PIC16F887
1 Fuente de voltaje 5V
1 Protoboart
1 Pulsador
1 Cristal 4MHZ
2 Capacitores Cerámicos 22pF
Cables varios
1 Led

15
3 Resistencia 330

1 LCD
1 Potenciómetro
1 Módulo Bluetooth
Pickit3 con cable USB
Diagrama
Computadora

Software Proteus, Micro C y Pickit 3

PRÁCTICA ARMADA FISICAMENTE

Se procedió a armar el circuito físicamente y a través de una

Figura 5.1 practica armada fisicamrente

16
RESULTADOS Y CONCLUSIONES

Después de la realización de esta práctica los resultados obtenidos fueron los


planteados al inicio, que fueron poner en práctica el uso de comparadores,
contadores, saltos y rotación de bits en el programa del microcontrolador
PIC16F887, así como implementarlo físicamente. Así como usar las librerías de
configuración del LCD e implementarlas con lo que queremos que muestre, en este
caso también la configuración del comando UART que nos permitirá comunicarnos
con una terminal externa para enviar los datos al PIC y este los muestre en el LCD.

REFERENCIAS BIBLIOGRAFICAS

 Palacios, Remiro, López “microcontrolador PIC16F84 Desarrollo de


proyectos”; Alfa omega, 2da. Edición.
 Datasheet PIC16F84A
 Datasheet 74LS48
 Datasheet DISPLAY 7 segmentos ánodo, y cátodo común respectivamente
 USER GUIDE PICKIT 3

Reyes A. Carlos (2006) Microcontroladores PIC, programación en BASIC,


EDITORIAL Rispergraf, Segunda Edición

17

También podría gustarte