Anda di halaman 1dari 23

DEPARTAMENTO DE CIENCIAS DE ELCTRICA Y ELECTRNICA

CARRERA DE INGENIERA MECATRNICA

ASIGNATURA:

MICROPROCESADORES Y MICROCONTROLADORES

NRC: 3713

TEMA:
Programacin en C en Microcontrolador 16F877A
DOCENTE: Ing. LUIS MONTOYA

INTEGRANTES DE GRUPO:
Alexis Sinailin
Andrs Hidalgo
Henry Huaraca

Fecha: 21/Julio/2017
Tabla de contenido

Tabla de contenido............................................................................................................ 2

Tabla de figuras ................................................................................................................ 3

1. Tema: ............................................................................................................................ 4

2. Antecedentes................................................................................................................. 4

3. Objetivos: ..................................................................................................................... 4

3.1 Objetivo General: ................................................................................................... 4

3.2 Objetivos Especficos: ............................................................................................ 4

4. Marco terico. ............................................................................................................... 4

LENGUAJE ENSAMBLADOR .............................................................................. 5

Lenguaje C ................................................................................................................ 7

5. Materiales y equipos necesarios ................................................................................... 8

6. Desarrollo ..................................................................................................................... 9

6.1 Programacin .......................................................................................................... 9

6.2 Simulacin ............................................................................................................ 18

6.3 Implementacin .................................................................................................... 21

6.4 Pruebas de funcionamiento................................................................................... 22

7. Recomendaciones ....................................................................................................... 23

8. Conclusiones............................................................................................................... 23

9. Referencias bibliogrficas .......................................................................................... 23

2
Tabla de figuras

Figura 1. Lenguaje Ensamblador ...................................................................................... 5


Figura 2. Diferencia entre Lenguaje C y Ensamblador .................................................... 6
Figura 3. Lenguaje C ........................................................................................................ 7
Figura 4. Smbolo Software MPLAB ............................................................................... 8
Figura 5. Diagrama de bloques del proceso de elaboracin del proyecto. ....................... 9
Figura 6. Extracto de la programacin de la Opcin 1 en MPLAB ............................... 11
Figura 7. Extracto de la programacin de la Opcin 2 en MPLAB ............................... 16
Figura 8. Extracto de la programacin de la Opcin 3 en MPLAB ............................... 18
Figura 9. Presentacin de la simulacin en conjunto realizada en Proteus 8.6 .............. 19
Figura 10. Simulacin de la opcin 1 en Proteus 8.6 ..................................................... 19
Figura 11. Simulacin inicial de la opcin 2 en Proteus 8.6 .......................................... 20
Figura 12. Simulacin de la parte final de la opcin 2 en Proteus 8.6 ........................... 20
Figura 13. Simulacin de la opcin 3 en Proteus 8.6 ..................................................... 21
Figura 14. Imagen que muestra el circuito final armado en protoboard......................... 22

3
1. Tema:
Programacin en C en Microcontrolador 16F877A

2. Antecedentes

Las necesidades de la industria de realizar de automatizar los procesos y buscar soluciones


de automatizacin flexible, de tal manera de tener procesos cambiantes y que puedan ser
mejoras, han hecho que los microcontroladores al igual que los plcs tengan un gran
crecimiento en los procesos de automatizacin o control, adems de su uso frecuente en
dispositivos como celulares, computadores o cualquier elemento electrnico.
El microcontrolador es una herramienta que me permite utilizar cada una de sus puertos
a voluntad, brindndonos la oportunidad de configurar el uso de los mismos, segn
nuestra necesidad, es as como podemos realizar PWM, u osciladores, de tal manera
podremos controlar el proceso planteado.

3. Objetivos:

3.1 Objetivo General:

Aplicar los conocimientos en C para la programacin del 16F877A.

3.2 Objetivos Especficos:

Construir el circuito que me permita conectar el microcontrolador, con los


elementos de entrada.
Realizar la programacin y verificar los resultados esperados de acuerdo a los
ndices planteados.

4. Marco terico.

TIPOS DE PROGRAMACIN.

