A/D çevrim LCD sürme sorunu

Başlatan YaRiLeTkEn, 30 Aralık 2002, 23:35:47

YaRiLeTkEn

Arkadaşlar Pic Basic Pro

da  hazır yazılmış bir programı modifiye ettim, pek oynamadım aslında ve girişteki bir pot üzerindeki gerilimi LCD ye yazan bir

programı pic (16f877) e yukledim. Fakat LCD de hiçbirşey gözükmüyor.  Bağlantılar da mı sorun var programda mı anlayamadım.

Buraya yapıştırıyorum. Sadece bu program değil daha hiçbir şekilde LCD de karakter goremedım, sadece backlight ı yakp

duruyorum  :D . Sorun yazılımda mı donanımda mı ?

Alıntı Yap
Picbasic Pro program to read pots on

16F877 ADC

' Define LCD pins
Define  LCD_DREG        PORTD
Define  LCD_DBIT        8
Define  

LCD_RSREG       PORTE
Define  LCD_RSBIT       0
Define  LCD_EREG        PORTE
Define  LCD_EBIT        

1

' Allocate variables
x       var     byte


       ADCON1 = 4              ' Set PortA 0, 1, 3 to A/D

inputs

       Low PORTE.2             ' LCD R/W line low (W)
       Pause 100               ' Wait for LCD to

start

       Goto    mainloop        ' Skip subroutines


' Subroutine to read a/d

convertor
getad:
       Pauseus 50              ' Wait for channel to setup

       ADCON0.2 = 1            ' Start

conversion
       Pauseus 50              ' Wait for conversion

       Return

' Subroutine to get pot x

value
getx:
       ADCON0 = $41            ' Set A/D to Fosc/8, Channel 0, On
       Gosub getad
       x =

ADRESH
       Return



mainloop:
       Gosub   getx            ' Get x value
     

       

Lcdout $fe, 1, "x=", #x ' Send to LCD
       Pause   100             ' Do it about 10 times a second

       Goto    

mainloop        ' Do it forever

       End




birumher

Yaptigin devrenin PIC ile LCD arasindaki baglantilarini da

yazarsan anlasilabilir. Ben kullaniyorum ve LCDOUT komutu gayet guzel çalışıyor...
Birkan.Herguner

YaRiLeTkEn

Define komutu ile tanımladıgım pinlere bağladım

LCD'yi.

XNHCX

8) Dostum YaRiLeTkEn,
Birde aşağıdaki kodları

hex'e  çevirip dene.


ADCIN3X.bas
(RA 0, 1, 3) bacakları (pic 16f877)'ye  anolog giriş olarak

ayarlı.
pic'in RE0'ı   LCD'NİN    RS BACAĞINA
pic'in RE1'ı   LCD'NİN    E    BACAĞINA
pic'in

RE2'ı   LCD'NİN    RW  BACAĞINA    

bağlanacak.




---------------------------------------------------------------------------------
Define   LOADER_U

SED   1

' Define LCD registers and bits
Define  LCD_DREG        PORTD
Define  LCD_DBIT        

4
Define  LCD_RSREG       PORTE
Define  LCD_RSBIT       0
Define  LCD_EREG        PORTE
Define  

LCD_EBIT        1

' Define ADCIN parameters
Define  ADC_BITS        8       ' Set number of bits in

result
Define  ADC_CLOCK       3       ' Set clock source (3=rc)
Define  ADC_SAMPLEUS    50      ' Set sampling

time in uS

adval   var   byte      ' Create adval to store result


   TRISA = %11111111   ' Set

PORTA to all input
   ADCON1 = %00000100   ' Set PORTA analog

       Pause 500                       ' Wait .5

second
       Low  PORTE.2

mainloop:
   Lcdout   $fe, 1      ' Clear the LCD

   Adcin   0,

adval   ' Read the first ADC channel
   Lcdout   "0=", #adval   ' Send it to the LCD

   Adcin   1,

adval   ' Read the second ADC channel
   Lcdout   " 1=", #adval   ' Send it to the LCD

   Adcin   3,

adval   ' Read the third ADC channel
   Lcdout   " 3=", #adval   ' Send it to the LCD

       Pause   200        

    ' Delay for time to read the display

       Goto    mainloop        ' Do it forever

       

End

-----------------------------------------------------------------------------------

Sonuçtan  haberimiz

olsun.


Kolay

gelsin.



XNHCX

YaRiLeTkEn

Teşekkür ederim. Perşembe Lab.'a girecem, o gece yazarım

sonucu. Tekrar teşekkürler...

baba

birinci kesin hata

.....
......
' Define

LCD pins
Define LCD_DREG PORTD
Define LCD_DBIT 8    

'set starting data bit (0 or4)if 4 bit bus used
Define

LCD_RSREG PORTE
Define LCD_RSBIT 0
Define LCD_EREG PORTE
Define LCD_EBIT 1

'

Allocate variables
x var byte
.....
......

4 bit bus kullanıyorsun ama görülen o ki port başlangıç bitini yanlış

belirtiyorsun 0 ya da 4 olacak
pbp da lcd bağlantısı için varsayılan 4 bittir.
8 bit kullanacaksan belirtmen

gerekir.

pbppro244.pdf manual sayfa 85
...
....
.....



'ikinci olası

hata******************************
çevrim süresini bilmiyorum ama

ADCON0.2 = 1 ' Start conversion


Pauseus 50 ' Wait for conversion

yerine

ADCON0.2 = 1 ' Start conversion
while  adcon0.2 =

1
wend

desen daha iyi olur

ya da adcin komutunu kullanabilirsin
daha rahat

olur.
'*****************************************

üçüncü olası hata

kontrast ayar trimpotu ile ayar

yapabiliyor musun.sonuna kadar açınca karakter
yatakları (hücreleri) siyah oluyor mu?

sanırım bunlardan biri

işine yarar.
ÖĞRENDİKÇE    CAHİLLİĞİM       ARTIYOR.

YaRiLeTkEn

Sorun halloldu. Gayet güzel çalışıyor. Lcd de goruntu

alamamamın sebepi çok saçma sapan bir neden. Söylemeye utanıyroum, hatta söylemesem daha iyi olur*. Herkese çok

teşekkürler...



*Kontrast ayarı deyim siz anlayın.  :oops:  :shock: