Computing">
Nothing Special   »   [go: up one dir, main page]

INFORME Micro

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

“UNIVERSIDAD NACIONAL

DEL CENTRO DEL PERU”


“FACULTAD DE INGENIERIA
ELECTRICA Y ELECTRONICA”
CÁTEDRA:
MICROPROCESADORES Y ARQUITECTURA DEL .C

” IMPLEMENTACION DE UN RELOJ”

CÁTEDRATICO:
ING. RÚBEN GALEAS ARANA

RESPONSABLE:
CrISPIN PAUCAR IVAN

Ciudad Universitaria
2020
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR

I.- RESUMEN

En el presente informe se detalla el proceso de diseño de un RELOJ EN TIEMPO


REAL, en el cual usamos el programa proteus para la implementación del circuito y el
código CCSC (este nos sirve para programas para luego quemar en nuestro pico)
también usamos un PIC 16f887 y DS 3232 el circuito nos da como resultado y nos
muestra en la pantalla el día y la ora exacta.
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR

PALABRAS CLAVES

Funcionamiento y programación y quemado del código en el PIC

II.-OBJETIVOS

El objetivo principal de esta práctica es aplicar cada uno de los conocimientos adquiridos
en la catedra de microprocesadores y arquitectura del computador para el diseño de un
reloj en tiempo real usando el código CCS hacer nuestra programación para luego quemar
en el PIC 16F887 y el software proteus para la implementación del circuito y hacer una
compilación si función bien o no nuestro programa.

III.- MARCO TEORICO


1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
¿QUE ES PIC?
Un PIC es un circuito integrado programable, el cual contiene todos los componentes para
poder realizar y controlar una tarea, por lo que se denomina como un microcontrolador. Los
PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Tecnología
Inc . y derivados del PIC1650, originalmente desarrollados por la división de
microelectrónica de Instrumento general.
El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro, aunque
regularmente se utiliza como controlador de interfaz periférico (controlador de interfaz
periférico).
El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en
general una buena CPU, teníamos malas prestaciones de entrada y salida, y el PIC de 8 bits
se necesitaba en 1975 para mejorar el rendimiento del sistema que cita el peso de entrada /
salida a la CPU. El PIC utiliza un microcódigo simple almacenado en ROM para realizar
estas tareas; y aunque el término no se usa por aquel entonces, se trata de un diseño RISC
que ejecuta una instrucción cada 4 ciclos del oscilador.

TIPOS DE PIC
PIC modernos
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
Los viejos PIC con memoria PROM o EPROM se están renovando gradualmente por chips
con memoria Flash. Así mismo, el juego de instrucciones original de 12 bits del PIC1650 y
sus descendientes directos han sido reemplazados por juegos de instrucciones de 14 y 16
bits. Microchip todavía vende versiones PROM y EPROM de la mayoría de los PIC para
soporte de aplicaciones antiguas o grandes pedidos.
Pueden considerar tres grandes gamas de MCU PIC en la actualidad: Los básicos
(Linebase), los de medio rango (Mid Range) y los de alto rendimiento (alto rendimiento).
Los PIC18 son considerados de alto rendimiento y tienen entre sus miembros un PIC con
módulos de comunicación y protocolos avanzados (USB, Ethernet, Zigbee por ejemplo).
Clones del PIC
Por todos los lados surgen compañías que ofrecen versiones del PIC más baratas o
mejoradas. La mayoría suelen desaparecer rápidamente. Una de ellas que perdurando es
Ubicom (antiguamente Scenix) que vende clones del PIC que funciona mucho más rápido
que el original. OpenCores tiene un núcleo del PIC16F84 escrito en Verilog.
PIC inalámbricos
El microcontrolador rfPIC integra todas las prestaciones del PICmicro de Microchip con la
capacidad de comunicación inalámbrica UHF para aplicaciones RF de baja potencia. Estos
dispositivos ofrecen un diseño muy comprimido para ajustarse a cada vez más demandados
requisitos de miniaturización en aparatos electrónicos. Aun así, no parecen tener mucha
salida en el mercado.
PIC para procesado de señal (dsPIC)
Los dsPIC son el penúltimo lanzamiento de Microchip, comenzando a producirlos a gran
escala a finales de 2004. Son los primeros PIC con bus de datos inherente de 16 bits.
Incorporar todas las posibilidades de los anteriores PIC y ejecutar varias operaciones de
DSP implementadas en hardware, como multiplicación con suma de acumulador
(multiplicación-acumulación, o MAC), desplazamiento de barril, reversión de bits o
multiplicación de 16x16 bits.

PIC de 32 bits (PIC32)


Microchip Technology tuvo en noviembre de 2007 los nuevos microcontroladores de 32
bits con una velocidad de procesamiento de hasta 1.6 DMIPS / MHz con capacidad HOST
USB. Sus frecuencias de reloj pueden alcanzar los 80MHz a partir de los cuarzos afectados
de 4 a 5MHz gracias a un PLL interno. Funcionan a 3.3V en sus puertos de entrada y
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
salida, aunque el fabricante indica que salva en los pines con función analógica, en la
mayoría se toleran tensiones de hasta 5V. Disponibilidad de una arquitectura optimizada
con alto grado de paralelismo y núcleo de tipo M4K y una elevada capacidad de memoria
RAM y FLASH ROM. Todo ello hace que estos MCU permitan un procesamiento elevado
de información.

Arquitectura RISC
 El microcontrolador cuenta con solo 35 instrucciones diferentes
 Todas las instrucciones son uni-ciclo excepto por las de ramificación
 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
 Módulo USART mejorado
 Soporta las comunicaciones seriales RS-485, RS-232 y LIN2.0
 Auto detección de baudios

MÓDULO DS3231
El módulo DS3231 permitirá que podamos llevar un registro detallado del transcurso del
tiempo en nuestro microcontrolador. Los proyectos que podemos llevar a cabo con este
módulo van desde estaciones de sensores hasta alarmas y sondas de registro de datos.
En múltiples ocasiones vamos a necesitar que nuestros proyectos lleven un conteo
estricto sobre el tiempo transcurrido. Esto es imposible de conseguir con nuestro Arduino
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
debido a que el mismo no está capacitado para ello. Necesitamos un circuito que sea
capaz de mantener el conteo del tiempo aún cuando el microcontrolador esté apagado.
Afortunadamente existe el módulo DS3231.
Este módulo incluye un circuito integrado, el DS3231, además de un regulador de tensión,
una batería de 3.6 voltios (de las que se encuentran en los motherboard de las
computadoras), entre otras cosas (es capaz de medir temperatura).
Se comunica con Arduino utilizando el protocolo I2C, por lo que encontraremos los pines
VCC, GND, SCL y SDA.

Pantalla LCD
Una pantalla de cristal líquido o LCD (sigla del inglés Liquid Crystal Display) es una
pantalla delgada y plana formada por un número de píxeles en color o monocromos
colocados delante de una fuente de luz o reflectora. A menudo se utiliza en dispositivos
electrónicos de pilas, ya que utiliza cantidades muy pequeñas de energía eléctrica.
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
PULSADORES
Es un interruptor o pulsador eléctrico es un dispositivo que permite desviar o interrumpir el
curso de una corriente eléctrica. En el mundo moderno sus tipos y aplicaciones son
innumerables, van desde un simple que apaga o enciende una bombilla, hasta un
complicado selector de transferencia automático de múltiples capas, controlado por
computadora.

Dependiendo de la calidad de los materiales empleados para hacer los pulsadores


dependerá la vida útil de este importante producto. La mayoría de fabricantes utiliza una
aleación de latón (60% cobre, 40% zinc). Esta aleación es muy resistente a la corrosión y
es un conductor eléctrico apropiado. Otros hacen uso del aluminio que es también un
buen conductor y es muy resistente a la corrosión.

PROTOBOARD
Una placa de pruebas o placa de inserción (en inglés Protoboard o Breadboard) es un
tablero con orificios que se encuentran conectados eléctricamente entre sí de manera
interna, habitualmente siguiendo patrones de líneas, en el cual se pueden insertar
componentes electrónicos y cables para el armado y prototipo de circuitos electrónicos y
sistemas similares. Está hecho de dos materiales, un aislante, generalmente un plástico, y
un conductor que conecta los diversos orificios entre sí. Uno de sus usos principales es la
creación y comprobación de prototipos de circuitos electrónicos antes de llegar a la
impresión mecánica del circuito en sistemas de producción

 MATERIALES
En la práctica realizada usamos los siguientes softwares, aplicaciones y equipos de calculo:
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
 PIC16F887 microcontrolador

 DS3231 (o DS3232) RTC - Hoja de datos

 Pantalla LCD de 16x2


1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
 2 x pulsador

Resistencia variable de 10K ohmios


 2 x resistencias de 10K ohmios
 Condensador de 0.1 µF (condensador de
desacoplamiento necesario para el DS3231)
 Fuente de voltaje de 5V
 Protoboard
 Cables de puente

IV.- PROCEDIMIENTO
1. Una vez que tenemos la idea de nuestro proyecto y para hacer el reloj usando el
código en CCS:

#fuses NOMCLR NOBROWNOUT NOLVP INTRC_IO

#use delay(clock = 8MHz)

#include <lcd.c>

#use fast_io(B)

#use I2C(master, I2C1, FAST = 100000)

char time[] = "TIME: : : ";


1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
char calendar[] = "DATE: / /20 ";

unsigned int8 i, second, minute, hour, date, month, year;

void DS3231_display(){

second = (second >> 4) * 10 + (second & 0x0F);

minute = (minute >> 4) * 10 + (minute & 0x0F);

hour = (hour >> 4) * 10 + (hour & 0x0F);

date = (date >> 4) * 10 + (date & 0x0F);

month = (month >> 4) * 10 + (month & 0x0F);

year = (year >> 4) * 10 + (year & 0x0F);

time[12] = second % 10 + 48;

time[11] = second / 10 + 48;

time[9] = minute % 10 + 48;

time[8] = minute / 10 + 48;

time[6] = hour % 10 + 48;

time[5] = hour / 10 + 48;

calendar[14] = year % 10 + 48;

calendar[13] = year / 10 + 48;

calendar[9] = month % 10 + 48;

calendar[8] = month / 10 + 48;

calendar[6] = date % 10 + 48;

calendar[5] = date / 10 + 48;

lcd_gotoxy(1, 1); // Go to column 1 row 1

printf(lcd_putc, time); // Display time

lcd_gotoxy(1, 2); // Go to column 1 row 2

printf(lcd_putc, calendar); // Display calendar

void blink(){

int8 j = 0;

while(j < 10 && input(PIN_B0) && input(PIN_B1)){


1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
j++;

delay_ms(25);

unsigned int8 edit(parameter, xx, yy){

while(!input(PIN_B0)); // Wait until button RB0 is released

while(TRUE){

while(!input(PIN_B1)){ // If button RB1 is pressed

parameter++;

if(i == 0 && parameter > 23) // If hours > 23 ==> hours = 0

parameter = 0;

if(i == 1 && parameter > 59) // If minutes > 59 ==> minutes = 0

parameter = 0;

if(i == 2 && parameter > 31) // If date > 31 ==> date = 1

parameter = 1;

if(i == 3 && parameter > 12) // If month > 12 ==> month = 1

parameter = 1;

if(i == 4 && parameter > 99) // If year > 99 ==> year = 0

parameter = 0;

lcd_gotoxy(xx, yy);

printf(lcd_putc,"%02u", parameter); // Display parameter

delay_ms(200); // Wait 200ms

lcd_gotoxy(xx, yy);

lcd_putc(" ");

blink();

lcd_gotoxy(xx, yy); // Display two spaces

printf(lcd_putc,"%02u", parameter); // Display parameter

blink();
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
if(!input(PIN_B0)){ // If button RB0 is pressed

i++; // Increament 'i' for the next parameter

return parameter; // Return parameter value and exit

void main(){

setup_oscillator(OSC_8MHZ); // Set internal oscillator to 8MHz

port_b_pullups(3); // Enable internal pull-ups for RB0 & RB1

lcd_init(); // Initialize LCD module

lcd_putc('\f'); // LCD clear

while(TRUE){

if(!input(PIN_B0)){ // If RB0 button is pressed

i = 0;

hour = edit(hour, 6, 1);

minute = edit(minute, 9, 1);

date = edit(date, 6, 2);

month = edit(month, 9, 2);

year = edit(year, 14, 2);

// Convert decimal to BCD

minute = ((minute / 10) << 4) + (minute % 10);

hour = ((hour / 10) << 4) + (hour % 10);

date = ((date / 10) << 4) + (date % 10);

month = ((month / 10) << 4) + (month % 10);

year = ((year / 10) << 4) + (year % 10);

// End conversion

// Write data to DS3231 RTC

i2c_start(); // Start I2C protocol

i2c_write(0xD0); // DS3231 address


1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
i2c_write(0);

i2c_write(0); // Reset sesonds and start oscillator

i2c_write(minute); // Write minute value to DS3231

i2c_write(hour); // Write hour value to DS3231

i2c_write(1); // Write day value (not used)

i2c_write(date); // Write date value to DS3231

i2c_write(month); // Write month value to DS3231

i2c_write(year); // Write year value to DS3231

delay_ms(200); // Wait 200ms

i2c_start(); // Start I2C protocol

i2c_write(0xD0); // DS3231 address

i2c_write(0); // Send register address

i2c_start(); // Restart I2C

i2c_write(0xD1); // Initialize data read

second = i2c_read(1); // Read seconds from register 0

minute = i2c_read(1); // Read minuts from register 1

hour = i2c_read(1); // Read hour from register 2

i2c_read(1); // Read day from register 3 (not used)

date = i2c_read(1); // Read date from register 4

month = i2c_read(1); // Read month from register 5

year = i2c_read(0); // Read year from register 6

i2c_stop(); // Stop I2C protocol

DS3231_display(); // Diaplay time & calendar

delay_ms(50);

}
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
2. Una vez hecho el programa en el código CCS. Como segundo paso tenemos
Diseñar nuestro circuito en proteus para ver si el código está correcto

3. Una vez que simulado en el proteus pasamos armar el siguiente circuito en el protoboard
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
1
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR

VI.- CONCLUSIONES

 Aplicamos los conocimientos aprendidos en clase de microcontroladores el manejo


del programa CCS
 Aprendimos a quemar un PiC

VII.- RECOMENDACIONES
 Tener cuidado en armar el circuito ya que si conectamos un cable en una
posición errónea no podríamos ver la hora y fecha exacta
 Al programar en el código CCS al momento de hacer corre el programa
debemos de percatar que este bien el programa para que así nos salgue el
proyecto como lo deseamos

También podría gustarte