4
LENGUAJE ENSAMBLADOR

Como el proceso de escribir un cdigo ejecutable era considerablemente arduo, en


consecuencia fue creado el primer lenguaje de programacin denominado ensamblador
(ASM). Siguiendo la sintaxis bsica del ensamblador, era ms fcil escribir y comprender
el cdigo. Las instrucciones en ensamblador consisten en las abreviaturas con significado
y a cada instruccin corresponde una localidad de memoria. Un programa denominado
ensamblador compila (traduce) las instrucciones del lenguaje ensamblador a cdigo
mquina (cdigo binario). (MIKROELEKTRONIKA)

Figura 1. Lenguaje Ensamblador

Este programa compila instruccin a instruccin sin optimizacin. Como permite


controlar en detalle todos los procesos puestos en marcha dentro del chip, este lenguaje
de programacin todava sigue siendo popular.
A pesar de todos los lados buenos, el lenguaje ensamblador tiene algunas desventajas:

Incluso una sola operacin en el programa escrito en ensamblador consiste en


muchas instrucciones, hacindolo muy largo y difcil de manejar.
Cada tipo de microcontrolador tiene su propio conjunto de instrucciones que un
programador tiene que conocer para escribir un programa
Un programador tiene que conocer el hardware del microcontrolador para escribir
un programa

5
Programa escrito en C (El mismo programa compilado al cdigo ensamblador):

Figura 2. Diferencia entre Lenguaje C y Ensamblador

Los lenguajes de programacin de alto nivel (Basic, Pascal, C etc.) fueron creados con el
propsito de superar las desventajas del ensamblador. En lenguajes de programacin de
alto nivel varias instrucciones en ensamblador se sustituyen por una sentencia. El
programador ya no tiene que conocer el conjunto de instrucciones o caractersticas del
hardware del microcontrolador utilizado. Ya no es posible conocer exactamente cmo se
ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar
en el programa una secuencia escrita en ensamblador.

Si alguna vez ha escrito un programa para un microcontrolador PIC en lenguaje


ensamblador, probablemente sepa que la arquitectura RISC carece de algunas
instrucciones. Por ejemplo, no hay instruccin apropiada para multiplicar dos nmeros.
Por supuesto, para cada problema hay una solucin y ste no es una excepcin gracias a
la aritmtica que permite realizar las operaciones complejas al descomponerlas en un gran
nmero operaciones ms simples. En este caso, la multiplicacin se puede sustituir con
facilidad por adicin sucesiva (a x b = a + a + a + + a). Ya estamos en el comienzo de

6
una historia muy larga No hay que preocuparse al utilizar uno de estos lenguajes de
programacin de alto nivel como es C, porque el compilador encontrar automticamente
la solucin a ste problema y otros similares. Para multiplicar los nmeros a y b, basta
con escribir a*b.

Lenguaje C

El lenguaje C dispone de todas las ventajas de un lenguaje de programacin de alto nivel


(anteriormente descritas) y le permite realizar algunas operaciones tanto sobre los bytes
como sobre los bits (operaciones lgicas, desplazamiento etc.). Las caractersticas de C
pueden ser muy tiles al programar los microcontroladores. Adems, C est estandarizado
(el estndar ANSI), es muy portable, as que el mismo cdigo se puede utilizar muchas
veces en diferentes proyectos. Lo que lo hace accesible para cualquiera que conozca este
lenguaje sin reparar en el propsito de uso del microcontrolador. C es un lenguaje
compilado, lo que significa que los archivos fuentes que contienen el cdigo C se traducen
a lenguaje mquina por el compilador. Todas estas caractersticas hicieron al C uno de
los lenguajes de programacin ms populares.

Figura 3. Lenguaje C

La figura anterior es un ejemplo general de lo que sucede durante la compilacin de


programa de un lenguaje de programacin de alto nivel a bajo nivel.
(MIKROELEKTRONIKA)

7
MPLAB

