Πώς να ανεβάσετε ένα πρόγραμμα στο atmega8 proteus. Προσομοίωση συσκευής

10.09.2021

Σε αυτό εκπαιδευτικό πρόγραμμααπό avr Προσπάθησα να περιγράψω όλα τα πιο βασικά πράγματα για αρχάριους στον προγραμματισμό μικροελεγκτών avr. Όλα τα παραδείγματα βασίζονται σε μικροελεγκτή atmega8. Αυτό σημαίνει ότι για να επαναλάβετε όλα τα μαθήματα θα χρειαστείτε μόνο ένα MK. Ως εξομοιωτής ηλεκτρονικά κυκλώματαΤο Proteus χρησιμοποιείται -κατά τη γνώμη μου- η καλύτερη επιλογή για αρχάριους. Τα προγράμματα σε όλα τα παραδείγματα είναι γραμμένα στον μεταγλωττιστή C για το avr CodeVision AVR. Γιατί όχι σε κάποιο assembler; Επειδή ένας αρχάριος είναι ήδη φορτωμένος με πληροφορίες και ένα πρόγραμμα που πολλαπλασιάζει δύο αριθμούς χρειάζεται περίπου εκατό γραμμές στο assembler, και σε πολύπλοκα, τολμηρά έργα χρησιμοποιούν C. Ο μεταγλωττιστής CodeVision AVR είναι προσαρμοσμένος για μικροελεγκτές atmel, έχει μια βολική γεννήτρια κώδικα, μια καλή διεπαφή και μπορείτε να αναβοσβήσετε τον μικροελεγκτή απευθείας από αυτήν.

Αυτό το εκπαιδευτικό μάθημα θα εξηγήσει και θα δείξει με απλά παραδείγματα πώς να:

  • Ξεκινήστε τον προγραμματισμό μικροελεγκτών, από πού να ξεκινήσετε, τι χρειάζεστε για αυτό.
  • Ποια προγράμματα να χρησιμοποιήσετε για τη σύνταξη υλικολογισμικού για avr, για προσομοίωση και εντοπισμό σφαλμάτων κώδικα σε υπολογιστή,
  • Ποιες περιφερειακές συσκευές βρίσκονται μέσα στο MK, πώς να τις ελέγξετε χρησιμοποιώντας το πρόγραμμά σας
  • Πώς να γράψετε ολοκληρωμένο υλικολογισμικό σε έναν μικροελεγκτή και πώς να το διορθώσετε
  • Πώς να φτιάξετε ένα PCB για τη συσκευή σας
Για να κάνετε τα πρώτα βήματα προς τον προγραμματισμό του MK, θα χρειαστείτε μόνο δύο προγράμματα:
  • Το Proteus είναι ένα πρόγραμμα εξομοιωτή (σε αυτό μπορείτε να αναπτύξετε ένα κύκλωμα χωρίς να καταφύγετε σε πραγματική συγκόλληση και στη συνέχεια να δοκιμάσετε το πρόγραμμά μας σε αυτό το κύκλωμα). Θα ξεκινήσουμε πρώτα όλα τα έργα στο Proteus και στη συνέχεια μπορούμε να κολλήσουμε την πραγματική συσκευή.
  • Το CodeVisionAVR είναι ένας μεταγλωττιστής γλώσσας προγραμματισμού C για AVR. Σε αυτό θα αναπτύξουμε προγράμματα για τον μικροελεγκτή και απευθείας από αυτόν θα είναι δυνατό να αναβοσβήνει ένα πραγματικό MK.
Αφού εγκαταστήσετε το Proteus, εκκινήστε το
Μας καλεί να δούμε τα έργα που τον συνοδεύουν, αρνούμαστε ευγενικά. Τώρα ας δημιουργήσουμε τα περισσότερα απλό διάγραμμα. Για να το κάνετε αυτό, κάντε κλικ στο εικονίδιο και οπτικά δεν συμβαίνει τίποτα. Τώρα πρέπει να κάνετε κλικ στο μικρό γράμμα P (επιλογή από τη βιβλιοθήκη)στον πίνακα λίστας στοιχείων, θα ανοίξει το παράθυρο επιλογής στοιχείων
στο πεδίο μάσκα εισάγουμε το όνομα του στοιχείου που θέλουμε να βρούμε στη βιβλιοθήκη. Για παράδειγμα, πρέπει να προσθέσουμε έναν μικροελεγκτή mega8
στη λίστα αποτελεσμάτων, τοποθετήστε το δείκτη του ποντικιού στο mega8 και πατήστε το κουμπί ΕΝΤΑΞΕΙ. Ο μικροελεγκτής mega8 εμφανίζεται στη λίστα εξαρτημάτων μας
Έτσι, προσθέτουμε άλλη μια αντίσταση στη λίστα των εξαρτημάτων εισάγοντας τη λέξη μάσκα στο πεδίο resκαι LED οδήγησε

