Problem med 1x8 DOG LCD och PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem med 1x8 DOG LCD och PIC

Inlägg 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...
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: Problem med 1x8 DOG LCD och PIC

Inlägg 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 ;)
Användarvisningsbild
Axbri
Inlägg: 20
Blev medlem: 6 februari 2010, 20:15:47

Re: Problem med 1x8 DOG LCD och PIC

Inlägg 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
}
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4745
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Problem med 1x8 DOG LCD och PIC

Inlägg 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
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Problem med 1x8 DOG LCD och PIC

Inlägg av jesse »

jättesnyggt! :tumupp:
Skriv svar