eyupcalis
Üye
- Katılım
- 17 Ağu 2009
- Mesajlar
- 10
- Puanları
- 1
- Yaş
- 35
arkadaşlar ben kablosuz sıcaklık ölçüm projesi yapmaya çalışıyorum.elimde iki tane pic var.bi devre verici bi devre alıcı olacak.lm35 ile yapıorum.vericide bulduğum sıcaklık değerini(10bit) seri iletişim ile alıcı devresine atıyorum sprintf fonksiyonuyla karakterlere çevirerek fakat alıcı da nasıl kod yazacağımı tam çözemedim daha doğrusu bi kaç şey yazdım ama alıcıya bağlı lcd de sonucu yazdıramadım yardımcı olursanız sevinirim.vericide de lcd bağlı doğruluk kntrolü açısından... aşağıda verici kodunu veriyorum bu kodum sizce doğru mu doğruysa alıcıda bu bilgiyi nasıl alıp lcd de gösterebilirim.. lütfen yardım edin
verici kodu:
#include <16f877.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7)
#use fast_io(a)
#define use_portb_lcd TRUE
#include <lcd.c>
unsigned long int bilgi;
float voltaj,sicaklik;
int i;
//----------ANA PROGRAM------------
void main()
{
unsigned char veri[5];
setup_PSP(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
SETUP_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_a(0x01);
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_us(20);
lcd_init();
printf(lcd_putc,"sicaklik=");
while(1)
{
bilgi=read_adc();
voltaj=(0.0048828125*bilgi)*1000;
sicaklik=(voltaj/10)+2;
printf(lcd_putc,"%5.1f'C",sicaklik);
delay_ms(10);
sprintf(veri,"%6.3f",sicaklik);
for (i=0;i<5;i++)
{
putc(veri);
delay_ms(10);
}
}
}
verici kodu:
#include <16f877.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7)
#use fast_io(a)
#define use_portb_lcd TRUE
#include <lcd.c>
unsigned long int bilgi;
float voltaj,sicaklik;
int i;
//----------ANA PROGRAM------------
void main()
{
unsigned char veri[5];
setup_PSP(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
SETUP_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_a(0x01);
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_us(20);
lcd_init();
printf(lcd_putc,"sicaklik=");
while(1)
{
bilgi=read_adc();
voltaj=(0.0048828125*bilgi)*1000;
sicaklik=(voltaj/10)+2;
printf(lcd_putc,"%5.1f'C",sicaklik);
delay_ms(10);
sprintf(veri,"%6.3f",sicaklik);
for (i=0;i<5;i++)
{
putc(veri);
delay_ms(10);
}
}
}