Vinnaren i pepparkakshustävlingen!
2016-11-21, 20:32
  #1
Medlem
Tjena,

Håller just nu på med ett litet projekt där jag försöker programmera en LCD. Just nu försöker jag att få LCD:n att skriva ut en int. Funktionen ser ut som nedan, tar emot en int. Så t e x skickar jag int i = 1357; så vill jag att LCD:n ska skriva ut 1357. Problemet jag inte lyckas få rätt på är att jag måste skicka ASCII-tecken till LCD:n och endast ett åt gången. Så vill jag skriva ut '1357' så får jag skicka:
Kod:
lcdwrite(0x31// ASCII Symbol ('1') hexadecimalt
lcdwrite(0x33// ASCI Symbol ('3') hexadecimalt
...osv
Men med int:en som jag skicka som argument till metoden

Kod:
int lcdWrite4DigitNumber(int number)
{
    

    return 
0;    /* Assuming everything went ok */


Någon som har en idé?
Citera
2016-11-21, 20:43
  #2
Medlem
autismus-maximuss avatar
Citat:
Ursprungligen postat av RiFFRaFF--
Tjena,

Håller just nu på med ett litet projekt där jag försöker programmera en LCD. Just nu försöker jag att få LCD:n att skriva ut en int. Funktionen ser ut som nedan, tar emot en int. Så t e x skickar jag int i = 1357; så vill jag att LCD:n ska skriva ut 1357. Problemet jag inte lyckas få rätt på är att jag måste skicka ASCII-tecken till LCD:n och endast ett åt gången. Så vill jag skriva ut '1357' så får jag skicka:
Kod:
lcdwrite(0x31// ASCII Symbol ('1') hexadecimalt
lcdwrite(0x33// ASCI Symbol ('3') hexadecimalt
...osv
Men med int:en som jag skicka som argument till metoden

Kod:
int lcdWrite4DigitNumber(int number)
{
    

    return 
0;    /* Assuming everything went ok */


Någon som har en idé?

Är du säker på att du inte har mer info? Får skärmen ström som den ska? + Behöver du inte meddela med någon ASCII att du vill "återställa" skärmen så att den visar de nya tecknena du skickar, tex igenom att skicka 0x0 eller liknande, gud vet.
Citera
2016-11-21, 20:48
  #3
Medlem
Citat:
Ursprungligen postat av autismus-maximus
Är du säker på att du inte har mer info? Får skärmen ström som den ska? + Behöver du inte meddela med någon ASCII att du vill "återställa" skärmen så att den visar de nya tecknena du skickar, tex igenom att skicka 0x0 eller liknande, gud vet.

Jadå skärmen är testad fullt ut. Allting fungerar, skickar jag kommandona vanligt. Alltså lcdWrite(någon Ascii Symbol) Så fungerar det. Det är inga hårdvaru problem detta, endast metoden som jag beskriver ovan som är problemet.
Citera
2016-11-21, 20:52
  #4
Medlem
autismus-maximuss avatar
Citat:
Ursprungligen postat av RiFFRaFF--
Jadå skärmen är testad fullt ut. Allting fungerar, skickar jag kommandona vanligt. Alltså lcdWrite(någon Ascii Symbol) Så fungerar det. Det är inga hårdvaru problem detta, endast metoden som jag beskriver ovan som är problemet.
Ahh sorry, ber om ursäkt för mina begränsade läsfärdigheter...

Du skulle ju kunna omvandla heltalet till en sträng eller ett bokstavsfält (jag förutsätter att du vet hur man gör detta) och sedan loopa igenom den och skriva ut varje bokstav.
Citera
2016-11-21, 20:59
  #5
Medlem
Citat:
Ursprungligen postat av autismus-maximus
Ahh sorry, ber om ursäkt för mina begränsade läsfärdigheter...

Du skulle ju kunna omvandla heltalet till en sträng eller ett bokstavsfält (jag förutsätter att du vet hur man gör detta) och sedan loopa igenom den och skriva ut varje bokstav.

Kod:
char toWrite[4];
    
sprintf(toWrite"%d"number); 

Detta kanske fungerar? (Kommer alltid vara 4 tal). Och sedan skriva ut varje element i char arrayen.
Citera
2016-11-21, 21:24
  #6
Medlem
Citat:
Ursprungligen postat av RiFFRaFF--
Kod:
char toWrite[4];
    
sprintf(toWrite"%d"number); 

Detta kanske fungerar? (Kommer alltid vara 4 tal). Och sedan skriva ut varje element i char arrayen.
Ja inte vet vi. Du kan ju testa.

Om du vill göra det manuellt kan du göra på följande sätt:

Kod:
int lcdWrite4DigitNumber(int n)
{
  if(n<0 || n>9999)
      return 1;
  const char zero = '0';
  int d;
  d=n/1000; lcdwrite(d+zero); n-=d*1000;
  d=n/100; lcdwrite(d+zero); n-=d*100;
  d=n/10; lcdwrite(d+zero); n-=d*10;
  lcdwrite(n+zero);

  return 0;    /* Assuming everything went ok */
}  
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback