Το LED που αναβοσβήνει είναι το πρώτο βήμα που θα θέλατε να ξεκινήσετε με τα ηλεκτρονικά. Σε αυτό το σεμινάριο πρόκειται να συνδέσουμε ένα LED με ATmega32, το οποίο είναι ένας μικροελεγκτής σειράς AVR. Θα αναβοσβήσουμε το LED με ρυθμό μισού δευτερολέπτου.
Απαιτούμενα στοιχεία
Σκεύη, εξαρτήματα:
Μικροελεγκτής ATmega32A
Τροφοδοσία (5v)
Προγραμματιστής AVR-ISP
Πυκνωτής 100uF
LED
220Ω Αντίσταση
Λογισμικό
Atmel studio 6.1
Progisp ή flash μαγεία
Κύκλωμα και εξήγηση εργασίας
Όπως φαίνεται στο παραπάνω διάγραμμα κυκλώματος για διασύνδεση LED με μικροελεγκτή AVR, δεν χρειάζεται να συνδέσετε έναν εξωτερικό κρύσταλλο εδώ. Επειδή το ATMEGA λειτουργεί σε εσωτερικό ταλαντωτή αντιστάτη-πυκνωτή 1MHz από προεπιλογή. Μόνο όταν απαιτείται η ακρίβεια του ρολογιού, ως εφαρμογή μέτρησης υψηλής ακρίβειας, προστίθεται εξωτερικός κρύσταλλος. Όταν ο ελεγκτής αγοράζεται για πρώτη φορά, συντήκεται από προεπιλογή η επεξεργασία εσωτερικών κρυστάλλων.
Η αντίσταση συνδέεται εδώ για να περιορίσει το τρέχον σχέδιο από το LED. Θυμηθείτε, ο ελεγκτής δεν μπορεί να παρέχει περισσότερα από 30mA στα τερματικά.
Επεξήγηση προγραμματισμού
Το πρόγραμμα για τον μικροελεγκτή ATmega32 να αναβοσβήνει ένα LED φαίνεται παρακάτω. Τα σχόλια στον κώδικα εξηγούν τον σκοπό της μεμονωμένης γραμμής του κώδικα.
#include // header για να ενεργοποιήσετε τον έλεγχο ροής δεδομένων πάνω στις ακίδες
#define F_CPU 1000000 // λέγοντας συχνότητα κρυστάλλου ελεγκτή
#περιλαμβάνω
int main (άκυρο)
{
DDRD = 0xFF; // (ή 0b1111 1111) Στο AVRSTUDIO για να πείτε στον ελεγκτή να χρησιμοποιεί ένα συγκεκριμένο κομμάτι μιας θύρας ως είσοδο, χρησιμοποιούμε το "ZERO", για να του πει να χρησιμοποιήσει ένα συγκεκριμένο bit ως έξοδο που χρησιμοποιούμε "ONE". Δεδομένου ότι βάζουμε οκτώ "ONE", όλες οι ακίδες του PORTD είναι ενεργοποιημένες ως έξοδος. Εάν βάλουμε ένα μηδέν ως "0b1111 0111", τώρα όλες οι ακίδες 0,1,2,4,5,6,7 είναι ενεργοποιημένες ως είσοδοι και το PIN 3 είναι Ενεργοποιημένο ως είσοδος.
ενώ το βρόχο (1) // ανάβει για πάντα και το LED θα αναβοσβήνει για πάντα
{
PORTD = 0xFF; // όλοι οι ακροδέκτες του PORTD λέγεται ότι παρέχουν έξοδο 5v ή τους λένε να τραβούν ψηλά (LED ON)
_delay_ms (220); // καθυστέρηση για 200ms
_delay_ms (220);); // καθυστέρηση για 200ms
PORTD = 0x00; // όλοι οι ακροδέκτες του PORTD λέγεται ότι παρέχουν γείωση στην έξοδο ή προς τα κάτω
_delay_ms (220);); // καθυστέρηση για 200ms
_delay_ms (220);); // καθυστέρηση για 200ms
}
}