You are on page 1of 16

ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

11. Practica Contador de 0 a 9 seguido

Objetivo: Hacer un contador que vaya de 0 a 9


Descripción: El contador se mostrara en el display de 7 segmentos en las Unidades y con un
intervalo de tiempo ira cambiando comenzando con el cero hasta llegar al 9 y volver a
repetir el ciclo.
Desarrollo:
Para inicializar este proyecto se debe de configurar todos los puertos del Display 7
Segmentos para que comiencen a hacer un contador, debemos basarnos en la configuración
de un cátodo o ánodo común de 7 segmentos, al igual que conocer sus características de
para ejecutar el contador o mostrador cada ánodo u cátodo tienen 7 letras que describen a
cada led que prende de un cátodo o ánodo estos son a, b, c, d, e, e, f ,g , pt , estos catodos
deben de tener un código hexadecimal para ser activados, y estos hay que saber cómo
usarlos, estos van de 0 a 15 dicho así hablando hexadecimal seria, 00 a FF.

short numero[ 10] = {0X5F, 0X41, 0X9D, 0XD5, 0XC3, 0XD6, 0XDE, 0X45, 0XDF, 0XD7};
short unidades=0;
short intervalo =0;
void main() {

ANSEL=0;
ANSELH=0;

TRISA.F4=0;
TRISA.F2=0;
TRISA.F6=0;
TRISC.F0=0;

PORTA.F2=1;
PORTA.F4=1;
PORTA.F6=1;
PORTC.F0=1;
TRISD=0;
PORTD=0;

while(1){
//PORTC.F0=0;
PORTD=numero [unidades]; //ENVIA UNIDADES
PORTA.F6=0;
Delay_ms (200);
PORTA.F6=1;
PORTA.F4=1;
intervalo++;
if(intervalo>1) {
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

intervalo=0;
unidades++; //INCREMENTA UNIDADES
if(unidades>9)
{
unidades=0; //REINICIO DE DECENAS
}
}
}
}
Conclusiones: Esta fue nuestra primera practica con displays donde pudimos observar
como es que se puede formar por medio de los segmentos el contador de la manera en la
que querramos que funcionen los displays .

12. Practica Contador de 00 a 99 en Display 7 Segmentos


ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

Practica 1
Objetivo: El alumno programara un contador de 0 a 99 en un display y 7 segmentos
Realizar un contador de 0-99
Breve descripción de la práctica:
En esta practica podremos observar un contador mas complejo de 0 a 99 en el display de la
tabla poniendo lo aprendido en clases anteriores.

Desarrollo de la practica:
short numero[10]={0x5F,0x41,0x9D,0xD5,0xC3,0xD6,0xDE,0x45,0xDF,0xD7};
short unidades=0, decenas=0, centenas=0;
short intervalo=0;

void main() {
ANSEL=ANSELH=0;
TRISA.F4=TRISA.F2=TRISA.F6=0;
PORTA.F4=PORTA.F2=PORTA.F6=1;
TRISD=0;
PORTD=0;

unidades=decenas=centenas=0;
while(1){
PORTA.F4=1;
PORTD=numero[unidades];
PORTA.F6=0;
Delay_ms(3);
PORTA.F6=1;
PORTD=numero[decenas];
PORTA.F2=0;
Delay_ms(3);

PORTA.F2=1;
PORTD=numero[centenas];
PORTA.F4=0;
Delay_ms(3);

if(intervalo++>50){
intervalo=0;
unidades++;

if(unidades>9){

unidades=0;
decenas++;
}
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

if(decenas>9){

decenas=0;
centenas++;
}

if(centenas>9){

centenas=0;
intervalo=0;
}
}
}
}

Conclusiones:
Con la siguiente practica pudimos observamos que podemos programar diferentes conteos
en un display, poniendo lo aprendido en clase y experimentando con los códigos, como va
de unidades, decenas y centenas.

13. PRACTICA Dado Electrónico de 0 a 6 con Push-Buttom B


ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

Objetivo: El alumno podrá programar un contador de 0a 6 que nos permita escoger un


numero al azar por medio de un push buttom.

Desarrollo:
Se deberá configurar el push buttom al puerto b0 para que se pueda mandarel contador al
puerto D de los display. Para que se pueda llevar esto acabo se tienen que activar las
resistencias pull up y así no tener problemas con el contador o el push buttom

// DADO ELECTRONICO N2 USANDO TABLAS

void main() {

int const display [7]

={ 0XF5, 0X41, 0X9D, 0XD5, 0XC3, 0XD6, 0XDE};//Contador de 1 a 7

int x =0, control=0;

PORTB.F0=1; //Configuración como entrada

OPTION_REG.NOT_RBPU=0; //Resistencias Pull up Activadas en Puerto B

ANSEL=0;
ANSELH=0;

TRISA.F2=0;
TRISA.F4=0;
TRISA.F6=0;
TRISA.F0=0;

PORTA.F2=1;
PORTA.F4=1;
PORTA.F6=1;
PORTC.F0=1;
PORTB.F0=1;

PORTD=0;
TRISD=0;

PORTD=display[x];
while (1){

if(PORTB.F0==0)// EL PUERTO B CONDICIONADO PARA ACTIVAR AL PUERTO D


ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

{
PORTA.F6=1;

PORTD=display[x];
PORTA.F6=0;
x++;
control=1;
PORTA.F6=0;
if(x==7)
x=1;
}

if(PORTB.F0==0 &&control==1)
Delay_ms(15);
//PORTD=0x05F;
control=1;

}
}
OPTION_REG.NOT_RBPU: Sirve para que las resistencias inactivas del Puerto B se activen

Conclusión: En esta practica pudimos observar otra aplicación de los contadores y los
display , simulando un dado electrónico además pudimos observar las funciones de las
resistencias pull up algo que nos ayuda a entender mejor sobre los display.
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

14. PRACTICA Impresión de caracter HOLA en LCD

Objetivo: El alumno comenzara a programar y entender mejor el uso del LCD en el


PIC16F887 por medio de palabras
Desarrollo: para poder llevar acabo esta practica es necesario tener en cuenta diferentes
funciones y códigos que nos serán de utilidad durante nuestro tema de LCD.

//Conexiones del Modulo LCD

sbit LCD_RS at RC5_bit; //Son para configurar los datos de la LCD y habilitarlos
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISC5_bit; //Sirve para mandarle datos a la LCD y ponerlos


como salida

sbit LCD_EN_Direction at TRISD1_bit;


sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

//FIN DE CONEXIONES DE MODULO LCD

void main(void) {
ANSEL=0;
ANSELH=0;
C1ON_bit=0;
C2ON_bit=0; //DESABILITA COMPARADORES

TRISC.F0=0;
TRISA.F4=0;
TRISA.F2=0;
TRISA.F6=0;

PORTC.F0=1;
PORTA.F4=1;
PORTA.F2=1;
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

PORTA.F6=1;
{
Lcd_Init(); //INICIO DE LCD
Lcd_Chr_Cp ('H');
Lcd_Chr_Cp ('O');
Lcd_Chr_Cp ('L');
Lcd_Chr_Cp ('A');
//ESTAS FUNCIONES IMPRIMEN LETRA A LETRA HOLA
while(1) //BUCLE INFINITO
{
}
}
}
Lcd_Chr_Cp: Sirve para dar impresión de un solo carácter
Lcd_Init(): Sirve para dar inicio al LCD

Conclusión: Esta practica nos ayudo mucho a comprender mejor el uso del LCD en nuestra
tabla además de que es bastante interesante el poder entender el como es que podemos
desplazar palabras en el LCD por medio de la programación.
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

15.PRACTICA Impresión de caracteres por renglón

Objetivo: El alumno tendrá que posicionar las palabras o caracteres en el LCD y acomodarlos
en el renglón en el que nos guste.
Desarrollo:En esta practica pondremos a prueba lo aprendido solo que se le harán unas
modificaciones por medio de nuevas conexiones que nos ayudaran a colocar las palabras
en otro renglón lo que nos ayudara a tener un mejor manejo del LCD.
//Conexiones del Modulo LCD

sbit LCD_RS at RC5_bit;


sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISC5_bit;


sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

//FIN DE CONEXIONES DE MODULO LCD

void main () {
ANSEL=0;
ANSELH=0;
C1ON_bit=0;
C2ON_bit=0; //DESABILITA COMPARADORES

TRISC.F0=0;
TRISA.F4=0;
TRISA.F2=0;
TRISA.F6=0;

PORTC.F0=1;
PORTA.F4=1;
PORTA.F2=1;
PORTA.F6=1;
{
Lcd_Init(); //INICIO DE LCD
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

Lcd_Chr_Cp ('H');
Lcd_Chr_Cp ('O');
Lcd_Chr_Cp ('L');
Lcd_Chr_Cp ('A');
Lcd_Chr(1,6,'1'); //IMPRIME EL CARÁRTER 1, EN LA FILA 1, COLUMNA 6
Lcd_Chr(2,7,'2'); //IMPRIME EL CARÁRTER 2, EN LA FILA 2, COLUMNA 7
//ESTAS FUNCIONES IMPRIMEN LETRA A LETRA HOLA
while(1) //BUCLE INFINITO
{
}
}

}
Lcd_Chr( 0, 0 ´0´);: Sirve para mandar las palabras o caracteres en lugares específicos del
LCD, ya sean filas columnas o espacios

