Laboratroio Espe

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

DEPARTAMENTO DE ELECTRICA Y ELECTRONICA

Abril 2016 – Agosto 2016

ÁREA DE SISTEMAS DIGITALES

ASIGNATURA: MICROCONTROLADORES NRC: 3234

Práctica 3.1

Tema: Programación básica en C

Docente: Carlos Ponce


Equipo #: 1 Integrantes: 1. Almachi Diego
2. Fernández Leonardo

Base Aspectos de evaluación Calificación


0.25 Fundamento teórico
0.25 Diagrama de bloques
0.50 Tabla de asignación de variables
3.5 Informe 1.00 Diagrama de flujo
1.00 Programa
0.25 Conclusiones
0.25 Diagrama electrónico
1.00 Presentación del circuito, condiciones
4.5 Funcionamiento
3.50 Indicador tensión LCD
2.0 Defensa

10 Total

28-01-2019 Sangolquí
DEPARTAMENTO DE ELECTRICA Y ELECTRONICA

UNIDAD Nº3
Informe de práctica No. 3.1

1. Tema: Programación básica en C

2. Fecha de entrega: 25/01/2018

3. Objetivos:

3.1.Objetivo General.
Programar microcontroladores en lenguaje C

3.2.Objetivos Específicos.
Aplicar los conocimientos aprendidos en clase sobre la programación en C
en los emuladores MpLabX y Pic C compiler añadiedno los conocimientos
previamente aprendidos sobre la descripción general del Pic 16f877a y
16f268a.

4. Materiales ( Considerar para dos estaciones)

- Microcontrolador PIC 16F877A.


- LCD 16x2
- Fuente de alimentación.
- Protoboard
- Multímetro
- Cristal 4Mhz
- Capacitores, resistencias, dipswitch, leds. Cables.
- Computador
- Grabador de PICs

5. Procedimiento

En base al Pic 16F877A, diseñar un voltímetro digital, en donde la variación de tensión que
ingresa por el canal 0 del ADC, pueda ser visualizada en un LCD hasta con dos décimas de
resolución.
NOTA:
Se presenta los siguientes requerimientos para la implementación:
- La programación será en lenguaje C.

6. Contenido
6.1.Fundamento teórico

6.1.1. Pic

Es un microcontrolador que usa del tipo RISC, posee una arquitectura


minimalista. Los microcontroladores que produce Microchip cubren
una amplio rango de dispositivos cuyas características pueden variar
como sigue:

 Tecnología de la memoria incluida (EEPROM, ROM, Flash)


 Voltajes de operación (desde 2.5 V. Hasta 6V)
 Empaquetado (desde 8 patitas hasta 80 patitas)
 Frecuencia de operación (Hasta 48 Mhz)