Για να τοποθετήσετε εξαρτήματα στο διάγραμμα, κάντε κλικ στο τμήμα, μετά κάντε κλικ στο πεδίο του διαγράμματος, επιλέξτε τη θέση του στοιχείου και κάντε ξανά κλικ. Για να προσθέσετε ένα αρνητικό γείωσης ή γενικό αρνητικό στο διάγραμμα στα αριστερά, κάντε κλικ στο «Τερματικό» και επιλέξτε Γείωση. Έτσι, προσθέτοντας όλα τα εξαρτήματα και συνδέοντάς τα, παίρνουμε αυτό το απλό κύκλωμα
Αυτό ήταν, τώρα το πρώτο μας σχέδιο είναι έτοιμο! Αλλά μπορείτε να ρωτήσετε, τι μπορεί να κάνει; Τίποτα. Τίποτα, γιατί για να λειτουργήσει ο μικροελεγκτής πρέπει να του γράψεις πρόγραμμα. Ένα πρόγραμμα είναι μια λίστα εντολών που θα εκτελέσει ο μικροελεγκτής. Χρειαζόμαστε τον μικροελεγκτή για να τοποθετηθεί σε ένα πόδι PC0λογικό 0 (0 βολτ) και λογικό 1 (5 βολτ).

Σύνταξη προγράμματος για μικροελεγκτή

Θα γράψουμε το πρόγραμμα σε γλώσσα C χρησιμοποιώντας τον μεταγλωττιστή CodeVisionAVR. Αφού τρέξουμε το βιογραφικό, μας ρωτά τι θέλουμε να δημιουργήσουμε: Πηγή ή Έργο Επιλέγουμε το τελευταίο και πατάμε ΟΚ. Στη συνέχεια, θα μας ζητηθεί να ξεκινήσουμε τον οδηγό CVAVR CodeWizard (αυτό είναι ένα ανεκτίμητο εργαλείο για έναν αρχάριο, επειδή μπορεί να δημιουργήσει τον κύριο σκελετό του προγράμματος) επιλέγω Ναί
Ο οδηγός ξεκινά με την καρτέλα Chip ενεργή, εδώ μπορούμε να επιλέξουμε το μοντέλο του MK μας - αυτό είναι το mega8 και η συχνότητα με την οποία θα λειτουργεί το MK (από προεπιλογή, το mega8 έχει οριστεί σε συχνότητα 1 megahertz), οπότε ορίζουμε όλα όπως φαίνεται στο παραπάνω στιγμιότυπο οθόνης.
Μεταβείτε στην καρτέλα Ports
  • Ο μικροελεγκτής atmega8 έχει 3 θύρες: Θύρα C, Θύρα D, Θύρα Β. Κάθε θύρα έχει 8 ακίδες. Τα σκέλη θύρας μπορούν να είναι σε δύο καταστάσεις:
Εξοδος
  • Χρησιμοποιώντας τον καταχωρητή DDRx.y μπορούμε να ρυθμίσουμε την ακίδα ως είσοδο ή έξοδο. Αν μέσα DDRx.y = 0 - η έξοδος λειτουργεί όπως
  • ΕΙΣΟΔΟΣ DDRx.y = 1 pin που λειτουργεί
ΕΞΟΔΟΣ

Όταν ο ακροδέκτης έχει διαμορφωθεί ως έξοδος, μπορούμε να τον ρυθμίσουμε στο λογικό 1 (+5 βολτ) και στο λογικό 0 (0 βολτ). Αυτό γίνεται με εγγραφή στο μητρώο PORTx.y. Στη συνέχεια θα μιλήσουμε αναλυτικά για τις θύρες I/O. Τώρα ρυθμίζουμε τα πάντα όπως φαίνεται στο στιγμιότυπο οθόνης και κάνουμε κλικ στο Αρχείο->Δημιουργία, Αποθήκευση και Έξοδος. Στη συνέχεια, ο CodeWizard θα μας ζητήσει να αποθηκεύσουμε το έργο, το αποθηκεύουμε και κοιτάμε τον κώδικα: //βιβλιοθήκη για τη δημιουργία χρονικών καθυστερήσεων void main(void) ( PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x01; // κάνει το PC0 pin ως έξοδο PORTD=0x00; DDRD=0x00; // Timer/Counter 0 αρχικοποίηση TCCR0=0x00; // Timer/Counter TCCR1A=0x00 OCR1BL=0x00; αρχικοποίηση TIMSK=0x00 // Αρχικοποίηση αναλογικού συγκριτή ACSR=0x80;


