Πίνακας περιεχομένων:
- Βήμα 1: Απαιτήσεις
- Βήμα 2: Χτίζοντας τον προγραμματιστή
- Βήμα 3: Εγκατάσταση λογισμικού προγραμματιστή
- Βήμα 4: Προγραμματισμός του τσιπ
- Βήμα 5: Συναρμολόγηση
- Βήμα 6: Επεξήγηση κώδικα
- Βήμα 7: Πρόσθετοι πόροι
Βίντεο: Εισαγωγή στον προγραμματισμό 8051 με AT89C2051 (Πρωταγωνιστές: Arduino): 7 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Το 8051 (επίσης γνωστό ως MCS-51) είναι ένα σχέδιο MCU από τη δεκαετία του '80 που παραμένει δημοφιλές σήμερα. Οι σύγχρονοι μικροελεγκτές συμβατοί με 8051 διατίθενται από πολλούς προμηθευτές, σε όλα τα σχήματα και μεγέθη και με μεγάλη ποικιλία περιφερειακών. Σε αυτό το διδακτικό θα κοιτάξουμε το AT89C2051 MCU από την Atmel.
Το AT89C2051 είναι ένας μικρός (2Kbyte Flash, 128byte RAM), φθηνός (1. 1,40 $ ανά τσιπ) μικροελεγκτής. Χαρακτηριστικά:
- Λειτουργία 2,7-6V
- 15 γραμμές εισόδου/εξόδου
- 2 χρονόμετρα (16 bit)
- Εσωτερικές και εξωτερικές διακοπές
- UART
- Αναλογικός συγκριτής σε τσιπ
- Έως 2MIPS με ρολόι 24MHz
Βήμα 1: Απαιτήσεις
Απαιτήσεις:
- Υπολογιστής Linux (απαιτούμενο λογισμικό: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Τσιπ AT89C2051 (πακέτο DIP20)
- Υποδοχή ZIF 20 ακίδων
- Optocoupler (κατά προτίμηση MOSFET-έξοδος)
- Ασπίδα πρωτότυπου Arduino
- Τροφοδοσία 12V
- Τροφοδοσία 5V
- Κρυσταλλικός ταλαντωτής 16MHz
- 2x πυκνωτής 30pF
- Πυκνωτής 100nF
- Δίοδος (π.χ. 1N400X)
- Αντιστάσεις (1K, 3K3)
- Protoboard
- Άλτες
- Χάλκινο σύρμα
Ελέγξτε για απαιτούμενο λογισμικό:
ποια python3
που κάνουν ποιο sdcc ποιο git
Βήμα 2: Χτίζοντας τον προγραμματιστή
Αυτή η ενότητα θα είναι σύντομη, καθώς έφτιαξα την ασπίδα προγραμματισμού μου πριν από λίγο καιρό. Έχω επισυνάψει το σχηματικό και τις εικόνες του συναρμολογημένου πίνακα. Το PDF του σχηματικού μπορεί να βρεθεί στο αποθετήριο.
Θα πρέπει να προγραμματίσετε τον πίνακα προγραμματιστών:
1. Κλωνοποιήστε το αποθετήριο.
git clone
2. Ανοίξτε το αρχείο AT89C2051_programmer/AT89_prog/AT89_prog.ino στο Arduino IDE.
3. Δημιουργήστε και ανεβάστε το σκίτσο από το Arduino IDE.
Βήμα 3: Εγκατάσταση λογισμικού προγραμματιστή
1. Δημιουργήστε ένα εικονικό περιβάλλον python.
python3 -m venv venv
Το venv/bin/activ
2. Εγκαταστήστε το at89overlord. Ο at89overlord είναι προγραμματιστής ανοιχτού κώδικα για το τσιπ AT89C2051 που γράφτηκε από εμένα. Ο πηγαίος κώδικας μπορεί να βρεθεί εδώ.
pip εγκατάσταση at89overlord
3. Επαληθεύστε την εγκατάσταση.
at89overlord -η
Βήμα 4: Προγραμματισμός του τσιπ
1. Κλωνοποιήστε ένα απλό σχέδιο αναλαμπής.
cd
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Δημιουργήστε την εφαρμογή.
φτιαχνω, κανω
3. Συνδέστε το Arduino στον υπολογιστή, συνδέστε την παροχή 12V, τοποθετήστε το τσιπ AT89C2051 στην υποδοχή ZIF.
4. Εντοπίστε τη σειριακή θύρα του Arduino.
ls /dev /tty*
5. Ανεβάστε το ενσωματωμένο αρχείο IntelHex στο τσιπ. Εάν η θύρα του Arduino είναι διαφορετική από /dev /ttyACM0, πρέπει να περάσετε τη σωστή τιμή με την παράμετρο της γραμμής εντολών -p.
at89overlord -φ./hello.ihx
Βήμα 5: Συναρμολόγηση
Συναρμολογήστε το κύκλωμα σύμφωνα με το σχηματικό σχήμα. Μια έκδοση PDF μπορεί να βρεθεί στο αποθετήριο.
Θα πρέπει να δείτε το πράσινο φλας LED με συχνότητα περίπου 0,5Hz.
Βήμα 6: Επεξήγηση κώδικα
#περιλαμβάνω
#περιλαμβάνω
Ξεκινάμε συμπεριλαμβάνοντας την κεφαλίδα AT89X051 από το sdcc. Περιέχει μακροεντολές για αλληλεπίδραση με καταχωρητές σαν να ήταν μεταβλητές. Περιλαμβάνουμε επίσης το stdint.h το οποίο περιέχει ορισμούς ακέραιων τύπων uint8_t και uint16_t.
// Υποθέτοντας ότι ο ταλαντωτής είναι 16MHz
#define INTERRUPTS_PER_SECOND 5208
Μια διακοπή συμβαίνει όταν το Timer0 υπερχειλίσει. Έχει ρυθμιστεί ως ένας χρονοδιακόπτης 8bit, έτσι συμβαίνει κάθε 2 κύκλους επεξεργαστή 2^8. Ένας κύκλος επεξεργαστή διαρκεί 12 κύκλους ρολογιού και έτσι φτάνουμε στο 16000000/12/2^8 = 5208.33333.
πτητικό uint8_t led_state = 0;
πτητικό uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Δηλώνουμε τον έλεγχο κατάστασης led και τις μεταβλητές μετρητή διακοπής.
void Timer0_ISR (άκυρο) _διακοπή (1) {
timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Κάθε φορά που το Timer0 ξεχειλίζει ο μετρητής μειώνεται. Εάν είναι ίσο με μηδέν, επαναφέρεται και η κατάσταση led αλλάζει. Αυτό συμβαίνει περίπου μία φορά το δευτερόλεπτο, με αποτέλεσμα συχνότητα αναβοσβήματος LED 0,5Hz LED.
int main () {
TMOD = 0x3; // Λειτουργία χρονοδιακόπτη - 8 bit, χωρίς προκαταρκτικό χρονοδιακόπτη. freq = OSCFREQ/12/2^8 TL0 = 0; // Διαγραφή μετρητή TH0 = 0; // Διαγραφή μητρώου TR0 = 1; // Ρυθμίστε το χρονόμετρο να λειτουργεί. ET0 = 1; // Ορισμός διακοπής. ΕΑ = 1; // Ορισμός καθολικής διακοπής. ενώ (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Διαμορφώνουμε τη μονάδα χρονοδιακόπτη και αναμένουμε αλλαγές στη μεταβλητή ελέγχου κατάστασης led. Το TOD είναι ο καταχωρητής ελέγχου λειτουργίας χρονοδιακόπτη. Τα TL0 και TH0 είναι καταχωρητές ελέγχου Timer0. Το ET0 είναι το bit ενεργοποίησης-χρονομέτρου στον καταχωρητή ελέγχου χρονοδιακόπτη (TCON). Τα TR0 και EA είναι bits στον καταχωρητή ενεργοποίησης διακοπών (IE).
Βήμα 7: Πρόσθετοι πόροι
- Φύλλο δεδομένων AT89C2051:
- Μικρή συσκευή C Compiler (sdcc):
- Πόροι 8051:
- Αποθήκη προγραμματιστή AT89C2051:
- γεια αποθήκη 8051:
Συνιστάται:
Εισαγωγή στον προγραμματισμό του Raspberry Pi χωρίς κωδικοποίηση χεριών: 3 βήματα
Εισαγωγή στον προγραμματισμό του Raspberry Pi χωρίς χειροκίνητη κωδικοποίηση: Γεια, αυτό το διδακτικό θα σας δείξει πώς να μετατρέψετε το Raspberry Pi σε μια πλήρως προγραμματιζόμενη συσκευή αυτοματισμού συμβατή με γραφικά προσανατολισμένη γλώσσα προγραμματισμού για PLCs που ονομάζεται Function Block Diagram (μέρος του προτύπου IEC 61131-3). Αυτό μπορεί να είναι
Πώς να φτιάξετε ένα ρομπότ ελεγχόμενο από κινητά - Με βάση το DTMF - Χωρίς μικροελεγκτή & προγραμματισμό - Έλεγχος από οπουδήποτε στον κόσμο - RoboGeeks: 15 βήματα
Πώς να φτιάξετε ένα ρομπότ ελεγχόμενο από κινητά | Με βάση το DTMF | Χωρίς μικροελεγκτή & προγραμματισμό | Έλεγχος από οπουδήποτε στον κόσμο | RoboGeeks: Θέλετε να φτιάξετε ένα ρομπότ που μπορεί να ελεγχθεί από οπουδήποτε στον κόσμο, Ας το κάνουμε
Απίστευτα εύκολο στον προγραμματισμό!: 10 βήματα
Απίστευτα εύκολο στον προγραμματισμό !: Σήμερα, θα μιλήσω για το STM32 Core, το L476RG, το οποίο είναι το πρόσωπο της Ultra Low Power. Μπορείτε να το δείτε στα αριστερά της εικόνας. Αυτή η συσκευή διαθέτει δύο θηλυκές ράβδους καρφιτσών, μία σε κάθε πλευρά, οι οποίες δεν είναι τίποτε άλλο από τις συνδέσεις για το arduino shiel
Εισαγωγή προσαρμοσμένων τρισδιάστατων μοντέλων στον κόσμο του Minecraft: 9 βήματα (με εικόνες)
Εισαγάγετε προσαρμοσμένα μοντέλα 3D στον κόσμο του Minecraft: Αυτός είναι ένας πλήρης οδηγός για να εξηγήσετε τη διαδικασία εισαγωγής μοντέλων 3D στον κόσμο του Minecraft. Υπάρχουν τρία βασικά μέρη στα οποία θα αναλύσω τη διαδικασία: Ρύθμιση του Minecraft, εισαγωγή/εξαγωγή του τρισδιάστατου μοντέλου σας και μεταφορά του μοντέλου
Πώς να προσθέσετε πλαίσια μηνυμάτων στον προγραμματισμό κατά παρτίδες: 3 βήματα
Πώς να προσθέσετε πλαίσια μηνυμάτων σε προγραμματισμό παρτίδας: Θέλατε ποτέ να προσθέσετε μια γραφική διεπαφή για τα αρχεία παρτίδας σας όπως μπορείτε στο VBScript; Σίγουρα έχω. Αλλά τώρα μπορείτε με αυτό το φοβερό πρόγραμμα που ονομάζεται MessageBox