...and this is the original code from this schematic :
Credits to 320volts.com !Code:'**************************************************************** '* Name : VOLTMETRE.BAS * '* Author : [Erol Tahir Erdal] * '* Notice : Copyright (c) 2005 [ETE] * '* : All Rights Reserved * '* Date : 01.03.2005 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** DEFINE LCD_DREG PORTB 'LCD data bacakları hangi porta bağlı? DEFINE LCD_DBIT 4 'LCD data bacakları hangi bitten başlıyor? DEFINE LCD_RSREG PORTB 'LCD RS Bacağı Hangi Porta bağlı ? DEFINE LCD_RSBIT 1 'LCD RS bacağı Hangi Bite bağlı ? DEFINE LCD_EREG PORTB 'LCD Enable Bacağı Hangi Porta bağlı? DEFINE LCD_EBIT 3 'LCD Enable Bacağı Hangi bite bağlı ? define lcd_RWREG PORTB define LC_RWBIT 2 DEFINE LCD_BITS 4 'LCD 4 bit mi yoksa 8 bit olarak bağlı? DEFINE LCD_LINES 2 'LCD Kaç sıra yazabiliyor DEFINE ADC_BITS 10 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source (3=rc) DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS @ DEVICE pic16F877 @ DEVICE pic16F877, WDT_off @ DEVICE pic16F877, PWRT_ON @ DEVICE pic16F877, PROTECT_OFF @ DEVICE pic16F877, XT_OSC ADCON1=%10001110 TRISA=%00010011 TRISB=0 TRISC=0 VOLT VAR WORD HAM VAR WORD HVD var word AMPER var word MV VAR BYTE MA VAR BYTE PORTB=0 PORTA=0 VOLT=0 PAUSE 100 LCDOUT $FE,1 BASLA: ADCIN 0,HAM BAK: IF ADCON0.2=1 THEN BAK PAUSE 5 GOSUB HESAPV ADCIN 1,HAM PAUSE 5 GOSUB HESAPA GOSUB EKRAN PAUSE 1500 GOTO BASLA EKRAN: ' LCDOUT$FE,2,"HAM=",#HAM 'gerekirse okanan ham değerini görmek için LCDOUT $FE,$02,"VOLT =",DEC VOLT,",",DEC1 MV 'dec2 yazdık çünki virgülden sonra 2 hane hassasiyetimiz var. LCDOUT $FE,$C0,"AMPER=",DEC2 AMPER,",",DEC2 MA ' LCDOUT $FE,$C0,"AMPER=",DEC HVD RETURN HESAPV: '0-25V değerlerini oukuyup göstermek içindir HVD=((HAM+1)*/875)/10 'bu ifade aslında (HAM+1)*625/256 nın karşılığıdır 'CARPAN=625 yani ((25x10)/1024)*256 sonuç 62,5 çıktığı için 625 almak için ' 10 yerine 100 ile çarpıyoruz. yani CARPAN=((25*100)/1024)*256 VOLT=HVD/10 'başlangıçta 100 ile çarpılmış halini hesaplamış idik ohalde 100 e böleceğiz MV=(HVD)//10 'seaplanan sayını 100 bölünmesinden kalan sayı ondalık hanesidir RETURN ' Formül; ' Okunacak Maksimum Volt=OMV olsun ' CARPAN= ((OMV*10)/1024) * 256 veya ((OMV*100)/1024)*256 ' CARPAN değerini 3 haneli rakam olarak kullanmaya gayret edin. ' şayet 62,5 gibi 2 haneli bir rakam çıkar ise bunu 625 kabul edin ve ' (OMV * 10) değerini (OMV * 100) olarak kullanın. Sonuçta hesaplanan volt değerini ' 10 yerine 100'e bölmeniz gerekecek tabiiki. OV hesabında da Yine 100 bölünmüş ' değerden kalanı hesaplamak gerekecek. Yukarıdaki örnekte olduğu gibi. ' Hesaplanacak Volt Değeri =HVD olsun ' ADC den okunan Değer HAM olsun ' HVD=(HAM+1)*/CARPAN bulunacak değer gerçek volt değerinin 10 ile çarpılmış halidir. ' Tamsayı VOLT (TV)= HVD/10 veya TV=HVD/100 ' Ondalık VOLT (OV)= HVD//10 veya OV=HVD//100 'Ekrana yazdırırken; ' LCDOUT $FE,2,"VOLT:", DEC TV,",",DEC1 OV veya DEC2 OV olacaktır HESAPA: HVD=(HAM+1)*/250 AMPER=HVD/100 MA=HVD//100 RETURN




Bookmarks