Όλα εδώ μπορεί να σας φαίνονται τρομακτικά και άγνωστα, αλλά στην πραγματικότητα δεν είναι όλα έτσι. Ο κώδικας μπορεί να απλοποιηθεί εξαλείφοντας την προετοιμασία των περιφερειακών συσκευών MK που δεν χρησιμοποιούμε. Μετά την απλοποίηση φαίνεται ως εξής:

Όταν ο ακροδέκτης έχει διαμορφωθεί ως έξοδος, μπορούμε να τον ρυθμίσουμε στο λογικό 1 (+5 βολτ) και στο λογικό 0 (0 βολτ). Αυτό γίνεται με εγγραφή στο μητρώο PORTx.y. Στη συνέχεια θα μιλήσουμε αναλυτικά για τις θύρες I/O. Τώρα ρυθμίζουμε τα πάντα όπως φαίνεται στο στιγμιότυπο οθόνης και κάνουμε κλικ στο Αρχείο->Δημιουργία, Αποθήκευση και Έξοδος. Στη συνέχεια, ο CodeWizard θα μας ζητήσει να αποθηκεύσουμε το έργο, το αποθηκεύουμε και κοιτάμε τον κώδικα: //βιβλιοθήκη για εργασία με τον μικροελεγκτή mega8 #include //βιβλιοθήκη για τη δημιουργία χρονικών καθυστερήσεων void main(void) ( DDRC=0x01; /* κάνει την έξοδο PC0 pin Η καταχώρηση 0x01 μπορεί να σας φαίνεται άγνωστη και αυτός είναι μόνο ο αριθμός 1 σε δεκαεξαδική μορφή, αυτή η γραμμή θα είναι ισοδύναμη σε 0b00000001 σε δυαδικό, τότε θα γράψω με αυτόν τον τρόπο.*/ ενώ (1) ( )


Όλα είναι καλά. Αλλά για να αναβοσβήνει το LED, πρέπει να αλλάξουμε το λογικό επίπεδο στον ακροδέκτη PC0. Για να το κάνετε αυτό, πρέπει να προσθέσετε πολλές γραμμές στον κύριο βρόχο:

Όταν ο ακροδέκτης έχει διαμορφωθεί ως έξοδος, μπορούμε να τον ρυθμίσουμε στο λογικό 1 (+5 βολτ) και στο λογικό 0 (0 βολτ). Αυτό γίνεται με εγγραφή στο μητρώο PORTx.y. Στη συνέχεια θα μιλήσουμε αναλυτικά για τις θύρες I/O. Τώρα ρυθμίζουμε τα πάντα όπως φαίνεται στο στιγμιότυπο οθόνης και κάνουμε κλικ στο Αρχείο->Δημιουργία, Αποθήκευση και Έξοδος. Στη συνέχεια, ο CodeWizard θα μας ζητήσει να αποθηκεύσουμε το έργο, το αποθηκεύουμε και κοιτάμε τον κώδικα: //βιβλιοθήκη για εργασία με τον μικροελεγκτή mega8 #include //βιβλιοθήκη για τη δημιουργία χρονικών καθυστερήσεων void main(void) ( DDRC=0x01; /* κάνει την έξοδο PC0 pin Η καταχώρηση 0x01 μπορεί να σας φαίνεται άγνωστη και αυτός είναι μόνο ο αριθμός 1 σε δεκαεξαδική μορφή, αυτή η γραμμή θα είναι ισοδύναμη σε 0b00000001 σε δυαδικό, τότε θα το γράψω ακριβώς έτσι.*/ ενώ (1) // κύριος βρόχος του προγράμματος (// ανοίγει την αγκύλη χειριστή του κύριου βρόχου του προγράμματος PORTC.0=1; / / ορίστε την ακίδα 0 της θύρας C 1 σε delay_ms(500) ;//κλείνει την αγκύλη χειριστή του κύριου βρόχου προγράμματος)


Αυτό ήταν, ο κωδικός είναι τώρα έτοιμος. Κάντε κλικ στο εικονίδιο Build all Project files για να μεταγλωττίσετε (μεταφραστείτε σε οδηγίες επεξεργαστή MK) το πρόγραμμά μας. Στο φάκελο Exe, που βρίσκεται στο έργο μας, θα πρέπει να εμφανιστεί ένα αρχείο με επέκταση hex, αυτό είναι το αρχείο υλικολογισμικού μας για το MK. Για να τροφοδοτήσετε το υλικολογισμικό μας στον εικονικό μικροελεγκτή στο Proteus, πρέπει να κάνετε διπλό κλικ στην εικόνα του μικροελεγκτή στο Proteus. Θα εμφανιστεί ένα παράθυρο σαν αυτό
Κάντε κλικ στο εικονίδιο του φακέλου στο πεδίο Program File, επιλέξτε το hex αρχείο του υλικολογισμικού μας και κάντε κλικ στο OK.

Τώρα μπορούμε να εκτελέσουμε μια προσομοίωση του κυκλώματος μας. Για να το κάνετε αυτό, κάντε κλικ στο κουμπί "Αναπαραγωγή" στην κάτω αριστερή γωνία του παραθύρου του Proteus.Σχεδιασμός διαγραμμάτων ηλεκτρικών κυκλωμάτων με χρήση μικροελεγκτών σε περιβάλλον λογισμικού

Πρωτέας 8.1. Μέρος 2 Υλοποιήθηκε στον Πρωτέαμεγάλο αριθμό λειτουργίες για επαγγελματικό σχεδιασμό μικροηλεκτρονικών συσκευών με επίκεντρο το μέγιστοσύγχρονα μέσα

πρίπλασμα. Μία από αυτές τις λειτουργίες είναι η προσομοίωση της λειτουργίας των μικροελεγκτών.

Σε αυτό το άρθρο, η διαδικασία μοντελοποίησης κυκλωμάτων με χρήση μικροελεγκτών συζητείται χρησιμοποιώντας τον μικροελεγκτή 80C51 ως παράδειγμα.

Προσομοίωση κυκλώματος με μικροελεγκτή και μετάφραση κώδικα προγράμματος.

Για να δείξουμε με σαφήνεια τη λειτουργία του προγράμματος προετοιμασίας μικροελεγκτή, θα χρησιμοποιήσουμε έγχρωμους ανιχνευτές λογικών επιπέδων 0 και 1. Για να προσθέσετε έναν ανιχνευτή στον χώρο εργασίας του έργου, πρέπει να καλέσετε το παράθυρο Διαλογή συσκευών (Εικ. 1) και στο Το πεδίο κατηγορίας επιλέξτε τη βιβλιοθήκη Εργαλείων εντοπισμού σφαλμάτων από τη λίστα, στο πεδίο Υποκατηγορία επιλέξτε τη γραμμή Λογικοί ανιχνευτές και στο πεδίο Αποτελέσματα επιλέξτε τη γραμμή LOGICPROBE και, στη συνέχεια, κάντε κλικ στο OK.

Ρύζι. 1. Επιλογή ενός αισθητήρα λογικού επιπέδου στο παράθυρο Επιλογή συσκευών.

Ως αποτέλεσμα, το παράθυρο "Επιλογή συσκευών" θα κλείσει και το σύμβολο του ανιχνευτή θα προσαρτηθεί στον κέρσορα του ποντικιού, με τη βοήθεια του οποίου πρέπει να τοποθετήσετε το σύμβολο στην επιθυμητή θέση στο διάγραμμα - κάντε κλικ στην επιθυμητή θέση στο διάγραμμα με το αριστερό κουμπί του ποντικιού όσες φορές χρειάζεται να τοποθετηθούν οι ανιχνευτές.

Ας προσθέσουμε τον μικροελεγκτή 80C51 στον χώρο εργασίας του έργου (η διαδικασία δημιουργίας ενός νέου έργου με χρήση μικροελεγκτή στο Proteus συζητήθηκε λεπτομερώς στο πρώτο μέρος του άρθρου) και ας συνδέσουμε τους ανιχνευτές στις υπό μελέτη γραμμές θυρών μικροελεγκτή. Ως αποτέλεσμα, όταν εμφανίζεται μια τιμή λογικής μίας στην έξοδο της γραμμής θύρας, ο ανιχνευτής θα επισημαίνεται με κόκκινο χρώμα και όταν εμφανίζεται μια λογική μηδενική τιμή, ο ανιχνευτής θα επισημαίνεται με μπλε. Οι τιμές 0 και 1 εμφανίζονται επίσης οπτικά στους ανιχνευτές.

Αφού συναρμολογηθεί το διάγραμμα στον χώρο εργασίας του έργου (Εικ. 2) και ο κώδικας του προγράμματος έχει εισαχθεί στην καρτέλα Πηγαίος κώδικας (Εικ. 3), μπορείτε να ξεκινήσετε την προσομοίωση.

Ρύζι. 2. Κύκλωμα επίδειξης με χρήση μικροελεγκτή και αισθητήρες λογικού επιπέδου χρώματος.

Η διαδικασία προσομοίωσης ξεκινά χρησιμοποιώντας το κουμπί Εκτέλεση της προσομοίωσης, το οποίο βρίσκεται στην κάτω αριστερή γωνία του παραθύρου του προγράμματος. Για να διακόψετε προσωρινά τη διαδικασία προσομοίωσης, χρησιμοποιήστε το κουμπί Παύση της προσομοίωσης ή εκκινήστε τη στιγμή 0 εάν σταματήσει (το κουμπί βρίσκεται στην κάτω αριστερή γωνία του παραθύρου του προγράμματος). Μπορείτε να σταματήσετε την προσομοίωση χρησιμοποιώντας το κουμπί Διακοπή της προσομοίωσης.

Ως αποτέλεσμα, εάν ο μεταγλωττιστής δεν εντοπίσει σφάλματα στη λίστα προγραμμάτων, τα ακόλουθα αρχεία θα δημιουργηθούν στο δίσκο του υπολογιστή σας στον φάκελο εργασίας του έργου:

  • *.hex – αρχείο κώδικα μηχανής (Εικ. 4);
  • *.asm – αρχείο με τον κωδικό assembler του προγράμματος (Εικ. 5);
  • *.sdi – αρχείο εντοπισμού σφαλμάτων προγράμματος προετοιμασίας, τα περιεχόμενα του οποίου μπορούν επίσης να προβληθούν στην καρτέλα Πηγαίος κώδικας της CPU 8051 (Εικ. 6).

Ρύζι. 4. Αρχείο κωδικού μηχανής Nex.

Ρύζι. 5. Αρχείο με κωδικό συναρμολόγησης του προγράμματος.

Ρύζι. 6. Καρτέλα 8051 Πηγαίος κώδικας CPU.

Το πρόγραμμα προετοιμασίας μικροελεγκτή είναι γραμμένο στη γλώσσα προγραμματισμού asm51. Αυτή είναι μια γλώσσα assembly που έχει σχεδιαστεί ειδικά για τη σύνταξη προγραμμάτων για μικροελεγκτές της οικογένειας x51. Εάν εντοπίστηκαν σφάλματα κατά τη μεταγλώττιση του κώδικα του προγράμματος προετοιμασίας του μικροελεγκτή, θα επισημανθούν από τον μεταγλωττιστή στο αρχείο *.lst. Σε αυτήν την περίπτωση, το αρχείο hex δεν θα δημιουργηθεί μέχρι να επιλυθούν τα σφάλματα. Στο αρχείο καταχώρισης, για κάθε σφάλμα που εντοπίστηκε, ο μεταγλωττιστής υποδεικνύει την αιτία του σφάλματος και τον αριθμό γραμμής στην οποία εντοπίστηκε. Το σχήμα 7 δείχνει ένα τμήμα του αρχείου *.lst, στο οποίο το πρόγραμμα εντοπισμού σφαλμάτων αναφέρει το σφάλμα αριθμό 2 (Undefined identifier), το οποίο είναι ότι το όνομα της θύρας εισόδου/εξόδου δεδομένων έχει καθοριστεί εσφαλμένα στον κώδικα του προγράμματος (ο μικροελεγκτής που χρησιμοποιείται δεν έχουν μια θύρα με το όνομα P6).

Ρύζι. 7. Τμήμα του αρχείου καταχώρισης *.lst.

Ο εντοπισμός σφαλμάτων του προγράμματος προετοιμασίας γίνεται στην καρτέλα Πηγαίος Κώδικας CPU 8051, η οποία εμφανίζεται μετά την παύση της διαδικασίας προσομοίωσης. Για να διακόψετε προσωρινά την προσομοίωση κυκλώματος, χρησιμοποιήστε το κουμπί Παύση της προσομοίωσης ή εκκινήστε τη στιγμή 0 εάν διακοπεί (το κουμπί βρίσκεται στην κάτω αριστερή γωνία του παραθύρου του προγράμματος). Μια αναφορά για σφάλματα που ελήφθησαν ως αποτέλεσμα της μετάφρασης του κώδικα προγράμματος εμφανίζεται στο κάτω μέρος της καρτέλας Πηγαίος κώδικας στον πίνακα εξόδου VSM Studio (Εικ. 8).

Ρύζι. 8. Αναφορά για σφάλματα που ελήφθησαν ως αποτέλεσμα της μετάφρασης του κώδικα προγράμματος.

Η κατάσταση της μνήμης και των καταχωρητών του μικροελεγκτή μπορεί να προβληθεί χρησιμοποιώντας τις ακόλουθες εντολές στο κύριο μενού του προγράμματος:

  • Καταχωρητές CPU Debug/8051 (Εικ. 9a);
  • Debug/8051 CPU SFR Memory (Εικ. 9b);
  • Εντοπισμός σφαλμάτων/8051 Εσωτερική μνήμη CPU (IDATA) (Εικ. 9γ).

Ρύζι. 9. Κατάσταση: (α) καταχωρητών, (β) μνήμης SFR, (γ) εσωτερική μνήμημικροελεγκτή.

Το μενού Debug (Εικ. 10) είναι διαθέσιμο όταν η προσομοίωση κυκλώματος έχει τεθεί σε παύση.

