tengo algunos proyectos sencillos que subire en este tema, con el fin de compartirlos con ustedes, y ayudar a resolver dudas, espero que ayude en algo.
hay empiezo:
el primero es:
CRONOMETRO CON 7 SEGMENTOS:
es muy sencillo y es de los primeros que hice, se trata de un pic que cuenta de 0 hasta 9999 y lo muestra en 4 displays 7 segmentos,tiene 3 pulsadores en el puerto A, uno es para contar de forma acendente y para contar de forma decendente, otro para pausar, y el ultimo reset, lo hice con el pic 16f873a:
el codigo es el siguiente:
y tambien publico el circuito en proteus, espero les sirva mucho como ejemplo.
El segundo es:
LCD Y LM35, SENSOR DE TEMPERATURA:
otro proyecto es el siguiente, es mas sencillo que el anterior, es un termometro con la lcd, utilizo el 16f873a, y un lm35, y lo unico que hace es que muetra la temperatura ambiente en la lcd.
es muy sencillo, igual que en el anterior envio el diagrama en proteus.
hay empiezo:
el primero es:
CRONOMETRO CON 7 SEGMENTOS:
es muy sencillo y es de los primeros que hice, se trata de un pic que cuenta de 0 hasta 9999 y lo muestra en 4 displays 7 segmentos,tiene 3 pulsadores en el puerto A, uno es para contar de forma acendente y para contar de forma decendente, otro para pausar, y el ultimo reset, lo hice con el pic 16f873a:
el codigo es el siguiente:
Código:
////////////////////////////////////////////////////////////////////////////////
//hecho por JJ(joya), bogota, 2009 circuito que cuenta de 0000 hasta 9999//
///////////////////////////////////////////////////////////////////////////////
#include <16f873a.h>
#use delay(clock=4000000)
#fuses xt,nowdt,noprotect
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
void deco(int conta1)
{
output_b(0x00);
if (conta1==0)
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b3);
output_high(pin_b4);
output_high(pin_b5);
}
if (conta1==1)
{
output_high(pin_b1);
output_high(pin_b2);
}
if (conta1==2)
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b3);
output_high(pin_b4);
output_high(pin_b6);
}
if (conta1==3)
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b3);
output_high(pin_b6);
}
if (conta1==4)
{
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b5);
output_high(pin_b6);
}
if (conta1==5)
{
output_high(pin_b0);
output_high(pin_b2);
output_high(pin_b3);
output_high(pin_b5);
output_high(pin_b6);
}
if (conta1==6)
{
output_high(pin_b0);
output_high(pin_b2);
output_high(pin_b3);
output_high(pin_b4);
output_high(pin_b5);
output_high(pin_b6);
}
if (conta1==7)
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
}
if (conta1==8)
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b3);
output_high(pin_b4);
output_high(pin_b5);
output_high(pin_b6);
}
if (conta1==9)
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b5);
output_high(pin_b6);
}
}
void main()
{
int seg1; // decimas
int seg2; //centecimas
int seg3; //unidades de mil
int seg4; //decenas de mil
set_tris_a(0xff);
set_tris_b(0x00);
set_tris_c(0x00);
do
{
if (input(pin_a0)==1)///start cronometro asendente
{
for (seg1=0; seg1<10; ++seg1)
for (seg2=0; seg2<10; ++seg2)
for (seg3=0; seg3<10; ++seg3)
for (seg4=0; seg4<10; ++seg4)
{
{
deco(seg4);
output_c(0x01);
delay_ms(5);
}
{
deco(seg3);
output_c(0x02);
delay_ms(5);
}
{
deco(seg2);
output_c(0x04);
delay_ms(5);
}
{
deco(seg1);
output_c(0x08);
delay_ms(5);
}
if (input(pin_a1)==1)
{
do
{
{
deco(seg4);
output_c(0x01);
delay_ms(5);
}
{
deco(seg3);
output_c(0x02);
delay_ms(5);
}
{
deco(seg2);
output_c(0x04);
delay_ms(5);
}
{
deco(seg1);
output_c(0x08);
delay_ms(5);
}
}while (input(pin_a1)==1);
}
}
}
if (input(pin_a0)==0)///start cronometro descendente
{
for (seg1=9; seg1<10; --seg1)
for (seg2=9; seg2<10; --seg2)
for (seg3=9; seg3<10; --seg3)
for (seg4=9; seg4<10; --seg4)
{
{
deco(seg4);
output_c(0x01);
delay_ms(5);
}
{
deco(seg3);
output_c(0x02);
delay_ms(5);
}
{
deco(seg2);
output_c(0x04);
delay_ms(5);
}
{
deco(seg1);
output_c(0x08);
delay_ms(5);
}
if (input(pin_a1)==1)
{
do
{
{
deco(seg4);
output_c(0x01);
delay_ms(5);
}
{
deco(seg3);
output_c(0x02);
delay_ms(5);
}
{
deco(seg2);
output_c(0x04);
delay_ms(5);
}
{
deco(seg1);
output_c(0x08);
delay_ms(5);
}
}while (input(pin_a1)==1);
}
}
}
}while (true);
}
y tambien publico el circuito en proteus, espero les sirva mucho como ejemplo.
El segundo es:
LCD Y LM35, SENSOR DE TEMPERATURA:
otro proyecto es el siguiente, es mas sencillo que el anterior, es un termometro con la lcd, utilizo el 16f873a, y un lm35, y lo unico que hace es que muetra la temperatura ambiente en la lcd.
Código:
///////////////////////////////////////
//javier joya 3106706202 bogota 2009///
///////////////////////////////////////
#include <16f873a.h>
#use delay(clock=4000000)
#fuses xt,nowdt,noprotect
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#include "LCD.C"
void main()
{
#byte PORTB=0xF81
#byte PORTC=0xF82
int termo;
int temp;
setup_port_a(all_analog);
setup_adc(adc_clock_internal);
set_adc_channel(0);
lcd_init();
do
{
lcd_gotoxy(2,1);
lcd_putc("Temperatura");
termo=read_adc();
temp=((1.9*termo)/1);
lcd_gotoxy(2,2);
printf(lcd_putc,"%u",temp);
delay_ms(200);
lcd_putc("\f");
}while(true);
}
es muy sencillo, igual que en el anterior envio el diagrama en proteus.
Adjuntos
Última edición: