Sida 2 av 2

Re: Problem med 1x8 DOG LCD och PIC

Postat: 26 mars 2010, 10:22:45
av sodjan
> Och åtminstone i assembler spar man massor med utrymme

För macron dock enbart i källkoden, inte i processorn. Det var
inte tydligt viket du menade...

Re: Problem med 1x8 DOG LCD och PIC

Postat: 26 mars 2010, 17:21:07
av v-g
Precis det är bara vad gäller CALL man spar minne, med macro gör man dock oftast koden mycket tydligare tycker jag. Man lär sig vilket som passar var.

Själv kör jag nästan uteslutande skicka till display/RS232 som CALL det är behändigast så.

För just displayer brukar jag köra två funktioner den ena heter typ Skicka_Tecken den andra heter Skicka_Kommando (fast på engelska) vad de gör torde framgå ganska klart ;)

Re: Problem med 1x8 DOG LCD och PIC

Postat: 26 mars 2010, 22:48:23
av Axbri
Nu har jag gjort om koden lite. Hoppas ni tycker det är snyggare nu? :D

Kod: Markera allt

char *text = "Axbri.";

void send(int value) {                  // skicka en byte data till displayen
  PORTB = value;                        // lägg ut value på portB (data)
  PORTC.F6 = 1;                         // sätt E hög
  Delay_us (30);                        // vänta för att displayen ska läsa data
  PORTC.F6 = 0;                         // sätt E låg
  Delay_ms (1);                         // vänta innan nästa byte data skickas
}

void main() {
  ANSEL  = 0;                           // Configure AN pins as digital I/O
  ANSELH = 0;                           // Configure AN pins as digital I/O

  PORTB = 0;                            // clear portB
  TRISB = 0;                            // portB = output

  PORTC = 0;                            // clear portC
  TRISC = 0;                            // portC = output

  delay_ms(40);                         // inledande paus efter power on

  Lcd8_init(&PORTC, &PORTB);            // initriera Lcd8 för att
                                        // biblioteksinstruktionerna ska fungera
  PORTC.F4 = 0;                         // Clear RS = skicka komandon

  send(0b00110001);                     // Function Set
  send(0b00011100);                     // Bias Set
  send(0b01010001);                     // Power control
  send(0b01101010);                     // Follower control
  send(0b01110100);                     // Contrast Set
  send(0b00110000);                     // Function Set
  send(0b00001111);                     // Display ON/OFF
  send(0b00000001);                     // Clear display
  send(0b00000110);                     // Entery mode Set
      
  Lcd8_Cmd(LCD_CURSOR_OFF);             // stäng av markören
  Lcd8_Out(1, 1, text);                 // skriv ut variabeln text
}

Re: Problem med 1x8 DOG LCD och PIC

Postat: 26 mars 2010, 23:06:26
av Swech
Nu har du en kod som när du kommer tillbaks till den om .. säg 6 månader så kommer du att
fatta den igen bra mycket fortare än den förra versionen. :tumupp:

Vill man fixa ytterligare så bör du ev. deklarera upp bitar istället för dina "0b00110001"
så blir det ännu mer lättläst.

Swech

Re: Problem med 1x8 DOG LCD och PIC

Postat: 28 mars 2010, 18:50:25
av jesse
jättesnyggt! :tumupp: