www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

PIC876A + HD4480 LCD težave

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
A.B.
Član
Član



Pridružen-a: Sob 24 Jan 2009 14:50
Prispevkov: 91
Aktiv.: 0.46

PrispevekObjavljeno: Tor Mar 05, 2013 10:15 pm    Naslov sporočila:  PIC876A + HD4480 LCD težave Odgovori s citatom

Pozdravljeni,

imam težave pri upravljanju LCD-ja z mikrokontrolerjem. Za simuliranje uporabljam program Proteus. Kurzor začne utripati, tako da je inicializacija uspešna.
Vpisati poizkušam besedilo "test" vendar neuspešno.

Koda:

#include <pic.h>

#define E RB4
#define RS RB5
#define D4 RB0
#define D5 RB1
#define D6 RB2
#define D7 RB3

void waitms(int ms)
{
  volatile int i,j;
  for (i=0;i<ms;i++)
    for (j=0;j<60;j++);
}
void wait20us(int ms)
{
  volatile int i,j;
  for (i=0;i<ms;i++)
    for (j=0;j<2;j++);
}

void E_pulse(void)
{
  E=1;
  wait20us(5);
  E=0;
  wait20us(5);
}

void LCD_cmd(int cmd)
{

  int pv;

  RS=0; // LCD command mode
 
  pv = cmd>>4;
  PORTB=pv; // high bits
  E_pulse();
 waitms(5);
  pv = cmd&0x0f;
  PORTB=pv; // low bits
  E_pulse();
  waitms(10);
}
void LCD_chr(char data[])
{
 
  int i;
  int pv;
  int ch;
  E=0;
  RS=1; // LCD data mode
  for(i = 0; data[i] != 0; i++)
  {

    ch=data[i];
    pv=ch>>4;
    PORTB=pv; // high bits
    E_pulse();
    waitms(2);
    pv=ch&0x0f;
    PORTB=pv; // low bits
    E_pulse();

  }
waitms(10);
}
void LCD_locate(int row, int column)
{
 RS=0;
  if(row == 1)
  {
    LCD_cmd(0x80 | (column - 1)&0x0f);
  }
  else
  {
    LCD_cmd(0xc0 | (column - 1)&0x0f);
  } 
 
  waitms(5); 
}
void LCD_init(void)
{
  TRISB=0;
  waitms(40);
  RS=0;
  PORTB=0x3;
  E_pulse();
  waitms(6);
  PORTB=0x3;
  E_pulse(); // init!
  waitms(6);
  PORTB=0x3;
  E_pulse(); // init!
  waitms(6);
  PORTB=0x2;
  E_pulse();
  LCD_cmd(0x28);
  LCD_cmd(0x08);
  waitms(5);
  LCD_cmd(0x06);
  LCD_cmd(0x0F);
  waitms(1);
}

void main(){
LCD_init();
waitms(10);
LCD_chr("test");

while(1){

}
}


LP



Lcd.JPG
 Opis:
Shema
 Velikost datoteke:  250.14 KB
 Pogledana:  4 krat

Lcd.JPG


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.34

PrispevekObjavljeno: Tor Mar 05, 2013 11:15 pm    Naslov sporočila:   Odgovori s citatom

Po moje je težava nekje med
Koda:
void LCD_chr(char data[])

in
Koda:
LCD_chr("test");


Funkcija void LCD_chr pričakuje array znakov, kjer mora zadnji znak biti 0 (null terminated). Ti pa namesto arraya znakov, kot argument pošiljaš string. Preoblikuj funkcijo tako, da podaš za argument pointer na array, v katerega vpiši željen niz znakov z 0 kot zadnjim znakom.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
A.B.
Član
Član



Pridružen-a: Sob 24 Jan 2009 14:50
Prispevkov: 91
Aktiv.: 0.46

PrispevekObjavljeno: Sre Mar 06, 2013 1:18 am    Naslov sporočila:   Odgovori s citatom

Težavo sem odpravil. Bila je začetniška napaka. Pri pisanju na PORTB je na 0 šel tudi RS pin.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 485 dni


Powered by phpBB © 2001, 2005 phpBB Group