logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AVR-C] wyświetlanie zmiennej na LCD.

adam cs 29 Paź 2009 16:01 7289 8
  • #1 7189787
    adam cs
    Poziom 14  
    Jak wyświetlić najprostszą zmienną na wyświetlaczu LCD ?
    Np. int a =5;
    Teraz chcę żeby mi ją pokazało na LCD.
    W bascomie sprawa jest banalna a tu ?
    Szukałem już w internecie coś na ten temat ale sporo jest materiałow na temat języka C jako takiego ale jećli chodzi już o C do AVR mało co.
    Jestem początkujący w tych sprawach dlatego proszę o wyrozumiałość.
  • #2 7189883
    mirekk36
    Poziom 42  
    Trzeba sobie samemu albo znaleźć gotowe procedury do obsługi LCD w C (w internecie znajdziesz ich mnóstwo) - albo samemu napisać. Zdecydowanie polecam to drugie - bo więcej i szybciej się nauczysz tegoż właśnie C dla AVR.

    Poczytaj sobie trochę o LCD na EdW i poczytaj jak się nimi steruje z C. Tutaj nie jest to teoretycznie tak banalnie proste jak w Bascomie. Chociaż jak się już zna C i wie o co chodzi - to wtedy też jest to banalnie proste ;)
  • #3 7189939
    adam cs
    Poziom 14  
    Jeśli ci chodzi o konfiguracje sygnałów sterujących wyświetlaczem to mam takie bibliotekii, no i "jakiś tam tekst" wyświetla.
    Teraz właśnie chodzi mi o zmienne ...
  • Pomocny post
    #4 7189953
    mirekk36
    Poziom 42  
    to teraz poszukaj sobie różnych funkcji w C do konwersji liczb na stringi - albo napisz je sam.

    Na początek zapoznaj się w manualu AVR GCC np z funkcją o nazwie: itoa
  • #5 7190205
    adam cs
    Poziom 14  
    Mam takie biblioteki
    #include <avr/io.h>
    #include <inttypes.h>
    #include <util/delay.h>
    #include <hd44780.c>
    #include <stdlib.h>
    czy to wystarcza do wyswietlenia zmiennej ? Programuje w WinAvr.
  • Pomocny post
    #6 7190240
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Masz dołączone takie NAGŁÓWKI.

    c:\WinAVR-YYYYMMDD\doc\avr-libc\avr-libc-user-manual.pdf
    http://www.google.pl/search?client=opera&rls=pl&q=itoa&sourceid=opera&ie=utf-8&oe=utf-8
    https://www.elektroda.pl/rtvforum/search.php

    Poczytaj wreszcie coś sam.

    4\/3!!
  • #7 7203219
    m.bartczak
    Poziom 16  
    Wbrew pozorom problem 'wyświetlania czegoś na wyświetlaczu' nie jest taki prosty.

    Chodzi o to, że standardowe biblioteki (zwłaszcza printf'o podobne) zajmują mnóstwo miejsca.

    Kiedyś, jak katarynka, powtarzałem że warto przejrzeć biblioteki Procyon AVR - http://hubbard.engr.scu.edu/embedded/avr/avrlib/

    Tam jest fajna funkcja, w miarę kompatybilna z printf, ale znacznie krótsza (w sensie pamięciożerności). Dodatkowo, ta funkcja automatycznie potrafi przekierować wyjście na dowolne urządzenie, wystarczy wywołać funkcję

    
    void rprintfInit	(void(*)(unsigned char c) putchar_func);
    


    Ta funkcja jako parametr pobiera wskaźnik do funkcji drukującej jeden znak na urządzeniu wyjściowym, na przykład:

    
    
    #include "rprintf.h"
    
    void printByteToLcd(u08 data)
    {
    	LCD_WriteData(data); // czy jakakolwiek inna funkcja wypisująca coś na dowolnym urządzeniu.
    }
    
    ... gdzies w kodzie:
    
    rprintfInit(printByteToLcd); // od tej chwili funkcja rprintf() będzie drukowała za pomocą funkcji printByteToLcd
    // a teraz można wywołać funkcję rprintf()
    
  • Pomocny post
    #8 7926422
    Miglans_87
    Poziom 13  
    Napisz tak:

    int a=5;
    char buffer [10]; // np. 10 znakow

    // potem w programie. np w while (1){ wklejasz:

    itoa( a, buffer, 10); // 10 - liczba dziesietna 5
    // 16- liczba wyswietli sie szesnastkowo - 0x05
    // 2 - wyswietli sie binarnie - 0b00000101
    // nastepnie:
    LCD wyswietl ("%s",buffer);

    // w moim przypadku to:
    glcdn_PutStrXLine(("%s",buffer), 30, 4); // gdzie podaje (co ma wyswetlic, ile pixeli w prawo, ktora linijka)
  • #9 7926496
    rpal
    Poziom 27  
    0x30 + 5 i masz kod ASCII liczby "5" to wysyłasz do LCD i masz piątkę na ekranie. Nic prostszego nie da się wymysleć.
    Na marginesie pytanie przypomina mi to które dawno temu zadal mi przyszły pracodawca i poprosili mnie aby wydrukować literę "a" z poziomu dbase na drukarce. Udało sie choć nie bez problemu, bo zapomnialem o znaku końca karetki i trzeba bylo wcisnąć OFF/ON aby drukarka z siebie to wypluła. Podobno pytanie było proste ale żaden z kandydatów nie umial sobie z tym poradzić :)
REKLAMA