Ρύζι. 10. Μενού εντοπισμού σφαλμάτων.

Ας αναλύσουμε τη λειτουργία του κυκλώματος επίδειξης που παρουσιάζεται στην Εικόνα 2. Στην καρτέλα main.asm (Εικόνα 3), χρησιμοποιώντας την εντολή mov, δόθηκαν οδηγίες στο πρόγραμμα προετοιμασίας του μικροελεγκτή να γράψει στη θύρα P2 τις ακόλουθες τιμές των γραμμών θύρας P2.7-P2.0 - "00001111" και στη θύρα P1 - οι τιμές των γραμμών θυρών P1.7-P1.0 - "01010101". Αφού εκτελέσετε την προσομοίωση χρησιμοποιώντας έγχρωμους ανιχνευτές, μπορούμε να ελέγξουμε ότι το πρόγραμμα λειτουργεί σωστά. Όπως φαίνεται από το σχήμα 2, οι ακίδες των θυρών του μικροελεγκτή P1 και P2 είναι πράγματι ο συνδυασμός που καθορίσαμε στον κώδικα του προγράμματος.

Σύζευξη μικροελεγκτή x51 με τσιπ ενδείξεων 7 τμημάτων Πρωτεύς.

Ένα σύστημα που χρησιμοποιεί έναν μικροελεγκτή μπορεί όχι μόνο να ελέγξει κάτι, αλλά και να εμφανίσει κάτι. Τις περισσότερες φορές, οι δείκτες σύνθεσης σημάτων χρησιμοποιούνται ως κόμβος εμφάνισης στο κύκλωμα. Δεν υπάρχουν τυπικοί κανόνες για τη σύζευξη ενός μικροελεγκτή με ενδείξεις και σε κάθε συγκεκριμένη περίπτωση η σύζευξη μπορεί να πραγματοποιηθεί διαφορετικά.

Το Σχήμα 11 δείχνει ένα παράδειγμα σύνδεσης ενός τσιπ ένδειξης 7 τμημάτων σε έναν μικροελεγκτή. Η αρχή της σύνδεσης του μικροελεγκτή με στοιχεία κυκλώματος είναι η ίδια όπως και για άλλα εξαρτήματα κυκλώματος.

Ρύζι. 11. Διεπαφή ενός τσιπ ένδειξης 7 τμημάτων με μικροελεγκτή.

Για να εμφανίσετε έναν αριθμό, πρέπει να "ανάψετε" ορισμένα τμήματα της ένδειξης. Όταν χρησιμοποιείται σε κύκλωμα μικροελεγκτή, αυτό μπορεί να γίνει προγραμματικά. Διαφορετικοί συνδυασμοί φωτεινών ενδεικτικών στοιχείων, που παρέχονται από εξωτερική εναλλαγή, επιτρέπουν την εμφάνιση αριθμών από το 0 έως το 9 και την υποδιαστολή. Στο παράδειγμα που παρουσιάζεται, τα στοιχεία του δείκτη έχουν μια κοινή κάθοδο.

Για τον έλεγχο της ένδειξης 7 τμημάτων, το κύκλωμα χρησιμοποιεί έναν δυαδικό δεκαδικό αποκωδικοποιητή 74HC4511 (οικιακό αναλογικό 1564ID23). Το τσιπ αποκωδικοποιητή μετατρέπει τον δυαδικό κωδικό που λαμβάνεται από τον μικροελεγκτή σε έναν ψηφιακό κωδικό για περαιτέρω εμφάνιση στο τσιπ ένδειξης 7 τμημάτων. Το τσιπ 74HC4511 είναι ένας ειδικός αποκωδικοποιητής που έχει σχεδιαστεί για να μετατρέπει τον δυαδικό κώδικα σε έναν κώδικα επτά τμημάτων και να ελέγχει οθόνες επτά τμημάτων και υγρών κρυστάλλων. Είσοδοι A, B, C, D – είσοδοι πληροφοριών. Έξοδοι QA-QG – έξοδοι σε δείκτη επτά τμημάτων. Οι δυαδικοί κωδικοί και τα αντίστοιχα δεκαδικά ψηφία τους παρουσιάζονται στον Πίνακα 1.

Πίνακας 1. Δυαδικοί κωδικοί και τα αντίστοιχα δεκαδικά ψηφία τους.

Δυάδικος κώδικας

Δεκαδικό ψηφίο

