Εμφάνιση αποτελεσμάτων : 1 έως 9 από 9

Θέμα: Προγραμματισμός AVR σε C...

  1. #1
    Μέλος Το avatar του χρήστη Thansavv
    Όνομα
    Θανάσης
    Εγγραφή
    Nov 2008
    Περιοχή
    Φινλανδία
    Μηνύματα
    557

    Προεπιλογή Προγραμματισμός AVR σε C...

    Καλημέρα σε όλους.
    Καθώς είμαι στραβάδι στο χώρο προγραμματισμού των επεξεργαστών της Atmel σε C, θα ήθελα μια βοήθεια....
    Πως μπορώ να εμφανίσω την τιμή μιας μεταβλητής ή την δεκαδική τιμή ενός καταχωρητή σε ένα LCD display (π.χ. 2*16)?
    Όχι να γράφω εγώ την τιμή, αλλά να την παίρνει αυτόματα....
    Τι συναρτήσεις και ποιά μέθοδος χρησιμοποιείται?
    Ότι έχετε ευχαρίστηση....
    Ευχαριστώ...

    0 Not allowed! Not allowed!

  2. #2
    Νέο Μέλος Το avatar του χρήστη promitheas86
    Όνομα
    Κυριάκος
    Εγγραφή
    Oct 2009
    Περιοχή
    Αθήνα
    Μηνύματα
    2

    Προεπιλογή

    Καταρχάς πρέπει να βάλεις στις αρχικοποιήσεις πάνω από τη void main() το ακόλουθο κειμενάκι:
    #asm
    .equ.lcd.port=0x15
    #endasm
    Αυτό να σου πω την αλήθεια δεν ξέρω τι ακριβώς κάνει. Μάλλον αναθέτει σε κάποια πόρτα του AVR την οθονίτσα.
    Επίσης πρέπει να επιλέξεις και την βιβλιοθήκη της lcd, την lcd.h, γράφοντας #include <lcd.h> μαζί με τις υπόλοιπες βιβλιοθήκες του προγράμματος σου.
    Αυτά είναι τα αρχικά.
    Οι εντολές τώρα της lcd μέσα στο πρόγραμμα είναι οι εξής:

    lcd_clear(); Η οποία καθαρίζει την οθόνη και επαναφέρει τον κέρσορα στη θέση 0,0 της lcd.

    lcd_gotoxy(στήλη,γραμμή); Αυτό νομίζω είναι προφανές τι κάνει. Μετακινεί τον κέρσορα. Πρόσεξε ότι ενώ γενικώς στην C/C++ οι εκφράσεις που αφορούν συντεταγμένες είναι σε μορφή <γραμμή,στήλη>, εδώ είναι το αντίθετο!

    lcd_putsf("Standard Message"); Αυτή η εντολή τυπώνει το σταθερό μήνυμα που περικλείεται στα αυτάκια.

    lcd_puts(str); Όπου str μία μεταβλητή τύπου αλφαριθμητικού (string). Αυτή η εντολή είναι αυτη που σε ενδιαφέρει άμεσα. Τυπώνει όμως μόνο αλφαριθμητικά και δυστυχώς δεν υπάρχει άλλη εντολή εκτύπωσης.
    Για να τυπώσεις τώρα εσύ μία τιμή πρέπει από ότι είναι, ακέραια, δεκαδική, να την κάνεις αλφαριθμητική.
    Γι αυτό το σκοπό υπάρχει μία σειρα εντολών που βρίσκονται στην βιβλιοθήκη stdlib.h
    Αυτές είναι οι:

    void itoa(n,str); Που μετατρέπει τον ακέραιο n σε αλφαριθμητικό και τον αποθηκεύει στη μεταβλητή str.

    void ftoa(n,dec,str); Που μετατρέπει τον δεκαδικό n σε αλφαριθμητικό και τον αποθηκεύει στη μεταβλητή str με όσα δεκαδικά γράψεις εσύ στο dec.

    Εννοείται ότι όταν τις γράφεις στο πρόγραμμα δεν γράφεις το void. Επίσης εννοείται ότι θα δηλώσεις τις μεταβλητές σου καταλλήλως.

    Ελπίζω να βοήθησα!

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη shoco
    Όνομα
    Θοδωρής
    Εγγραφή
    Jun 2005
    Μηνύματα
    358

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από promitheas86 Εμφάνιση μηνυμάτων
    Καταρχάς πρέπει να βάλεις στις αρχικοποιήσεις πάνω από τη void main() το ακόλουθο κειμενάκι:
    #asm
    .equ.lcd.port=0x15
    #endasm
    Αυτό να σου πω την αλήθεια δεν ξέρω τι ακριβώς κάνει. Μάλλον αναθέτει σε κάποια πόρτα του AVR την οθονίτσα.
    Επίσης πρέπει να επιλέξεις και την βιβλιοθήκη της lcd, την lcd.h, γράφοντας #include <lcd.h> μαζί με τις υπόλοιπες βιβλιοθήκες του προγράμματος σου.
    Αυτά είναι τα αρχικά.
    Οι εντολές τώρα της lcd μέσα στο πρόγραμμα είναι οι εξής:

    lcd_clear(); Η οποία καθαρίζει την οθόνη και επαναφέρει τον κέρσορα στη θέση 0,0 της lcd.

    lcd_gotoxy(στήλη,γραμμή); Αυτό νομίζω είναι προφανές τι κάνει. Μετακινεί τον κέρσορα. Πρόσεξε ότι ενώ γενικώς στην C/C++ οι εκφράσεις που αφορούν συντεταγμένες είναι σε μορφή <γραμμή,στήλη>, εδώ είναι το αντίθετο!

    lcd_putsf("Standard Message"); Αυτή η εντολή τυπώνει το σταθερό μήνυμα που περικλείεται στα αυτάκια.

    lcd_puts(str); Όπου str μία μεταβλητή τύπου αλφαριθμητικού (string). Αυτή η εντολή είναι αυτη που σε ενδιαφέρει άμεσα. Τυπώνει όμως μόνο αλφαριθμητικά και δυστυχώς δεν υπάρχει άλλη εντολή εκτύπωσης.
    Για να τυπώσεις τώρα εσύ μία τιμή πρέπει από ότι είναι, ακέραια, δεκαδική, να την κάνεις αλφαριθμητική.
    Γι αυτό το σκοπό υπάρχει μία σειρα εντολών που βρίσκονται στην βιβλιοθήκη stdlib.h
    Αυτές είναι οι:

    void itoa(n,str); Που μετατρέπει τον ακέραιο n σε αλφαριθμητικό και τον αποθηκεύει στη μεταβλητή str.

    void ftoa(n,dec,str); Που μετατρέπει τον δεκαδικό n σε αλφαριθμητικό και τον αποθηκεύει στη μεταβλητή str με όσα δεκαδικά γράψεις εσύ στο dec.

    Εννοείται ότι όταν τις γράφεις στο πρόγραμμα δεν γράφεις το void. Επίσης εννοείται ότι θα δηλώσεις τις μεταβλητές σου καταλλήλως.

    Ελπίζω να βοήθησα!
    Αυτες ειναι συναρτησεις απο codevision. Το συγκεκριμενο δεν ειναι ακριβως υλοποιηση c. Αν θελεις καθαρο compiler σε c τοτε κατεβασε το winavr. Για περισσοτερη βοηθεια www.avrfreaks.net

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη Thansavv
    Όνομα
    Θανάσης
    Εγγραφή
    Nov 2008
    Περιοχή
    Φινλανδία
    Μηνύματα
    557

    Προεπιλογή

    Σ' ευχαριστώ πολύ για την απάντηση και τη βοήθειά σου.
    Θα "καλέσω" πρώτα δηλαδή την void itoa(n,str) η οποία θα μετατρέψει την αριθμητική τιμή του n σε string ( εννοώ αλφαριθμητική....) και μετα την lcd_puts(str) όπου str θα είναι πλέον η τιμή π.χ. "24567". Σωστά μέχρι εδώ?
    Οι συναρτήσεις που μου έγραψες ποιανού προγράμματος είναι?

    0 Not allowed! Not allowed!

  5. #5
    Νέο Μέλος Το avatar του χρήστη promitheas86
    Όνομα
    Κυριάκος
    Εγγραφή
    Oct 2009
    Περιοχή
    Αθήνα
    Μηνύματα
    2

    Προεπιλογή

    Eίναι του codevision avr. http://www.hpinfotech.ro/html/download.htm Πάντως λάβε υπόψιν σου και αυτό που είπε ο φίλος μας ο shoco. Τη λειτουργία την έπιασες όμως, έτσι γίνεται. Όλα πρέπει να τα κάνεις string...αλφαριθμητικά!

    0 Not allowed! Not allowed!

  6. #6
    Μέλος Το avatar του χρήστη Thansavv
    Όνομα
    Θανάσης
    Εγγραφή
    Nov 2008
    Περιοχή
    Φινλανδία
    Μηνύματα
    557

    Προεπιλογή

    Ευχαριστώ πολύ για τις απαντήσεις. Το έπιασα το νόημα πως λειτουργούν τα άτιμα τα string, και η itoa(n,str) κάνει αυτό που ήθελα, όχι όμως για μεγάλους αριθμούς... Η ftoa(n,dec,str) δεν μου δούλεψε γιατί το Codevision είναι demo και μπορώ να προγραμματίσω μέχρι 2Kb.... Δοκιμάζω με tiny2313...
    Ξανά ερώτηση
    Μπορεί κάποια συνάρτηση του WINAVR να δουλέψει στο Codevision και τούμπαλιν?
    Ποιά library του WinAvr έχει συναρτήσεις για την διαχείριση LCD?
    Sorry για τις ερωτήσεις "αρχαρίων" αλλά ξεκινάω από το μηδέν, και προσπαθώ να ξεκολλήσω από εκεί...
    Να είστε καλά....

    0 Not allowed! Not allowed!

  7. #7
    Μέλος Το avatar του χρήστη shoco
    Όνομα
    Θοδωρής
    Εγγραφή
    Jun 2005
    Μηνύματα
    358

    Προεπιλογή

    Αν θες μπες στο site που σου εδωσα, εκει υπαρχει ολοκληρο τοπικ για το winavr εχει παρα πολλες συναρτησεις για lcd, θυμαμαι οτι δεν ειχα δυσκολευτει πολυ στη μεταβαση codevision -> winavr αλλα καλυτερα να ζοριστεις τωρα και να μαθεις ενα open source παρα να ψαχνεσαι συνεχεια για πληρωμες και κρακαρισματα. Το winavr ειναι πολυ καλυτερο από το codevision και πολυ πιο ισχυρο tool. Δεν μπορω βεβαια να μην σχολιασω την υποστηριξη που εχει στο συγκεκριμενο φορουμ.

    http://www.avrfreaks.net/index.php?n...15f85e7db08173

    0 Not allowed! Not allowed!

  8. #8
    Μέλος Το avatar του χρήστη Thansavv
    Όνομα
    Θανάσης
    Εγγραφή
    Nov 2008
    Περιοχή
    Φινλανδία
    Μηνύματα
    557

    Προεπιλογή

    Σ' ευχαριστώ πολύ. Μόλις έκανα εγγραφή και αρχίζω δειλά δειλά το ψάξιμο...

    0 Not allowed! Not allowed!

  9. #9
    Μέλος Το avatar του χρήστη shoco
    Όνομα
    Θοδωρής
    Εγγραφή
    Jun 2005
    Μηνύματα
    358

    Προεπιλογή

    Να 'σαι καλα

    0 Not allowed! Not allowed!

Παρόμοια Θέματα

  1. Προγραμματισμός AVR σε objective C
    By agelosnm in forum Μικροελεγκτές
    Απαντήσεις: 15
    Τελευταίο Μήνυμα: 16-04-16, 16:38
  2. AVR + ISP προγραμματισμός
    By ALAMAN in forum Μικροελεγκτές
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 24-08-13, 22:48
  3. AVR προγραμματισμός, μια βοήθεια
    By kotsos___ in forum Μικροελεγκτές
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 10-12-12, 03:24
  4. Προγραμματισμός μΕ-AVR
    By xmaze in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 16-06-11, 23:37
  5. Προγραμματισμός ATMEGA128RFA1 με AVR Dragon?
    By tasosgi in forum Μικροελεγκτές
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 07-04-10, 16:05

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας