Περιεχόμενα


1 ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ 3
1.1 Δεκαδικό σύστημα . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Δυαδικό σύστημα . . . . . . . . . . . . . . . . . . . . . . . . . .3
1.3 Δεκαεξαδικό σύστημα . . . . . . . . . . . . . . . . . . . . . . .5

2 ΔΟΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ 7
2.1 Τα βασικά των ψηφιακών συστημάτων . . . . . . . . . .7
2.2 Μνήμες . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 Μνήμες ROM . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.2 Μνήμες RAM . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Καταχωρητές (registers) . . . . . . . . . . . . . . . . . . . .17
2.4 Αθροιστής . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
2.5 Συσσωρευτής . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
2.6 Αριθμητική και λογική μονάδα . . . . . . . . . . . . . . . 20
2.7 Διάδρομοι πληροφοριών . . . . . . . . . . . . . . . . . . . 20
2.8 Κεντρική μονάδα επεξεργασίας (CPU) . . . . . . . . .22
2.8.1 Οι εντολές της CPU . . . . . . . . . . . . . . . . . . . 23
2.8.2 Το πρόγραμμα . . . . . . . . . . . . . . . . . . . . . . . 24
2.8.3 Λειτουργία της CPU . . . . . . . . . . . . . . . . . . . 25
2.9 Θύρα εισόδου / εξόδου (Ι/Ο) . . . . . . . . . . . . . . . . .28
2.10 Δομή μικροϋπολογιστή . . . . . . . . . . . . . . . . . . . . 30
2.11 Σήματα χρονισμού διαδρόμων . . . . . . . . . . . . . . .32
2.12 Διασύνδεση των ολοκληρωμένων μνήμης . . . . . .34
2.12.1 Διασύνδεση μνημών για αύξηση του πλήθους των bits ανά
byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.12.2 Διασύνδεση μνημών για αύξηση του μεγέθους της μνήμης 34
2.13 Σχεδίαση αποκωδικοποιητών διευθύνσεων . . . . . . . . . . . . . 38
2.13.1 Λύση με έναν αποκωδικοποιητή . . . . . . . . . . . . . . . 38
2.13.2 Αποκωδικοποιητές πολλών επιπέδων . . . . . . . . . . . . 42
2.13.3 Αποκωδικοποιητές με συγκριτές . . . . . . . . . . . . . . 45
2.13.4 Αποκωδ/τές με προγραμματιζόμενα λογικά εξαρτήματα . . 48

3 ΚΩΔΙΚΕΣ 61
3.1 Κώδικας του συμπληρώματος ως προς τη βάση . . . . . . . . . . 61
3.1.1 Συμπλήρωμα ως προς 10 . . . . . . . . . . . . . . . . . . 61
3.1.2 Συμπλήρωμα ως προς 2 . . . . . . . . . . . . . . . . . . . 62
3.1.3 Συμπλήρωμα ως προς 16 . . . . . . . . . . . . . . . . . . 65
3.2 Ο κώδικας BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.3 Ασκήσεις . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4 ΤΟ ΠΡΟΓΡΑΜΜΑ AVR STUDIO 4 73
4.1 Δημιουργία πρότζεκτ . . . . . . . . . . . . . . . . . . . . . . . . 74
4.2 Πληκτρ/γηση και μετάφραση του προγρ/τος . . . . . . . . . . . . 76
4.3 Εκτέλεση του προγρ/τος στον προσομοιωτή . . . . . . . . . . . . 78

5 ΟΙ ΜΝΗΜΕΣ ΤΟΥ ΜΙΚΡΟΕΛΕΓΚΤΗ 79
5.1 Τα είδη μνήμης . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.1.1 Μνήμη προγράμματος (ROM) . . . . . . . . . . . . . . . 80
5.1.2 Το αρχείο των καταχωρητών (register file) . . . . . . . . 83
5.1.3 Η στατική μνήμη RAM (SRAM) . . . . . . . . . . . . . . 86
5.1.4 Η μνήμη EEPROM . . . . . . . . . . . . . . . . . . . . . 87
5.2 Εντολές μεταφοράς δεδομένων . . . . . . . . . . . . . . . . . . . 88

6 ΑΠΛΕΣ ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ 95
6.1 Πρόσθεση και αφαίρεση . . . . . . . . . . . . . . . . . . . . . . . 96
6.1.1 Πρόσθεση και αφαίρεση 16μπιτων αριθμών . . . . . . . . 98
6.1.2 Πρόσθεση πολλών αριθμών . . . . . . . . . . . . . . . . . 99

7 ΔΙΑΚΛΑΔΩΣΕΙΣ ΥΠΟ ΣΥΝΘΗΚΗ 103
7.1 Ο καταχωρητής κατάστασης SREG . . . . . . . . . . . . . . . . 103
7.2 Επεξήγηση της λειτουργίας των σημαιών . . . . . . . . . . . . . 104
7.3 Εντολές σύγκρισης . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.4 Εντολές διακλάδωσης υπό συνθήκη . . . . . . . . . . . . . . . . 106
7.5 Σύγκριση απροσήμαστων αριθμών . . . . . . . . . . . . . . . . . 107
7.6 Σύγκριση προσημασμένων αριθμών . . . . . . . . . . . . . . . . . 108

8 ΛΙΓΟΤΕΡΟ ΑΠΛΕΣ ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ 111
8.1 Πολλαπλασιασμός . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.2 Επέκταση πρόσημου . . . . . . . . . . . . . . . . . . . . . . . . . 112

9 ΕΜΜΕΣΗ ΔΙΕΥΘΥΝΣΙΟΔΟΤΗΣΗ 117
9.1 ΄Εμμεση προσπέλαση της SRAM . . . . . . . . . . . . . . . . . . 117
9.2 ΄Εμμεση ανάγνωση της ROM . . . . . . . . . . . . . . . . . . . . 119

10 ΣΤΟΙΒΑ - ΥΠΟΡΟΥΤΙΝΕΣ - ΔΙΑΚΛΑΔΩΣΕΙΣ 125
10.1 Εντολές διακλάδωσης (χωρίς συνθήκη) . . . . . . . . . . . . . . 125
10.2 Στοίβα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
10.3 Υπορουτίνες . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

11 ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (ΒΡΟΧΟΙ) 133
11.1 Εντολές παράλειψης (skip) . . . . . . . . . . . . . . . . . . . . . 133
11.2 Βρόχος while . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
11.3 Βρόχος do...while . . . . . . . . . . . . . . . . . . . . . . . . . . 135
11.4 Βρόχος for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
11.4.1 Μετρητής προς τα κάτω και έλεγχος στο τέλος . . . . . . 136
11.4.2 Μετρητής προς τα πάνω και έλεγχος στο τέλος . . . . . . 136
11.4.3 Μετρητής προς τα κάτω και έλεγχος στην αρχή . . . . . . 137
11.4.4 Μετρητής προς τα πάνω και έλεγχος στην αρχή . . . . . . 137
11.4.5 Μεγάλοι βρόχοι for . . . . . . . . . . . . . . . . . . . . . 138

12 ΕΝΤΟΛΕΣ ΟΛΙΣΘΗΣΗΣ ΚΑΙ ΠΕΡΙΣΤΡΟΦΗΣ 141
12.1 Εντολές ολίσθησης και περιστροφής . . . . . . . . . . . . . . . . 141
12.2 Ολίσθηση μεταβλητών περισσότερων bytes . . . . . . . . . . . . 143
12.3 Ρουτίνα διαίρεσης . . . . . . . . . . . . . . . . . . . . . . . . . . 143

13 ΔΟΜΗΜΕΝΗ ΣΥΜΒΟΛΟΜΕΤΑΦΡΑΣΗ 149
13.1 Τελεστές . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
13.2 Συναρτήσεις . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
13.3 Ανάθεση συμβολικών ονομάτων . . . . . . . . . . . . . . . . . . 153
13.4 Μακροεντολές . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
13.5 Αυτόματη απόδοση δ/νσεων SRAM . . . . . . . . . . . . . . . . 155
13.6 Υπό συνθήκη μετάφραση . . . . . . . . . . . . . . . . . . . . . . 157

14 Η ΣΥΣΚΕΥΗ JTAG ICE 161
14.1 Γενικά . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
14.2 Σύνδεση του JTAG ICE . . . . . . . . . . . . . . . . . . . . . . 162
14.3 Ρύθμιση του AVR Studio . . . . . . . . . . . . . . . . . . . . . . 164
14.4 Σύνδεση AVR Studio 4 και JTAG ICE . . . . . . . . . . . . . . 164

15 ΟΙ ΘΥΡΕΣ ΕΙΣΟΔΟΥ/ΕΞΟΔΟΥ 167
15.1 Διάταξη ακροδεκτών . . . . . . . . . . . . . . . . . . . . . . . . 167
15.2 Δομή των θυρών . . . . . . . . . . . . . . . . . . . . . . . . . . 169
15.3 Ρύθμιση των γραμμών των θυρών . . . . . . . . . . . . . . . . . 170
15.4 Οδήγηση των γραμμών εισόδου . . . . . . . . . . . . . . . . . . . 171
15.5 Χειρισμός των θυρών . . . . . . . . . . . . . . . . . . . . . . . . 171
15.6 Ηλεκτρικά χαρακτηριστικά των θυρών . . . . . . . . . . . . . . . 173
15.6.1 ΄Ορια αντοχής και όρια προδιαγραφών . . . . . . . . . . . 174
15.6.2 Διασύνδεση των γραμμών του μΕ . . . . . . . . . . . . . 174
15.7 Χρονικά χαρακτηριστικά των θυρών . . . . . . . . . . . . . . . . 176

16 ΔΙΑΚΟΠΕΣ 183
16.1 Ο μηχανισμός των διακοπών . . . . . . . . . . . . . . . . . . . . 183
16.2 Αίτηση και αναγνώριση διακοπής . . . . . . . . . . . . . . . . . . 184
16.3 Κλήση της ρουτίνας διακοπής . . . . . . . . . . . . . . . . . . . . 185
16.4 Ενεργοποίηση διακοπής . . . . . . . . . . . . . . . . . . . . . . . 187
16.5 Ρουτίνες εξυπηρέτησης διακοπών . . . . . . . . . . . . . . . . . . 187
16.6 Προτεραιότητα των διακοπών . . . . . . . . . . . . . . . . . . . . 190
16.7 Χρονισμός των διακοπών . . . . . . . . . . . . . . . . . . . . . . 191
16.8 Εξωτερικές διακοπές . . . . . . . . . . . . . . . . . . . . . . . . 193

17 Ο ΧΡΟΝΙΣΤΗΣ Τ0 199
17.1 Γενικά για χρονιστές . . . . . . . . . . . . . . . . . . . . . . . . 199
17.2 Το ρολόι των χρονιστών Τ0 και Τ1 . . . . . . . . . . . . . . . . 200
17.3 Δομή και λειτουργία του χρονιστή Τ0 . . . . . . . . . . . . . . . 201
17.4 Υπολογισμός της επιθυμητής χρονομέτρησης . . . . . . . . . . . 203
17.4.1 Χρονομέτρηση σε κανονική λειτουργία . . . . . . . . . . . 204
17.4.2 Χρονομέτρηση σε λειτουργία σύγκρισης . . . . . . . . . . 204
17.4.3 Χρονομέτρηση σε λειτουργία μηδενισμού . . . . . . . . . 205
17.5 Χρήση του χρονιστή Τ0 . . . . . . . . . . . . . . . . . . . . . . 210
17.5.1 Χειροκίνητη επαναφόρτωση . . . . . . . . . . . . . . . . . 210
17.5.2 Λειτουργία σύγκρισης . . . . . . . . . . . . . . . . . . . . 211
17.5.3 Λειτουργία μηδενισμού (CTC) . . . . . . . . . . . . . . . 213
17.6 Κάποιες λεπτομέρειες . . . . . . . . . . . . . . . . . . . . . . . . 214

18 Ο ΧΡΟΝΙΣΤΗΣ Τ1 219
18.1 Δομή και λειτουργία του χρονιστή Τ1 . . . . . . . . . . . . . . . 219
18.2 Μονάδες σύγκρισης εξόδου . . . . . . . . . . . . . . . . . . . . . 221
18.3 Λειτουργία του Τ1 . . . . . . . . . . . . . . . . . . . . . . . . . . 221
18.3.1 Κανονική λειτουργία/Λειτουργία σύγκρισης . . . . . . . . 222
18.3.2 Λειτουργία μηδενισμού σε ισότητα του Τ1 . . . . . . . . . 223
18.4 Περιοδική χρονομέτρηση με τον Τ1 . . . . . . . . . . . . . . . . 225
18.5 Χρήση του Τ1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
18.5.1 Χρονομέτρηση σε λειτουργία σύγκρισης . . . . . . . . . . 226
18.5.2 Χρονομέτρηση σε λειτουργία μηδενισμού . . . . . . . . . 228
18.5.3 Χρονομετρήσεις με μετρητές διακοπών . . . . . . . . . . . 230

19 ΜΕΤΡΗΣΕΙΣ ΜΕ ΤΟΥΣ ΧΡΟΝΙΣΤΕΣ 235
19.1 Μονάδα σύλληψης του Τ1 . . . . . . . . . . . . . . . . . . . . . 235
19.1.1 Μονάδα αποθορυβοποίησης . . . . . . . . . . . . . . . . . 235
19.2 Μέτρηση Περιόδου . . . . . . . . . . . . . . . . . . . . . . . . . 236
19.3 Μέτρηση συχνότητας . . . . . . . . . . . . . . . . . . . . . . . . 240
19.4 Μέτρηση εύρους παλμού και κύκλου εργασίας . . . . . . . . . . . 243

20 ΕΝΔΕΙΚΤΕΣ 7 ΤΜΗΜΑΤΩΝ 249
20.1 Γενικά . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
20.2 Σύνδεση ενός ενδείκτη . . . . . . . . . . . . . . . . . . . . . . . 250
20.3 Στατική οδήγηση ενδεικτών . . . . . . . . . . . . . . . . . . . . 252
20.4 Οδήγηση ενδεικτών με πολύπλεξη . . . . . . . . . . . . . . . . . 252
20.5 Οθόνη 3 ενδεικτών σε πολύπλεξη . . . . . . . . . . . . . . . . . 256
20.5.1 Η σάρωση των 3 ενδεικτών σε πολύπλεξη 1:4 . . . . . . . 258
20.5.2 Το πρόγραμμα οδήγησης της οθόνης (driver) . . . . . . . 259
20.5.3 Οι ρουτίνες εμφάνισης print . . . . . . . . . . . . . . . . 264

21 ΔΕΚΑΕΞΑΔΙΚΟ ΠΛΗΚΤΡΟΛΟΓΙΟ 273
21.1 Το κύκλωμα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
21.2 Το πρόγραμμα . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
21.2.1 Λίστα μεταβλητών . . . . . . . . . . . . . . . . . . . . . . 276
21.2.2 Επεξηγήσεις του αλγόριθμου . . . . . . . . . . . . . . . . 276
21.2.3 Επεξηγήσεις του προγράμματος . . . . . . . . . . . . . . 278
21.2.4 Υπολογισμός της αξίας του πλήκτρου . . . . . . . . . . . 278
21.3 Πληκτρολόγηση αριθμών . . . . . . . . . . . . . . . . . . . . . . 279
21.3.1 Πληκτρολόγηση 16δικού αριθμού του ενός byte . . . . . . 279
21.3.2 Δεκαδική πληκτρολόγηση ενός byte . . . . . . . . . . . . 281

22 ΟΘΟΝΗ LCD 291
22.1 Περιγραφή της οθόνης LCD . . . . . . . . . . . . . . . . . . . . 291
22.1.1 Διασύνδεση . . . . . . . . . . . . . . . . . . . . . . . . . 292
22.1.2 Λειτουργία της LCD . . . . . . . . . . . . . . . . . . . . 293
22.1.3 Χρονισμός της LCD . . . . . . . . . . . . . . . . . . . . 294
22.1.4 Η μνήμη δεδομένων εμφάνισης (DDRAM) . . . . . . . . . 295
22.1.5 Σετ χαρακτήρων . . . . . . . . . . . . . . . . . . . . . . . 296
22.1.6 Ορισμός και εμφάνιση ελληνικών χαρακτήρων . . . . . . . 296
22.2 Σύνδεση της LCD με τον μικροελεγκτή . . . . . . . . . . . . . . 301
22.3 Οι ρουτίνες της οθόνης LCD . . . . . . . . . . . . . . . . . . . . 301
22.3.1 Αναμονή σημαίας απασχολημένου BF . . . . . . . . . . . 302
22.3.2 Αποστολή εντολής . . . . . . . . . . . . . . . . . . . . . 303
22.3.3 Αποστολή χαρακτήρα (δεδομένου) . . . . . . . . . . . . . 305
22.3.4 Αρχικοποίηση της LCD . . . . . . . . . . . . . . . . . . . 305
22.3.5 Εμφάνιση ενός χαρακτήρα . . . . . . . . . . . . . . . . . 308
22.3.6 Τοποθέτηση του δρομέα . . . . . . . . . . . . . . . . . . 308
22.3.7 Ρουτίνες LCD4CursorOn και LCD4CursorOff . . . . . . 309
22.4 Ρουτίνα καθαρισμού της οθόνης . . . . . . . . . . . . . . . . . . 310
22.5 Εμφάνιση συμβολοσειράς (display string) . . . . . . . . . . . . . 310
22.6 Εμφάνιση αριθμών . . . . . . . . . . . . . . . . . . . . . . . . . . 311