Ilustración 1 (Imagen tomada del pdf 2DESCRIPCION GENERAL DEL PIC 16F877=

6.1.2. Lenguaje C

C es un lenguaje de programación de propósito general que ofrece


economía sintáctica, control de flujo y estructuras sencillas y un buen
conjunto de operadores. No es un lenguaje de muy alto nivel y más
bien un lenguaje pequeño, sencillo y no está especializado en ningún
tipo de aplicación. Esto lo hace un lenguaje potente, con un campo
de aplicación ilimitado y sobre todo, se aprende rápidamente. En
poco tiempo, un programador puede utilizar la totalidad del lenguaje.

Este lenguaje ha sido estrechamente ligado al sistema operativo


UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo,
este lenguaje no está ligado a ningún sistema operativo ni a ninguna
máquina concreta. Se le suele llamar lenguaje de programación de
sistemas debido a su utilidad para escribir compiladores y sistemas
operativos, aunque de igual forma se puede desarrollar cualquier tipo
de aplicación.
6.1.3. Pic C compiler

PIC C es una herramienta que permite programar un


microcontrolador por medio de lenguaje C, a diferencia del lenguaje
máquina o ensamblador (ASM) que se maneja por defecto, este hace
los programas más fáciles de escribir, analizar y comprender. PIC C
ha sido desarrollado por PIC CMU, y cuenta con una gran cantidad
de librerías o drivers que permiten optimizar los programas en el
momento de manejar dispositivos externos, tales como pantallas
LCD, memorias, conversores, etc. Queremos destacar que el orden
de este mini-tuto se basó principalmente en el libro Compilador C
CCS y simulador Proteus para Microcontroladores PIC, de Eduardo
García.

 Crear un Proyect Wizard nuevo.

 Elegir el microcontrolador a utilizar dado por la opción DEVICE.

 Crear un nuevo archivo con extensión .C y nombre cualquiera

 Agregar el archivo .C como un SOURCE FILE.

 Seleccionar la opción build all.

 Seleccionar si el dese que el programa solo funcione desde el


ordenador donde fue realizado o no (depende del usuario).

6.1.4. LCD

El esquema correspondiente al circuito de este display se encuentra


en la siguiente figura:

Ilustración 2(Display led "Tomado de Informatica.UV")

Los displays LCD son mayoritariamente estándar y se controlan de formas


muy parecidas, incluso cuando no coincide el número de caracteres. En la
figura podemos ver los elementos básicos de un display LCD estándar. Por
un lado se tiene el bus de datos D0..D7 que en este caso está conectado al
puerto B del PIC. Este bus de datos puede ser de entrada al LCD (para
escribir caracteres y enviar instrucciones) o puede ser de salida del LCD
(para poder leer el estado, por ejemplo). El LCD tiene tres señales de
control: E es la de habilitación y está conectada al bit 2 del puerto A del
PIC, sirve para habilitar el LCD y como vemos está conectada a un
interruptor para deshabilitar permanentemente el LCD; la señal R/W sirve
para indicar operación de lectura o escritura; por último, se la señal RS es
la de sincronismo de datos e instrucciones y está conectada al bit 1 del
puerto A. Además, el LCD tiene señales para alimentación y una señal
(VEE) que sirve para controlar el contraste de la pantalla.

Para simplificar las operaciones de escritura y control en el LCD, se provee


un fichero (lcd.h) disponible en la página web de la asignatura. Este fichero
contiene varias rutinas muy útiles entre las que destacan las siguientes:

• LCD_Prepara() Esta rutina prepara los puertos A y B de forma adecuada


y pone las señales de control en un estado de preparado.
• LCD_Ini() Esta rutina envía al LCD la secuencia de inicialización. Esta
rutina es necesaria al encender el LCD y debe venir siempre después de la
rutina anterior.
• LCD_Comando(char) Esta rutina permite enviar cualquier comando o
instrucción al LCD. Hay numerosas instrucciones, todas ellas se pueden
consultar en el manual del LCD que se puede encontrar en la página web
de la asignatura. Por ejemplo:

 LCD_Comando(0b00111100) indica que el bus de datos es de 8


bits, que se van a utilizar las 2 líneas del LCD con una fuente 5x10.
 LCD_Comando(0b00001110) enciende el LCD para que se vea,
enciende el cursor y le dice que no parpadee.
 LCD_Comando(0b10000000 + pos) mueve el cursor hasta una
posición determinada por el parámetro pos:; // Pos = 0x40 para el
principio de la segunda fila.
 LCD_Comando(0b00000001) hace un reset del LCD barrando su
contenido y posiciona el cursor en la posición 0x00.

• LCD_Dato(char) Si todo se ha iniciado bien, esta instrucción muestra por


pantalla el carácter que se le pase en la posición actual del cursor. En
principio basta con estas cuatro funciones para operar con el LCD.

Es bastante aconsejable tener cerca el manual del LCD para ver los
comandos de control, ya que son muy útiles. Estos comandos permiten
apagar y encender la pantalla, mostrar el cursor, llevar el cursor a una
determinada posición, limpiar la pantalla, etc. Es importante que los
conmutadores de la placa EduMIC que sirven para elegir Analógico o
Digital estén en su posición central (LIBRE) de esta manera los per
6.2.Diagrama de bloques

7 DISPLAY
Voltaje 16F877A
LCD

6.3.Tabla de asignación de variables


VALOR_ADC Toma el valor de 1 a 1023
VOLTAJE Toma el valor de 1 a 5

6.4.Configuración del pic


 NOCPD,  #define lcd_data_port
 NOWDT getenv("sfr:portd")
 BROWNOUT  #define lcd_enable_pin
 PUT,XT pin_d2
 NOWRT  #define lcd_rs_pin pin_d0
 NOLVP  #define lcd_rw_pin pin_d1
 NODEBUG  #include <lcd.c>
 NOPROTECT

6.5.Diagrama de flujo

CONFIG PIC16F788A

Setup_ADCCLOCK INTER
Setup_ADC PORTS(A0)
LCD_FNIT

RETURN
CONFIG PIC16F788A

CONFIGPIC

LCD_PUTC”VOLTIMETRO”

DELAY_ms

Voltaje=(s*valorADC)/1023

LCD_PUTCVoltaje

6.6.Programa

#include <16f877a.h>
#device ADC = 10
#fuses
NOCPD,NOWDT,BROWNOUT,PUT,XT,NOWRT,NOLVP,NODEBUG,N
OPROTECT
#use delay(clock=4M)
#define lcd_data_port getenv("sfr:portd")
#define lcd_enable_pin pin_d2
#define lcd_rs_pin pin_d0
#define lcd_rw_pin pin_d1
#include <lcd.c>
int16 valor_adc;
float voltaje;

void main(){
SETUP_ADC(ADC_CLOCK_internal);
SETUP_ADC_PORTS(ALL_ANALOG);
SET_ADC_CHANNEL(0);
lcd_init();
lcd_putc("\f VOLTIMETRO");
WHILE(TRUE){
delay_ms(100);
valor_adc=READ_ADC();
voltaje=5.0*valor_adc/1023.0;
lcd_gotoxy(3,2);
printf(lcd_putc,"VALOR= %fV",voltaje);
}
}

7. Diagrama electrónico

8. Conclusiones
 El uso del convertidor análogo digital nos proporciona como su nombre
nos dice una conversión de un dato analógico a digital, pero hay que
tomar en cuenta la cantidad de bits que usamos al tomar las muestras de
la señal análoga, ya que, mientras más muestras, más precisa será nuestra
medición, en este caso como diseñamos un multímetro, necesitamos la
máxima cantidad de muestras por lo cual se configuro como el adc de 10
bits.
 El cálculo necesario que se realiza para la conversión de los datos que
muestra el ADC, ayudara a la visualización de nuestro dato
correctamente, una variación o mal cálculo de este, provocaría un fallo a
la salida ya que nos muestra datos erróneos.

9. Bibliografía

Fernando E. PRIMERA 2007 Español Marcombo


Microcontroladores: Valdés Pérez,
fundamentos y aplicaciones Ramón Pallás
con PIC Areny
Programación de Ibrahim Dogan PRIMERA 2006 Español Marcombo
microcontroladores PIC

También podría gustarte