18f2550 LCD Kullanımı, Meşgul Hatası - [ Yardım ]

Başlatan ceyhun.topcuoglu, 07 Aralık 2014, 01:26:17

ceyhun.topcuoglu

18F işlemcilere yeni geçtiğim için birçok sorunla karşılaşıyorum bir kısmını datasheetlerden bir kısmını mplab içindeki .INC dosylarıyla vs. fakat koskoca internette bir tane bile 18f2550 işlemcide PicBasic ile LCD kullanan yok. Bende çareyi size sormak da buldum

Aldığım hata şu şekilde :


Şu anda kullandığım kodlar da şöyle :
DEFINE OSC 4
DEFINE LCD_DREG PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT 4 'LCD DATA BITLERI HANGİ BITTEN BASLIYOR
DEFINE LCD_EREG PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT 3 'LCD ENABLE BITI HANGI PORTA BAGLI
DEFINE LCD_RWREG PORTB 'LCD RW BACAGI HANGI PORTA BAGLI
DEFINE LCD_RWBIT 2 'LCD RW BACAGI HANGI BITE BAGLI
DEFINE LCD_RSREG PORTB 'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT 1 'LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_BITS 4 'LCD 4 BIT BAGLI
DEFINE LCD_LINES 2 'LCD KAC SIRADAN OLUSUYOR
define lcd_commandus 4500
define lcd_dataus	255  

low PORTB.2 'RW BACAGI EKRANA YAZMAYA IMKAN VERMEK ICIN LOW YAPILDI

TRISB=0   'PORTB giriş/çıkış durumu 1-> Giriş 0-> Çıkış  
cmcon=7             ' Comp pinleri devre dışı
ADCON1=%00001111    ' Analog giriş/çıkış devre dışı

   
basla: 
toggle portb.0  'Programın işleyip işlemediğini görmek için

PAUSE 200

LCDOUT $FE,1,"DENEME LCD"
LCDOUT $FE,$C2,"SATIR 2"
PAUSE 1000

goto basla
   
end

एक होना

RW pini GND ye bağlı olması gerekmiyor mu ? şu ana kadar gördüğüm tüm bağlantılarda GND ye bağlı.

mesaj birleştirme:: 07 Aralık 2014, 05:55:21

LCD Bağlantısı bu şekilde olabilir.

LCD tanımlamaları düzenledim.

şu an çalışıyor.





DEFINE OSC 4

DEFINE LCD_DREG PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT 4 'LCD DATA BITLERI HANGİ BITTEN BASLIYOR


DEFINE LCD_RSREG PORTB  'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT 2 'LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_EREG PORTB  'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT 3 'LCD ENABLE BITI HANGI PORTA BAGLI


DEFINE LCD_BITS 4 'LCD 4 BIT BAGLI
DEFINE LCD_LINES 2 'LCD KAC SIRADAN OLUSUYOR

'DEFINE LCD_RWREG PORTB 'LCD RW BACAGI HANGI PORTA BAGLI
'DEFINE LCD_RWBIT 2 'LCD RW BACAGI HANGI BITE BAGLI





'define lcd_commandus 4500
'define lcd_dataus	255  

'low PORTB.2 'RW BACAGI EKRANA YAZMAYA IMKAN VERMEK ICIN LOW YAPILDI

TRISB=0   'PORTB giriş/çıkış durumu 1-> Giriş 0-> Çıkış  
cmcon=7             ' Comp pinleri devre dışı
ADCON1=%00001111    ' Analog giriş/çıkış devre dışı

   
basla: 
toggle portb.0  'Programın işleyip işlemediğini görmek için

PAUSE 500

LCDOUT $FE,1
lcdout         "www.picproje.org"
pause 500
LCDOUT $FE,$C0,"    saygilar    "
PAUSE 500

goto basla
   
end

muhittin_kaplan


ceyhun.topcuoglu

Alıntı yapılan: BRL - 07 Aralık 2014, 05:18:52
RW pini GND ye bağlı olması gerekmiyor mu ? şu ana kadar gördüğüm tüm bağlantılarda GND ye bağlı.

mesaj birleştirme:: 07 Aralık 2014, 19:55:21

LCD Bağlantısı bu şekilde olabilir.

LCD tanımlamaları düzenledim.

şu an çalışıyor.





DEFINE OSC 4

DEFINE LCD_DREG PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT 4 'LCD DATA BITLERI HANGİ BITTEN BASLIYOR


DEFINE LCD_RSREG PORTB  'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT 2 'LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_EREG PORTB  'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT 3 'LCD ENABLE BITI HANGI PORTA BAGLI


DEFINE LCD_BITS 4 'LCD 4 BIT BAGLI
DEFINE LCD_LINES 2 'LCD KAC SIRADAN OLUSUYOR

'DEFINE LCD_RWREG PORTB 'LCD RW BACAGI HANGI PORTA BAGLI
'DEFINE LCD_RWBIT 2 'LCD RW BACAGI HANGI BITE BAGLI





'define lcd_commandus 4500
'define lcd_dataus	255  

'low PORTB.2 'RW BACAGI EKRANA YAZMAYA IMKAN VERMEK ICIN LOW YAPILDI

