elmariacci
Üye
- Katılım
- 17 Şub 2012
- Mesajlar
- 14
- Puanları
- 1
- Yaş
- 34
Merhaba arkadaşlar
bitirme ödevim hasta takip sistemi.Bu sistemde hastanin nabzi otomatik olarak ölçülüyor.kablosuz habelerşme ile diğer pic'e gönderiliyor ordan da pc ye rs232 seri haberleşme ile veriyi göndermem gerekiyor.
şimdi ben nabiz ölçme kismini yaptim diğer alici pic'e ölçtüğüm nabiz değerinin udeanin modülleri ile gönderdim alici ile verici devredeki lcdlerde ayni değerler çikiyor bu kisimda sıkıntı yok.
alici ile verici pic 16f877a.bu pic'leri kablosuz haberleşmede kullandiğim için baud en fazla 2400 olabiliyor.Seri haberleşmede ise baud 9600 olmasi gerekiyor.
1)Alici devredeki pic ile direk pc arasinda seri haberleşme yapabilir miyim? (alici devredeki pic baudu:600)
2)ölçtüğüm 3 basamakli sayiyi seri haberleşme ile nasil gönderebilirim.Aşağida Kablosuz haberleşme ile nasil gönderdiğim Verici devresinde mevcut.Seri haberleşme için fput,fprintf gibi kodlari mi kullanmaliyim.f'lere dikkat
VERİCİ
ALICI
bitirme ödevim hasta takip sistemi.Bu sistemde hastanin nabzi otomatik olarak ölçülüyor.kablosuz habelerşme ile diğer pic'e gönderiliyor ordan da pc ye rs232 seri haberleşme ile veriyi göndermem gerekiyor.
şimdi ben nabiz ölçme kismini yaptim diğer alici pic'e ölçtüğüm nabiz değerinin udeanin modülleri ile gönderdim alici ile verici devredeki lcdlerde ayni değerler çikiyor bu kisimda sıkıntı yok.
alici ile verici pic 16f877a.bu pic'leri kablosuz haberleşmede kullandiğim için baud en fazla 2400 olabiliyor.Seri haberleşmede ise baud 9600 olmasi gerekiyor.
1)Alici devredeki pic ile direk pc arasinda seri haberleşme yapabilir miyim? (alici devredeki pic baudu:600)
2)ölçtüğüm 3 basamakli sayiyi seri haberleşme ile nasil gönderebilirim.Aşağida Kablosuz haberleşme ile nasil gönderdiğim Verici devresinde mevcut.Seri haberleşme için fput,fprintf gibi kodlari mi kullanmaliyim.f'lere dikkat
VERİCİ
Kod:
#include "verici.h"
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use rs232(baud=600,xmit=pin_c6,parity=N,stop=1)
#define use_portb_lcd TRUE
#include <lcd.c> // lcd.c dosyası tanıtılıyor
int nabiz;
int16 a;
int gonder ; //gonderilecek datanın aktarıldığı değişken
#bit bittest=gonder.7
void serigonder()
{
byte bitkaysayac;
bitkaysayac=1;
gonder=a;
output_low(pin_c6); //senkron biti
delay_ms(20); //için
output_high(pin_c6); //pine pals
delay_ms(20); //veriliyor
while(bitkaysayac<9)
{
if(bittest==1) //bittest 1 ise
{
output_low(pin_c6); //portu 0 yap
delay_ms(1); //1ms 0 da tut
output_high(pin_c6); //portu 1 yap
delay_ms(2); //2ms 1 de tut toplam peryot 3ms
}
else //bittest 0 ise
{
output_low(pin_c6); //portu 0 yap
delay_ms(2); //2ms 0 da tut
output_high(pin_c6); //portu 1 yap
delay_ms(1); //1ms 1 de tut toplam peryot 3ms
}
gonder=gonder<<1; //gönderi sola kaydır
bitkaysayac++; //kayma sayacını arttır
}
}
void main()
{
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_timer_0(RTCC_EXT_H_TO_L | RTCC_DIV_1);
set_tris_a(0x11);
lcd_init();
printf(lcd_putc,"\f HAZIR! ");
while(input(pin_a0))
{;} // butona basılmamıssa 1 dir.
while (true)
{
printf(lcd_putc,"\f HESAPLANIYOR ");
set_timer0(0);
delay_ms(10000);
nabiz= get_timer0();
a= nabiz * 6;
serigonder();
printf(lcd_putc,"\f NABIZ=%ld nn/dk",a);
delay_ms(1000);
}
}
ALICI
Kod:
#include "alici.h"
#use rs232(baud=600,rcv=pin_c7,parity=N,stop=1)
#define use_portb_lcd TRUE
#include <lcd.c>
int16 a;
int16 peryot_sayac; //senkronizasyon için kontrol döngüsü
byte buffer; //alınan data değişkeni
#bit bittest=buffer.0//buffer ın 0. biti için değişken tanımlaması
int bitkaysayac;
void serial()
{
peryot_sayac=0;buffer=0;bitkaysayac=1;
while(input(pin_c7)==0) //pin 0 olduğu sürece burada bekle
{
}
while(peryot_sayac<400)
{
if (input(pin_c7)!=1) peryot_sayac=0;//pin peryot_sayac 400 den küçükken 0
delay_us(10); //olursa peryot_sayac sıfırla
peryot_sayac++;
}
while(input(pin_c7)==1) //data 0 olana kadar bekle
{
}
delay_us(1500);
while(bitkaysayac<9) //kayma sayısını kontrol et
{
buffer=buffer<<1; //bufferi sola kaydır
if (input(pin_c7)==1) bittest=1; //eger data_pini 1 ise bufferın 0.bitini 1 yap
else bittest=0; //değilse bufferın 0.bitini 0 yap
delay_us(3000); //birdahaki peryot için 3ms bekle
bitkaysayac++; //kayma sayacını arttır
}
a=buffer;
}
void main()
{
lcd_init();
lcd_putc("\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"nabiz ");
while(true){
serial(); //seri data al
lcd_gotoxy(3,2); //2.satır 3.sütuna git
printf(lcd_putc,"%u nn/dk",a);//
delay_ms(1000);
}
}