Για να προσθέσετε ένα τσιπ αποκωδικοποιητή στον χώρο εργασίας του έργου, πρέπει να ανοίξετε το παράθυρο Pick Devices (Εικ. 12a) και στο επάνω αριστερό τμήμα του στο πεδίο Κατηγορία, να επιλέξετε τη βιβλιοθήκη της σειράς TTL 74HC από τη λίστα. Κάτω από το πεδίο Κατηγορία υπάρχει ένα πεδίο Υποκατηγορία, στο οποίο πρέπει να επιλέξετε το στοιχείο Αποκωδικοποιητές. Στο πεδίο Αποτελέσματα, επιλέξτε το τσιπ 74HC4511 και κάντε κλικ στο OK. Για να προσθέσετε ένα μικροκύκλωμα δείκτης επτά τμημάτωνΜε κοινή κάθοδος, επιλέξτε τη βιβλιοθήκη Optoelectronics στο παράθυρο Pick Devices (Εικ. 12β) στο πεδίο Category, 7-Segment Displays στο πεδίο Sub-category και 7SEG-MPX1-CC στο πεδίο Results.

Ρύζι. 12. Επιλογή στοιχείων κυκλώματος στο παράθυρο Pick Devices: (α) αποκωδικοποιητής, (β) ένδειξη επτά τμημάτων.

Στο παράδειγμα που φαίνεται στην Εικόνα 11, η ένδειξη εμφανίζει τον αριθμό 3. Για να γίνει αυτό, στην καρτέλα main.asm (Εικόνα 13), χρησιμοποιώντας την εντολή mov, δόθηκαν οδηγίες στο πρόγραμμα προετοιμασίας του μικροελεγκτή να γράψει στη θύρα P2 τα ακόλουθα τιμές των γραμμών λιμένων P2.7-P2.0 - " 00000011".

Ρύζι. 13. Γράψτε τον δυαδικό κωδικό του αριθμού 3 στη θύρα P2 του μικροελεγκτή.

Μετά την εκτέλεση της προσομοίωσης, μπορούμε να ελέγξουμε ότι το πρόγραμμα λειτουργεί σωστά. Όπως φαίνεται από το Σχήμα 11, οι ακίδες της θύρας του μικροελεγκτή P2 είναι πράγματι ο συνδυασμός που καθορίσαμε στον κώδικα του προγράμματος και η ένδειξη εμφανίζει τον αριθμό 3.

Προγραμματισμός μικροελεγκτή x51.

Όταν γράφετε κώδικα προγράμματος για τον μικροελεγκτή x51, πρέπει να γνωρίζετε τη σύνταξη της γλώσσας προγραμματισμού asm51. Οι πιο συχνά χρησιμοποιούμενες εντολές asm51 παρουσιάζονται στον Πίνακα 2.

Πίνακας 2. Σύστημα εντολών του μικροελεγκτή x51.

Όνομα ομάδας

Μνημονικός κώδικας

Μεταφορά στον συσσωρευτή από το μητρώο

Μεταφορά για εγγραφή από συσσωρευτή

Ανταλλαγή συσσωρευτή με μητρώο

Προσθήκη συσσωρευτή σε μητρώο

Προσθήκη συσσωρευτή με σταθερά

Αύξηση μπαταρίας

Εγγραφή προσαύξησης

Μείωση μπαταρίας

Καταχώρηση εγγραφής

Λογικό AND συσσωρευτή και εγγραφή

Λογικό OR του συσσωρευτή και καταχωρητή

Επαναφορά μπαταρίας

Αντιστροφή μπαταρίας

Μετάβαση εάν μπαταρία ίσο με μηδέν(το mt είναι μια ετικέτα στον κώδικα του προγράμματος)

Μετάβαση εάν ο συσσωρευτής δεν είναι μηδέν (το mt είναι μια ετικέτα στον κωδικό προγράμματος)

Μια κενή λειτουργία που μπορεί να χρησιμοποιηθεί ως καθυστέρηση 1μs

Έξοδος από υπορουτίνα

Πρωτεύς - Αυτό καθολικό πρόγραμμα, με το οποίο μπορείτε να δημιουργήσετε διάφορα εικονικά ηλεκτρονικές συσκευέςκαι να εκτελέσουν την προσομοίωσή τους. Περιέχει μια τεράστια βιβλιοθήκη αναλογικών και ψηφιακά τσιπ, αισθητήρες, διακριτά στοιχεία: αντιστάσεις, πυκνωτές, δίοδοι, τρανζίστορ κ.λπ. Υπάρχει επίσης ένα ευρύ φάσμα εξαρτημάτων οπτοηλεκτρονικής: οθόνες, LED, οπτικοί συζευκτήρες κ.λπ.

Το κύριο πλεονέκτημα και διαφορά μεταξύ του Proteus και άλλων παρόμοιων προγραμμάτων για προσομοίωση εργασίας ηλεκτρικά κυκλώματα, είναι η δυνατότητα προσομοίωσης της λειτουργίας μικροεπεξεργαστών και μικροελεγκτών (MCU). Η βιβλιοθήκη Proteus περιέχει τους ακόλουθους κύριους τύπους μικροελεγκτών: AVR, ARM, PIC, Cortex.

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

