16f877a lcd yardım

Başlatan NamTech, 16 Ocak 2016, 08:16:44

NamTech

Arkadaşlar Milroc dilinde birşeyler yapmayı deniyorum fakat çok acemiyim.
16f877a ile LCD bağlantısı konusunda takıldım, anladığım kadarıyla sorun port / pin ayarlamalarını yapamadım.

yazdığım program

// LCD 4x20 4-bit mode
// CPU PIC16F877A


// Lcd pinout settings
sbit LCD_RS at RE1_bit;
sbit LCD_EN at RE0_bit;
sbit LCD_D7 at RA2_bit;
sbit LCD_D6 at RA3_bit;
sbit LCD_D5 at RA4_bit;
sbit LCD_D4 at RA5_bit;

// Pin direction
sbit LCD_RS_Direction at TRISE1_bit;
sbit LCD_EN_Direction at TRISE0_bit;
sbit LCD_D7_Direction at TRISA2_bit;
sbit LCD_D6_Direction at TRISA3_bit;
sbit LCD_D5_Direction at TRISA4_bit;
sbit LCD_D4_Direction at TRISA5_bit;

void main()
{
TRISE = 0x00; // PORTE is output
TRISA = 0x00; // PORTA is output
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "NamTechnic");
Lcd_Out(2, 1, "Deneme");
}

derlemede sorun yok, hex dosyasını programlıyorum fakat ekranda herhangi bir şey yok.

Aynı devre üzerinde bağlantıları b portuna aktarıp program da sbit satırlarını b portu tanımladığımda LCD çalışıyor.

Nerede hata yapıyorum ve nasıl düzeltebilirim.
Kim Ne Derse Desin Alelade Birisi.

12z

analog okumayı kapattığına emin misin?

ahmetbudak

877 de A ve E portları  Pic ilk enerjilendiğinde varsayılan analog giriş modundadır ilk main fonk da bu bu pinleri dijital yapmalıyız.

dursuncemal

  ra4 e dikkat et (Output is open drain type ) tocki girisi  ra4 u yukari cekemezsin. ra4 e + dan 4.7k gibi bir direnc tak baska portlada calisiyor ise calisacaktir.
:=

NamTech

Analog pinleri dijital yapmak için hangi komutu kullanmam gerekiyor?
Kim Ne Derse Desin Alelade Birisi.

NamTech

// LCD 4x20 4-bit mode
// CPU PIC16F877A

// Lcd pinout settings
sbit LCD_RS at RE1_bit;
sbit LCD_EN at RE0_bit;
sbit LCD_D7 at RA2_bit;
sbit LCD_D6 at RA3_bit;
sbit LCD_D5 at RA4_bit;
sbit LCD_D4 at RA5_bit;

// Pin direction
sbit LCD_RS_Direction at TRISE1_bit;
sbit LCD_EN_Direction at TRISE0_bit;
sbit LCD_D7_Direction at TRISA2_bit;
sbit LCD_D6_Direction at TRISA3_bit;
sbit LCD_D5_Direction at TRISA4_bit;
sbit LCD_D4_Direction at TRISA5_bit;
void main()
{
ADCON1 |= 0x0F;
//CMCON = 0x07;
TRISE = 0x00; // PORTE is output
PORTE = 0x00;
TRISA = 0x00; // PORTA is output
PORTA = 0x00;
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "NamTechnic");
Lcd_Out(2, 1, "Deneme");
}

Şeklinde programı değiştirdiğimde ve pic simülatör ile takip ettiğimde Analog pinler output olarak görünüyor, RA4 pinine +5Volttan 1K dirençte attım fakat halen LCD'de herhangi bir karakter göremiyorum. Konu hakkında fikri olan arkadaşlardan yardım bekliyorum.
Kim Ne Derse Desin Alelade Birisi.

Eski Klasör

Micro-c bilmiyorum ancak galiba kodlarda LCD RW pini tanımlanmamış bu yüzden olabilir mi?

ahmetbudak

ADCON1 |= 0x0F;  yerine  ADCON1 |= 0x07;  yazmalısın bu şekilde bütün portlar dijital olur  datasheet te böyle diyor  CMCON=0X07 satırınıda silelim işlemci POR durumunda power on reset durumunda karşılaştırıcı özelliği zaten kapalı durumunda   bütün bunları   zaten sen de datasheet'in 128 , 135 ve 136. sayfalarında göreceksin   r/w  ucu şaseye yani eksiye bağlanmışsa pin tanıtmaya gerek yok .

NamTech

Ahmet BUDAK kardeşim çok teşekkür ederim. Çalıştı.
Kim Ne Derse Desin Alelade Birisi.