This post is also available in: English

forum-banner


Konu ve mesaj oluşturabilmek için giriş yapmanız gerekmektedir.

PIC18F4550 Lcd Ekranda Yazı cıkmıyor.

 

sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;

sbit  LCD_RS_Direction at TRISB0_bit;
sbit  LCD_EN_Direction at TRISB1_bit;
sbit  LCD_D4_Direction at TRISB2_bit;
sbit  LCD_D5_Direction at TRISB3_bit;
sbit  LCD_D6_Direction at TRISB4_bit;
sbit  LCD_D7_Direction at TRISB5_bit;
unsigned adc_sinyal;
char yaz[4];

void main() {
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
LCD_Cmd(_LCD_CLEAR);
Delay_ms(100);
Lcd_Out(1,1,"FURKAN KELESOGLU");
Lcd_Out(2,2," ADC OKUMA ");
delay_ms(2000);
LCD_Cmd(_LCD_CLEAR);
ADCON0 = 0X0C;
ADCON1 &= 0XF0;
CMCON |=7;

TRISD=0;
PORTD=0;

TRISC=0;
PORTC=0;

TRISB=0;
PORTB=0;

TRISA = 0xFF;

while(1)
{
adc_sinyal = ADC_Read(2);
floattoStr(adc_sinyal,yaz);
Lcd_Out(1,1,"FURKAN KELESOGLU");
Lcd_Out(2,1,"ADC DEG:");
Lcd_Out(2,9,yaz);
}

}

İletiyi düzenle

Merhabalar

ADCON0 = 0X0C;
ADCON1 &= 0XF0;
CMCON |=7;

  • şeklindeki düzenlemeleri main in hemen altına alıp denerseniz sorun çözülebilir bunun dışında

TRISB=0;
PORTB=0;

  • LCD bağlanan portu çıkış yapmanıza gerek yoktur. Bu 2 satır kodu da devre dışı bırakıp tekrar deneyin ve sonuçlarını paylaşın.
  • floattostr çevrim fonksiyonu için 15 elemanlı dizi oluşturmanız gerekir siz ise "char yaz[4];" ile 4 eleman vermişsiniz doğrusu "char yaz[15]; "olmalıdır
  • Bir diğer konuda çevrim yaptığınız değişkeni "unsigned adc_sinyal;" ile int tipinde oluşturmuşsunuz bununda doğrusu" float adc_sinyal" olmalı aksi halde inttostr fonksiyonunu kullanmanız gereklidir
  • ADC işlemi yapmadan öncede "adc_init();" çağırılarak adc işlemi yapılacağı bildirilmelidir aksi halde adc portları okuma yapmazlar
  • Ayrıca ISIS pek kullanmadığımdan kristal ayarı vb. ayarlarda yapmak gerekebilir.

İyi Çalışmalar