Está en la página 1de 18

“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
16
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.
16
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


16
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
16
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
16
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
16
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.
16
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:
16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
 PIC16F887 microcontrolador

 DS3231 (o DS3232) RTC - Hoja de datos

 Pantalla LCD de 16x2


16
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:
#define LCD_RS_PIN PIN_D0

#define LCD_RW_PIN PIN_D1

#define LCD_ENABLE_PIN PIN_D2

#define LCD_DATA4 PIN_D3

#define LCD_DATA5 PIN_D4

#define LCD_DATA6 PIN_D5


16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
#define LCD_DATA7 PIN_D6

#include <16F887.h>

#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: : : ";

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;


16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
lcd_gotoxy(1, 1);

printf(lcd_putc, time);

lcd_gotoxy(1, 2);

printf(lcd_putc, calendar);

void blink(){

int8 j = 0;

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

j++;

delay_ms(25);

unsigned int8 edit(parameter, xx, yy)

while(!input(PIN_B0));

while(TRUE){

while(!input(PIN_B1)){

parameter++;

if(i == 0 && parameter > 23)

parameter = 0;

if(i == 1 && parameter > 59)

parameter = 0;

if(i == 2 && parameter > 31)

parameter = 1;

if(i == 3 && parameter > 12)

parameter = 1;

if(i == 4 && parameter > 99)

parameter = 0;

lcd_gotoxy(xx, yy);
16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
printf(lcd_putc,"%02u", parameter);

delay_ms(200);

lcd_gotoxy(xx, yy);

lcd_putc(" ");

blink();

lcd_gotoxy(xx, yy);

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

blink();

if(!input(PIN_B0)){

i++;

return parameter;

void main(){

setup_oscillator(OSC_8MHZ);

port_b_pullups(3);

lcd_init();

lcd_putc('\f');

while(TRUE){

if(!input(PIN_B0)){

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


16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
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);

i2c_start();

i2c_write(0xD0);

i2c_write(0);

i2c_write(0);

i2c_write(minute);

i2c_write(hour);

i2c_write(1);

i2c_write(date);

i2c_write(month);

i2c_write(year);

delay_ms(200);

i2c_start();

i2c_write(0xD0);

i2c_write(0);

i2c_start();

i2c_write(0xD1);

second = i2c_read(1);

minute = i2c_read(1);

hour = i2c_read(1);

i2c_read(1);

date = i2c_read(1);

month = i2c_read(1);
16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
year = i2c_read(0);

i2c_stop();

DS3231_display();

delay_ms(50);

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
16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR

3. Una vez que simulado en el proteus pasamos armar el siguiente circuito en el protoboard
16
MICROPROCESADORES Y
ARQUITECTURA DEL
COMPUTADOR
16
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