MPLAB X IDE es un programa de software que se ejecuta en una PC (Windows , Mac


OS , Linux ) para desarrollar aplicaciones para microcontroladores Microchip y
controladores de seales digitales. Se llama un entorno de desarrollo integrado (IDE), ya
que proporciona un nico "entorno" integrado para desarrollar cdigo para
microcontroladores integrados.

MPLAB X Integrated Development Environment trae muchos cambios a la cadena de


herramientas de desarrollo de microcontroladores PIC . A diferencia de versiones
anteriores del MPLAB IDE que se desarrollaron completamente en casa, MPLAB X IDE
se basa en el IDE NetBeans de cdigo abierto de Oracle. Tomar este camino nos ha
permitido agregar muchas caractersticas frecuentemente solicitadas de forma muy rpida
y sencilla, a la vez que nos proporciona una arquitectura mucho ms extensible para
ofrecerle an ms nuevas caractersticas en el futuro. (microchip).

Figura 4. Smbolo Software MPLAB

5. Materiales y equipos necesarios


Software MPLAB.
Software Pickit 2.
Complemento XC8 para MPLAB.
Protoboard.
Jumpers.
PIC 16F877A.

8
LCD 16x2.
Deepswitches.
Display de 7 segmentos, ctodo comn.
Teclado matricial 4x4.
Capacitores de 15pF.
Resistencias de distintos valores.
Cristal de 4000 Mhz

6. Desarrollo

El desarrollo e implementacin del proyecto ha sido una sucesin de diferentes procesos


que en conjunto nos han permitido lograr los objetivos y parmetros establecidos, los
pasos seguidos para llegar a la consecucin del proyecto se presentan a continuacin en
un diagrama de bloques:

Programacin

Simulacin

Implementacin

Pruebas de
funcionamiento

Figura 5. Diagrama de bloques del proceso de elaboracin del proyecto.

6.1 Programacin

Lo que corresponde al cdigo de programacin, ste fue elaborado utilizando el software


MPLAB el cual hemos venido trabajando a lo largo del semestre y ahora para la
implementacin del proyecto usaremos el complemento XC8, para programacin en C,

9
permitindonos una mayor facilidad de programacin en comparacin con lo que es
lenguaje ensamblador.

Opcin 1

Enunciado: Disear un programa que lea 8 bits con Switches de los puertos A y E,
a su vez muestre el dato en decimal en un en un LCD que se encuentra conectado en el
puerto D.

Solucin: Para esta parte del proyecto hemos planteado una programacin en MPLAB,
con una lectura del dato ingresado en 8 bits en la cual mediante operaciones matemticas
hacemos la transformacin para poder visualizar el nmero en el LCD, con valores que
van desde 0 a 255, el cdigo se lo puede ver detallado a continuacin:

