25 Haziran 2019, 23:45:57

Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME


Belli bir sürede girilen dijital bilgiyi saymak ve LCD'de göstermek

Başlatan roleci, 10 Haziran 2019, 21:24:43

roleci

Parmaktan nabız ölçer devresi yaptım , çıkışı 0-5V olarak dijital.16F628A kullanarak 3sn gibi bir örnekleme zamanında PIC'in herhangi bir girişine uygulanan bu sinyalin sayılması (F=1-2Hz) , süre sonunda çıkan sonucu 20 ile çarparak dakikada nabız sayısını LCD Ekrana yazdırmak istiyorum.Bunu mikroC'de nasıl yapabiliriz..

MB_77

3sn süresince sayıp dakikadaki kalp atışı için 20 ile çarpacaksın. Bu durumda çözünürlüğü 20 olur. İki pals arasındaki süreyi ölçerek 60snye oranlasan daha iyi olur gibi.

roleci

Alıntı yapılan: MB_77 - 10 Haziran 2019, 23:39:593sn süresince sayıp dakikadaki kalp atışı için 20 ile çarpacaksın. Bu durumda çözünürlüğü 20 olur. İki pals arasındaki süreyi ölçerek 60snye oranlasan daha iyi olur gibi.

Güzel fikir ama beni şimdilik söylediğim de kurtarırdı , 3-5 satır karalayacak arkadaş arıyorum.ASM'de veya bunda basit işleri yapabiliyorum.Kafa fazla basmıyor mikroC'de cümle kurmaya.

roleci

21 Haziran 2019, 19:51:01 #3 Son düzenlenme: 22 Haziran 2019, 23:20:38 mehmet Sebep: Mesajınıza kod eklemek için "Kod" butonunu kullanınız.
Bir yerde LED Displaylerle yapmışlar mikroC'de.Derlediğimde;
0 1 mikroCPIC1618.exe -MSF -DBG -pP16F628A -DL -O11111114 -fo4 -N"C:\Users\asus\Desktop\Parmaktan 7segment disp deneme embedded lab\MyProject.mcppi" 
0 351 File extension missing'MyProject'  
0 0 0 Long HEX format  -GC Generate COFF file  1139
0 102 Finished 
(with errors): 21 Jun 201916:28:59 MyProject.mcppi
Hata veriyor.

sbit IR_Tx at RA3_bit;
sbit DD0_Set at RA2_bit;
sbit DD1_Set at RA1_bit;
sbit DD2_Set at RA0_bit;
sbit start at RB7_bit;
unsigned short jDD0DD1DD2DD3;
unsigned short pulseratepulsecount;
unsigned int i;
//-------------- Function to Return mask for common anode 7-seg. display
unsigned short mask(unsigned short num) {
 switch (
num) {
 case 
: return 0xC0;
 case 
: return 0xF9;
 case 
: return 0xA4;
 case 
: return 0xB0;
 case 
: return 0x99;
 case 
: return 0x92;
 case 
: return 0x82;
 case 
: return 0xF8;
 case 
: return 0x80;
 case 
: return 0x90;
 } 
//case end
}

void delay_debounce(){
 
Delay_ms(300);
}

void delay_refresh(){
 
Delay_ms(5);
}

void countpulse(){
 
IR_Tx 1;
 
delay_debounce();
 
delay_debounce();
 
TMR0=0;
 
Delay_ms(15000);  // Delay 15 Sec
 
IR_Tx 0;
 
pulsecount TMR0;
 
pulserate pulsecount*4;
}

void display(){
  
DD0 pulserate%10;
  
DD0 mask(DD0);
  
DD1 = (pulserate/10)%10;
  
DD1 mask(DD1);
  
DD2 pulserate/100;
  
DD2 mask(DD2);
  for (
0i<=180*ji++) {
    
DD0_Set 0;
    
DD1_Set 1;
    
DD2_Set 1;
    
PORTB DD0;
    
delay_refresh();
    
DD0_Set 1;
    
DD1_Set 0;
    
DD2_Set 1;
    
PORTB DD1;
    
delay_refresh();
    
DD0_Set 1;
    
DD1_Set 1;
    
DD2_Set 0;
    
PORTB DD2;
    
delay_refresh();
    }
  
DD2_Set 1;
}

void main() {
 
CMCON 0x07;    // Disable Comparators
 
TRISA 0b00110000// RA4/T0CKI input, RA5 is I/P only
 
TRISB 0b10000000// RB7 input, rest output
 
OPTION_REG 0b00101000// Prescaler (1:1), TOCS =1 for counter mode
 
pulserate 0;
 
1;
 
display();
 do {
  if(!
start){
   
delay_debounce();
   
countpulse();
   
j3;
   
display();
  }
 } while(
1);  // Infinite loop