Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

PIC18f + LCD , wyswietlanie liczb

Piter_K 13 Dec 2008 18:07 2771 4
  • #1
    Piter_K
    Level 10  
    Witam

    Sprzet
    18f4455 MCU
    4x20 LCD HD44780

    Probuje wyswietlic liczbe k na LCD. Wiem, wystarczy skonwertowanie int na string i voila ! Lecz standardowe instrukcje C++ jak itoa nie dzialaja. Jakies pomysly ?


    
    void main(void)
    {
       int k = 1234;
       
       TRISD   = 0x00; //-- Port D as output
       LATD=0x00;       // set value of D port
    
       LCDInit();
        LCDCzysc();      // clear display
       
       LCDText("0123456789abcdefghij");   
       
       
       while(1)
       {   
       } 
    
  • #2
    Seba319
    Level 24  
    Nie wyświetla Ci nić na LCD? Może jakiś problem z inicjacją? Może opisać problem trochę dokładniej?
  • #3
    Piter_K
    Level 10  
    nie, wyświetlać wyświela napisy
    ----> LCDText("0123456789abcdefghij"); działa
    tylko jak wyswietlic liczbę int k=1234 bo "0123456789abcdefghij" to string
  • #4
    elektryk
    Level 42  
    Piter_K wrote:
    Lecz standardowe instrukcje C++ jak itoa nie dzialaja. Jakies pomysly ?
    To chyba logiczne, to jest kompilator C a nie C++. A może trzeba użyć funkcji z języka C?
  • #5
    pys
    Level 1  
    Witam!
    Dwa rozwiązania tego problemu:
    1. Czemu twierdzisz, że nie ma f-cji itoa?
    Znajdziesz ją w bibliotece stdlib.h - musisz ja dołączyc

    2. Można też wykorzystać funkcje sprintf z biblioteki stdio.h- najlepiej poczytac o formatach w jakim zapisane beda dane do buf (tu %d zapisuje decymalnie).

    #include <stdio.h>
    void main (void)
    {
    int i = 0xA12;
    char buf[20];
    sprintf (buf, "%d", i);
    }


    Wszystko masz dokładnie opisane w pdf:
    http://ww1.microchip.com/downloads/en/devicedoc/C18_Lib_51297d.pdf

    Podobny problem był omawiany też na forum microchipa:
    http://forum.microchip.com/printable.aspx?m=169462