if(B1==0 && B2==0){

Lcd_Clear();

Lcd_Set_Cursor(1,1);

n=1*RA0+2*RA1+4*RA2+8*RA3+16*RA4+32*RA5+64*RE0+128*RE1;

sprintf(NString,"%i",n);

Lcd_Write_String("OPCION1 = ");

Lcd_Set_Cursor(2,1);

Lcd_Write_String(NString);

__delay_ms(200);

10
Figura 6. Extracto de la programacin de la Opcin 1 en MPLAB

Opcin 2

Enunciado: Ingresar nmeros decimales de un dgito desde el teclado, que a la vez son
mostrados en el display de 7 segmentos, hasta digitar el carcter *; pero al pulsar una
tecla que no sea dgito decimal debe mostrar el siguiente mensaje en el LCD: Tecla
no usada. Estos nmeros digitados deben ser almacenados en la memoria de datos,
luego mostrar secuencialmente todos los nmeros almacenados en el display de 7
segmentos, con un tiempo de 2,5 seg. entre nmero, y al final mostrar el carcter E.

Solucin: En esta parte del programa usamos una serie de condicionales, los cuales me
permiten primeramente hacer la lectura del dato y botn que est siendo ingresado a travs
del teclado, condicionando aquellos que no corresponden a un nmero decimal con
nmeros negativos para determinar el mensaje de dato No permitido, una vez que el
programa obtiene el dato que ha sido ingresado por teclado a travs de un array y de un
contador, vamos guardando el nmero de datos que sean ingresados y el valor de los datos
ingresados hasta que dejemos de ingresar ms nmeros y aplastemos el botn que
corresponda al asterisco. Una vez los datos han sido guardados luego de presionar
asterisco usamos una programacin parecida a la de la opcin uno para poder desplegar
los datos en el LCD, as como tambin en el display de 7 segmentos, el cdigo es el
siguiente:

if(B1==0 && B2==1){

C1=1;

if(F1==1){

n=7;

11
}

if(F2==1){

n=4;

if(F3==1){

n=1;

if(F4==1){

n=-1;

C1=0;

C2=1;

if(F1==1){

n=8;

if(F2==1){

n=5;

if(F3==1){

n=2;

12
if(F4==1){

n=0;

C2=0;

C3=1;

if(F1==1){

n=9;

if(F2==1){

n=6;

if(F3==1){

n=3;

if(F4==1){

n=-2;

C3=0;

C4=1;

if(F1==1){

n=-1;

if(F2==1){

13
n=-1;

if(F3==1){

n=-1;

if(F4==1){

n=-1;

C4=0;

if(n==-1){

Lcd_Clear();

Lcd_Set_Cursor(1,1);

Lcd_Write_String("No permitido");

n=-3;

if(n>=0){

num[cont]=n;

Lcd_Clear();

Lcd_Set_Cursor(1,1);

sprintf(NString,"%i",num[cont]);

Lcd_Write_String(NString);

cont=cont+1;

14
n=-3;

__delay_ms(350);

if(n==-2){

Lcd_Clear();

for(int i=0;i<cont;i=i+1){

Lcd_Set_Cursor(1,1);

sprintf(NString,"%i",num[i]);

Lcd_Write_String(NString);

__delay_ms(2500);

Lcd_Set_Cursor(1,1);

Lcd_Write_String("E");

__delay_ms(350);

cont=0;

n=-3;

15
Figura 7. Extracto de la programacin de la Opcin 2 en MPLAB

Opcin 3

Enunciado: Multiplicar dos nmeros A y B, de 4 bits cada uno. Los operandos para la
operacin son ingresados desde un teclado, que a la vez son mostrados en el display
de 7 segmentos. Visualizar los operandos y el resultado en un LCD, hasta que se realice
un nuevo clculo.

Solucin: Para esta solucin usaremos una mezcla de la programacin que ya se ha usado
en la solucin de las opciones 1 y 2, primeramente programamos el teclado para poder
leer el botn que corresponda a la multiplicacin, una vez que se ha presionado este botn,
nuestro programa analiza el valor de los datos de 4 bits ingresados a travs de los
deepswitches, con el fin de obtener su valor en decimal, y una vez que ha ledo estos datos
con una programacin parecida a la de la opcin uno determinamos el valor del dgito
uno y dos a multiplicarse, y realizamos la operacin matemtica, cuyo resultado ser
desplegado a travs del LCD, la programacin descrita se puede leer a continuacin:

16
if(B1==1 && B2==0){

C1=0;

C2=0;

C3=0;

C4=1;

if(F2==1){

n1=1*RA0+2*RA1+4*RA2+8*RA3;

n2=1*RA4+2*RA5+4*RE0+8*RE1;

int r=n1*n2;

Lcd_Clear();

Lcd_Set_Cursor(1,1);

sprintf(NString,"%i",n1);

Lcd_Write_String(NString);

Lcd_Write_String("X");

sprintf(NString,"%i",n2);

Lcd_Write_String(NString);

Lcd_Write_String("=");

sprintf(NString,"%i",r);

Lcd_Write_String(NString);

__delay_ms(350);

17
Figura 8. Extracto de la programacin de la Opcin 3 en MPLAB

6.2 Simulacin

Una vez que hemos elaborado y compilado satisfactoriamente nuestro cdigo en MPLAB,
procedemos con lo que concierne a la simulacin del circuito mediante el software de
National Instruments, Proteus Profesional en su versin 8.6 el cual me permitir verificar
el funcionamiento correcto del cdigo en conjunto con los integrados y dispositivos que
se pretenden usar para implementar el circuito en protoboard, a continuacin se muestra
el circuito a ser implementado en Proteus:

18
Figura 9. Presentacin de la simulacin en conjunto realizada en Proteus 8.6

Opcin 1
A continuacin se presenta en la Fig. la simulacin de la Opcin 1, donde por los pines
25 y 26 enviamos como entradas 0 que corresponden a dicha opcin, y por los puertos
A y E ingresan los datos de 8 bits, mostrando los resultados de la siguiente manera:

Figura 10. Simulacin de la opcin 1 en Proteus 8.6

19
Opcin 2
En la opcin 2, que corresponde a los pines 25 y 26 con valores de 0 y 1
respectivamente, ingresamos nmeros decimales por el teclado, los cuales son ledos y
luego desplegados en forma secuencial de la misma manera como fueron ingresados con
una E al terminar la muestra en pantalla, tal funcionamiento se puede ver en las Fig. a
continuacin:

Figura 11. Simulacin inicial de la opcin 2 en Proteus 8.6

Figura 12. Simulacin de la parte final de la opcin 2 en Proteus 8.6

20
Opcin 3

Para la tercera opcin ingresamos dos nmeros de 4 bits mediante los deepswitches, y
mediante el teclado ingresamos el signo de multiplicacin, el cual una vez ingresado
realizar la operacin matemtica, desplegando por el LCD los valores a multiplicarse
junto con su resultado correspondiente, as como se muestra en la Fig. a continuacin:

Figura 13. Simulacin de la opcin 3 en Proteus 8.6

6.3 Implementacin

Una vez que tanto el cdigo como la simulacin hayan funcionado en conjunto con la
ayuda de los softwares respectivos, vamos a proceder a plasmar lo que es nuestra solucin
a los enunciados planteados de manera fsica, armando los circuitos en el protoboard,
usando diferentes dispositivos como el LCD, el teclado, el PIC y diferentes dispositivos
que sern necesarios para el correcto armado y funcionamiento de nuestro circuito, a
continuacin en la Fig, se presenta el circuito armado en protoboard, con las conexiones
correctas para comenzar con las pruebas de funcionamiento:

21
Figura 14. Imagen que muestra el circuito final armado en protoboard

6.4 Pruebas de funcionamiento

22
7. Recomendaciones

Es necesario verificar con otra versin de Proteus el programa, ya que debido al


cambio de edicin del programa compila de la manera deseada o no.
Realizar la verificacin de funcionamiento de los puertos antes de cambiar la
programacin.
Realizar una comprobacin de la continuidad en las conexiones para evitar,
circuitos abiertos que eviten el correcto funcionamiento de nuestro proyecto.

8. Conclusiones

MPLAB con su complemento XC8, reducen la complejidad d ela programacin,


mostrndonos una interfaz similar a la del lenguaje C.
Las funciones del lenguaje C, brindan una facilidad al momento de trabajar con
datos o guardar variables, en el proceso.
La lectura de los ingresos binarios y del teclado 4x4, se realiza con un cdigo
menos extenso, al utilizado en lenguaje ensamblador.
El uso de Proteus, ayuda en la revisin de los errores en el cdigo ayudndonos
con la verificacin antes del montaje en la placa.

9. Referencias bibliogrficas

Introduccin a los microcontroladores, Jos Adolfo Gonzlez V., McGraw Hill


Microcontroladores PIC, Tavernier, Editorial Paraninfo
Microcontroladores PIC, La solucin en un solo chip, Angulo y otros, Editorial
Paraninfo
Microcontroladores PIC, Diseo de aplicaciones, Angulo y otros, McGraw Hill
Cursos sobre Microcontroladores PIC, Niveles Bsico y Avanzado, Tekcien Ltda.
Embedded Control Handbook, Microchip
PIC 16/17 microcontroller data Book, Microchip
MPASM assembler. Users Guide, Microchip
MPLAB IDE Users Guide, Microchip

23

Anda mungkin juga menyukai