You are on page 1of 12

Instituto Tecnológico Superior de

Ciudad Hidalgo
Ingeniería Mecatrónica
356G
Jose Noel Dominguez Miralrio
Juan Manuel Maldonado
Cruz Erick Villegas
Gonzales Ernesto Martínez Ávila
Objetivo
Aplicar la teoría que se vio en clase para programar un microcontrolador que
realice tres funciones, mediante tres puch button y a continuación simularlo con
la ayuda del software de proteus.

Desarrollo

Para la realización de esta practica necesitamos:

ˆ
ˆ

Proteus 7.9 (Software).
MPLAB X IDE v2.15 (Software).

Primero lo que se realizo fue el diseño del circuito en proteus el cual quedo así:

1

Después de haber diseñado el circuito lo que se hizo fue la programación de nuestro pick en el programa de MPLAB X IDE v2.15 , creamos un nuevo proyecto

2

Despues le damos click en Next y seleccionamos el pic que vamos a trabajar
en este caso fue el PIC16F1827

3

Despues damos en next Selecionamos ICD 3

4

Despues Damos click en Next y seleccionamos nuestro programador XC8

5

Damos click en next y escojemos el nombe a nuestro proyecto y el origen.

6

Despues copiamos el archivo ex_lcd a nuestra carpeta de origen ya que si
no lo hacemos no podremos cargar la libreria a nuestro programa

7

Agregamos el archivo ex_lcd a nuestra cabezara del programa

8

Este es el codigo que realizamos
#include <xc.h>
#include <stdio.h>
#dene _XTAL_FREQ 32000000 //linea para uso de delays
#include "ex_lcd.h"
// CONFIG1
#pragma cong FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma cong WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma cong PWRTE = ON // Power-up Timer Enable (PWRT enabled)
#pragma cong MCLRE = ON // MCLR Pin Function Select (MCLR/VPP
pin function is MCLR)
#pragma cong CP = OFF // Flash Program Memory Code Protection
(Program memory code protection is disabled)
#pragma cong CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma cong BOREN = ON // Brown-out Reset Enable (Brown-out
Reset enabled)
#pragma cong CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma cong IESO = OFF // Internal/External Switchover (Internal/External
Switchover mode is disabled)

9

#pragma cong FCMEN = OFF // Fail-Safe Clock Monitor Enable (FailSafe Clock Monitor is disabled)
// CONFIG2
#pragma cong WRT = OFF // Flash Memory Self-Write Protection (Write
protection o )
#pragma cong PLLEN = ON // PLL Enable (4x PLL enabled)
#pragma cong STVREN = ON // Stack Overow/Underow Reset Enable
(Stack Overow or Underow will cause a Reset)
#pragma cong BORV = LO // Brown-out Reset Voltage Selection (Brownout Reset Voltage (Vbor), low trip point selected.)
#pragma cong LVP = OFF // Low-Voltage Programming Enable (Highvoltage on MCLR/VPP must be used for programming)
int main(void) {
unsigned char i, j;
unsigned char buer1[20];
//conguracion del oscilador
OSCCONbits.SCS=0;
OSCCONbits.IRCF=0b1110;
ANSELB=0; //Puerto B como digital
ANSELA=0; //Puerto A como digital
//conguracion e inicializacion
/*/PORTA=0; //limpia puerto A
PORTB=0;//Limpia puerto B*/
ANSELA=0; //Congura como digital el puerto A
ANSELB=0; //Congura como digital el puerto B
TRISAbits.TRISA5=1;
TRISB=0b10010010;
/*TRISA=0b11111111; //Todo el puerto A como entrada
TRISB=0b10000000; //Todo el puerto B como salida excepto RB7
*/
OPTION_REGbits.nWPUEN=0;
WPUBbits.WPUB7=1;
WPUBbits.WPUB4=1;
WPUBbits.WPUB1=1;
Lcd_Init(); //inicializamos el lcd
Lcd_Cmd(LCD_CLEAR); //limpiamos lcd
Lcd_Cmd(LCD_CURSOR_OFF); //apagamos el cursor
while (PORTBbits.RB7*PORTBbits.RB4*PORTBbits.RB1==1){
Lcd_Out(1, 4, "Presione algun");
Lcd_Out(2, 1, "Boton");
__delay_ms(1000);
Lcd_Cmd(LCD_CLEAR);
}
while(PORTBbits.RB7==0){
Lcd_Out(1, 4, "A presionado");
Lcd_Out(2, 1, "El boton 1 :D");

10

__delay_ms(1000);
Lcd_Cmd(LCD_CLEAR);
}
while(PORTBbits.RB4==0){
Lcd_Out(1, 4, "A Presionado el ");
Lcd_Out(2, 1, "Boton 2:3");
__delay_ms(1000);
Lcd_Cmd(LCD_CLEAR);
}
while(PORTBbits.RB1==0){
Lcd_Out(1, 4, "A presionado el ");
Lcd_Out(2, 1, "boton 3 :p");
__delay_ms(1000);
Lcd_Cmd(LCD_CLEAR);
}
return 0;
}
Despues se cargo el programa a nuestro microcontrolador para comprobar
que realizara las indicaciones que le dimos mientras nuestro programa

11

Conclusiones
Jose Noel
Fue muy interesante la practica ya que solo había trabajado en arduino es algo
similar , se me complico al momento de asignar puertos en el microcontrolador
y al decidir con que ciclo realizarlo ya que primero lo realizamos con un IF y no
funciono y nos tuvimos que ir al While .
Juan Manuel
Se me complico al intentar compilar marcaba un error en mi pc , pero al nal
logramos realizar el circuito se me hizo complicado al insertar la nueva librería
ya que no había echo eso y también en la utilización del ciclo while .
Erick
En esta practica aprendí cosas nuevas y aplique la teoría que vi en clase se me
hizo algo difícil ya que nunca había programado este tipo de herramientas y me
costó trabajo analizar lo que se quería hacer también como comprender el tipo
de lenguaje que maneja el software.
Ernesto
Se trabajó con un nuevo programa y conociendo diferentes códigos se logró
programar un PIC y así simularlo en proteus la parte que más se me hizo difícil
fue cuando utilizamos el ciclo while ya que eso no lo vimos en clase y fue necesario
investigar sobre el .

12