TRISB=0   'PORTB giriş/çıkış durumu 1-> Giriş 0-> Çıkış  
cmcon=7             ' Comp pinleri devre dışı
ADCON1=%00001111    ' Analog giriş/çıkış devre dışı

   
basla: 
toggle portb.0  'Programın işleyip işlemediğini görmek için

PAUSE 500

LCDOUT $FE,1
lcdout         "www.picproje.org"
pause 500
LCDOUT $FE,$C0,"    saygilar    "
PAUSE 500

goto basla
   
end

Alıntı yapılan: muhittin_kaplan - 07 Aralık 2014, 10:44:40
2550 nin OSC ayarladı farklıdır. Osc 4 deyip kurtulamazsın.

https://www.picproje.org/index.php?topic=26988.0

İlginiz için teşekkür ederim. Sorun tamamen Proteus 8.1 sürümündeki bir hatadan ibaretmiş. 7.7 ve 7.10 sürümlerinde böyle bir sorun çıkmadı. Başka arkadaşların da başına gelirse Similasyonu değiştirmeleri yeterlidir.

BRL arkadaşım rw bacağını gnd ye bağladığımda da sonuç değişmedi şu ana kadar yaptığım tüm LCD li projelerde RW ayağını bağladım. Bu cevabınla gördüm ki aslında gereksizmiş. Bir daha ki devremde gndye bağlıyacam 1 port 1 porttur sonuçta :)


muhittin_kaplan arkadaşım sigorta ayarlarından bahsediyorsun sanırım. Çok fazla deneme yaptığım için sorunun nerede olduğunu anlamadığımda sigorta ayarlarını bile silmiştim. Normal olarak Kullandığım sigorta ayarları şu şekilde :
#CONFIG
    CONFIG  PLLDIV = 5            ; Divide by 5 (20 MHz oscillator input)
    CONFIG  CPUDIV = OSC1_PLL2    ; [Primary Oscillator Src: /1][96 MHz PLL Src: /2]
    CONFIG  USBDIV = 2            ; USB clock source comes from the 96 MHz PLL divided by 2
    CONFIG  FOSC = HSPLL_HS       ; HS oscillator, PLL enabled (HSPLL)
    CONFIG  FCMEN = OFF           ; Fail-Safe Clock Monitor disabled
    CONFIG  IESO = OFF            ; Oscillator Switchover mode disabled
    CONFIG  PWRT = OFF            ; PWRT disabled
    CONFIG  BOR = ON              ; Brown-out Reset enabled in hardware only (SBOREN is disabled)
    CONFIG  BORV = 3              ; Minimum setting
    CONFIG  VREGEN = ON           ; USB voltage regulator enabled
    CONFIG  WDT = ON              ; WDT enabled
    CONFIG  WDTPS = 512           ; 1:512
    CONFIG  CCP2MX = ON           ; CCP2 input/output is multiplexed with RC1
    CONFIG  PBADEN = OFF          ; PORTB<4:0> pins are configured as digital I/O on Reset
    CONFIG  LPT1OSC = OFF         ; Timer1 configured for higher power operation
    CONFIG  MCLRE = ON            ; MCLR pin enabled; RE3 input pin disabled
    CONFIG  STVREN = ON           ; Stack full/underflow will cause Reset
    CONFIG  LVP = OFF             ; Single-Supply ICSP disabled
    CONFIG  XINST = OFF           ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
    CONFIG  DEBUG = OFF           ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
    CONFIG  CP0 = OFF             ; Block 0 (000800-001FFFh) is not code-protected
    CONFIG  CP1 = OFF             ; Block 1 (002000-003FFFh) is not code-protected
    CONFIG  CP2 = OFF             ; Block 2 (004000-005FFFh) is not code-protected
    CONFIG  CP3 = OFF             ; Block 3 (006000-007FFFh) is not code-protected
    CONFIG  CPB = OFF             ; Boot block (000000-0007FFh) is not code-protected
    CONFIG  CPD = OFF             ; Data EEPROM is not code-protected
    CONFIG  WRT0 = OFF            ; Block 0 (000800-001FFFh) is not write-protected
    CONFIG  WRT1 = OFF            ; Block 1 (002000-003FFFh) is not write-protected
    CONFIG  WRT2 = OFF            ; Block 2 (004000-005FFFh) is not write-protected
    CONFIG  WRT3 = OFF            ; Block 3 (006000-007FFFh) is not write-protected
    CONFIG  WRTC = OFF            ; Configuration registers (300000-3000FFh) are not write-protected
    CONFIG  WRTB = OFF            ; Boot block (000000-0007FFh) is not write-protected
    CONFIG  WRTD = OFF            ; Data EEPROM is not write-protected
    CONFIG  EBTR0 = OFF           ; Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks
    CONFIG  EBTR1 = OFF           ; Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks
    CONFIG  EBTR2 = OFF           ; Block 2 (004000-005FFFh) is not protected from table reads executed in other blocks
    CONFIG  EBTR3 = OFF           ; Block 3 (006000-007FFFh) is not protected from table reads executed in other blocks
    CONFIG  EBTRB = OFF           ; Boot block (000000-0007FFh) is not protected from table reads executed in other blocks
#ENDCONFIG



aslında 20 mhz kullanıyordum en son programı değiştirdiğimde 4 mhz olarak kalmış.