23 ΔΙΑΜΟΡΦΩΣΗ ΕΥΡΟΥΣ ΠΑΛΜΩΝ (PWM) 315
23.1 Γρήγορο PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
23.1.1 Γρήγορο PWM με τον Τ0 . . . . . . . . . . . . . . . . . 317
23.1.2 Γρήγορο PWM με τον Τ1 . . . . . . . . . . . . . . . . . 318
23.2 Διπλή απομόνωση . . . . . . . . . . . . . . . . . . . . . . . . . . 319
23.2.1 Επίδραση της διπλής απομόνωσης στον κύκλο εργασίας . 319
23.2.2 Επίδραση της διπλής απομόνωσης στη συχνότητα . . . . . 320
23.3 PWM σωστό κατά φάση . . . . . . . . . . . . . . . . . . . . . . 321
23.4 PWM σωστό κατά φάση και συχνότητα . . . . . . . . . . . . . . 323

24 Ο ΜΕΤΑΤΡΟΠΕΑΣ A/D 331
24.1 Λειτουργία του ADC . . . . . . . . . . . . . . . . . . . . . . . . 332
24.2 Διαιρέτης και χρονισμός του μετατροπέα . . . . . . . . . . . . . . 333
24.3 Επιλογή καναλιών και τάσης αναφοράς . . . . . . . . . . . . . . . 333
24.4 Σκανδαλισμός της μετατροπής . . . . . . . . . . . . . . . . . . . 334
24.5 Παραδείγματα . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

25 ΑΣΥΓΧΡΟΝΗ ΣΕΙΡΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ 345
25.1 Γενικά για τη σειριακή επικοινωνία . . . . . . . . . . . . . . . . . 345
25.2 Γενικά για την ασύγχρονη επικοινωνία . . . . . . . . . . . . . . . 346
25.3 Τα βύσματα και οι συνδέσεις . . . . . . . . . . . . . . . . . . . . 347
25.4 Η μονάδα USART . . . . . . . . . . . . . . . . . . . . . . . . . . 351
25.4.1 Γεννήτρια ρολογιού . . . . . . . . . . . . . . . . . . . . . 352
25.4.2 Τα format του πλαισίου . . . . . . . . . . . . . . . . . . . 354
25.4.3 Τα σφάλματα της σειριακής λήψης . . . . . . . . . . . . . 356
25.4.4 Ο ελεγκτής ισοτιμίας . . . . . . . . . . . . . . . . . . . . 357
25.4.5 Οι καταχωρητές της USART . . . . . . . . . . . . . . . . 357
25.4.6 Οι διακοπές της USART . . . . . . . . . . . . . . . . . . 362
25.5 Ο προγραμματισμός . . . . . . . . . . . . . . . . . . . . . . . . . 362
25.5.1 Αρχικοποίηση της USART . . . . . . . . . . . . . . . . . 362
25.5.2 Αποστολή δεδομένων . . . . . . . . . . . . . . . . . . . . 363
25.5.3 Λήψη δεδομένων . . . . . . . . . . . . . . . . . . . . . . . 364
25.5.4 Λήψη με έλεγχο σφαλμάτων . . . . . . . . . . . . . . . . 364
25.6 Επικοινωνία με πολλούς επεξεργαστές . . . . . . . . . . . . . . . 365
25.7 Φυσικό επίπεδο . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
25.8 Σειριακή επικοινωνία με πρόγραμμα . . . . . . . . . . . . . . . . . 367

26 ΕΛΕΓΚΤΗΣ PID 377
26.1 Γενικά . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
26.2 Απόκριση του συστήματος σε ανοικτό βρόχο . . . . . . . . . . . 379
26.3 Η ρουτίνα PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
26.3.1 Χρονισμός της PID . . . . . . . . . . . . . . . . . . . . . 383
26.3.2 Οι ρυθμίσεις του PWM . . . . . . . . . . . . . . . . . . . 385
26.3.3 Το πρόγραμμα του ελεγκτή PID . . . . . . . . . . . . . . 386
26.4 Διασύνδεση χρήστη . . . . . . . . . . . . . . . . . . . . . . . . . 390
26.4.1 Η σειριακή επικοινωνία . . . . . . . . . . . . . . . . . . . 391
26.4.2 Οι ρουτίνες σειριακής εμφάνισης . . . . . . . . . . . . . . 399
26.4.3 Το μενού . . . . . . . . . . . . . . . . . . . . . . . . . . 407
26.5 Η ρουτίνα main . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

27 ΠΙΝΑΚΕΣ 417