avatar_elektro77

lcd de 2 hane ondalık ölçme ve gösterme

Başlatan elektro77, 18 Mayıs 2019, 20:19:16

elektro77

Sayın üstadlarım ektaki dosyada bulunan devre ve yazılımda 0-10 volt ölçümünü 2 hane ondalıklı yapmaya çalışıyorum fakat bir türlü beceremedim.Hatamı bulamıyorum.Simülasyonda  son iki haneyi görüyorum ama doğru ölçüm göremiyorum.son hanede Hep aynı ondalık sayıları gösteriyor. Yardımcı olurmusunuz lütfen. Notlarımda bu bilgiler vardı ama onuda bir türlü bulamıyorum.

 '-------------------------------------------------------------------------------
define OSC 4
DEFINE LCD_DREG        PORTC    'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT        4        'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG        PORTC    'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT        3        'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG       PORTC    'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT       2        'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS        4        'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES       4        'LCD Kaç sıra yazabiliyor
'DEFINE LCD_COMMANDUS 2000 'Command delay time in us 
'DEFINE LCD_DATAUS 50 'Data delay time in us
 
DEFINE ADC_BITS 10     ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1     ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 20 ' ADC sampling time (uSec)

'-------------------------------------------------------------------------------
 TRISA=%00001111
 TRISB=%00000000
 TRISC=%00000010
 porta=0
 portb=0
 PORTC=0
 '------------------------------------------------------------------
ADCON1=%10000010                '7. bit 1 yapıldı 10 bit sonuç almak için.
INTCON=%11000000                'INTCON.7 ve INTCON.6 bitleri SET edilecek.
'INTCON=%11001000                'PORTB değişiklik kesmesi aktif
'T1CON =%00000000                'Bölme oranı 1/1yapılacak
CMCON=7
'OPTION_REG=%10000101            'Pull up dirençleri İPTAL- Bölme oranı 1/64. 
'-------------------------------------------------------------------------------
VOLT    var  word '16 bit değişken tipi seçtik kullanacağımız değer 10 bit olacak.
mvolt   var  byte
AMPER   VAR  WORD
mamper  var  byte
ISI     VAR  WORD
MISI    var  byte
HAM1    VAR  WORD
HAM2    VAR  WORD
HAM3    VAR  WORD
'---------------------------------------------------------------
LCDOUT $FE,1
PAUSE 250


BASLA:
'-----------------------------ADC 1---------------------------------------------
ADCIN 0,HAM1                                 
Volt=(ham1 */2503/10)
Mvolt=volt//100
Volt=Volt/100
LCDOUT $FE,$80,"V   HAM=",dec VOLT,",",dec2 Mvolt,"   "       
        
'-----------------------------ADC 2---------------------------------------------        
ADCIN 1,HAM2
AMPER=(ham2 */2503)/10
MAMPER=AMPER//100
AMPER=AMPER/100
lcdout $FE,$C0,  "AMP HAM=",dec AMPER,",",dec MAMPER,"   "       
'-----------------------------ADC 3---------------------------------------------
ADCIN 2,HAM3        

Ham3=ham3+1
ISI=(ham3 */2500)/100
MISI=ISI//10
ISI=ISI/10
LCDOUT $FE,$94,  "ISI HAM=",#ISI,",",# MISI,"   "       
'-------------------------------------------------------------------------------  
GOTO BASLA  
END
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Yukarıda veriğin programı düzenleyip yeniden kayıt ettim. Onuu bir denermisin.
Aslında çok fazla bir hata göremedim ama yinede bir iki değişiklik yaptım.

Ete

elektro77

yine aynı hocam ondalık bölümün son hanesi her zaman, ya 0 yada 9 rakamını gösteriyor.ÖRN:   1.10 veya 1.19 gibi.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Simulasyonda deniyor isen pot artışları kısa aralıklarda olmadığı için bu sonuç normaldir.
Gerçek devrede deniyor isen muhtemelen artışlar gördüğün şekle tekabül ediyordur.
Daha iyi anlamak için;
ADC den okunan değeri sen belirle ve sabit değerler ver mesela, AD den 984 okunsun adc okumasından sonrasına HAM2=984 yaz bakalım sonucu ekranda ne gösterecek. Bu şekilde okumadamı , hesaplamadamı hata var anlarsın.

Ete


elektro77

#4
çok haklısınız hocam. denedim ve oldu.Teşekkür ederim. Ben simülasyonda deniyordum
Birde şöyle bir sorunum ortaya çıktı. Areste devrenin pcb sini çizerken 16f876a nın vcc ayağına  +5 volt yolu çizmeme izin vermiyor. bunun sebebi ne olabilir.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

ARES kullanmadığım için ne olduğunu bilmiyorum. Simulasyonda Beslemeleribağlı kabul ediyor ama Ares e geçildiğinde otomatik bağlama yapması gerekir. Ama onun içinde senin besleme yi bir şekilde belirginleştirmen gerekiyor sanırım. Bilenler ceevaplasın en güzeli.
Ete

Powered by EzPortal