Здраво.
Правам протокометар со готов сензор што дава импулси на излез.
Контролата на сензорот е со PIC16F877a и со LCD екран засега. Програмата ја пишувам во Mikropascal но никако неможам да ја натерам да ги брои импулсите од сензорот исправно.
Односно да на секој импулс бројачот да се зголемува за 1, а не како сега нон стоп да брои без разлика дали има сигнал или не.
program Flowmeter;
// LCD module connections
var LCD_RS : sbit at RB1_bit;
var LCD_EN : sbit at RB3_bit;
var LCD_D4 : sbit at RB4_bit;
var LCD_D5 : sbit at RB5_bit;
var LCD_D6 : sbit at RB6_bit;
var LCD_D7 : sbit at RB7_bit;
var LCD_RS_Direction : sbit at TRISB1_bit;
var LCD_EN_Direction : sbit at TRISB3_bit;
var LCD_D4_Direction : sbit at TRISB4_bit;
var LCD_D5_Direction : sbit at TRISB5_bit;
var LCD_D6_Direction : sbit at TRISB6_bit;
var LCD_D7_Direction : sbit at TRISB7_bit;
// End LCD module connections
var txt1 : array[16] of char;
txt2 : array[9] of char;
// txt3 : array[8] of char;
// txt4 : array[7] of char;
// i : byte;
broj : integer;
txt,impuls : string[6];
temp1,ml : integer;
begin
PORTB := 1;
TRISB := 1;
PORTA:=0;
TRISA.0:=0;
TRISA.1:=0;
ADCON1 := 0x0F; //*Configure AN pins as digital*/
CMCON := 0x07;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
temp1:=0;
broj:=0;
ml:=0;
while TRUE do
Begin
if (PORTA.1 = 1) then
// Delay_ms(100);
txt1:='ml';
temp1:=temp1+1;
Broj:= (temp1 * 60) / 7.5;
ml:=temp1/10;
inttostr(broj,txt);
inttostr(ml,txt2);
inttostr(temp1,impuls);
// Lcd_Out(1, 1, txt1+' '+txt+' '+impuls);
Lcd_Out(1, 1, txt1+' '+impuls);
Lcd_out(2,1,'ml'+' '+txt2);
end;
end.