Bài giảng Ứng dụng vi điều khiển - Trần Văn Hùng

pdf 56 trang ngocly 1590
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Ứng dụng vi điều khiển - Trần Văn Hùng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ung_dung_vi_dieu_khien_tran_van_hung.pdf

Nội dung text: Bài giảng Ứng dụng vi điều khiển - Trần Văn Hùng

  1. MÔN HỌC Ứng dụng Vi điều khiển (Microcontroller Applications) By Trần Văn Hùng Mechatronics Dept Email: tvh42th@gmail.com Tài liệu tham khảo 1.Microprofessors and microcpmputers hardware and softwware, Ronaid J.Tocci, Frank J.Ambrosio, Prentice Hall, 2003 2.Interfacing Sensors To The Pc, Willis J.Tompkin, Jonh G.webster,Prentice Hall, 1998 3.Vi xử lý, Văn Thế Minh, NXB Giáo Dục. 4.Họ vi điều khiển 8051, Tống Văn On. 5.Kỹthuật Vi điều khiển AVR, Tống Văn On. 1
  2. Nội dung chương trình n Ch01: Các hệ đếm vàmã hoá n Ch02: Hệ thống vi xử lý n Ch03: Bộ nhớ n Ch04: Họ vi điều khiển AVR n Ch05: Ngôn ngữ lập trình CodevisionAVR n Ch06: Input/Output Các bài toán 1. Thiếtkếmạch điềukhiểnánhsángtheochươngtrình địnhtrước 2. Thiếtkếmạchtrangtríbằng đènLED 3. Thiếtkếmạchnhậndạng điểmphụcvụ(thêm ít nhất 2IC) 4. Thiếtkếmạch đolượngmưa 5. Thiếtkếmạch điềukhiểnnhiệt độ không khí 6. Thiết kế mạch điều khiển nhiệt độ dung dịch 7. Thiết kế mạch đồng hồ điện tử 8. Thiết kế mạch tính thời gian cho các môn điền kinh 9. Thiết kế bảng quang báo 10. Thiết kế mạch khoá điện tử 11. Thiết kế mạch điều khiển thiết bị bằng remote 12. Kết nối bàn phím máy tính với VXL, hiển thị ký tự lên LCD 13. Thiết kế mạch điều khiển Robot chạy theo qũy đạo (sd motor bước) 14. Thiết kế mạch điều khiển tốc độ động cơ DC 15. Thiết kế mạch điều khiển góc quay của môtơ, ổn tốc cho motor. 2
  3. Chương 1: Các hệ đếm vàmã hoá n Các hệ đếm dùng trong máy tính n Các phép toán số học đối với hệ hai n Mã ASCII 1.1 Các hệ đếm dùng trong máy tính 1.1.1 Hệ mười vàhệhai n Con người thìquen dùng hệ cơ số mười (hệ mười) 1234,56 = 1.103 + 2.102 + 3.101 + 4.100 + 5.10-1 + 6.10-2 n Máy tính thìchỉ làm việc với hệ cơ số hai (hệ hai) 1011,01 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2 MSB LSB n Nibble gồm 4 bit 3 0 n Byte gồm 8 bit 7 0 n Word gồm 16 bit 15 0 1
  4. 1.1.1 Chuyển đổi giữa hệ mười vàhệhai n Đổi hệ hai sang hệ mười 3 2 1 0 -1 -2 1011,012 = 1.2 + 0.2 + 1.2 + 1.2 + 0.2 + 1.2 = 11,2510 n Đổi hệ mười sang hệ hai 46 = 101110 10 2 46 2 0 23 2 1 11 2 1 5 2 1 2 2 0 1 2 1 0 Hình 1. Một cách đổi hệ mười sang hệ hai 1.1.1 Chuyển đổi giữa hệ mười vàhệhai (tiếp) n Đổi số thập phân hệ mười sang hệ hai 0,12510 = 0,0012 0,125 x 2 = 0 ,250 0,250 x 2 = 0 ,500 0,500 x 2 = 1 ,000 n Số BCD (số hệ mười mã hoábằng hệ hai) Số BCD thích hợp cho các thiế bị đo cóhiển thị sốở đầu ra. 123410 = 0001 0002 0003 0004BCD n Hệ mười sáu 123410 = 0100 1101 00102 = 4D216 2
  5. 1.2 Các phép toán số học đối với hệ hai 1.2.1 Phép cộng ana(n-1) a2a1a0 + bmb(m-1) b2b1b0 = ckc(k-1) c2c1c0 (hệ cơ số x) ci = (ai + bi + (ai-1 + bi-1)%x )/x Vídụcộng hệ hai 1101 1001 + 0001 1011 1111 0100 1.2.2 Phép trừ vàsốbùhai a. Phép trừ ana(n-1) a2a1a0 -bmb(m-1) b2b1b0 = ckc(k-1) c2c1c0 (hệ cơ số x) ci = (ai –Bi-1) –bi (nếu (ai –Bi-1) >= bi vàBi= 0) ci = (ai –Bi-1 + x) –bi (nếu (ai –Bi-1) < bi vàBi= 1) Vídụtrừ hệ hai 1101 1001 - 0001 1011 1011 1110 1.2.2 Phép trừ vàsốbùhai (tiếp) b. Số bùhai Ta cóthể thay phép trừ bằng phép cộng: cộng số bị trừ với đối số của số trừ. Để tìm số bùhai của một số A ta làm theo các bước sau: + Biểu diễn số A số hệ hai của nó. + Tìm số bùmột (bùlogic) của số đó(đảo bít). + Cộng một vào số bùmột ở trên để nhận được số bùhai của A. 1.2.3 Phép nhân Vídụnhân 2 số hệ hai có độ dài 4 bít a b a.b 1101 0 0 0 1001 0 1 0 1101 1 0 0 0000 1 1 1 0 0 0 0 1 1 0 1 Bảng 1. Quy tắc phép nhân 1110101 3
  6. 1.2.2 Phép chia b. Chia trực tiếp Vídụ: 35/5 = 7 100 0 11 10 1 000 01 1 1 100 0 10 1 1 1 1 1 0 1 1 0 1 1 0 1 0 b. Chia gián tiếp Lấy số bị chia trừ đi số chia, kết quả sẽ làsốbịchia của phép toán tiếp theo, lặp lại đến khi số bị chia nhỏ hơn số chia hoặc bằng 0. 4
  7. Chương2: Hệ thốngvi xử lý n Ưu vànhược điểmhệnhúng n Vi xử lý, vi điềukhiển n Cáchọvi điềukhiển n Ngắtvàxửlýngắt 2.1 Tạisaolạisửdụnghệnhúng? 2.1.1 Ưu điểm n Khả năngthíchnghicao n Tínhlinh động n Khả năngthay đổidễdàng n Khả năngtáisửdụngtàinguyên(thư viện, ) n Giáthànhrẻ n . . . 2.1.2 Nhược điểm n Tốc độ phản ứngchậm n Độổnđịnhthấp n Không xử lý đượcgíatrị liêntục n . . . 1
  8. 2.2 Vi điềukhiển, vi xử lý Data bus CPU Timer, Wdg, USB, General- I/O RAM ROM ADC, UARST, PORT Purpose DAC, I2C, Micro- processor Address bus TERMINOLOGY n Microcontroller vs. Microprocessor vs. Microcomputer n A microprocessor is a central processing unit on a single chip. n A microprocessor combined with support circuitry , peripheral I/O components and memory (RAM & ROM) used to be called a “microcomputer.” n A microprocessor where all the components mentioned above are combined on the same single chip that the microprocessor is on, is called a microcontroller. 2
  9. 2.3 Kiếntrúcvi điềukhiển n Đơn vị sử lýsốhọc(ALU) n Bộ nhớ n Input n Output n Đơn vịđiềukhiển 2.3.1 Đơnvịxửlýsốhọc(ALU) n Thựchiệnphéptoánvàphéplogic trêndữliệu n Dữ liệucóthể lấytrênbộnhớ hoặcI/O n Kếtquả cóthểđược đưarangoàihoặcvàobộnhớ (kếtquảđượclưulại) General Purpose Registrers ALU 3
  10. 2.3.2 Bộ nhớ n Lưu trữ lệnhhay dữ liệu n Cóthểđể lưutrữ dữ liệutạmthời n Cóthể ghi/đọc đượcbởibộđiềukhiển Program Memory Data Memory Data Memory $000 $000 32 Gen. Purpose $0000 Program Flash Working Resisters $001F $0020 (4K x 16) EEPROM 64 I/O Resisters (512 x 8) $005F $0060 $1FF Internal SRAM (512 x 8) $025F $FFF 2.3.3 Input n Thiếtbịchophépthôngtin vàdữliệuvàobêntrong bộ vi điềukhiển n Vídụ: ADC, I2C, UART, 2.3.4 Output n Thiếtbịchuyển đổithôngtin vàdữliệutừbộnhớ ra thiếtbịngoạivi. n Thiếtbịngoạivi: LED, LCD, máyin, 4
  11. 2.3.5 Đơnvịđiềukhiển n Cungcấpxungnhịpvà điềukhiểntínhiệu n Tìmnạplệnhvàdữliệu n Chuyểndữliệutới/từ I/O n Giảimãlệnh n Thựchiệnphéptínhsốhọc/logic n Đáp ứngtínhiệungoài(Reset/Ngắt) 2.3.6 Mộtsốhọvi điềukhiển n Vi điềukhiển8051 n 8051, 89Cxx, 89Sxx, 89Dxx, n Vi điềukhiểnAVR n AVR 8 bít, AVR 16 bít, n Vi điềukhiểnPIC n PIC 8 bít, PIC 16 bít, n Vi điềukhiểnMCUscủaPhilips n P8xCxx, n 5
  12. 2.3.6 Cáchọvi điềukhiển(tiếp–so sánh) n Tốc độ xử lý(clock, clock cycle execution) n Khả năngtíchhợp(ADC, DAC, UART, I2C, ) n Dải điệnáphoạt động(Operating Voltages) n Công suất đầura(DC current per I/O pin) n Khả năngchốngnhiễu(Noise Reduction) n Tậplệnh(Instruction) n Công suấtIC (Power consumption) n . . . 2.4 Ngắtvàxửlýngắt (Interrupt) 2.4.1 Kháiniệm n Ngắtlàsựdừngthựchiệnchươngtrìnhchính(CTC) để thựchiệnchươngtrìnhcon phụ vụ ngắt(ctc) Main Prog ISRj ISRi n: IRQ i m: IRQj n + 1: m + 1: iret iret 6
  13. 2.4.2 Cấutrúcngắt n Xuấthiệnkhông đượcbáotrước n Phụcvụgầngiốngchươngtrìnhcon n Tíchhợpnhiềuloạingắt n Có ưutiênngắt 2.4.3 Xử lýngắt n Xuấthiệnvàchophépngắt n Hoànthànhlệnhhiệntại nLưutrữđịachỉ lệnhtiếptheovàongănxếp nNạpđịachỉ ISR vàoPC n ThựchiệnISR n KếtthúcISR làlệnhRETI n Khôi phục địachỉ lệnhtiếptheotrongngănxếp, chươngtrìnhtiếptụcthựchiện 7
  14. 2.4.4 Phânloạingắt n Ngắtmềm(software interrupt) Làviệcgọi1 ctc(Subroutine) đượcxâydựngriêngmàctc nàycòncóthểđượcgọibởithiếtbịngoạivi n Ngắtcứng(hardware interrupt) Do port pháttínhiệu đếnCPU n Ngắttrong(internal interrupt) TrongmộtsốCPU để bẫy/xử lýcácsựkiệntrongkhithực hiện n Ngoạilệ(exceptions) Làvấnđề hay điềukiện để CPU dừngcôngviệc đangthực hiện, tìm địachỉ vàthựchiện1 ctc, đượcthiếtkếđể xử lýsự kiệnnày. 8
  15. Chương 3: Bộ nhớ n Bộ nhớ bán dẫn n Giải mã địa chỉ cho bộ nhớ n Phối ghép bộ nhớ n Mở rộng bộ nhớ 3.1 Bộ nhớ bán dẫn n Các nhóm tín hiệu n ROM (read only memory) n RAM (random access memory) Memory Radom Read RAM Access Only Memory ROM Memory SRAM DRAM PROM Programmable ROM Static RAM Dynamic RAM EPROM Erasable PROM CACHE EEPROM Electrically EPROM L1, L2, L3 1
  16. 3.1.1 Các nhóm tín hiệu A0 D0 A1 D1 A2 D2 Address . . Data . . An Dm WR WE CS OE Select IC RD Hình 3. Sơ đồ khối của bộ nhớ a. Nhóm tín hiệu địa chỉ n Có tác dụng chọn ra một ô nhớ cụ thể n Số đường địa chỉ sẽ quyết định có tối đa bao nhiêu ô nhớ. Ví dụ có m đường địa chỉ vậy thì tối đa 2m ô nhớ. b. Nhóm tín hiệu dữ liệu n Thường là đầu ra của ROM và là vào/ra đối với RAM n Các mạch nhớ thường có đầu vào/ra là 3 trạng thái. n Số đường dây dữ liệu quyết định độ dài từ nhớ của mỗi ô nhớ. 2
  17. c. Nhóm tín hiệu chọn vi mạch n Chọn vi mạch sẽ trao đổi dữ liệu. n Các tín hiệu này thường được nối với đầu ra của bộ giải mã địa chỉ. n Vi mạch không được chọn thì bus dữ liệu của nó bị treo (ở trạng thái trở kháng cao). d. Nhóm tín hiệu điều khiển n Cho phép dữ liệu ra bus. n Bus dữ liệu bị treo nếu không có tín hiệu điều khiển. n Mạch thường chỉ có một tín hiệu điều khiển đọc/ghi. 3.1.2 ROM n Bộ nhớ có nội dung đã ghi sẵn chỉ để đọc ra n Chỉ nạp vào một lần duy nhất n Không bị mất thông tin khi mất điện A0 D0 A1 D1 A2 D2 Address . . Data . . An Dm WR WE CS OE Select IC RD Hình 3. Bộ nhớ ROM 3
  18. 3.1.3 ROM có thể lập trình được a. PROM (Programmable ROM) n Thời gian truy cập nhanh 120-250ns n Chỉ nạp một lần duy nhất bằng các đốt cháy các cầu chì n Điện áp khi lập trình khoảng 10-13V VCC A0 Address Address A1 Bus decoder A2 D2 D1 D0 b. EPROM (erasable PROM) n Thời gian truy cập khoảng 120 – 450 ns n Điện áp lập trình khoảng 10-25V n Nó có thể được xoá toàn bộ bằng tia cực tím. n Thời gian lập trình cho một ô nhớ lâu (khoảng 50ms) 4
  19. c. EEPROM (electrically EPROM) n Xoá từng đơn vị nhớ bằng điện, không cần tia cực tím. n Thời gian lập trình cho một ô nhớ khoảng 5ms. d. Flash memory n Thời gian truy cập nhanh (khoảng 120ns). n Thời gian ghi nhanh 10µs n Xóa từng khối nhớ 5
  20. 3.1.4 RAM n Bị mất dữ liệu khi mất điện. n Thời gian truy cập nhanh (cóloại 15ns). R/W Input buffers Register 0 Register 1 s s t e Decoder u r Register 2 p d n . CS d i 6 line to 64 line . A . . Register 62 Register 63 Output buffers Hình 3. Cấu tạo bên trong của 64 x 4 RAM 3.1.4 RAM (tiếp) n SRAM (static RAM) n Chế tạo đơn giản n Dễ dàng bảo trì n Thường được sử dụng trong hệ thống cóbộnhớ nhỏ n DRAM (dynamic RAM) n Giáthành thấp n Đòi hỏi mạch phụ trợ n Phải làm tươi (refresh) thường xuyên n Thường được sử dụng trong hệ thống cóbộnhớ lớn 6
  21. 3.2 Giải mã địa chỉ cho bộ nhớ n Phân định không gian tổng thể thành các vùng nhớ khác nhau n Đảm bảo tính đơn trị của xung chọn n Khi thiết kế thường có dự phòng (spare) để có thể mở rộng mà không phải thiết kế lại mạch. Tín hiệu địa chỉ Mạch giải Các tín hiệu chon chip mã địa chỉ Tín hiệu điều khiển Hình 3. Mạch giải mã địa chỉ 3.2.1 Giải mã bằng các mạch NAND n Mạch giải mã địa chỉ đơn giản với đầu ra hạn chế A0 –A10 D -D Memory 0 7 CE OE A11 –A19 IO/M RD Hình 3. Mạch giải mã đơn giản dùng NAND 7
  22. 3.2.2 Giải mã bằng các mạch 74138 n Là mạch giải mã 3 đầu vào, 8 đầu ra A0 –A12 Memory D0 –D7 74LS138 CE OE A Y0 15 A13 –A15 B Y1 14 C Y2 13 6 Y3 12 A16 –A18 G2A Y4 11 RD 10 5 Y5 IO/M G2B Y6 9 4 G1 Y7 7 A19 Hình 3. Sơ đồ giải mã dùng 74LS138 3.2.2 Giải mã bằng các mạch 74138 (tiếp) n Mức tích cực là mức 0 n Chỉ duy nhất một đầu ra ở mức tích cực 8
  23. 3.2.3 Giải mã dùng ROM n Cùng một chức năng như 74138 n Giảm thiểu số mạch phụ trợ A0 –A12 Memory D0 –D7 CE OE 15 A0 Y0 A1 Y1 14 A2 Y2 13 A13 –A19 A3 Y3 12 A4 Y4 11 RD A5 Y5 10 A6 Y6 9 A7 Y7 7 G1 IO/M Hình 3. Sơ đồ giải mã dùng PROM 3.2.3 Giải mã dùng ROM (tiếp) n Chỉ sử dụng 8 byte đầu tiên, các byte khác đều chứa cùng một giá trị FFh Các đầu vào Các đầu ra G A7 A6 A5 A4 A3 A2 A1 A0 O7 O6 O5 O4 O3 O2 O1 O0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 Các địa chỉ khác 1 1 1 1 1 1 1 1 9
  24. 3.3 Ghép nối bộ nhớ n Định địa chỉ các ô nhớ. n Dung lượng bộ nhớ. n Tốc độ bộ nhớ ko đáp ứng đươc tốc độ VĐK thì ta phải có mạch tăng thêm chu kỳ đợi A0 –A11 D –D Bộ tạo xung trễ 0 7 Ready Memory CS 74LS138 CE OE F8000-F8FFF A Y0 15 14 A12 –A14 B Y1 A15 –A19 C Y2 13 6 Y3 12 G2A Y4 11 RD 10 IO/M 5 Y5 G2B Y6 9 4 7 FF000-FFFFF +Vcc G1 Y7 Hình 3. Phối ghép bộ nhớ 3.3 Ghép nối bộ nhớ (tiếp) n Sử dụng bộ dồn kênh để giảm số chân, tăng dung lượng bộ nhớ lên A0/A7 A6/A13 7 bit CAS Column address register A7 A8 A9 A10 A11 A12 A13 RAS Column address decoder A0 A1 R/W A 7 bit 2 | Row | A | A / A –A/A Row 3 | 128 x 128 0 7 6 13 address | address A | Cell array 4 decoder | Data in register | A5 A 6 Data out Hình 3. Kiến trúc của bộ nhớ 4116 10
  25. 3.4 Mở rộng bộ nhớ 3.4.1 Mở rộng kích thước ô nhớ Address bus (AB0 –AB3) R/W CS A3 A2 A1 A0 A3 A2 A1 A0 R/W RAM-0 R/W RAM-1 16 x 4 16 x 4 CS CS I/03 I/02 I/01 I/00 I/03 I/02 I/01 I/00 Data bus (DB0 –DB7) Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 16 x 8 3.4.1 Mở rộng kích thước ô nhớ (tiếp) Address bus (AB0 –AB10) R/W R/W R/W R/W RAM-0 RAM-1 RAM-2 RAM-3 2K x 8 2K x 8 2K x 8 2K x 8 CS CS CS CS I/00 -I/07 I/08 -I/015 I/016 -I/023 I/024 -I/031 Data bus (DB0 –DB31) Hình 3. Kết hợp bốn bộ nhớ 2K x 8 thành 2K x 32 11
  26. 3.4.2 Mở rộng dung lượng nhớ Address bus (AB0 –AB3) R/W AB4 A3 A2 A1 A0 A3 A2 A1 A0 R/W RAM-0 R/W RAM-1 16 x 4 16 x 4 CS CS I/03 I/02 I/01 I/00 I/03 I/02 I/01 I/00 Data bus (DB0 –DB3) Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 32 x 4 12
  27. Chương 4: Họ vi điều khiển AVR n Giới thiệu chung n Các chức năng điều khiển n Tập lệnh vàngôn ngữ lập trình 4.1 Giới thiệu chung n AVR -Kiến trúc RISC n Khoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máy n 32 thanh ghi đa năng 8 bit n Cóthể lên tới 16 MIPS tại tần số 16MHz n Bộ nhớ : n 8 256K Flash Mem cho chương trình, ghi/xoá được 10.000 lần n 512 4K Byte EEPROM, ghi/xoá100.000 n 512 8K Byte SRAM 1
  28. 4.1 Giới thiệu chung (tiếp) n Các modul vào ra (I/O moduls) n ADC 10bit vàtừ 8 16 kênh Analog n 1 đến 2 Programmable UART n Master/Slave ISP Serial Interface n 3 4 Timer/Counter: 1 x 16 bit, 2 x 8 bit n WatchDog Timer n Analog Comparator n PWM n Công suất (Power Management): -3 chế độ nghỉ (Sleep Mode): n Idle : 1.9 mA n Power-Down: <1µA n PowerSave n (chế độ chạy bình thường: 6mA) 4.1 Giới thiệu chung (tiếp) – Điện áp làm việc : n Vcc 4.0-6.0V với AT90S8535 n Vcc 2.7-6.0V với AT90LS8535 –Tần số CLOCK n 0-8MHz với AT90S8535 n 0-4MHz với AT90LS8535 n 0-16MHz với Atmegaxx 2
  29. 4.1 Giới thiệu chung (tiếp) 4.1.1 Các bộ nhớ Program Memory Data Memory Data Memory $000 $0000 $000 32 Gen. Purpose Program Flash Working Resisters $001F $0020 (4K x 16) EEPROM 64 I/O Resisters (512 x 8) $005F $0060 $1FF Internal SRAM (512 x 8) $025F $FFF 3
  30. 4.1.1 Các bộ nhớ (tiếp) Register File Data Address Space R1 $0000 R2 $0001 R30 ZL $001E R31 ZH $001F I/O Register $00 $0020 $01 $0021 $3E $005E $3F $005F Internal SRAM SRAM Organization $0060 $0061 $085E $085F 4.1.2 Các thanh ghi đa năng a. Các thanh ghi đa năng n Bao gồm 32 thanh ghi 8 bit n Được thực hiện trực tiếp từ ALU n Các cặp thanh ghi R26, 27; R28, 29; R30, 31 tạo thành các thanh ghi 16 bit 4
  31. b. Các thanh ghi ngăn xếp n Để lưu trữ dữ liệu tam thời, vị tríbiến và địa chỉ trở về sau khi phục vụ chương trình con ngắt và chương trình con n Luôn trỏ vào đỉnh của ngăn xếp n Ngăn xếp luôn bắt đầu từ vị trícao của bộ nhớ c. Các thanh ghi trạng thái n Chứa thông tin hiện tại của CPU n Có8 bit chứa thông tin n Thông tin có thể bị thay đổi khi có chương trình con phục vụ ngắt 5
  32. d. Thanh ghi che ngắt vàcờngắt n Cho phép hay không cho phép một ngắt bất kỳ n Thông báo khi cóngắt, nếu ngắt đó đã được phép n Thanh ghi che ngắt được thiết lập bằng phần mềm e. Thanh ghi điều khiển n Cho phép điều khiển toàn bộ vi điều khiển n Chức năng này gồm: n Truy cập bộ nhớ SRAM n Chế độ ngủ n Chế độ ngắt ngoài 6
  33. f. Một số thanh ghi khác n Thanh ghi trạng thái bộ xử lý n Các thanh ghi điều khiển timer/counter0 n Các thanh ghi điều khiển timer/counter1 n Thanh ghi điều khiển Watchdog n Các thanh ghi điều khiển vào ra EEPROM n Các thanh ghi điều khiển SPI n Các thanh ghi điều khiển UART n Các thanh ghi điều khiển bộ ADC 4.1.3 Ngắt vàxửlý ngắt Vector No. ProgramAddress Source Interrupt Difinition External Pin, Power-on Reset, Brown-out Reset, 1 $000 Reset Watchdog Reset and JTAG AVR Reset 2 $002 INT0 External Interrupt Request 0 3 $004 INT1 External Interrupt Request 1 4 $006 INT2 External Interrupt Request 2 5 $008 TIMER2 COMP Timer/Counter2 Compare Match 6 $00A TIMER2 OVF Timer/Counter2 Overflow 7 $00C TIMER1 CAPT Timer/Counter1 Capture Event 8 $00E TIMER1 COMPA Timer/Counter1 Capture Match A 9 $010 TIMER1 COMPB Timer/Counter1 Capture Match B 10 $012 TIMER1 OVF Timer/Counter1 Overflow 11 $014 TIMER0 COMP Timer/Counter0 Compare Match 12 $016 TIMER0 OVF Timer/Counter0 Overflow 13 $018 SPI, STC Serial Transfer Complete 14 $01A USART, RXC USART, Rx Complete 15 $01C USART, UDRE USART Data Register Empty 16 $01E USART, TXC USART, Tx Complete 17 $020 ADC ADC Conversion Complete 18 $022 EE_RDY EEPROM Ready 19 $024 ANA_COMP Analog Comparator 20 $026 TWI Two-wire Serial Interface 21 $028 SPM_RDY Store Program Memory Ready 7
  34. 4.1.3 Ngắt vàxửlý ngắt (tiếp) n 16 vectơ ngắt (2 Byte) n Từ địa chỉ $000 trong bộ nhớ chương trình n Ngắt cóchỉ số thấp, độ ưu tiên càng cao n Mỗi ngắt cómột bít cho phép ngắt riêng n Để sử dụng một ngắt thìbit này phải thiết lập cùng với cờ I (Global Interrupt Enable) trong thanh ghi SREG được thiết lập n Mất 4 chu kỳ đồng hồ để vào (hoặc ra khỏi) chương trình con phực vụ ngắt 4.1.3 Ngắt vàxửlý ngắt (tiếp) Bit 7 6 5 4 3 2 1 0 $3F ($5F) I T H S V N Z C SREG Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 n I –Global Interrupt Enable n T –Bit Copy Storage n H –Haft Carry Flag n S –Sign Bit S = N V n V –Overflow Flag n N –Negative Flag n Z –Zero Flag n C –Carry Flag 8
  35. 4.2 Các chức năng điều khiển n Timer/Counter n WatchDog Timer n Các cổng vào ra n ADC n UART n EEPROM 4.2.1 Timer/Counter Có3 bộ đếm/định thời gian n T/C0 : n 8 bit n Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T0 (theo sườn lên/xuống) n Ngắt tràn n T/C1: n 16 bit n Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T1 (theo sườn lên/xuống) n Cóngắt tràn, ngắt thích ứng so sánh vàngắt cho phép bắt tín hiệu từ chân ICP 9
  36. 4.2.1 Timer/Counter (tiếp) n T/C2: n 8 bit n Nguồn đồng hồ từ mạch chia thời gian hoặc từ dao động bên ngoài (chân TOSC1 vàTOSC2 nối với tụ thạch anh 32768Hz) n Cóngắt tràn vàngắt thích ứng so sánh n Cho phép đưa tín hiệu ra chân OC2 khi cótín hiệu thích ứng so sánh 4.2.2 WatchDog Timer Reset Watchdog Timer Processor Restart Clock 10
  37. 4.2.2 WatchDog Timer (tiếp) n Hoạt động từ bộ dao động độc lập trên chip n Lệnh WDR để Reset lại WatchDog Timer n Sau khoảng thời gian > time_out chương trình sẽ bị Reset lại n Thanh ghi điều khiển: WDTCR Bit 7 6 5 4 3 2 1 0 $21 ($41) ─ ─ ─ WDTOE WDE WDP2 WDP1 WDP0 WDTCR Read/Write R R R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 4.2.2 WatchDog Timer (tiếp) n WDP2, WDP1, WDP0 : xác định thời gian time_out Number of WDT Typical Time_out Typical Time_out WDP2 WDP1 WDP0 Oscillator Cycles at Vcc = 3.0V at Vcc = 5.0V 0 0 0 16K 17.1ms 16.3ms 0 0 1 32K 34.3ms 32.5ms 0 1 0 64K 68.5 65ms 0 1 1 128K 0.14s 0.13s 1 0 0 256K 0.27s 0.26s 1 0 1 512K 0.55s 0.52s 1 1 0 1M 1.1s 1.0s 1 1 1 2M 2.2s 2.1s 11
  38. 4.2.2 Các cổng vào ra 4.2.2 Các cổng vào ra (tiếp) n Có4 cổng vào ra 8 bit PA, PB, PC, PD n Mỗi cổng đều có3 thanh ghi (8 bit), vídụcổng A : n Thanh ghi dữ liệu : PORTA n Thanh ghi điều khiển hướng dữ liệu : DDRA n Thanh ghi địa chỉ các chân vào : PINA n Cho phép thao tác vào ra trên từng bít (một cổng có thể vừa cóbit vào vừa cóbit ra) n bit DDRAi=1, chân PAi làchân ra ( = PORTAi) n bit DDRAi=0, chân PAi làchân vào (= PINAi) 12
  39. 4.2.2 Các cổng vào ra (tiếp) n Phải định nghĩa cổng trước khi sử dụng n Khả năng chịu tải cao (Isink khoảng 20mA/Pin) n Vào ra ba trạng thái n Cókhả năng vào tương tự n Pull_up, I = 33µA÷160µA 4.2.3 ADC n Đặc điểm: n Độ phân giải tối đa 10 bit, xấp xỉ liên tiếp n Độ chính xác tuyệt đối đến ±2 LSB n Thời gian chuyển đổi: 65-260 µs, 13 chu kỳ cho một lần chuyển đổi n 2 chế độ hoạt động: chuyển đổi đơn vàchuyển đổi tự do n Các thanh ghi n Thanh ghi dữ liệu: ADCL, ADCH 13
  40. 4.2.3 ADC (tiếp) n Thanh ghi chọn kênh : ADMUX Bit 7 6 5 4 3 2 1 0 $21 ($41) REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 ADMUX Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 n Thanh ghi điều khiển trạng thái: ADCSRA Bit 7 6 5 4 3 2 1 0 $21 ($41) ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 ADCSRA Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial 0 0 0 0 0 0 0 0 Value 4.2.4 USART n Đặc điểm: n Truyền song công n Truyền đồng bộ hoặc không đồng bộ n Master hoặc Slave cấp xung nhịp n Khuân dạng dữ liệu đa dạng (5=>9 bit dữ liệu, 1 hoặc 2 bít dừng) n Kiểm tra bit chẵn lẻ bằng phần cứng n Tự phát hiện lỗi tràn dữ liệu, khung dữ liệu lỗi n Khả năng lọc nhiễu n 3 ngắt truyền, nhận vàtruyền hết n Nhiều chế độ kết nối n Khả năng nhân đôi tốc độ truyền thông 14
  41. 4.2.4 USART (tiếp) n Các thanh ghi n Thanh ghi tốc độ Baud : UBRR Fclk BaudRate = 16 * (UBRR + 1) n VD: fck = 4MHz,cần tốc độ 14400bps n UBRR =16 (16.3), tốc độ thực tế là14705bps, lỗi 2.1% n Không nên sử dụng tốc độ cólỗi > 1% 4.2.4 USART (tiếp) n Thanh ghi dữ liệu: UDR (gồm hai thanh ghi độc lập cócùng địa chỉ vào ra): chứa dữ liệu nhận vàtruyền n Thanh ghi điều khiển vàtrạng thái: UCSR (Control and Status Register) Bit 7 6 5 4 3 2 1 0 $0B ($2B) RXC TXC UDRE FE DOR PE U2X MPCM UCSRA Read/Write R R/W R R R R R/W R/W Initial Value 0 0 1 0 0 0 0 0 Bit 7 6 5 4 3 2 1 0 $0A ($2A) RXCIE TSCIE UDRUE RXEN TXEN UCSZ2 RXB8 TXB8 UCSRB Read/Write R/W R/W R/W R/W R/W R/W R R/W Initial Value 0 0 0 0 0 0 0 0 15
  42. 4.2.4 USART (tiếp) Hoạt động: n Thiết lập tốc độ truyền, 8/9 bit dữ liệu, truyền/nhận hoặc cả hai, cósửdụng ngắt hay không? n Truyền dữ liệu: n Đưa byte dữ liệu cần truyền vào UDR n Đợi đến khi UDRE = 1 (hoặc sử dụng ngắt) thìtruyền tếp byte tiếp theo 4.2.4 USART (tiếp) n Nhận dữ liệu: (IDLE) St 0 1 2 3 4 [5] [6] [7] [8] [P] Sp1 [Sp2] (St/IDLE) n Đợi đến khi cờ RXC=1 (hoặc sử dụng ngắt) báo hiệu nhận được byte dữ liệu n Kiểm tra cờ FE và OR n Đọc byte dữ liệu từ UDR 16
  43. 4.2.5 EEPROM n EERIE (EEPROM Ready Intr En) n EEMWE (EEPROM Master Write En) : cho phép ghi. Bit này sẽ tự động bị xoásau 4 chu kỳ đồng hồ n EEWE (EEPROM Write En) : khi bit này được thiết lập và EEMWE=1 thìthao tác ghi mới được thực hiện n EERE (EEPROM Read En): cho phép đọc n EEPROM. Khi đọc xong, bit này sẽ tự động bị xoávàCPU sẽ dừng 4 chu kỳ đồng hồ trước khi lệnh tiếp theo được thực hiện 4.2.5 EEPROM (tiếp) n Quy trình ghi: n Đợi đến khi EEWE=0 n Ghi địa chỉ mới vào EEARL vàEEARH n Ghi dữ liệu mới vào EEDR n Ghi mức logic 1 vào bit EEMWE vàmức logic 0 vào EEWE đồng thời n Trong vòng 4 chu kỳ đồng hồ sau ghi giátrị logic 1 vào EEWE 17
  44. 4.2.6 SPI (Serial Peripheral Interface) 4.2.6 SPI (Serial Peripheral Interface –tiếp) n Truyền song công n Chọn chế độ chủ hoặc tớ n Bit cao hoặc bit thấp truyền trước n Bảy bít thiết lập tốc độ truyền n Cờ ngắt truyền hết n Cờ bảo vệ xung đột ghi n Đánh thúc từ chế độ nghỉ n Chế độ nhân đôi tốc độ 18
  45. 4.2.7 So sánh tín hiệu tương tự (Analog Comparator) n Mạch so sánh tín hiệu tương tự: so sánh tín hiệu analog giữa hai chân AIN1 vàAIN2 4.1 Giới thiệu chung (tiếp) U1 J5 +5V 1 40 1 2 PB0/XCK/T0 PA0/ADC0 39 2 MOSI 3 PB1/T1 PA1/ADC1 38 3 MISO 4 PB2/INT2/AIN0 PA2/ADC2 37 4 SCK 5 PB3/OC0/AIN1 PA3/ADC3 36 5 Reset MOSI 6 PB4/SS PA4/ADC4 35 6 MISO 7 PB5/MOSI PA5/ADC5 34 SCK 8 PB6/MISO PA6/ADC6 33 Program PB7/SCK PA7/ADC7 14 22 15 PD0/RXD PC0/SCL 23 16 PD1/TXD PC1/SDA 24 17 PD2/INT0 PC2/TCK 25 18 PD3/INT1 PC3/TMS 26 19 PD4/OC1B PC4/TDO 27 20 PD5/OC1A PC5/TDI 28 21 PD6/ICP PC6/TOSC1 29 PD7/OC2 PC7/TOSC2 C4 22p 11 12 CON8 GND XTAL2 Y1 10 8MHz +5V C5 VCC 13 XTAL1 R1 +5V 22p 10K 30 AVCC S1 Reset 9 RESET 31 +5V AGND Reset + C3 4.7u 32 AREF ATMEGA32 19
  46. 4.3 Tập lệnh vàngôn ngữ lập trình 4.3.1 Tập lệnh n 109 lệnh n Toán học vàlogic (22) n Lệnh rẽ nhánh (34) n Lệnh chuyển đổi dữ liệu (31) n Lệnh bít vàkiểm tra bít (31) 4.3.1 Tập lệnh (tiếp) Các chế độ định địa chỉ n Địa chỉ trực tiếp (Direct Addressing) n Địa chỉ qua chỉ số (Indexed Addressing) n Địa chỉ tức thời (Immediate Addressing) n Địa chỉ tương đối (Relative Addressing) n . 20
  47. 4.3.2 Một số ngôn ngữ lập trình nAVR Assembler nAVR Edit 3.5 (lập trình C) nCodeVisionAVR (lập trình C) 21
  48. Chương 5: CodevisionAVR n IDE (Integrated Development Environment) n Trình dịch (Compiler) n Hàm thư viện (Library Functions) n Tự động sinh mã (Automatic Program Generator) Hình 5. Giao diện chính của CodevisionAVR 1
  49. 5.1 IDE 5.1.1 File n Tạo file n Mở file n Chỉnh sửa n Lưu 5.1.2 Project n Tạo một project n Mở Project n Thêm chú thích/diễn giải n Cấu hình cho Project n Quan sát chương trrình dịch 2
  50. 5.1.3 Công cụ n Gỡ rối (debugger) n Lập trình (programmer) n Terminal n Cấu hình (Configuring) 5.1.4 Thiết lập môi trường n Tổng quan n Soạn thảo n Hiện lỗi n Đường dẫn trình gỡ lỗi n Cấu hình nạp 3
  51. 5.2 Trình dịch n Tiền xử lý n Chúthích n Từ khoá n Dữ liệu chuẩn, dữ liệu tự định nghĩa n Hằng, biến n Chuyển kiểu n Phép toán n Hàm n Con trỏ n Thanh ghi I/O n Truy cập EEPROM n Ngắt n Assembly 5.3 Hàm chuẩn n Hàm IO chuẩn n char getchar(void) Returns a character received by the UART, using polling. n void putchar(char c) Transmits the character c using the UART, using polling. n n Hàm toán học n unsigned char cabs(signed char x) returns the absolute value of the byte x. n unsigned int abs(int x) returns the absolute value of the integer x. n 4
  52. n LCD n void lcd_write_byte (unsigned char addr, unsigned char data) write a byte to the LCD character generator or display RAM n unsigned char lcd_read_byte(unsigned char addr); read a byte from the LCD character generator or display RAM n void lcd_gotoxy(unsigned char x, unsigned char y); set the LCD display position x=0 39 y=0 3 n . . . n I2C n void i2c_init(void) this function initializes the I2C bus. n unsigned char i2c_start (void) issues a START condition. Returns 1 if bus is free or 0 if the I2C bus is busy. n void i2c_stop (void) issues a STOP condition. n . . . 5.4 Tự động sinh mã n Cài đặt các thông số n Thiết lập RAM ngoài n Thiết lập cổng vào ra n Thiết lập ngắt n Thiết lập bộ đếm/định thời n Thiết lập UART/USART n Thiết lập bộ so sánh tương tự n Thiết lập ADC n Thiết lập SPI n Thiết lập USI n Thiết lập I2C n Thiết lập LCD n . . . 5
  53. Chương 6: Input/Output n Tổng quan n Một số ví dụ vào/ra n Lập trình điều khiển thiết bị n Thiết bị vào ra chuẩn Tổng quan n Vào ra số Vào nối tiếp Vào ra song song n Vào ra tương tự ADC DAC 1
  54. Vào ra của 8051 Vào ra của AVR 2
  55. Bàn phím 4x4 S901 S902 S903 S904 K0 K1 K2 K3 K4 S911 S912 S913 S914 K5 S921 S922 S923 S924 K6 S931 S932 S933 S934 K7 Bàn phím 4x4 n Đọc bàn phím n Chống rung 3
  56. Key Board Key Board n AT keyboard goààm moätä ma traänä lôùnù caùcù phím, taáát caûû ñöôïïc giaùùm saùùt bôûûi moäät boää xöû lyùù on-board. Boää xöû lyùù khaùùc bieäät nhau töø baønø phím naøyø ñeáná baønø phím khaùùc( chip thoângâ duïngï goàmà 8048, 8049, 6868 vaøø 6805) nhöng taáát chuùngù cô baûnû laømø gioángá moätä vieäcä : Giaùùm saùùt nhöõngõ phím ñöôïcï nhaáná / thaûû vaøø gôûiû döõõ lieääu töông xöùng tôùiù maùyù chuû.û Boää xöû lyùù naøøy chaêm soùùc taáát caûû döõõ lieääu ra vaøø ñeämä baátá cöù döõõ lieääu naøoø vaøoø boää ñeääm 16-byte cuûaû noùù neáuá caànà . Taátá caûû vieäcä giao tieááp giöõaõa maùùy chuûû vaøø baønø phím duøngø PS/2 protocol. 4