avatar_furkan41

Mikro-C dilinde LCD ekranı calıştıramamak.

Başlatan furkan41, 04 Ocak 2018, 00:43:45

furkan41

Arkadaşlar ekteki resim'de benim kurduğum devre ve Yazdığım program Burada Yapmak istediğim basit bir ADC kurup LCD ekranda değeri göstermekti  Fakat LCD ekranda Hiç bir yazı belirmiyor 5 kere filan kontrol ettim bukadar basit programın neden calışmadığı hala anlamadım ADCON kaydecilerine baktım B Portu dijital secim yapmadığım icin mi diye ondada dijital secim yapmışım o kanalları Simulasyonda LCD nin data uclarında hareketlilik var fakat LCD ekranda Hiç birşey yok.


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);
}

}

mg1980

#1
Simülasyondan anlamam.Gerçek devre olsaydı, bağlantılar doğru mu, LCD kontrast ayarı uygun mu en önemlisi de devrenin çalışma frekansı nedir diye soracaktım. Bu çalışma frekansı ile ilgili Discovery kitte bir tecrübe yaşamıştım. Yüksek frekansta iken LCD'de karakter görünmüyordu. Bir de bir şey farkettim..Ben Mikro_C ARM ile biraz çalışma yaptım onda sizin alt bölümde yazdığınız TRISB..kodları gerekmiyor..Mikro_C PIC de ayrıca gerekli mi ?

furkan41

Yanıtınız için teşekkürler.    Öncelikle Pic'in calışma frekansı 4Mhz 
PortB aslında tekrardan cıkış olarak yönlendirmeye gerek yoktu fakat LCD ekran calışmayınca yönlendirme yapmadığım için olabilir diye PORTB yi cıkış olarak yönledirip resetledim.

mehmet


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() {

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

TRISD=0;
PORTD=0;

TRISC=0;
PORTC=0;

TRISB=0;
PORTB=0;

TRISA = 0xFF;



  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);

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);
}

}
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

furkan41

Mehmet bey Kod Aynı daha deneme şansım olmadı fakat kod bloğu icinde yazmadım diyemi kod bloğu icine aldınız ?

Powered by EzPortal