Η Proteus διαθέτει επίσης ενσωματωμένα εργαλεία για αυτοματοποιημένη ανάπτυξη πλακέτες τυπωμένων κυκλωμάτωνκαι να δημιουργήσουν τα τρισδιάστατα μοντέλα τους.

Για να προσομοιώσουμε το πρώτο μας πρόγραμμα, χρειαζόμαστε μόνο έναν μικροελεγκτή ATmega8, μια αντίσταση και ένα LED από τη βιβλιοθήκη.

Ρυθμίσεις Πρωτεύς 8.4

Οποιαδήποτε ρύθμιση ξεκινά με την εκκίνηση. Στο παράθυρο που εμφανίζεται, κάντε κλικ στο εικονίδιο μιας διόδου με πυκνωτή Σχηματική Λήψη(Σχεδίαση κυκλώματος).

Μετά από αυτό, θα ανοίξει ένα παράθυρο με ένα κενό πεδίο.

Τώρα ας προσθέσουμε τον μικροελεγκτή ATmega8, την αντίσταση και το LED.

Η προεπιλεγμένη λειτουργία έχει οριστεί στην κατάλληλη λειτουργία Λειτουργία εξαρτημάτωνΕπομένως, για να μεταβείτε στο μενού για την επιλογή ηλεκτρονικών και άλλων στοιχείων, απλώς κάντε κλικ στο κουμπί P που βρίσκεται στον πίνακα ΣΥΣΚΕΥΗ(συσκευή). Μετά από αυτό, θα ανοίξει ένα παράθυρο στο οποίο πρέπει να επιλέξετε από το μενού Κατηγορία(Κατηγορίες) IC μικροεπεξεργαστών(μικροεπεξεργαστές), σε Υποκατηγορία(Υποκατηγορίες) – Οικογένεια AVR. Στη συνέχεια στο παράθυρο Αποτελέσματαβρείτε και επιλέξτε MK ATMEGA8. Κάντε κλικ στο κουμπί ΕΝΤΑΞΕΙ.

Μετά από αυτό θα εμφανιστεί στο μενού παραθύρου ΣΥΣΚΕΥΗκαι μπορείτε ήδη να το σύρετε με το ποντίκι στην περιοχή εργασίας.

Ομοίως, προσθέστε μια αντίσταση και ένα LED.

Τα LED ανήκουν στην κατηγορία Οπτοηλεκτρονική(Οπτοηλεκτρονική) και περαιτέρω στην υποκατηγορία LED. ΣΕ σε αυτό το παράδειγμαεπιλέγεται πράσινο LED-ΠΡΑΣΙΝΟ.

Τώρα συναρμολογούμε το κύκλωμα, όπως φαίνεται στο παρακάτω σχήμα. Συνδέουμε την αντίσταση R1 στον πείρο του MK PC0, που συνδέεται στην άνοδο του LED D1. Συνδέουμε την κάθοδο LED στη γείωση. Το στοιχείο "γείωση" βρίσκεται στο μενού καρτελών Λειτουργία τερματικών.

Για να αλλάξετε την τιμή αντίστασης της αντίστασης R1, πρέπει να κάνετε διπλό κλικ πάνω της. Στο παράθυρο που ανοίγει, ορίστε 300 Ohm στη γραμμή Αντίσταση(αντίσταση).

Λάβετε υπόψη ότι οι ακίδες του μικροελεγκτή στο Proteuse ομαδοποιούνται σε ξεχωριστές ομάδες ανά θύρα για ευκολία. Ωστόσο, αυτό δεν αντιστοιχεί στη θέση τους σε ένα πραγματικό MK. Επιπλέον, δεν υπάρχουν ακροδέκτες στους οποίους παρέχεται τάση για την τροφοδοσία του MK. Αυτή η δυνατότητα είναι εγκατεστημένη από προεπιλογή.

Εγγραφή προγράμματος στη μνήμη του μικροελεγκτή

Τώρα το μόνο που μένει είναι να γράψουμε τον κωδικό μας στο εικονικό MK. Κάντε διπλό κλικ πάνω του με το ποντίκι και στο νέο που εμφανίζεται, υποδείξτε τη διαδρομή προς το αρχείο με τον κωδικό. Βρείτε τη θέση του αρχείου κάνοντας κλικ στο εικονίδιο στη φόρμα ανοιχτό φάκελοστη σειρά Αρχείο προγράμματος.

Στο φάκελο του έργου βρίσκουμε τον φάκελο Εντοπισμός σφαλμάτωνκαι σε αυτό επιλέξτε ένα αρχείο με την επέκταση ΓΟΗΤΕΥΩ. Μετά από αυτό, πατήστε το κουμπί Ανοιχτό.