Conclusión: Esta práctica nos ayudo a tener un mejor manejo y entendimiento del LCD ya
que solo tuvimos que agregar nuevas conexiones que nos ayudaron a poder observar de
una manera física el uso de ellas al poder notar como es que podíamos cambiar las palabras
o caracteres en el renglón que quisiéramos lo que nos sirvió de mucho.
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

16. Cambios de Texto

Objetivo: EL alumno realizara un programa con nuevas conexiones que le facilitaran la


manera de colocar un texto en el LCD facilitando su uso.
Desarrollo:
//Conexiones del Modulo LCD

sbit LCD_RS at RC5_bit;


sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISC5_bit;


sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

//FIN DE CONEXIONES DE MODULO LCD

void main () {
ANSEL=0;
ANSELH=0;
C1ON_bit=0;
C2ON_bit=0; //DESABILITA COMPARADORES

TRISC.F0=0;
TRISA.F4=0;
TRISA.F2=0;
TRISA.F6=0;

PORTC.F0=1;
PORTA.F4=1;
PORTA.F2=1;
PORTA.F6=1;
{

Lcd_Init(); //INICIO DE LCD


Lcd_Out_Cp("hola mundo");
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

while(1) //BUCLE INFINITO


{
}
}

Lcd_Out_Cp;: Sirve para poner en character o palabra con espacios

Conclusión: Esta practica nos ayuda y facilita la manera de utilizar y poder colocar palabras
en el LCD disminuyendo el trabajo y haciendo que los errores al programarlo también
puedan ser menores.
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

17.PRIMER MARCIANO

Objetivo: El alumno creara por meido del display y unas nuevas constante una figura en este caso
se creara un marciano para poder observar las constantes aplicadas.

Desarrollo:

const char marciano[] = {17,14,21,14,31,4,27,0};

void CustomChar(char pos_row, char pos_char) {


char i;
Lcd_Cmd(64);
for (i=0;i<=7;i++)LCD_Chr_CP(marciano1[i]);
Lcd_Cmd(_LCD_RETURN_HOME);
Lcd_Chr(pos_row, pos_char, 0);
}
sbit LCD_RS at RC5_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISC5_bit;


sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

void main(void){
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // DESACTIVA LOS COMPARADORES
C2ON_bit = 0;
TRISC.F0=0;
TRISC.F4=0;
TRISC.F2=0;
TRISC.F6=0;
PORTC.F0=1;
PORTA.F4=1;
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

PORTA.F2=1;
PORTA.F6=1;

Lcd_Init();
CustomChar(1,1);
while(1)
{
}
}

Conclusiones: Gracias a esta practica pudimos observar otra función en el LCD ya que no solo se
pueden colocar números y palabras si no también figuras además que es entretenido el poder
saber mas acerca del LCD.
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

18.MARCIANOS CON NAVES

Objetivo: El alumno pondrá en practica lo aprendido acerca del display ya que ahora llevara acabo
3 figuras mas dentro del mismo programa en base a lo aprendido.

Desarrollo:

const char marciano1[] = {10,10,14,10,31,31,10,0};

void CustomChar(char pos_row, char pos_char) {


char i;
Lcd_Cmd(64);
for (i=0;i<=7;i++)LCD_Chr_CP(marciano1[i]);
Lcd_Cmd(_LCD_RETURN_HOME);
Lcd_Chr(pos_row, pos_char, 0);
}
sbit LCD_RS at RC5_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISC5_bit;


sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

const char character[] = {14,17,14,14,21,31,4,10};


const char marciano2[] = {17,14,14,14,21,14,4,10};
const char nave[] = {4,14,10,31,31,31,21,0};

void Lcd_RAM_Car (char IntDir, const char*Mapa)


{
char i;
LCD_Cmd(IntDir);
for(i=0;i<8;i++)LCD_Chr_Cp (Mapa[i]);
}
ZAVALA BECERRIL JUAN CARLOS (RECURSAMIENTO)

void main(void){
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // DESACTIVA LOS COMPARADORES
C2ON_bit = 0;
TRISC.F0=0;
TRISC.F4=0;
TRISC.F2=0;
TRISC.F6=0;
PORTC.F0=1;
PORTA.F4=1;
PORTA.F2=1;
PORTA.F6=1;

Lcd_Init();

Lcd_RAM_car(64, Marciano1);
Lcd_RAM_car(72, Character);
Lcd_RAM_car(80, Marciano2);
Lcd_RAM_car(88, Nave);
LCD_Chr(1,1,0);
LCD_Chr(1,2,1);
LCD_Chr(1,3,2);
LCD_Chr(1,4,3);

while(1)
{
}
}

You might also like