181
Thi ế t bị thực tập lập trình (vi đ i u khiển AVR) Trang i Phần A : Giớ i thiệu PHẦN A GI ỚI THIỆU

baocao

Embed Size (px)

Citation preview

Page 1: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang i

Phần A : Giới thiệu

PHẦN A

GIỚI THIỆU

Page 2: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang ii

Phần A : Giới thiệu

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯPHẠM KỸ THUẬT TP.HCM

KHOA ĐIỆN TỬ

ĐỒ ÁN TỐT NGHIỆP

NGUYỄN THẾ CHÍ

THIẾT BỊ THỰC TẬP LẬP TRÌNH(VI ĐIỀU KHIỂN AVR)

Chuyên ngành Kỹ Thuật Điện – Điện TửHệ Đại Học Chính Qui

Thành phố Hồ Chí Minh, Tháng 07 năm 2008

Page 3: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang iii

Phần A : Giới thiệu

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC SƯPHẠM KỸ THUẬT TP.HỒ CHÍ MINH

Cán bộ hướng dẫn khoa học: NGUYỄN THANH BÌNH

Cán bộ chấm phản biện:………………………………………………………………

Đồ án tốt nghiệp được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ ĐỒ ÁN TỐT NGHIỆP TRƯỜNG ĐẠI HỌC SƯPHẠM KỸ THUẬT TP.HỒ CHÍ MINH,Ngày……tháng……năm 2008

Page 4: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang iv

Phần A : Giới thiệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯPHẠM KỸ

THUẬT TP.HỒ CHÍ MINHKHOA ĐIỆN TỬ

Tp.HCM, ngày……tháng……năm 2008

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

ĐỘC LẬP – TỰ DO – HẠNH PHÚC

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆPHọ tên sinh viên : NGUYỄN THẾ CHÍ MSSV : 06301006Chuyên ngành : KỸ THUẬT ĐIỆN – ĐIỆN TỬ Mã ngành : 01Hệ đào tạo :Đại học chính qui Mã hệ : 01Khóa : 2006 – 2008 Lớp : 063010B

I. TÊN ĐỀ TÀI: THIẾT BỊ THỰC TẬP LẬP TRÌNH (VIĐIỀU KHIỂN AVR)

II. NHIỆM VỤ VÀ NỘI DUNG ĐỀ TÀI:........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................III. NGÀY GIAO NHIỆM VỤ:........................................................................................IV. NGÀY HOÀN THÀNH NHIỆM VỤ:.......................................................................V. GIÁO VIÊN HƯỚNG DẪN: NGUYỄN THANH BÌNH

Ngày ……tháng……năm 2008GIÁO VIÊN HƯỚNG DẪN

(ký tên)

NGUYỄN THANH BÌNH

Ngày ……tháng……năm 2008BM. QUẢN LÝ CHUYÊN NGÀNH

(ký tên)

Page 5: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang v

Phần A : Giới thiệu

LỜI CẢM ƠN

Nhóm thực hiện đề tài xin chân thành cảm ơn thầy NGUYỄN THANH BÌNH. Trongsuốt quá trình thực hiện đề tài thầy đã tận tình hướng dẫn, cung cấp tài liệu, kinh nghiệm giúp nhóm hoàn thành tốt đồ án.

Nhóm thực hiện đề tài cũng gửi lời cảm ơn đến các thầy cô khoa điện tử đã hỗ trợ cho nhóm một số tài liệu và kinh nghiệm để thực hiện đề tài này.

Ngoài ra nhóm thực hiện đề tài cũng gửi lời cảm ơn đến tất cả các bạn học cùng lớp 063010 đã đóng góp ý kiến giúp đỡ nhóm thực hiện tốt đề tài này.

NHÓM THỰC HIỆN ĐỀ TÀI

Page 6: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang vi

Phần A : Giới thiệu

TÓM TẮT ĐỀ TÀI

Đề tài “Thiết bị thực tập lập trình (vi điều khiển AVR)” hướng đến mục tiêu thiết kế một thiết bị thực tập vi điều khiển đa năng. Việc lập trình và chạy các ứng dụng trênphần cứng thực tếgiúp người học có các nhìn nhận trực quan thực tiễn hơn đối với bàithực hành, nắm rõ hơn lý thuyết đã được học trước đó.

Nội dung đề tài được chia thành 6 chương mà nội dung chính được tập trung chủ yếu ở các chương 2, 3, 4, 5. Sự kết hợp linh hoạt giữa phần cứng với phần mềm lập trình sẽ tạo cho người học có cái nhìn tổng quan về vi điều khiển AVR.

Chương 2 đề cập đến cấu trúc vi điều khiển AVR 90S8515. Nhằm giới thiệu cho người học hiểu về chức năng, sơđồ cấu tạo bên trong của vi điều khiển AVR 90S8515.

Chương 3 là chương trọng tâm của đề tài. Bắt đầu bằng việc xác định chức năng của các khối, đưa ra các giải pháp phần cứng và tiến hành thiết kế. Các khối được thiết kế dựa trên lý thuyết đã được học ở các môn : mạch điện tử, kỹ thuật số, thiết kế mạch điện tử … gồm các khối: hiển thị LED đơn, quét hiển thị LED 7 đoạn, dịch chốt hiển thị led 7 đoạn, quét hiển thị LED ma trận, dịch chốt hiển thị Led ma trận, hiển thị LCD… Tất cả được sắp xếp trên một mạch lớn ở từng vị trí nhất định.

Chương 4 nói về phần mềm CodeVision AVR C. Đây là phần mềm hỗ trợ lập trìnhbằng ngôn ngữ C cho vi điều khiển AVR, trong phần này hướng dẫn người học cáchsử dụng phần mềm, tạo các tập tin mới cũng nhưcách biên dịch và nạp chương trìnhcho AVR bằng card nạp AVR910.

Chương 5 thiết kế chương trình mẩu ứng dụng cho các khối. Chương này cũng kháquan trọng, nó thể hiện được khả năng kết hợp giữa phần cứng và phần mềm cũng nhưkiểm tra thực nghiệm việc thiết kế phần cứng có đúng và phù hợp với yêu cầu thiết kế đề ra hay chưa. Ngoài ra giúp cho người học có những hiểu biết ban đầu về cách lập trình cho vi điều khiển AVR bằng ngôn ngữ lập trình C và chạy ứng dụng trên thiết bị.

Qua các kết quả mô phỏng và chạy trên thực tế cho thấy các khối làm việc tương đối ổn định. Các khối tách rời nhau tạo điều kiện thuận lợi cho người học trong việc liênkết với khối trung tâm.

Tuy nhiên, đề tài này vẫn còn một số khuyết điểm. Không tận dụng hết chức năng, bộ nhớ của vi điểu khiển AVR. Chưa có đủ các khối nâng cao như: mở rộng port, bộ nhớ, I2C, CAN… Chưa có các chân cắm để đo đạc.

Tóm lại, đề tài “Thiết bị thực tập lập trình (vi điều khiển AVR)” có các khối phần lớn khai thác được các tính năng cơbản của vi điều khiển AVR, có thể mở rộng được bằng các boardphụbên ngoài. Bên cạnh đó đề tài còn hướng đến ứng dụng ngôn ngữ C trong lập trình cho viđiều khiển AVR.

Page 7: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang vii

Phần A : Giới thiệu

MỤC LỤC

PHẦN A : GIỚI THIỆU Trang

Trang bìa..............................................................................................................................iiPhân công cán bộ hướng dẫn.............................................................................................. iiiNhiệm vụ đồ án................................................................................................................... ivLời cảm ơn........................................................................................................................... vTóm tắt đề tài...................................................................................................................... viMục lục ............................................................................................................................. viiLiệt kê bảng ......................................................................................................................xiiiLiệt kê hình ....................................................................................................................... xiv

PHẦN B : NỘI DUNG

CHƯƠNG 1 : DẪN NHẬP

1.1 Lý do chọn đề tài ........................................................................................................ 21.2 Mục đích nghiên cứu .................................................................................................. 21.3 Đối tượng nghiên cứu và phạm vi nghiên cứu ........................................................... 21.4 Ý nghĩa khoa học và thực tiễn của đề tài ................................................................... 31.5 Tình hình nghiên cứu ................................................................................................. 31.6 Hướng nghiên cứu của đề tài ..................................................................................... 41.7 Phương pháp nghiên cứu ............................................................................................ 5

CHƯƠNG 2 : TỔNG QUAN VỀ VI ĐIỀU KHIỂN AVR

2.1 Sơđồ chân .................................................................................................................. 62.2 Mô tả về AVR ........................................................................................................ 7

2.2.1 Sơđồ khối của AVR AT90S8515 ........................................................................ 72.2.2 Chức năng các chân AVR AT90S8515................................................................ 8

2.3 Khái quát về cấu trúc của AVR ................................................................................. 92.3.1 Sơđồ cấu trúc của AVR 90s8515 ...................................................................... 102.3.2 Bộ nhớ dữ liệu .................................................................................................... 112.3.3 Sơđồ bộ nhớ trong AVR 90S8515 .................................................................... 122.3.4 Các thanh ghi trong AVR................................................................................... 122.3.5 Tệp thanh ghi của vi điều khiển AVR ................................................................ 132.3.6 Bộ nhớ dữ liệu SRAM........................................................................................ 132.3.7 Bộ nhớ I/O (Các port)......................................................................................... 142.3.8 Thanh ghi trạng thái (Status Register – SREG) ................................................. 152.3.9 Con trỏ ngăn xếp : Stack Pointer (SP)................................................................ 162.3.10 Sử dụng ngắt trong AT90S8515........................................................................ 172.3.11 Reset .................................................................................................................. 182.3.12 Ngắt ................................................................................................................... 192.3.13 Thanh ghi che ngắt chung GIMSK (General Interrupt Mask Register)............ 202.3.14 Thanh ghi cờ ngắt chung GIFR (General Interrupt Flag Register) ................... 20

Page 8: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang viii

Phần A : Giới thiệu

2.3.15 Thanh ghi che ngắt Timer/counter TIMSK (Timer/counter Interrupt Mask Register) ........................................................................................................... 21

2.3.16 Thanh ghi cờ ngắt Timer/counter TIFR (Timer/counter interrupt Flag Register) ........................................................................................................... 21

2.3.17 Thanh ghi điều khiển MCU MCUCR (MCU Control Register) .................... 212.4 Cấu tạo và lý thuyết chung Timer/Counter ............................................................... 23

2.4.1 Bộ chia Timer/counter........................................................................................ 242.4.2 Timer/counter 0 .................................................................................................. 242.4.3 Timer/counter 1 (Timer/counter 16 bits)........................................................... 26

2.5 Watchdog Timer ....................................................................................................... 362.6 Truy xuất ghi/đọc EEPROM .................................................................................... 37

2.6.1 Thanh ghi địa chỉ EEPROM EEARH và EEARL (EEPROM AdressRegister)............................................................................................................. 37

2.6.2 Thanh ghi dữ liệu EEPROM - EEDR (EEPROM Data Register)...................... 372.6.3 Thanh ghi điều khiển EEPROM - EECR (EEPROM Control Register)............ 38

2.7 Giao tiếp thiết bị ngoại vi - SPI................................................................................. 392.7.1 Thanh ghi điều khiển SPCR (SPI control register) .......................................... 402.7.2 Thanh ghi trạng thái SPSR (SPI STATUS REGISTER)..................................... 412.7.3 Thanh ghi dữ liệu (SPI DATA REGISTER) ....................................................... 41

2.8 UART (Universal Asynchronous Receiver and Stransmitter). ................................. 422.8.1 Phát dữ liệu trên UART....................................................................................... 422.8.2 Nhận dữ liệu trên UART ..................................................................................... 442.8.3 Điều khiển UART................................................................................................ 46

2.9 So sánh Analog trong AVR ...................................................................................... 502.10 Các Port I/O ............................................................................................................ 53

2.10.1 PortA................................................................................................................... 532.10.2 PortB ................................................................................................................... 532.10.3 PortC ................................................................................................................... 542.10.4 PortD................................................................................................................... 55

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG THIẾT BỊ THỰC TẬPVI ĐIỀU KHIỂN AVR

3.1 Các yêu cầu của phần cứng thiết bị thực tập ............................................................ 553.2 Hiển thị LED đơn ..................................................................................................... 57

3.2.1 Yêu cầu ................................................................................................................ 573.2.2 Thiết kế................................................................................................................ 57

3.3 Quét hiển thị LED 7 đoạn ......................................................................................... 603.3.1 Yêu cầu ................................................................................................................ 603.3.2 Thiết kế ............................................................................................................... 60

3.4 Dịch và chốt hiển thị LED 7 đoạn............................................................................ 613.4.1 Yêu cầu ............................................................................................................... 613.4.2 Thiết kế ............................................................................................................... 62

3.5 Giải mã BCD sang LED 7 đoạn ................................................................................ 643.5.1 Yêu cầu ............................................................................................................... 643.5.2 Thiết kế ............................................................................................................... 64

Page 9: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang ix

Phần A : Giới thiệu

3.6 Quét hiển thị LED ma trận ........................................................................................ 663.6.1 Yêu cầu ................................................................................................................ 663.6.2 Thiết kế ............................................................................................................... 67

3.7 Dịch và chốt hiển thị LED ma trận .......................................................................... 693.7.1 Yêu cầu ................................................................................................................ 693.7.2 Thiết kế ............................................................................................................... 69

3.8 Hiển thị LCD............................................................................................................. 723.8.1 Yêu cầu ............................................................................................................... 723.8.2 Thiết kế ............................................................................................................... 72

3.9 Hiển thị giải mã BIN – DEC/HEX............................................................................ 733.9.1 Yêu cầu ................................................................................................................ 733.9.2 Thiết kế ............................................................................................................... 73

3.10 THUMSWITCH điện tử............................................................................................ 753.10.1 Yêu cầu ................................................................................................................ 753.10.2 Thiết kế ............................................................................................................... 75

3.11 DIPSWITCH............................................................................................................. 753.11.1 Yêu cầu ................................................................................................................ 753.11.2 Thiết kế ............................................................................................................... 76

3.12 Nút nhấn đơn ............................................................................................................. 763.12.1 Yêu cầu ................................................................................................................ 763.12.2 Thiết kế ............................................................................................................... 76

3.13 Bàn phím tương tự.................................................................................................... 783.13.1 Yêu cầu ................................................................................................................ 783.13.2 Thiết kế ............................................................................................................... 78

3.14 Bàn phím ma trận ...................................................................................................... 793.14.1 Yêu cầu ................................................................................................................ 793.14.2 Thiết kế ............................................................................................................... 79

3.15 Tạo tín hiệu tương tự................................................................................................. 803.15.1 Yêu cầu ................................................................................................................ 803.15.2 Thiết kế ............................................................................................................... 80

3.16 Tạo xung đồng hồ...................................................................................................... 813.16.1 Yêu cầu ................................................................................................................ 813.16.2 Thiết kế................................................................................................................ 81

3.17 Đồng hồ thời gian thực ............................................................................................. 823.17.1 Yêu cầu ................................................................................................................ 823.17.2 Thiết kế ............................................................................................................... 82

3.18 Mắt nhận hồng ngoại................................................................................................. 833.18.1 Yêu cầu ................................................................................................................ 833.18.2 Thiết kế ............................................................................................................... 83

3.19 Giải mã tín hiệu hồng ngoại ...................................................................................... 843.19.1 Yêu cầu ................................................................................................................ 843.19.2 Thiết kế ............................................................................................................... 84

3.20 Chuyển đổi tín hiệu tương tự sang tín hiệu số.......................................................... 853.20.1 Yêu cầu ................................................................................................................ 853.20.2 Thiết kế ............................................................................................................... 85

3.21 Chuyển đổi tín hiệu số sang tín hiệu tương tự.......................................................... 87

Page 10: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang x

Phần A : Giới thiệu

3.21.1 Yêu cầu ................................................................................................................ 873.21.2 Thiết kế ............................................................................................................... 87

3.22 Điều khiển động cơDC............................................................................................. 903.22.1 Yêu cầu ................................................................................................................ 903.22.2 Thiết kế................................................................................................................ 90

3.23 Điều khiển động cơbước .......................................................................................... 903.23.1 Yêu cầu ................................................................................................................ 903.23.2 Thiết kế ............................................................................................................... 91

3.24 Điều khiển động cơbước dùng IC ............................................................................ 913.24.1 Yêu cầu ................................................................................................................ 913.24.2 Thiết kế ............................................................................................................... 91

3.25 Rơle bán dẫn............................................................................................................. 923.25.1 Yêu cầu ................................................................................................................ 923.25.2 Thiết kế ............................................................................................................... 92

3.26 MCU.......................................................................................................................... 943.26.1 Yêu cầu ................................................................................................................ 943.26.2 Thiết kế ............................................................................................................... 94

3.27 Nguồn ........................................................................................................................ 963.27.1 Yêu cầu ................................................................................................................ 963.27.2 Thiết kế ............................................................................................................... 96

3.28 MCU ngoài................................................................................................................ 993.28.1 Yêu cầu ................................................................................................................ 993.28.2 Thiết kế ............................................................................................................... 99

CHƯƠNG 4: GIỚI THIỆU TRÌNH BIÊN DỊCH C CODEVISION AVR

4.1 Giới thiệu sơlược về trình biên dịch CodeVisionAVR .......................................... 1024.2 Cách soạn thảo một tập tin trên CodeVision AVR................................................ 102

4.2.1 Tạo một Source mới .......................................................................................... 1024.2.2 Tạo một Project mới ......................................................................................... 103

4.3 Biên dịch một tập tin trên C CodeVision ............................................................... 1074.4 Nạp một chương trình cho vi xử lý AVR ............................................................... 109

CHƯƠNG 5: XÂY DỰNG MỘT SỐ CHƯƠNG TRÌNH MẪU

5.1 Led đơn.................................................................................................................... 1125.2 Led 7 đoạn ............................................................................................................... 1155.3 Giải mã led 7 đoạn .................................................................................................. 1185.4 Hiển thị led 7 đoạn chốt và dịch.............................................................................. 1195.5 Hiển thị led ma trận bằng phương pháp quét .......................................................... 1225.6 Hiển thị led ma trận chốt và dịch ............................................................................ 1255.7 Điều khiển động cơmột chiều ................................................................................ 1275.8 Điều khiển động cơbước ........................................................................................ 1305.9 Giao tiếp DAC......................................................................................................... 1325.10 Hiển thị LCD........................................................................................................... 1345.11 Giao tiếp ADC ........................................................................................................ 138

Page 11: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang xi

Phần A : Giới thiệu

5.12 Điều khiển phím ma trận ........................................................................................ 1415.13 Điều khiển động cơbước sử dụng IC..................................................................... 144

CHƯƠNG 6: KẾT QUẢ NGHIÊN CỨU, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

6.1 Kết quả.................................................................................................................... 1476.2 Kết luận ................................................................................................................... 1496.3 Hướng phát triển ..................................................................................................... 149

PHẦN C : PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO

Phụ lục A: Chương trình của vi điều khiển của khối Thum Switchđiện tử. .............. 151Phụ lục B: Chương trình vi điều khiển khối nguồn xung đồng hồ.............................. 153Phụ lục C: Chương trình vi điều khiển khối chuyển đổi Bin – Dec/Hex.................... 159Phụ lục D: Mô phỏng vi điều khiển bằng phần mềm Proteus..................................... 162Phụ lục E: Sơđồ mạch in lớp trên của thiết bị thực tập lập trình................................ 166Phụ lục F: Sơđồ mạch in lớp dưới của thiết bị thực tập lập trình.............................. 167Phụ lục G: Sơđồ bố trí linh kiện của thiết bị thực tập lập trình.................................. 168

Tài liệu tham khảo ......................................................................................................... 169

Page 12: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang xii

Phần A : Giới thiệu

LIỆT KÊ BẢNG

Bảng 2.1 Không gian vectơcủa vi điều khiển AT90S8515 ............................................... 9Bảng 2.2 Vùng I/O trong AT90S8515 ............................................................................. 14Bảng 2.3 Bảng địa chỉ các ngắt của vi điều khiển............................................................ 17Bảng 2.4 Thiết lập chế độ SLEEP cho vi điều khiển ....................................................... 22Bảng 2.5 Thiết lập ngắt ngoài INT1 cho vi điều khiển .................................................... 22Bảng 2.6 Thiết lập ngắt ngoài INT0 cho vi điều khiển .................................................... 23Bảng 2.7 Thiết lập thanh ghi điều khiển Timer/Counter0................................................ 25Bảng 2.8 Thiết lập thanh ghi A điều khiển Timer/Counter1 ............................................ 29Bảng 2.9 Thiết lập thanh ghi B điều khiển Timer/Counter1 ............................................ 30Bảng 2.10 Giá trị TOP và tần số PWM ........................................................................... 34Bảng 2.11 Thiết lập chế độ so sánh 1 trong PWM........................................................... 34Bảng 2.12 Thiết lập bộ định thời Watchdog .................................................................... 37Bảng 2.13 Thiết lập tần số dao động SCK ....................................................................... 41Bảng 2.14 Thiết lập giá trị tốc độ Baud của vi điều khiển ............................................... 50Bảng 2.15 Thiết lập thanh ghi điều khiển bộ so sánh Analog.......................................... 53Bảng 2.16 Chức năng các chân trên Port B...................................................................... 54Bảng 2.17 Chức năng các chân trên Port D...................................................................... 55Bảng 3.1 Bảng sự thật IC74LS247 .................................................................................. 66Bảng 3.2 Chức năng các chân LCD ................................................................................. 72Bảng 3.3 Bảng sự thật IC 74LS221 .................................................................................. 76Bảng 3.4 Bảng chức năng IC HEF4017BC ...................................................................... 92

Page 13: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang xiii

Phần A : Giới thiệu

LIỆT KÊ HÌNH

Hình 2.1 Sơđồ chân của vi điểu khiển AT90S8515 .......................................................... 5Hình 2.2 Sơđồ khối của vi điều khiển AT90S8515........................................................... 6Hình 2.3 Sơđồ cấu trúc của vi điều khiển AT90S8515 ..................................................... 9Hình 2.4 Sơđồ tổ chức bộ nhớ trong vi điều khiển 90S8515 .......................................... 11Hình 2.5 Sơđồ tổ chức thanh ghi của vi điều khiển AT90S8515 .................................... 12Hình 2.6 Cấu trúc các thanh ghi con trỏ của vi điều khiển AT90S8515.......................... 12Hình 2.7 Sơđồ tổ chức bộ nhớ SRAM của AT90S8515 ................................................. 13Hình 2.8 Cấu trúc thanh ghi trạng thái – SREG............................................................... 15Hình 2.9 Cấu trúc con trỏ ngăn xếp – SP ......................................................................... 16Hình 2.10 Sơđồ vectơngắt RESET................................................................................. 18Hình 2.11 Cấu trúc thanh ghi che ngắt – GIMSK ............................................................ 19Hình 2.12 Cấu trúc thanh ghi cờ ngắt chung – GIFR....................................................... 19Hình 2.13 Cấu trúc thanh ghi che ngắt Timer/Counter - TIMSK ................................... 20Hình 2.14 Cấu trúc thanh ghi cờ ngắt Timer/Counter – TIFR ......................................... 20Hình 2.15 Cấu trúc thanh ghi điều khiển MCU - MCUCR ............................................. 20Hình 2.16 Sơđồ bộ chia Timer/Counter .......................................................................... 23Hình 2.17 Sơđồ Timer/Counter0 ..................................................................................... 24Hình 2.18 Cấu trúc thanh ghi điều khiển Timer/Counter0 – TCCR0 .............................. 24Hình 2.19 Cấu trúc thanh ghi Timer/Counter0 – TCNT0 ................................................ 25Hình 2.20 Sơđồ Timer/Counter1 ..................................................................................... 25Hình 2.21 Sơđồ nguyên lý chân ICP............................................................................... 26Hình 2.22 Cấu trúc thanh ghi A điều khiển Timer/Counter1 ........................................... 27Hình 2.23 Cấu trúc thanh ghi A điều khiển Timer/Counter1 ........................................... 28Hình 2.24 Cấu trúc thanh ghi Timer/Counter1-TCNT1................................................... 29Hình 2.25 Cấu trúc thanh ghi so sánh A ngõ ra của Timer/Counter1 - OCR1A.............. 30Hình 2.26 Cấu trúc thanh ghi so sánh B ngõ ra của Timer/Counter1 - OCR1B.............. 30Hình 2.27 Cấu trúc thanh ghi bắt sống ngõ vào của Timer/Counter1.............................. 31Hình 2.28 Sơđồ bộ định thời Watchdog .......................................................................... 34Hình 2.29 Cấu trúc thanh ghi điều khiển bộ định thời Watchdog.................................... 34Hình 2.30 Cấu trúc thanh ghi địa chỉ EEPROM .............................................................. 35Hình 2.31 Cấu trúc thanh ghi dữ liệu EEPROM – EEDR ............................................... 36Hình 2.32 Cấu trúc thanh ghi điều khiển EEPROM – EECR .......................................... 36Hình 2.33 Sơđồ khối SPI của vi điều khiển AT90S8515................................................ 38Hình 2.34 Cấu trúc thanh ghi điều khiển SPI – SPCR ..................................................... 38Hình 2.35 Cấu trúc thanh ghi trạng thái SPI – SPSR....................................................... 39Hình 2.36 Cấu trúc thanh ghi dữ liệu SPI ........................................................................ 40Hình 2.37 Sơđồ khối phát dữ liệu trên UART ................................................................ 41Hình 2.38 Sơđồ khối nhận dữ liệu trên UART................................................................ 42Hình 2.39 Hoạt động của UART ...................................................................................... 43Hình 2.40 Cấu trúc thanh ghi dữ liệu I/O UART – UDR ................................................ 43Hình 2.41 Cấu trúc thanh ghi trạng thái UART – USR ................................................... 44Hình 2.42 Cấu trúc thanh ghi điều khiển UART – UCR ................................................. 45Hình 2.43 Cấu trúc thanh ghi tạo tốc độ Baund ............................................................... 47Hình 2.44 Sơđồ khối bộ so sánh Analog trong AT90S8515 ........................................... 48

Page 14: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang xiv

Phần A : Giới thiệu

Hình 2.45 Cấu trúc thanh ghi điều khiển bộ so sánh Analog........................................... 48Hình 2.46 Cấu trúc thanh ghi dữ liệu Port A.................................................................... 50Hình 2.47 Cấu trúc thanh ghi trực tiếp dữ liệu Port A ..................................................... 50Hình 2.48 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port A.............................................. 50Hình 2.49 Cấu trúc thanh ghi dữ liệu Port B .................................................................... 51Hình 2.50 Cấu trúc thanh ghi trực tiếp dữ liệu Port B ..................................................... 51Hình 2.51 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port B.............................................. 51Hình 2.52 Cấu trúc thanh ghi dữ liệu Port C .................................................................... 51Hình 2.53 Cấu trúc thanh ghi trực tiếp dữ liệu Port C ..................................................... 52Hình 2.54 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port C.............................................. 52Hình 2.55 Cấu trúc thanh ghi dữ liệu Port D.................................................................... 52Hình 2.56 Cấu trúc thanh ghi trực tiếp dữ liệu Port D ..................................................... 53Hình 2.57 Cấu trúc th anh ghi chân ngõ vào Port D ........................................................ 53Hình 3.1 Sơđồ khối thiết bị thực tập vi điều khiển AVR ................................................ 55Hình 3.2 Sơđồ chân IC 74LS245..................................................................................... 56Hình 3.3 Sơđồ khối bên trong IC 74LS245.................................................................... 56Hình 3.4 Sơđồ nguyên lý khối hiển thị LED đơn............................................................ 57Hình 3.5 Sơđồ nguyên lý LED 7 đoạn ............................................................................ 58Hình 3.6 Sơđồ chân LED 7 đoạn..................................................................................... 58Hình 3.7 Sơđồ nguyên lý khối quét hiển thị LED 7 đoạn ............................................... 59Hình 3.8 Sơđồ chân IC 74LS595..................................................................................... 60Hình 3.9 Sơđồ nguyên lý trong IC 74LS595................................................................... 60Hình 3.10 Sơđồ nguyên lý khối dịch và chốt hiển thị LED 7 đoạn ................................ 61Hình 3.11 Sơđồ chân IC 74LS247................................................................................... 62Hình 3.12 Sơđồ nguyên lý trong IC 74LS247................................................................. 62Hình 3.13 Sơđồ nguyên lý khối giải mã BCD sang LED 7 đoạn.................................... 63Hình 3.14 Sơđồ chân LED ma trận ................................................................................. 64Hình 3.15 Sơđồ nguyên lý trong LED ma trận ............................................................... 64Hình 3.16 Sơđồ chân IC ULN2803 ................................................................................. 64Hình 3.17 Sơđồ nguyên lý chân ngõ ra IC ULN0808..................................................... 64Hình 3.18 Sơđồ nguyên lý khối quét hiển thị LED ma trận ............................................ 65Hình 3.19 Sơđồ chân IC 6B595....................................................................................... 66Hình 3.20 Sơđồ chân IC 6B595....................................................................................... 66Hình 3.21 Sơđồ nguyên lý khối dịch và chốt hiển thị LED ma trận ............................... 67Hình 3.22 Sơđồ nguyên lý khối hiển thị LCD................................................................. 68Hình 3.23 Sơđồ nguyên lý khối chuyển đổi nhị phân sang thập phân và Hexa.............. 70Hình 3.24 Sơđồ nguyên lý khối Thumswitch điện tử..................................................... 70Hình 3.25 Sơđồ nguyên lý khối DipSwitch..................................................................... 71Hình 3.26 Sơđồ chân IC 74LS221................................................................................... 72Hình 3.27 Sơđồ nguyên lý khối nút nhấn đơn................................................................. 73Hình 3.28 Sơđồ nguyên lý khối phím tương tự............................................................... 74Hình 3.29 Sơđồ nguyên lý khối phím ma trận ................................................................ 75Hình 3.30 Sơđồ nguyên lý khối tín hiệu tương tự........................................................... 76Hình 3.31 Sơđồ nguyên lý khối nguồn xung đồng hồ..................................................... 77Hình 3.32 Sơđồ chân IC DS12C887 ............................................................................... 77Hình 3.33 Sơđồ nguyên lý khối đồng hồ thời gian thực ................................................. 78

Page 15: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang xv

Phần A : Giới thiệu

Hình 3.34 Sơđồ nguyên lý khối mắt nhận hồng ngoại .................................................... 78Hình 3.35 Sơđồ chân IC BL9149 .................................................................................... 79Hình 3.36 Sơđồ nguyên lý khối giải mã tín hiệu hồng ngoại.......................................... 79Hình 3.37 Sơđồ chân IC ADC0808................................................................................. 80Hình 3.38 Sơđồ khối trong IC DAC0808........................................................................ 80Hình 3.39 Sơđồ nguyên lý khối chuyển đổi tín hiệu tương tự sang tín hiệu số.............. 81Hình 3.40 Sơđồ chân DAC0808 ...................................................................................... 82Hình 3.41 Sơđồ nguyên lý mạch chuyển đổi từ số sang tương tự................................... 83Hình 3.42 Sơđồ nguyên lý mạch điều khiển động cơmột chiều..................................... 84Hình 3.43 Sơđồ nguyên lý mạch điều khiển động cơbước ............................................ 85Hình 3.44 Sơđồ chân IC L297......................................................................................... 85Hình 3.45 Sơđồ chân IC L298......................................................................................... 85Hình 3.46 Sơđồ nguyên lýđiều khiển động cơbước sử dụng IC L297, IC L298 .......... 86Hình 3.47 Sơđồ chân và cấu trúc bên trong của IC MOC3020....................................... 86Hình 3.48 Sơđồ nguyên lý khối Relay bán dẫn............................................................... 87Hình 3.49 Sơđồ kết nối LM555....................................................................................... 87Hình 3.50 Sơđồ chân IC CD4066BC .............................................................................. 88Hình 3.51 Sơđồ ngõ nguyên lý các cổng IC CD4066BC............................................... 88Hình 3.52 Sơđồ chân IC HEF4017B ............................................................................... 88Hình 3.53 Sơđồ chân IC MAX232 .................................................................................. 89Hình 3.54 Sơđồ nguyên lý khối MCU............................................................................. 89Hình 3.55 Sơđồ nguyên lý khối nguồn............................................................................ 91Hình 3.56 Sơđồ nguyên lý khối MCU ngoài 1................................................................ 92Hình 3.57 Sơđồ nguyên lý khối MCU ngoài 2 ............................................................... 93Hình 6.1 Thiết bị thực tập lập trình (vi điều khiển AVR) hoàn chỉnh ......................... 148

Page 16: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 1

Phần B : Nội dung

PHẦN B

NỘI DUNG

Page 17: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 2

Chương 1: Dẫn nhập

CHƯƠNG 1

DẪN NHẬP

1.1. Lý do chọn đề tài

Ngày nay, kỹ thuật vi điều khiển là một kỹ thuật rất ưu việt đã đã trở nên vô cùng cần thiết trong ngành điện tử, nó đã thay thếcác thiết bị có cấu tạo phức tạp thành đơngiản. Ứng dụng vi điều khiển rất rộng rãi từ những thiết bị dân dụng thường ngày ở gia đình đến các loại máy móc công nghiệp hiện đại ở các nhà máy, xí nghiệp.

Kỹ thuật vi điều khiển là một môn học cơbản không thể thiếu đối với sinh viên cácngành điều khiển, tự động, điện tử… nhằm trang bị cho sinh viên những kiến thức cần thiết về các họ vi điều khiển. Cũng nhưcấu trúc, nguyên tắc hoạt động cùng các mạch phụ trợ, tập lệnh, các lập trình bằng hợp ngữ, bằng ngôn ngữ cấp cao, các phương thức điều khiển vào ra và các phương pháp kết nối thiết kế thiết bị ngoại vi. Dựa trên nền tảng kiến thức của môn học kỹ thuật vi điều khiển, sinh viên tiếp thu những môn học kỹ thuật chuyên ngành và tiếp cận dễ dàng hơn với những kỹ thuật, trang thiết bị hiện đại. Đồng thời cho phép sinh viên có cái nhìn trực quan và kiểm chứng, khẳng định sự đúng đắn các kiến thức đã học.

Xuất phát từ việc ứng dụng rộng rãi đó mà nhu cầu tìm hiểu và học tập vi điều khiển trở nên rất cần thiết. Do đó môn học này đã được nhiều trường Đại học, Cao đẳng, Trung học chuyên nghiệp… đưa vào giảng dạy chính thức.

Để góp phần giúp cho người học tiếp cận họ vi điều khiển AVR, là một họ vi điều khiển có cấu trúc phức tạp hơn, nhiều tính năng hơn, tốc độ xử lý nhanh hơn … so với các họ vi điều khiển khác. Mặt khác cũng giúp cho người học làm quen với việc ứng dụng ngôn ngữ C trong lập trình cho Vi điều khiển. Do đó nhóm thực hiện đề tài đãbắt tay vào việc thiết kế và thi công “Thiết bị thực tập lập trình (vi điều khiển AVR)”.

1.2. Mục đích nghiên cứu

Thiết kế và thi công thiết bị thực tập lập trình sử dụng họ vi điều khiển AVR. Và ứng dụng trình biên dịch Codevision AVR lập trình cho vi điều khiển AVR bằng ngôn ngữ C.

1.3. Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu:

- Họ vi điều khiển AVR.- Phần mềm CodeVisionAVR C Compiler lập trình bằng ngôn ngữ C cho AVR.

Phạm vi nghiên cứu:

Page 18: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 3

Chương 1: Dẫn nhập

- Thiết kế và thi công thiết bị thực tập lập trình (vi điều khiển AVR) dưới dạng các khối sau đó kết hợp lại thành một board lớn bao gồm: các khối MCU ngoài dành chocác dòng AVR khác nhau, khối led đơn, khối led 7 đoạn, khối led ma trận, ADC, DAC, LCD, bàn phím ma trận, bàn phím tương tựvà các khối ứng dụng khác.

- Ứng dụng phần mềm Codevision AVR C Compiler viết chương trình mẫu cho thiết bị thực tập vi điều khiển AVR bằng ngôn ngữ C.

1.4. Ý nghĩa khoa học và thực tiễn của đề tài

Về mặt khoa học, đề tài tập trung vào việc thiết kế phần cứng và viết các chương trìnhmẫu cho các khối bằng ngôn ngữC.

Việc thiết kế thiết bị thực tập vi điều khiển dưới dạng khối có ưu điểm là: giúp người học dễ khảo sát từng khối, dễ dàng kiểm tra sữa chửa khi có sự cố, hưhỏng…và điều quan trọng là “Thiết bị thực tập lập trình (vi điều khiển AVR)” được thiết kế có các ngõ I/O tương thích với nhiều dòng vi điều khiển, và số lượng khối có thể được mở rộng thêm ở board phụ.

Trên “Thiết bị thực tập lập trình (vi điều khiển AVR)” được thiết kế nhiều kiểu điều khiển giúp người học có cái nhìn từ cơbản đến nâng cao về một vấn đề điều khiển. Các chương trình mẫu được thực hiện trước trên phần mềm Proteus sau đó mới thực hiện trên phần cứng thực tế, việc so sánh kết quả giữa mô phỏng với thực tế giúp người học đưa ra nhận xét đúng đắn và tự chủ hơn. Bên cạnh đó giúp người học có nhiều thời gian thực tập tại nhà trên phần mềm Proteus khi không có phần cứng thực tế.

Việc ứng dụng ngôn ngữ C trong lập trình cho vi điều khiển giúp cho việc lập trình trở nên đơn giản hơn so với lập trình bằng hợp ngữ.

Ý tưởng thực hiện đề tài này bắt nguồn từ nhu cầu thực tế, khi nhu cầu học tập ngàycàng cao đòi hỏi phương tiện dạy học ngày càng hiện đại, nó giúp người thầy đỡ vất vả trong việc truyền thụ kiến thức, giúp người học nhanh chóng tiếp thu kiến thức mới hiện đại, ngoài ra còn để minh họa, chứng thực một cách cụ thể những bài học mơhồ trừu tượng.

Xét một khía cạnh nhỏ, một thiết bị hay một sản phẩm sản xuất ra cũng phải dựa trênnhu cầu của người tiêu dùng. Do đó việc thiết kế và thi công “Thiết bị thực tập vi điều khiển AVR” cũng phải xét đến hiệu quả của việc học trên thiết bị, tức là quan tâm đến người học.

1.5. Tình hình nghiên cứu

Trong nước:Có nhiều thiết bịthực tập được trung tâm nghiên cứu và các trường đại học tự chế tạo. Nhiều nhóm sinh viên khóa trước đã nghiên cứu và chế tạo các thiết bịthực tập như:

Page 19: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 4

Chương 1: Dẫn nhập

Nghiên cứu và chế tạo thiết bị thực tập vi điều khiển AVR của sinh viên Đào Ngọc Sơn và Nguyễn Bá Thành khóa 2000 – 2005 sinh viên trường đại học SưPhạm Kỹ Thuật Thành Phố Hồ Chí Minh [11]. Đề tài thiết kế và thi công KIT vi điều khiển –PLD của sinh viên Nguyễn Văn Lập và Nguyễn Vũ Lâm… Các thiết bị này phần lớn đã đáp ứng được yêu cầu các bài thực hành cơbản, nâng cao về vi điều khiển, thiết kế có nhiều phương pháp điều khiển. Tuy nhiên một số KIT còn được thiết kế ở dạng mô đun cồng kềnh, phức tạp, chưa hổ trợ cho nhiều vi điều khiển khác nhau (các họ khác nhau), chưa có các khối hổ trợ cho người mới lập trình phần lớn để thực hành được đòihỏi người học phải tự lập trình. Các phần mềm để lập trình cho KIT thường lập trìnhbằng hợp ngữ.

KIT thực tập AVR, PIC của công ty TNHH Thiên Minh [12] hổ trợ khá nhiều vi điều khiển có nhiều khối hổ trợ cho các bài thực hành nâng cao, giá thành có thể chấp nhận được. Tuy nhiên bố trí các khối khá phức tạp, khả năng điều khiển hạn chế, khó mở rộng điều khiển cho các bài thực hành cơbản, chỉ có một phương pháp điều khiển trênmột khối. Ví dụ: Khối LED đơn chỉcó 8 LED, khối LED 7 đoạn chỉđiều khiển dạngquét LED…

Trên thế giới:Có rất nhiều nguồn cung cấp các thiết bị thực tập nói trên như: bộ KIT MDA-EMS51của hãng Midas của Hàn Quốc, KIT và phần mềm phát triển cho họ vi điều khiển PIC của MikroElectronika, KIT phát triển cho các dòng AVR, PIC, MAXQ, MSP430,ARM… Đặc điểm của các sản phẩm này là có các tính năng mạnh, mẫu mã đẹp. Tuy nhiên giá thành rất đắt (khoảng 700$ đối với KIT MDA-EMS51) và việc đặt mua không thuận tiện.

1.6. Hướng nghiên cứu đề tài

Việc nghiên cứu bắt đầu từ sự quan sát và tham khảo KIT thực tập vi điều khiển có tại phòng thực tập trường Đại học Sưphạm Kỹ thuật Tp.HCM cũng nhưcác KIT có trênthị trường.

Tìm giải pháp giúp cho người mới học vi điều khiển dễ dàng tiếp cận với môn học, vàcó cái nhìn bao quát hơn.

Giải pháp đó là một thiết bị thực tập phải thể hiện được tính trực quan, dể sử dụng, có nhiều khối hổ trợ cho người mới làm quen với vi điều khiển. Tính hiệu quả của thiết bị và đặt biệt là phải đáp ứng được yêu cầu người dùng.

Đi kèm với KIT là các chương trình mẫu cơbản giúp người học nhanh chóng tiếp cận được thiết bịvà ngôn ngữ lập trình cấp cao đểlàm việc trên nó.

Để thực hiện giải pháp đó nhóm thực hiện đề tài tiến hành theo trình tự các bước sau:- Bước 1: Tìm hiểu họ vi điều khiển AVR về cấu trúc, chức năng tập lệnh… - Bước 2: Tìm hiểu phần mềm Codevision AVR C compiler.- Bước 3: Nghiên cứu tìm hiểu ứng dụng ngôn ngữ C trong lập trình vi điều khiển.

Page 20: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 5

Chương 1: Dẫn nhập

- Bước 4: Thi nghiệm mô phỏng trên phần mềm Proteus.- Bước 5: Thết kế thi công phần cứng các khối theo yêu cầu đặt ra theo dạng mô đun, sau đó ghép lại trên một board.- Bước 6: Nạp chương trình mẫu chạy thử cho từng khối.

1.7. Phương pháp nghiên cứu

Hai phương pháp chính dùng để nghiên cứu đề tài này: phương pháp tham khảo tàiliệu và phương pháp thực nghiệm.

Tham khảo tài liệu:- Tìm đọc các tài liệu phần lớn thu thập từ Internet trên trang Web: www.google.comvới từ khóa: “AVR”, “programming C for AVR”, “KIT AVR”, “KIT thực tập AVR”, “lập trình C cho AVR”…- Đọc tham khảo các sách nước ngoài, các giáo trình vi điều khiển, các tài liệu liênquan đến lập trình C cho Vi điều khiển…tìm các giải pháp điều khiển cho các khối.

Thực nghiệm:Tiến hành mô phỏng từng khối trên phần mềm Proteus, cắm test board chạy thử các khối phức tạp, các khối không mô phỏng được. Thi công mạch, nạp chương trình chạy thử, kiểm tra khắc phục các lỗi phát sinh.

Hai phương pháp trên được áp dụng thường xuyên, đan xen nhau và bổ trợ nhau trong suốt quá trình thực hiện đề tài.

Page 21: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 6

Chương 2: Tổng quan về vi điều khiển AVR

CHƯƠNG 2

TỔNG QUAN VỀ VI ĐIỀU KHIỂN AVR

2. 1. Sơđồ chân của AVR AT90S8515

Hình 2.1 Sơđồ chân của vi điểu khiển AT90S8515

Page 22: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 7

Chương 2: Tổng quan về vi điều khiển AVR

2.2. Mô tả về AVR2.2.1. Sơđồ khối của AVR AT90S8515

Hình 2.2 Sơđồ khối của vi điều khiển AT90S8515

Page 23: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 8

Chương 2: Tổng quan về vi điều khiển AVR

2.2.2 Chức năng các chân AVR AT90S8515

VCC Nguồn cung cấp cho chip

GND Mass của nguồn

Port A (PA7..PA0) Port A là một port gồm 8 bit vào ra. Ngõ ra của Port A có thể hạ xuống 20mA và có thể trực tiếp điều khiển led hiển thị. Khi chân port A được sử dụng giống nhưngõ vào và kéo xuống mức thấp, chúng sẽ hiện ra nguồn nếu điện trở kéo lên được hoạt động. Chân port A sẽ có 3 trạng thái khi một điệu kiện Reset được hoạt động.

Port A còn có chức năng vào ra của dữ liệu và địa chỉkhi sử dụngSRAM ngoài.

Port B (PB7..PB0) Port B là một port gồm 8 bit vào ra có sẵn điện trở kéo lên ở bêntrong. Ngõ ra của Port B có thể hạ xuống 20mA. Khi chân port B dược sử dụng giống nhưngõ vào và kéo xuống mức thấp, chúng sẽ hiện ra nguồn nếu điện trở kéo lên được hoạt động. Chân port B sẽ có 3 trạng thái khi một điệu kiện Reset được hoạt động.

Ngoài ra port B còn có tác dụng có các chức năng khác của AVR được giới thiệu trong các phần sau.

Port C (PC7..PC0) Port C là một port gồm 8 bit vào ra có sẵn điện trở kéo lên ở bêntrong. Ngõ ra của Port C có thể hạ xuống 20mA. Khi chân port Cdược sử dụng giống nhưngõ vào và kéo xuống mức thấp, chúng sẽ hiện ra nguồn nếu điện trở kéo lên được hoạt động. Chân port C sẽ có 3 trạng thái khi một điệu kiện Reset được hoạt động.

Port C còn còn là ngõ ra của địa chỉkhi sử dụng SRAM ngoài

Port D (PD7..PD0) Port D là một port gồm 8 bit vào ra có sẵn điện trở kéo lên ở bêntrong. Ngõ ra của Port D có thể hạ xuống 20mA. Khi chân port Ddược sử dụng giống nhưngõ vào và kéo xuống mức thấp, chúng sẽ hiện ra nguồn nếu điện trở kéo lên được hoạt động. Chân portD sẽ có 3 trạng thái khi một điệu kiện Reset được hoạt động.

Ngoài ra port D còn có tác dụng có các chức năng khác của AVR được giới thiệu trong các phần sau.

RESET Ngõ vào Reset. Một tín hiệu mức thấp với thời gian lớn hơn 50nssẽ phát ra một tín hiệu Reset, dù là xung clock không chạy. Xung ngắn không đảm bảo cho việc phát ra một tín hiệu để Reset.

Page 24: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 9

Chương 2: Tổng quan về vi điều khiển AVR

XTAL1 Ngõ vào để khuếch đại sự thay đổi dao động và mạch xung clock bên trong hoạt động.

XTAL2 Ngõ ra từ khuếch đại sự thay đổi dao động.

ICP Là chân ngõ vào cho chức năng giữ ngõ vào Timer1/Counter1

OC1B Là chân ngõ ra có chức năng so sánh ngõ ra B của Timer1/Counter1

ALE Được sử dụng để chốt địa chỉ khi mà bộ nhớ ngoài được cho phép.

2.3. Khái quát về cầu trúc AVR

Các bộ vi xử lý AVR có kiến trúc Harvard, nghĩa là có bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt nhau. Bus dữ liệu dùng cho bộ nhớ dữ liệu là một bus bit, cho phép nối hầu hết các bộ phận ngoại vi với tệp thanh ghi. Bus dữ liệu dùng cho bộ nhớ chương trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh.

Bộ nhớ chương trình là loại bộ nhớ flash. Dung lượng chính xác của bộ nhớ này thayđổi khác nhau giữa các bộ xử lý trong cùng họ. Bộ nhớ chương trình được truy nhập theo từng chu kỳ đồng hồ, và một lệnh được nạp vào thanh ghi lệnh. Thanh ghi lệnh nối với tệp lệnh thanh ghi bằng cách lựa chọn xem thanh ghi nào sẽ được ALU sử dụng để thực thi lệnh. Lối ra của thanh ghi lện được giải mã bằng bộ giải mã lệnh để quyết định chọn tín hiệu điều khiển nào sẽ được kích hoạt để hoàn thành lệnh hiện tại.

Bộ nhớ chương trình bên cạnh các lệnh lưu trữ, cũng chứa các vectơngắt bắt đầu ở địa chỉ $0000. Chương trình hiện tại sẽ bắt đầu ở vị trí bộ nhớ phía bên kia vùng dùng chocác vectơ. Số lượng các vectơcũng khác nhau giữa các bộ xử lý. Bộ xử lý AT90S1200 có 3 vectơcòn AT90S8515 có 13 vectơ. Bảng dưới đây minh hoạ toàn bộ không gian vectơdùng cho bộ xử lý AT90S8515.

Bảng 2.1 Không gian vectơcủa vi điều khiển AT90S8515Bộ nhớ chương trình

dùng cho địa chỉVectơ Chức năng

$0000 Reset Reset handler$0001 EXT_INT0 IRQ0 handler$0002 XT_INT1 IRQ1 handler$0003 ETIM_CAPT Timer1 capture handler$0004 TIM1_COMA Timer1 compareA handler$0005 TIM1_COMB Timer1 compareB handler$0006 TIM1_OVF Timer1 overflow handler$0007 TIM0_OVF Timer0 overflow handler$0008 SPI_STC SPI transfer complete handler$0009 UART_RXC UART RX complete handler$000A UART_DRE UART UDR empty handler

Page 25: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 10

Chương 2: Tổng quan về vi điều khiển AVR

$000B UART_TXC UART TxC complete handler$000C ANA_COMP Analog comparator handler

2.3.1. Sơđồ cấu trúc của AVR 90S8515

2.3.2. Bộ nhớ dữ liệu

Được chia thành 5 thành phần khác nhau:

a. Một tệp thanh ghi (register file) với 32 thanh ghi có độ rộng 8 bit. Tất cả các bộ điều khiển của họ AVR đều có tệp thanh ghi này.

b. 64 thanh ghi vào ra I/O, mỗi thanh ghi 8 bit. Tất cả các bộ xử lý không phải đều có đúng 64 thanh ghi. Một số trong đó có nhiều hơn số còn lại, tùy thuộc vào số các bộ phận ngoại vi có trên chip. Cá thanh ghi vào ra này thực chất là một

Hình 2.3 Sơđồ cấu trúc của vi điều khiển AT90S8515

Page 26: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 11

Chương 2: Tổng quan về vi điều khiển AVR

phần của bộ nhớ SRAM trên chip và có thể đựoc truy cập hoặc nhưbộ nhớ SRAM với các địa chỉ giữa $20 và $5F hoặc nhưcác thanh ghi I/O với các địa chỉ giữa $00 và $3F. Hầu hết các thanh ghi này thường được trao đổi nhưcácthanh ghi I/O chứ không phải nhưbộ nhớ SRAM.

c. Bộ nhớ SRAM bên trong : bộ nhớ này có trên hầu hết các loại vi xử lý họ AVR, chỉ trừ các bộ xử lý loại cơsở (baseline). Chẳng hạn nhưloại AT90S1200.Dung lượng bộ nhớ SRAM thay đổi từ 128 byte đến 4 kbyte. Bộ nhớ SRAM được sử dụng cho ngăn xếp cũng nhưđể lưu trữ các biến. Trong thời gian cóngắt và gọi đoạn chương trình (subroutine), giá trị hiện tại của bộ đếm chươngtrình được lưu trữ trong ngăn xếp. Kích thước của ngăn xếp bị giới hạn bời bộ nhớ SRAM có mặt trên chip. Vị trí của ngăn xếp được chỉ thị bời con trỏ ngăn xếp. Con trỏ ngăn xếp có dung lượng 1 byte trên các vi điều khiển nhỏ hơn,chẳng hạn nhưloại AT90S8515. Byte trên các bộ xử lý lớn hơn, chẳng hạn nhưloại AT90S8515. Con trỏ ngăn xếp cần phải được khởi tạo sau khi Reset vàtrước khi ngăn xếp có thể được sử dụng. Các bộ vi xử lý này không có bộ nhớ SRAM trên chip, chằng hạn nhưloại AT90S1200. Ngăn xếp bằng phần cứng được thiết kế để lưu trữ các địa chỉ trả lại chương trình. Một ngăn xếp bằng phần cứng này chỉ có thể lưu trữ đến 3 địa chỉ trả lại.

d. Bộ nhớ SRAM bên ngoài. Đặc tính này chỉ có ở các bộ xử lý cỡ lớn trong họ vi điều khiển AVR. Các bộ xử lý này có các cổng để truy nhập bộ nhớ và dữ liệu bên ngoài (chằng hạn nhưAT90S8515) có thểsử dụng bất kỳ bộ nhớ SRAM ngoài nào mà người dùng có thể tùy ý quyết định khi thiết kế.

e. EEPROM : bộ nhớ EEPROM có sẵn trên hầu nhưtất cả các loại vi điều khiển họ AVR và được truy nhập theo một bản đồ bộ nhớ tách biệt. Địa chỉ bắt đầu của bộ nhớ EEPROM luôn là $0000. Các bộ xử lý khác nhau có từ 64 byte đến 4 kbyte bộ nhớ EEPROM. Bộ nhớ EEPROM có thể được đọc và ghi bởi bất kỳ chương trình nào. Vì đọc bộ nhớ EEPROM diễn ra nhanh hơn việc ghi vào bộ nhớ EEPROM. Bộ nhớ EEPROM có thể ghi vào được khoảng 100.000 lần.

Page 27: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 12

Chương 2: Tổng quan về vi điều khiển AVR

2.3.3. Sơđồ tổ chức bộ nhớ trong AVR 90S8515

2.3.4 Các thanh ghi trong AVR

Tất cả các vi điều khiển họ AVR đều có 32 thanh ghi đa năng. Một số trong các thanh ghi này còn có các chức năng riêng, bổ xung. Các thanh ghi được đặt tên từ R0 đến R31. Tệp thanh ghi được tách thành 2 phần, mỗi phần có 16 thanh ghi, đánh từ R0 đến R15 và từ R16 đến R31. Tất cả các lệnh thao tác trên thanh ghi đều có thể truy nhập trực tiếp và truy nhập trong chương trình đơn đến tất cả các thanh ghi. Nhưng có một ngoại lệ là các lệnh SBCI, SUBI, CPI, ANDI, ORI cũng nhưlệnh WI các lệnh này chỉ tác động đến các thanh ghi R16 đến R31.

32 thanh ghiđa mục đích

64 thanh ghiInput/Output

SRAM ngoài(512 x 8)

EEPRROM(512 x 8)

Bộ nhớ chương trình Bộ nhớ dữ liệu Bộ nhớ dữ liệu

Bộ nhớ Flash(4K x 16)

$000

$FFF

$0000

$001F$0020

$005F$0060

$025F

$000

$1FF

Hình 2.4 Sơđồ tổ chức bộ nhớ trong vi điều khiển 90S8515

Page 28: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 13

Chương 2: Tổng quan về vi điều khiển AVR

2.3.5. Tệp thanh ghi của vi điều khiển AVR

Các thanh ghi R0 và R26 đến R31 có các chức năng bổ xung. Thanh ghi R0 được sử dụng trong các lệnh nạp bộ nhớ chương trình LPM (load program memory), trong khicác thanh ghi R26 đến R31 được sử dụng làm các thanh ghi con trỏ. Các thanh ghi con trỏ này được sử dụng trong nhiều lệnh gián tiếp dùng cho thanh ghi (register indirectinstruction).

Chúng còn có các tên X, Y và Z được cho bởi hình sau :

2.3.6. Bộ nhớ dữ liệu SRAM

Tổ chức bộ nhớ SRAM được miêu tả tổng quát nhưhình bên dưới :

Hình 2.5 Sơđồ tổ chức thanh ghi của vi điều khiển AT90S8515

Hình 2.6 Cấu trúc các thanh ghi con trỏ của vi điều khiển AT90S8515

Page 29: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 14

Chương 2: Tổng quan về vi điều khiển AVR

608địa chỉ bộ nhớ dữ liệu bao gồm tệp thanh ghi, bộ nhớ I/O và SRAM nội. 96 địa chỉ đầu tiên là tệp thanh ghi đa dụng và bộ nhớ I/O, 512 địa chỉ tiếp theo là SRAM nội.

2.3.7. Bộ nhớ I/O (Các port)

Bảng 2.2 Vùng I/O trong AT90S8515.

Địa chỉ I/OTên thanh

ghi I/O Chức năng

$3F ($5F) SREG Status REGister$3E ($5E) SPH Stack Pointer High$3D ($5D) SPL Stack Pointer Low$3B ($5B) GIMSK General Interrupt MaSK register$3A ($5A) GIFR General Interrupt Flag Register$39 ($59) TIMSK Timer/Counter Interrupt MaSK$38 ($58) TIFR Timer/Counter Interrupt Flag register$35 ($55) MCUCR MCU general Control Register$34 ($45) MCUSR MCU general Status Register$33 ($53) TCCR0 Timer/Counter0 Control Register$32 ($52) TCNT0 Timer/Counter0 (8-bit)$2F ($4F) TCCR1A Timer/Counter1 Control Register$2E ($4E) TCCR1B Timer/Counter1 Control Register$2D ($4D) TCNT1H Timer/Counter1 High Byte$2C ($4C) TCNT1L Timer/Counter1 Low Byte

Hình 2.7 Sơđồ tổ chức bộ nhớ SRAM của AT90S8515

Page 30: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 15

Chương 2: Tổng quan về vi điều khiển AVR

$2B ($4B) OCR1AH Timer/Counter1 Output Compare$2A ($4A) OCR1AL Timer/Counter1 Output Compare$29 ($49) OCR1BH Timer/Counter1 Output Compare$28 ($48) OCR1BL Timer/Counter1 Output Compare$25 ($45) ICR1H T/C 1 Input Capture Register$24 ($44) ICR1L T/C 1 Input Capture Register$21 ($41) WDTCR Watchdog Timer Control Register$1F ($3E) EEARH EEPROM Address Register High$1E ($3E) EEARL EEPROM Address Register Low$1D ($3D) EEDR EEPROM Data Register$1C ($3C) EECR EEPROM Control Register$1B ($3B) PORTA Data Register, Port A$1A ($3A) DDRA Data Direction Register, Port A$19 ($39) PINA Input Pins, Port A$18 ($38) PORTB Data Register, Port B$17 ($37) DDRB Data Direction Register, Port B$16 ($36) PINB Input Pins, Port B$15 ($35) PORTC Data Register, Port C$14 ($34) DDRC Data Direction Register, Port C$13 ($33) PINC Input Pins, Port C$12 ($32) PORTD Data Register, Port D$11 ($31) DDRD Data Direction Register, Port D$10 ($30) PIND Input Pins, Port D$0F ($2F) SPDR SPI I/O Data Register$0E ($2E) SPSR SPI Status Register$0D ($2D) SPCR SPI Control Register$0C ($2C) UDR UART I/O Data Register$0B ($2B) USR UART Status Register$0A ($2A) UCR UART Control Register$09 ($29) UBRR UART Baud Rate Register$08 ($28) ACSR Analog Comparator Control and Status

2.3.8. Thanh ghi trạng thái (Status Register – SREG)

Thanh ghi trạng thái trong AT90S8535 nằm trong vùng I/O có địa chỉ $3F, được mô tả nhưsau :

Hình 2.8 Cấu trúc thanh ghi trạng thái - SREG

Page 31: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 16

Chương 2: Tổng quan về vi điều khiển AVR

Bit 7 – I : Cho phép ngắt toàn cục (Global Interrupt Enable). Bit cho phép ngắt toàncục phải được thiết lập bằng 1 để các ngắt được cho phép. Khi bit I được thiết lập bằng 1, từng ngắt riêng lẻ lại được điều khiển bởi các thanh ghi chức năng riêng. Khi bit I bị xóa, tất cả các ngắt riêng lẻ sẽ bị cấm cho dù chúng có được cho phép bởi các thanh ghi chức năng riêng. Bit I bị xóa bằng phần cứng ngay sau khi có một ngắt được vận hành (vào chương trình ngắt), và nó được thiết lập bằng 1 trở lại khi gặp lệnh RETI để cho phép những ngắt tiếp theo.

Bit 6 – T : Bit truyền hay cờ truyền (Bit Copy Storage). Lệnh copy bit BLD (BitLoaD) và BST (Bit Store) sử dụng bit T “nguồn” và “đích” của sự vận hành. Một bit từ một thanh ghi trong tệp thanh ghi có thể được sao chép sang bit T bằng lệnh BST, và nội dung của bit T có thể được sao chép sang một bit trong một thanh ghi của tệp thanh ghi bằng lệnh BLD.

Bit 5 – H : Cờ mang một nửa hay cờ nhớ một nửa (Half – carry Flag). Báo cho biết sự nhớ một nửa trong một vài lệnh số học.

Bit 4 – S : Bit dấu hay Cờ dấu (Sign Bit), S = N V.Bit dấu là kết quả của phép EX-ORgiữa cờ phủ định N và cờ tràn bù hai V.

Bit 3 – V : Cờ tràn phép lấy bù 2 (Two’s Complement Overflow Flag). Cờ V hỗ trợ cho các phép toán lấy bù 2.

Bit 2 – N : Cờ phủ định (Negative Flag) báo kết quả phủ định(âm) từ một sự vận hànhlogic hoặc số học.

Bit 1 – Z : Cờ Không hay cờ Zer (Zero Flag) Báo kết quả là zero từ một sự vận hànhlogic hoặc số học.

Bit 0 – C : Cờ nhớ (Carry Flag) Báo hiệu có nhớ trong phép logic hoặc số học.Chú ý : Thanh ghi trạng thái SREG sẽ không được lưu trữ tự động khi vào chươngtrình ngắt, cũng nhưkhông được trả lại ( hay “ phục hồi “) khi thoát khỏi chương trìnhngắt. Cho nên người dùng phải xử lý điều này bằng phần mềm để đảm bảo chươngtrình chạy đúng.

2.3.9. Con trỏ ngăn xếp – SP (Stack Pointer)

Hình 2.9 Cấu trúc con trỏ ngăn xếp - SP

Page 32: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 17

Chương 2: Tổng quan về vi điều khiển AVR

Con trỏ ngăn xếp AVR 16-bit được xây dựng gồm 2 thanh ghi 8-bit trong vùng khônggian $3E($5E) và $3D($5D). AT90S8515 hỗ trợ đến 64Kb cho SRAM ngoài cho việc sử dụng hết 16 bits.

2.3.10. Sử dụng ngắt trong AT90S8515

AT90S8515 cung cấp 16 nguồn ngắt khác nhau. Mỗi ngắt có một vectơchương trìnhriêng trong không gian bộ nhớ chương trình. Các ngắt được cho phép bởi từng bit cho phép ngắt riêng lẻ và được quản lý bit bit cho phép ngắt toàn cục. Để cho phép một ngắt nào đó thì bit cho phép ngắt riêng của nó phải được thiết lập lên 1 và đồng thời bitcho phép ngắt toàn cục( bit I trong thanh ghi trạng thái) phải được thiết lập lên 1. Khibit cho phép ngắt toàn cục I bị xóa thì tất cả các ngắt sẽ bị cấm.

Những địa chỉ thấp nhất trong không gian bộ nhớ chương trình được định nghĩa (một cách tự động) nhưlà những vectơngắt và Reset. Bảng bên dưới sẽ liệt kê địa chỉ của các vectơngắt và Reset. Ta cũng có thể dựa vào bảng này để xác định mức độ ưu tiêncủa các ngắt khác nhau. Địa chỉ thấp hơn thì mức độ ưu tiên sẽ cao hơn. Chẳng hạn theo bảng ta thấy, RESET có mức ưu tiên cao nhất, kế đến là INT0, …

Bảng 2.3 Bảng địa chỉ các ngắt của vi điều khiển

Số tt

Địa chỉ chương

trìnhNguồn Định nghĩa ngắt

1 $000 RESET Do Reset phần cứng, do nguồn, Watchdog

2 $001 INT0 Yêu cầu ngắt bên ngoài trên chân INT0

3 $002 INT1 Yêu cầu ngắt bên ngoài trên chân INT1

4 $003 TIMER1 CAPT Sự kiện bắt sống ở Timer/counter1

5 $004 TIMER1COMPA

So sánh A ở Timer/counter1

6 $005 TIMER1COMPB

So sánh B ở Timer/counter1

7 $006 TIMER1 OVF Tràn Timer/counter1

8 $007 TIMER0 OVF Tràn Timer/counter0

9 $008 SPI, STC Hoàn thành truyền nối tiếp SPI

10 $009 UART, RX Nhận hoàn thành UART

11 $00A UART. UDRE Thanh ghi dữ liệu UART rỗng

12 $00B UART, TX Phát hoàn thành UART

13 $00C ANA_COMP Do bộ so sánh Analog

Page 33: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 18

Chương 2: Tổng quan về vi điều khiển AVR

2.3.11. Reset

Các nguồn Reset

Vi điều khiển AT90S8515 có ba nguồn Reset là:

Reset do nguồn (Power-on Reset) : MCU sẽ được Reset khi nguồn cung cấp thấp hơnngưỡng Reset VPOT.

Reset bên ngoài (External Reset) : MCU sẽ bị Reset khi có mức “thấp” trên chân Resettrong khoảng thời gian lớn hơn 50ns.

Reset do Watchdog (Watchdog Reset) : MCU sẽ bị Reset khi chu kỳ thời gianWatchdog kết thúc và Watchdog được cho phép.

Trong suốt thời gian Reset, tất cả các thanh ghi I/O sẽ được đặt về giá trị mặc định của nó và chương trình bắt đầu thi hành từ địa chỉ $000. Lệnh đặt tại địa chỉ $000 phải làmột lệnh nhảy RJMP đến chương trình xử lý Reset. Nếu chương trình không bao giờ sử dụng đến các nguồn ngắt, các địa chỉ vectơngắt không được sử dụng thì mã chươngtrình thông thường có thể được đặt ở các địa chỉ vectơngắt này.

2.3.12. Ngắt

AT90S8515 có hai thanh ghi điều khiển che ngắt 8-bit – GIMSK (General InterruptMask register: Thanh ghi che ngắt chung) và TIMSK (Timer/counter Interrupt Maskregister : thanh ghi che ngắt Timer/counter).

Khi một ngắt xảy ra (chương trình ngắt đang được thi hành) thì mặc định bit cho phép ngắt toàn cục I bị xóa về 0 và tất cả các ngắt bị cấm. Tuy nhiên, người sử dụng có thể dùng phần mềm để thiết lập lên 1, bit I để cho phép các ngắt lồng vào. Bit cho phép

Hình 2.10 Sơđồ vectơngắt RESET

Page 34: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 19

Chương 2: Tổng quan về vi điều khiển AVR

ngắt toàn cục I sẽ được thiết lập trở lại bằng 1 khi MCU thoát khỏi chương trình ngắt (gặp lệnh RETI).

Khi bộ đếm chương trình được đặt đến địa chỉ vectơngắt thực sự để thi hành chươngtrình xử lý ngắt, phần cứng sẽ xóa cờ tương ứng phát sinh ngắt này. Một vài cờ ngắt cũng có thể được xóa bằng cách viết mức logic “1” đến vị trí bit tương ứng của cờ. Nếu điều kiện ngắt xảy ra khi bit cho phép ngắt tương ứng bị xóa bằng 0, thì cờ ngắt này sẽ được thiết lập lên 1 và nhớ cho đến khi ngắt này được cho phép hoặc là cờ bị xóa bởi phần mềm.

Nếu một hoặc nhiều ngắt xảy ra khi bit cho phép ngắt toàn cục bị xóa, thì các cờ ngắt tương ứng sẽ được thiết lập lên 1 và nhớ cho đến khi bit cho phép ngắt toàn cục I được thiết lập lên 1 và các ngắt sẽ thi hành theo mức ưu tiên.

Chú ý : Thanh ghi trạng thái SREG sẽ không được lưu trữ tự động khi vào chươngtrình ngắt, cũng nhưkhông được trả lại ( hay “ phục hồi “) khi thoát khỏi chương trìnhngắt. Cho nên người dùng phải xử lý điều này bằng phần mềm để đảm bảo chươngtrình chạy đúng.

2.3.13. Thanh ghi che ngắt chung – GIMSK (General Interrupt Mask Register)

Bit 7 – INT1 (External Interrupt Request 1 Enable) Cho phép ngắt ngoài trên chânINT1. Khi bit INT1 được thiết lập lên 1 và I = 1 thì ngắt ngoài trên chân INT1 được cho phép. Để quy định ngắt ngoài INT1 được kích hoạt bởi cạnh lên hay cạnh xuống hay kích hoạt mức ta sử dụng hai bit ISC10 và ISC11 trong thanh ghi MCUCR. Ngắt trên chân INT1 có thể kích hoạt ngay cả khi chân này được cấu hình là ngõ ra (output).Ngắt INT1 sẽ được thi hành tại địa chỉ bộ nhớ chương trình là $002.

Bit 6 – INT0 (External Interrupt Request 0 Enable) Cho phép ngắt ngoài trên chânINT0. Khi bit INT0 được thiết lập lên 1 và I = 1 thì ngắt ngoài trên chân INT0 được cho phép. Để quy định ngắt ngoài INT0 được kích hoạt bởi cạnh lên hay cạnh xuống hay kích hoạt mức ta sử dụng hai bit ISC00 và ISC01 trong thanh ghi MCUCR. Ngắt trên chân INT0 có thể kích hoạt ngay cả khi chân này được cấu hình là ngõ ra (output).Ngắt INT0 sẽ được thi hành tại địa chỉ bộ nhớ chương trình là $001.

Bit 5 .. 0 (Reserved Bits) các bit này là bit dự trữ trong AT90S8515 và luôn được đọc là 0.

Hình 2.11 Cấu trúc thanh ghi che ngắt - GIMSK

Page 35: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 20

Chương 2: Tổng quan về vi điều khiển AVR

2.3.14. Thanh ghi cờ ngắt chung – GIFR (General Interrupt Flag Register)

Bit 7 – INTF1 (External Interrupt Flag1) Cờ ngắt ngoài trên INT1. Khi sự thay đổi của cạnh xung hoặc mức logic trên chân INT1 có động kích (trigger) một ngắt, thì cờ INTF1 sẽ được thiết lập lên 1. Cờ này luôn luôn được xoá về 0 khi chân này được cấu hình cho các ngắt ở mức thấp. Trạng thái của một ngắt mức thấp có thể được xác định bằng việc đọc giá trị thanh ghi PIN.

Nếu bit I trong thanh ghi trạng thái SREG bằng 1 và bit INT1 trong thanh ghi GIMSKbằng 1, khi có tác động ngắt thì MCU sẽ nhảy đến địa chỉ ngắt $002. Đối với các ngắt do sự thay đổi mức logic và cạnh, cờ ngắt sẽ được xóa khi chương trình ngắt được thi hành.Đồng thời, cờ này cũng có thể được xóa bằng cách viết mức logic “1” lên nó.

Bit 6 – INTF0 (External Interrupt Flag 0) Cờ ngắt ngoài trên INT0. Khi sự thay đổi của cạnh xung hoặc mức logic trên chân INT0 có tác động kích (trigger) một ngắt, thìcờ INTF0 sẽ được thiết lập lên 1. Cờ này luôn luôn được xoá về 0 khi chân này được cấu hình cho các ngắt ở mức thấp. Trạng thái của một ngắt mức thấp có thể được xác định bằng việc đọc giá trị thanh ghi PIN.

Nếu bit I trong thanh ghi trạng thái SREG bằng 1 và bit INT0 trong thanh ghi GIMSKbằng 1, khi có tác động ngắt thì MCU sẽ nhảy đến địa chỉ ngắt $001. Đối với các ngắt do sự thay đổi mức logic và cạnh, cờ ngắt sẽ được xóa khi chương trình ngắt được thi hành.Đồng thời, cờ này cũng có thể được xóa bằng cách viết mức logic “1” lên nó.

Bit 5 .. bit 0 (Reserved bits) các bit này là bit dự trữ trong AT90S8515 và luôn được đọc là 0.

2.3.15. Thanh ghi che ngắt Timer/counter – TIMSK (Timer/counter InterruptMask Register)

Hình 2.12 Cấu trúc thanh ghi cờ ngắt chung - GIFR

Hình 2.13 Cấu trúc thanh ghi che ngắt Timer/Counter - TIMSK

Page 36: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 21

Chương 2: Tổng quan về vi điều khiển AVR

2.3.16. Thanh ghi cờ ngắt Timer/counter – TIFR (Timer/counter interrupt FlagRegister)

2.3.17. Thanh ghi điều khiển MCU – MCUCR (MCU Control Register)

Bit 7 – Reserved bit : Bit này là một bit đặt trong AT90S8535 và luôn được đọc là 0.Ta không quan tâm đến nó.

Bit 6 – SE (Sleep Enable) Cho phép ngủ. Bit SE phải được thiết lập (bằng1) để bắt buộc MCU vào chế độ ngủ khi lệnh SLEEP được thi hành. Để tránh trường hợp MCU vào chế độ ngủ mà không do mục đích của người lập trình, bit SE chỉ được thiết lập lên 1 trước khi thi hành lệnh ngủ SLEEP.

Bit 5, 4 – SM1/SM0 (Sleep Mode Select Bits 1 and 0) Các bit chọn chế độ ngủ. Việc thiết lập hai bit này cho phép MCU chọn 1 trong 3 chế độ ngủ nhưsau :

Bảng 2.4 Thiết lập chế độ SLEEP cho vi điều khiển.SM1 SM0 Chế độ ngủ

0 0 Idle : nghỉ

0 1 Không sử dụng

1 0 Power – down : nguồn giảm

1 1 Power save : nguồn dự trữ

Bit 3, 2 – ISC11, ISC10 (Interrupt Sense Control 1 Bits 1 and 0) các bit điều khiển nhận ngắt INT1

Ngắt ngoài 1 được kích hoạt trên chân INT1 nếu bit I trong thanh ghi trạng thái được thiết lập lên 1 và bit che ngắt tương ứng (bit cho phép ngắt) trong thanh ghi GIMSK

Hình 2.14 Cấu trúc thanh ghi cờ ngắt Timer/Counter - TIFR

Hình 2.15 Cấu trúc thanh ghi điều khiển MCU - MCUCR

Page 37: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 22

Chương 2: Tổng quan về vi điều khiển AVR

được thiết lập lên 1. Kích hoạt chân INT1 bởi các cạnh hoặc mức thấp là do sự thiếtlập hai bit ISC11 và ISC10 quyết định.

Bảng 2.5 Thiết lập ngắt ngoài INT1 cho vi điều khiển.ISC11 ISC10 Miêu tả0 0 Mức thấp trên chân INT1 phát một yêu cầu ngắt0 1 Không sử dụng1 0 Cạnh xuống trên chân INT1 phát một yêu cầu ngắt1 1 Cạnh lên trên chân INT1 phát một yêu cầu ngắt.

Giá trị trên chân INT1 được lấy mẩu trước khi các cạnh được phát hiện. Nếu ngắt cạnh được chọn, những xung kéo dài hơn 1 chu kỳ xung đồng hồ CPU sẽ phát sinh một ngắt. Những xung ngắn hơn thì không bảo đảm sẽ phát sinh một ngắt. Nếu ngắt mức thấp được chọn, mức thấp phải được giữ cho đến khi MCU hoàn thành lệnh đang làmvà phát sinh một ngắt. Nếu được cho phép, một ngắt kích hoạt mức sẽ phát sinh một yêu cầu ngắt nữa miễn là chân này được giữ ở mức thấp.

Bit 1,0 – ISC01, ISC00 (Interrupt sense control 0 bit 1 and bit 0) các bit điều khiển nhận ngắt INT0.

Ngắt ngoài 0 được kích hoạt trên chân INT0 nếu bit I trong thanh ghi trạng thái được thiết lập lên 1 và bit che ngắt tương ứng (bit cho phép ngắt) trong thanh ghi GIMSKđược thiết lập lên 1. Kích hoạt chân INT0 bởi các cạnh hoặc mức thấp là do sự thiết lập hai bit ISC01 và ISC00 quyết định.

Bảng 2.6 Thiết lập ngắt ngoài INT0 cho vi điều khiển.ISC01 ISC00 Miêu tả

0 0 Mức thấp trên chân INT0 phát một yêu cầu ngắt

0 1 Không sử dụng

1 0 Cạnh xuống trên chân INT0 phát một yêu cầu ngắt

1 1 Cạnh lên trên chân INT0 phát một yêu cầu ngắt.

Giá trị trên chân INT0 được lấy mẩu trước khi các cạnh được phát hiện. Nếu ngắt cạnh được chọn, những xung kéo dài hơn 1 chu kỳ xung đồng hồ CPU sẽ phát sinh một ngắt. Những xung ngắn hơn thì không bảo đảm sẽ phát sinh một ngắt. Nếu ngắt mức thấp được chọn, mức thấp phải được giữ cho đến khi MCU hoàn thành lệnh đang làmvà phát sinh một ngắt. Nếu được cho phép, một ngắt kích hoạt mức sẽ phát sinh một yêu cầu ngắt nữa miễn là chân này được giữ ở mức thấp.

2.4. Cấu tạo và lý thuyết chung Timer/Counter

Vi điều khiển AT90S8535 có tất cả ba timer/counter khác nhau gồm haitimer/counter 8 bit và một timer/counter 16 bit. Timer/counter2 có thể được chọn nguồn clock không đồng bộ từ dao động bên ngoài. Dao động này được tối ưu hoá

Page 38: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 23

Chương 2: Tổng quan về vi điều khiển AVR

khi sử dụng thạch anh đồng hồ 32.768 Khz, khi đó Timer/counter2 được sử dụng nhưmột đồng hồ thời gian thực (RTC : real timer clock). Timer/counter 0 và 1 cóbộ chia tần số riêng, nó có thể chia tần số gần nhưmột bộ chia tần số 10bit. Timer/counter 2 thì có một bộ chia riêng của nó. Cả ba Timer/counter này có thể được sử dụng nhưmột bộ định thời (timer) với nền xung clock bên trong của hệ thống hoặc có thể sử dụng nhưbộ đếm (counter) với nguồn xung kích (trigger) bênngoài.

2.4.1. Bộ chia Timer/counter

Cấu tạo bộ chia Timer/counter 0 và 1:

2.4.2. Timer/counter 0

Timer/counter0 là Timer/counter 8 bit, có thể chọn nguồn xung clock từ CK, bộ chia tần số CK hoặc từ một chân bên ngoài. Ta cũng có thể cho dừng Timer/counter0 nhưbảng miêu tả chức năng của thanh ghi điều khiển Timer/counter 0 – TCCR0. Cờ trạng thái tràn Timer/counter0 thì có thể tìm thấy trong thanh ghi TIFR. Tín hiệu điều khiển Timer/counter0 ta có thể thiết lập trong thanh ghi TCCR0. Để thiết lập ngắt trong Timer/counter0 ta có thể thiết lập các bit trong thanh ghi TIMSK.

Khi Timer/counter 0 lấy nguồn clock từ bên ngoài, tín hiệu bên ngoài này sẽ được đồng bộ với tần số của CPU. Để đảm bảo sự lấy mẫu chính xác tín hiệu bên ngoài, tần số xung clock tối đa bên ngoài là CK/2. Tín hiệu xung clock bên ngoài được lấy mẫu ở cạnh lên của xung clock CPU.

Timer/counter 0 là Timer/counter đơn giản nhất trong ba Timer/counter bởi vì nókhông có chức năng nào khác ngoài việc định thời và đếm xung.

Hình 2.16 Sơđồ bộ chia Timer/Counter

Page 39: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 24

Chương 2: Tổng quan về vi điều khiển AVR

Sơđồ khốí Timer/counter 0

a. Thanh ghiđiều khiển TIMER/COUNTER0 – TCCR0

Bit 7..3 : đây là những bit dự trữ trong AT90S8515 và nó luôn được đọc là giá trị 0.

Bit 2,1,0: là 3 bit lựa chọn xung cho C/T dựa vào bảng sau đây :

Bảng 2.7 Thiết lập thanh ghi điều khiển Timer/Counter0CS02 CS01 CS00 Description0 0 0 Stop the timer/counter0 is stopped0 0 1 CK0 1 0 CK/80 1 1 CK/641 0 0 CK/2561 0 1 CK/10241 1 0 External Pin T0, falling edge1 1 1 External Pin T0, rising edge

Hình 2.17 Sơđồ Timer/Counter0

Hình 2.18 Cấu trúc thanh ghi điều khiển Timer/Counter0 – TCCR0

Page 40: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 25

Chương 2: Tổng quan về vi điều khiển AVR

b. Thanh ghi TIMER/COUNTER0 – TCNT0

Đây là thanh ghi chứa giá trị của Timer/counter 0. Timer/counter 0 được xem nhưmột bộ đếm lên với sự truy cập đọc / viết. Nếu Timer/counter 0 được viết một giá trị nàođó và nguồn clock được chọn (TCCR0 khác 0), Timer/counter 0 sẽ tiếp tục đếm lêncho đến khi nó đến giá trị maxval=$ff và nó sẽ bị tràn và giá trị Timer/counter 0 bị Reset về $00 ( khi đó cờ TOV0 sẽ được set ).

Hình 2.19 Cấu trúc thanh ghi Timer/Counter0 – TCNT0

Page 41: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 26

Chương 2: Tổng quan về vi điều khiển AVR

2.4.3. Timer/counter1 (Timer/counter 16 bits)

Có lẽ đây là Timer/counter phức tạp và khó sử dụng nhất trong ba Timer/counter. Sơđồ nguyên lý Timer/counter 1:

imer/counter1 có thể chọn nguồn clock từ CK, bộ chia tần số CK hoặc từ một chân bênngoài. Khi đó ta có thể dùng Timer/counter1 nhưmiêu tả chức năng trong thanh ghiđiều khiển Timer/counter1 (TCCR1A và TCCR1B). Các cờ trạng thái khác nhau (cờ tràn TOV1, cờ so sánh OCF1A, OCF1B và cờ bắt sống ngõ vào ICF1) có thể tìm thấy trong thanh ghi TIFR. Tín hiệu điều khiển Timer/counter1 có thể được thiết lập trong TCCR1A và TCCR1B. Để thiết lập các ngắt do Timer/counter1 ta thiết lập các bit trong thanh ghi TIMSK.

Hình 2.20 Sơđồ Timer/Counter1

Page 42: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 27

Chương 2: Tổng quan về vi điều khiển AVR

Khi Timer/counter1 sử dụng nguồn clock bên ngoài, để đảm bảo sự lấy mẫu chính xác tần số tối đa của nguồn clock bên ngoài là CK/2.

Timer/counter1 hổ trợ hai chức năng so sánh ngõ ra sử dụng thanh ghi OCR1A vàOCR1B như nguồn dữ liệu để so sánh với nội dung chứa trong thanh ghi Timer/counter1: TCNT1 (gồm TCNT1H và TCNT1L). Trong những điều kiện đặc biệt ta không thể điều khiển sự tràn của timer, thì ngắt do so sánh ngõ ra có thể được sử dụng. Thanh ghi so sánh ngõ ra OCRx có thể được nạp với giá trị nằm trong khoảng [0..maxval] (maxval là giá trị tối đa của Timer/counter ) và timer sẽ kiểm tra giá trị này tại mỗi chu kỳ xung clock của timer. Khi timer tiến đến giá trị so sánh, cờ so sánh ngõ ra tương ứng (OCFx) trong thanh ghi TIFR sẽ được set. Timer có thể được đặt cấu hình để xoá bộ đếm về 0 trong thời điểm này. Các chân ngõ ra OC1x có thể được đặt cấu hình để xoá về 0, thiết lập lên 1 hoặc thay đổi tự động sau mỗi lần so sánh. Đặc tính này rất hữu ích để ta có thể tạo ra sóng vuông có tần số khác nhau. Nó cho phép chúng ta thực hiện chức năng của một DAC (digital to analog convertion). Chế độ PWM (điều chế độ rộng xung) là một chế độ đặc biệt thích hợp để ta tạo ra các dạng sóng khác nhau. Timer/counter1 có thể được sử dụng nhưmột bộ điều chế độ rộng xung 8, 9 hoặc 10 bit.

Timer/counter1 còn cung cấp một chức năng đặc biệt khác đó là chức năng bắt sống ngõ vào. Trên vi điều khiển AVR có một chân để kích (trigger) sự kiện bắt sống ngõvào ICP (Input Capture Pin). Sự thay đổi mức tín hiệu trên chân này sẽ làm cho giá trị hiện hành trong timer được đọc và lưu trữ trong thanh ghi bắt sống ngõ vàoICR1(input capture register). Vào thời điểm này, cờ bắt sống ngõ vào ICF1 trongthanh ghi TIFR sẽ được thiết lập lên 1. Điều này cực kỳ hữu ích trong việc đo độ rộng của xung bên ngoài. Ngoài ra, bộ so sánh Analog cũng có thể được thiết lập lên 1 để trigger sự kiện bắt sống ngõ vào.Sơđồ nguyên lý chân ICP.

Đây là thanh ghi timer/counter hiện thời. Một giá trị đã nạp vào thanh ghi này được sử dụng làm giá trị xuất phát (bắt đầu), và bộ định thời làm tăng giá trị này theo từng tín hiệu xung nhịp của nó nếu bộ timer/counter0 được cho phép qua thanh ghi TCCR0.

Hình 2.21 Sơđồ nguyên lý chân ICP

Page 43: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 28

Chương 2: Tổng quan về vi điều khiển AVR

Sau khi bộ timer/counter0 bị tràn, được đặt lại về $00 và tiếp tục đếm tiếp theo từng tín hiệu xung nhịp timer/cuonter0.

a. Thanh ghi A điều khiển Timer/counter1

Bit 7,6: Các bit điều khiển COM1A1 và COM1A0 quy định bất kỳ tác động nào của chân lối ra kế tiếp theo một lần so sánh trong bộ timer/counter1. Bất kỳ tác động nàocủa chân lối ra đều ảnh hưởng đến chân OC1 (Output Compare pin 1). Đây là một chức năng lựa chọn đối với cổng I/O và bit điều khiển hướng tương ứng cần phải được đặt thành 1 để điều khiển một chân lối ra.

Bit 5,4 : COM1B1 và COM1B0 có chức năng tương tự nhưbit 7,6. Ở đây vị mạch có hai chức năng so sánh.

Bảng 2.8 Thiết lập thanh ghi A điều khiển Timer/Counter1COM1X1 COM1X1 Description0 0 Timer/counter1 ngắt ra khỏi chân lối ra

OC1X0 1 Kim tra (toglle) lối ra OC1X1 0 Xóa lối ra OC1X thành 01 1 Đặt lối ra OC1X thành 1

Bit 3,2 : Là các bit dự trữ trong AT90S8515 và luôn được đọc giá trị 0.

Bit 1,0 : Các bit lựa chọn bộ điều chế độ rộng xung (Pulse Width Modulator). Các bit này lựa chọn thao tác PWM của bộ timer/counter1 được cho ở bảng sau:

PWM11 PWM10 Description0 0 Thao tác PWM của timer/counter bị cấm0 1 PWM 8 bit1 0 PWM 9 bit1 1 PWM 10 bit

b. Thanh ghi B điều khiển Timer/counter1

Hình 2.22 Cấu trúc thanh ghi A điều khiển Timer/Counter1

Hình 2.23 Cấu trúc thanh ghi điều khiển Timer/Counter1

Page 44: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 29

Chương 2: Tổng quan về vi điều khiển AVR

Bit 7 : Khi bit ICNC1 bit bị xóa thành 0 chức năng input capture trigger noise cancelerbị cấm. Mạch input capture được lật trạng thái ở sườn dương/ âm đầu tiên được lấy mẫu trên chân ICP (input capture pin) nhưđược chỉ định. Khi bit ICNC1 được đặt thành 1, 4 mẫu đã đuợc lấy trọn vẹn được đo trên chân ICP và tất cả các mẫu cần phải phù hợp về mức High/Low với thông số kỹ thuật về input capture trigger quy định cho bit ICES. Tần số lấy mẫu hiện thời là tần số đồng hồ XTAL.

Bit 6 : Lựa chọn sườn input capture 1. Khi bit ICES1 được xóa thành 0, nội dung của bộ timer/counter1 được truyền đến thanh ghi ICR1 (input capture register), trên sườn âm của chân ICP (input capture pin). Khi bit ICES1 được đặt thành 1 thì nội dung của bộ timer/counter1 được truyền đến thanh ghi ICR1 (input capture) trên sườn dươngcủa chân ICP.

Bit 5,4 : Là các bit dự trữ trong AT90S8515 và luôn được đọc giá trị là 0

Bit 3 : Xóa timer/counter1 theo lần so sánh (clear timer/counter1 on compare match). Khi bit điều khiển CTC1 được đặt thành 1 bộ timer/counter1 được Reset về $0000 trong chu trình đồng hồ sau một lần so sánh. Nếu bit điều khiển CTC1 bị xóa, thì bộ timer/counter1 tiếp tục đếm và không bị ảnh hưởng bởi kết quả sau lần so sánh. Bởi vìmỗi lần so sánh được phát hiện trong chu kỳ đồng hồ CPU kế tiếp theo lần trước, nênchức năng này sẽ thực hiện một cách khó khăn khi số chia tần số cao hơn 1 được sử dụng cho bộ định thời. Khi số chia tần số bằng 1 được sử dụng và thanh ghi so sánh Ađuợc đặt thành C thì bộ timer sẽ được thiết lập nhưsau :

…|C-2|C-1| C | 0 | 1 |…

Khi mà bộ chia tần được đặt số chia thành 8, bộ định thời sẽ đếm giống nhưsau đây :

…|C-2, C-2, C-2, C-2, C-2, C-2, C-2, C-2|C-1, C-1, C-1, C-1, C-1, C-1, C-1, C-1| C,0,0,0,0,0,0,0|…

Bit 2,1,0 : là các bit lựa chọn nguồn chia tần số của bộ timer/counter1

Bảng 2.9 Thiết lập thanh ghi B điều khiển Timer/Counter1CS12 CS11 CS10 Description0 0 0 Stop the timer/counter1 is stopped0 0 1 CK0 1 0 CK/80 1 1 CK/641 0 0 CK/2561 0 1 CK/10241 1 0 External Pin T1, falling edge1 1 1 External Pin T1, rising edge

Page 45: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 30

Chương 2: Tổng quan về vi điều khiển AVR

c. Thanh ghi Timer/counter1 TCNT1 (gồm TCNT1H và TCNT1L)

Thanh ghi 16 bit này chứa giá trị được đem chia tần số của bộ timer/counter 16 bit. Để đảm bảo rằng cả hai byte High và Low được đọc và ghi đồng thời khi khối CPU try nhập các thanh ghi này, việc truy nhập được thực hiện bằng cách sử dụng một thanh ghi tạm thời 8 bit (TEMP). Thanh ghi tạm thời này cũng được sử dụng khi truy nhập OCR1A và ICR1. Nếu chương trình chính và cả đoạn chương trình ngắt cũng thực hiện việc truy nhập đến các thanh ghi bằng cách sử dụng TEMP, thì các ngắt cần phải bị cấm (disable) trong khoảng thời gian truy nhập từ chương trình chính hoặc các ngắt truy nhập nếu các ngắt được cho phép lại

TCNT1 Timer/Counter1 write : khi CPU ghi vào byte cao (High) TCNT1H, dữ liệu đãghi được đặt vào trong thanh ghi TEMP. Tiếp theo khi khối CPU ghi byte thấpTCNT1L, byte dữ liệu này được kết hợp với byte dữ liệu trong thanh ghi TEMP, vàtoàn bộ 16 bit được ghi đồng thời vào thanh ghi TCNT1 Timer/Counter1. Do đó byteHigh TCNT1H cần phải được truy cập trước tiên đối với thao tác ghi trọn vẹn thanh thi 16 bit.

TCNT1 Timer/Counter1 read : khi khối CPU đọc byte thấp TCNT1L, dữ liệu của byte thấp TCNT1L được gửi tới CPU và dữ liệu của byte cao TCNT1H bị thay thế trong thanh ghi TEMP. Khi khối CPU đọc dữ liệu trong byte High TCNT1H thì CPU nhận dữ liệu trong thanh ghi TEMP. Do đó byte thấp TCNT1L cần phải được truy nhập trước tiên đối với thao tác đọc trọn vẹn thanh ghi 16 bit. Bộ timer/counter1 được thiết kế để hoạt động nhưmột bộ đếm tiến hoặc tiến/lùi (trong chế độ PWM) với thao tác truy nhập đọc và ghi. Nếu bộ timer/counter1 được ghi vào và một nguồn xung nhịp được lựa chọn thì bộ timer/counter1 tiếp tục đếm trong chu trình đồng hồ định thời sau khi nó được đặt trước (Reset) bằng giá trị đã được ghi.

Hình 2.24 Cấu trúc thanh ghi Timer/Counter1-TCNT1

Page 46: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 31

Chương 2: Tổng quan về vi điều khiển AVR

d. Thanh ghi so sánh-A ngõ ra của Timer/counter1 OCR1A (gồm OCR1AH vàOCR1AL)

Thanh ghi so sánh lỗi ra (output compare register) là một thanh ghi đọc/ghi 16 bit. Thanh ghi OCR bộ timer/counter1 chứa dữ liệu cần được so sánh liên tục với bộ timer/counter1. Diễn biến của những lần so sánh (actions on compare matches) được chỉ định trên thanh ghi điều khiển và trạng thái timer/counter1.

Bởi vì thanh ghi so sánh lối ra OCR1A là một thanh ghi 16 bit nên một thanh ghi tạm thời TEMP được sử dụng khi ghi vào OCR1A để bảo đảm rằng cà hai byte được cập nhật đồng thời. Khi CPU ghi byte cao OCR1AH dữ liệu được lưu trữ tạm thời trong thanh ghi. Khi khối CPU ghi byte thấp OCR1AH thanh ghi TEMP được ghi đồng thời vào OCR1AH. Do đó byte cao OCR1AH cần phải được ghi trước tiên đối với một thao tác ghi trọn vẹn thanh ghi 16 bit. Thanh ghi TEMP cũng được sử dụng khi truy nhập TCNT1 và ICR1. Nếu chương trình chính và đoạn chương trình ngắt (routine) cũng thực hiện thao tác truy nhập lên các thanh ghi bằng cách sử dụng TEMP, các ngắt cần phải bị cấm trong thời gian xảy ra quá trình truy nhập từ chương trình chính hoặc các ngắt truy nhập nếu các ngắt được cho phép lại.

e. Thanh ghi so sánh-B ngõ ra của Timer/counter1 OCR1B (gồm OCR1BH vàOCR1BL)

Các thanh ghi so sánh lối ra (output compare) là các thanh ghi đọc/ghi 16 bit. Các thanh ghi so sánh lối ra bộ timer/counter1 chứa dữ liệu được so sánh liên tục với timer/counter1.

Diến biến của những lần so sánh được chỉ định trong thanh ghi điều khiển và trạng thái timer/counter1. Một lần so sánh chỉ xảy ra nếu timer/counter1 đếm đến giá trị OCR.

Hình 2.25 Cấu trúc thanh ghi so sánh A ngõ ra của Timer/Counter1 - OCR1A

Hình 2.26 Cấu trúc thanh ghi so sánh B ngõ ra của Timer/Counter1 - OCR1B

Page 47: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 32

Chương 2: Tổng quan về vi điều khiển AVR

Một phần mềm thực hiện thao tác ghi, đặt TCNT1 và OCR1A hoặc OCR1B thànhcùng giá trị, sẽ không tạo ra một lần so sánh.

Một lần so sánh sẽ đặt cờ ngắt so sánh trong chu kỳ đồng hồ CPU kế tiếp theo sự kiện so sánh. Bởi vì các thanh ghi so sánh lối ra OCR1A và OCR1B là các thanh ghi 16 bit,nên một thanh ghi tạm thời TEMP được sử dụng khi OCR1A/B được ghi để bảo đảm là cả hai byte được cập nhật đồng thời. Khi CPU ghi byte cao OCR1AH hoặc OCR1BH dữ liệu được lưu trữ tạm thời vào thanh ghi TEMP. Khi khối CPU ghi byte thấp, OCR1AL hoặc OCR1BH thanh ghi TEMP ghi đồng thời vào OCR1AH hoặc OCR1BH. Do đó byte cao OCR1AH hoặc OCR1BH cần phải được ghi trước tiên đối với một thao tác ghi trọn vẹn thanh ghi 16 bit.

f. Thanh ghi bắt sống ngõ vào Timer/counter1 ICR1H và ICR1L)

Thanh ghi Iput capture là một thanh ghi 16 bit chỉ để đọc. Khi sườn dương hoặc sườnâm (phù hợp với việc thiết lập sườn input capture, ICES1) của tín hiệu ở chân inputcapture - ICP, được phát hiện giá trị hiện thời của bộ timer/counter1 được truyền đến thanh ghi input capture – ICR1. Đồng thời cờ input capture ICF1 được đặt thành 1.Bởi vì thanh ghi input capture ICR1 là một thanh ghi 16 bit, nên một thanh ghi tạm thời TEMP được sử dụng để khi ICR1 được đọc có thể đảm bảo rằng cả hai byte được đọc đồng thời. Khi CPU đọc byte thấp ICR1L, dữ liệu được gửi đến khối CPU và dữ liệu của byte cao ICR1H được đặt vào thanh ghi TEMP. Khi khối CPU đọc dữ liệu trong byte cao ICR1H khối CPU nhận dữ liệu trong thanh ghi TEMP. Do đó byte thấp ICR1H cần phải được truy nhập trước tiên đối với một thao tác đọc trọn vẹn thanh ghi 16 bit. Thanh ghi TEMP cũng được sử dụng khi truy nhập TCNT1 và OCR1A. Nếu chương trình chính và cả đoạn chương trình ngắt thực hiện việc truy nhập đến các thanh ghi bằng cách sử dụng TEMP, thì các ngắt cần phải bị cấm trong thời gian truy nhập từ chương trình chính hoặc các ngắt truy nhập nếu các ngắt được cho phép lại.

g. TIMER/COUNTER1 trong chế độ điều chếđộ rộng xung

Khi chế độ PWM được chọn, bằng cách thiết lập Timer/counter1, thanh ghi so sánh ngõ ra OCR1A và thanh ghi so sánh ngõ ra OCR1B, các chân ngõ ra PD5 (OC1A)/PD4 (OC1B) có thể xuất ra xung được điều chế PWM đúng pha hoặc chạy không đều hoặc chạy tự do 8bit, 9bit hoặc 10 bit. Timer/counter1 hoạt động nhưmột bộ đếm lên/xuống, đếm lên từ giá trị $0000 đến giá trị TOP (xem bảng sau), vàkhi đó nó quaytrở lại đếm về zero trước khi chu kỳ này được lặp lại. Khi giá trị đếm bằng giá trị 10

Hình 2.27 Cấu trúc thanh ghi bắt sống ngõ vào của Timer/Counter1

Page 48: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 33

Chương 2: Tổng quan về vi điều khiển AVR

bit có trọng số thấp nhất trong thanh ghi OCR1A hoặc OCR1B, Các chân PD5(OC1A)/PD4(OC1B) được thiết lập lên một hoặc xoá về 0 tuỳ thuộc vào cáchthiết lập các bit COM1A1/COM1A0 hoặc COM1B1/COM1B0 trong thanh ghi điều khiển Timer/counter1 (TCCR1A).

Bảng 2.10 Giá trị TOP và tần số PWM

FTCK1 chính là tần số xung nhịp của Timer/counter1.

Chú ý rằng nếu thanh ghi so sánh chứa giá trị TOP và bộ chia không được sử dụng (khi đó tần số đếm của bộ định thời là CK bằng cách thiết lập : CS12 CS11 CS10 = 001), ngõ ra PWM sẽ không sinh ra bất kỳ xung nào bởi vì giá trị đếm lên và đếm xuống được tiến đến ngay tức thì. Khi bộ chia được sử dụng (CS12 CS11 CS10 ≠ 001 hoặc 000), ngõ ra PWM được kích hoạt khi bộ đếm tiến đến giá trị TOP nhưng trongso sánh khi đếm xuống (lúc bộ đếm tiến đến giá trị TOP) thì không trùng khớp thời gian với lúc bộ đếm gặp giá trị TOP khi đếm lên nên một chu kỳ xung PWM được phát sinh. Đây là vấn đề hơi khó hiểu, nhưng nếu ta ngẫm nghĩ kỉ và xem lại phần thanh ghiđiều khiển Timer/counter1 TCCR1B thì ta sẽ thấy điều này hoàn toàn đúng.Chọn chế độ so sánh 1 trong PWM

Bảng 2.11 Thiết lập chế độ so sánh 1 trong PWM

Chú ý : X = A hoặc B

Một điểm lưu ý khác là trong chế độ PWM, 10 bits có trọng số thấp trong thanh ghi OCR1A/OCR1B, khi viết, được truyền đến một địa chỉ tạm thời. Chúng được chốt khi Timer/counter1 tiến đến giá trị TOP. Điều này ngăn chặn sự phát sinh một xung PWM “thừa” (không đều, không mong muốn) do sự vận hành ghi giá trị lên các thanh ghiOCR1A/OCR1B không được đồng bộ.

Xem hình bên dưới nhưmột ví dụ:Synchronized : Đồng bộUnsynchronized : không đồng bộ.Counter value : giá trị bộ đếm (timer)

Page 49: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 34

Chương 2: Tổng quan về vi điều khiển AVR

Compare value : giá trị so sánhCompare value changes : thay đổi giá trị so sánh

PWM Output OC1X : chân ngõ ra PWM

Trong suốt thời gian giữa hai sự vận hành viết và chốt, khi ta đọc giá trị từ thanh ghi OCR1A/OCR1B thì giá trị đọc được sẽ là nội dung của địa chỉ tạm.

Khi thanh ghi OCR1A/OCR1B chứa giá trị $0000 hoặc TOP, ngõ ra OC1A/OC1Bđược cập nhật (updated) đến mức cao hoặc thấp vào lần so sánh tiếp theo tuỳ thuộc cách thiết lập của

COM1A1/COM1A0 hoặc COM1B1/COM1B0. Điều này được thể hiện trong bảng sau :

Chú ý : X = A hoặc B

Trong chế độ PWM, Cờ tràn Timer/counter1 TOV1 được thiết lập lên 1 khi bộ đếm tiến về giá trị $0000. Ngắt do tràn Timer1 vẫn hoạt động nhưtrong chế độ Timer/counter bình thường. Chương trình ngắt do tràn timer1 sẽ được thi hành nếu cờ TOV1 được thiết lập lên 1, bit cho phép ngắt do tràn Timer/counter1 TOIE1 được thiết lập lên 1 và bit cho phép ngắt toàn cục I được thiết lập lên 1.

Page 50: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 35

Chương 2: Tổng quan về vi điều khiển AVR

2.5. Watchdog Timer

Thanh ghiđiều khiển bộ định thời WATCHDOG :

Bit 7..5 : đây là các bit dự trữ trong AT90S8515 và luôn được đọc giá trị là 0

Bit 4 : (Watchdog turn off enable) bit này được sử dụng chung với bit WDE. Bit nàyđược đặt thành 1 khi WDE bị xóa thành 0 để cấm mạch watchdog timer. Bộ xử lý xóa bit này sau 4 chu kỳ đồng hồ.

Bit 3 : (Watchdog enable) khi đặt thành 1 mạch watchdog timer được cho phép. Để cấm mạch watchdog, bit này bị xóa thành 0 và WDTOE được đặt thành 1. Để cấm mạch watchdog timer, thủ tục sau đây được sửdụng : trong một thao tác đơn lẻ, đặt WDTOE và WDE thành 1. Xóa WDE thành 0 trong 4 chu kỳ đồng hồ tiếp theo. Sau đó thao tác này sẽ cấm mạch watchdog timer.

Bit 2..0: Giá trị chia tần số (watchdog timer prescaler). Các bit này được sử dụng để lựa chọn mạch watchdog timer timeouts, được cho theo bảng dưới đây :

Bảng 2.12 Thiết lập bộ định thời Watchdog

Hình 2.28 Sơđồ bộ định thời Watchdog

Hình 2.29 Cấu trúc thanh ghi điều khiển bộ định thời Watchdog

Page 51: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 36

Chương 2: Tổng quan về vi điều khiển AVR

2.6. Truy xuất ghi/đọc EEPROM

Thời gian truy cập viết lên bộ nhớ EEPROM nằm trong khoảng 2.5 – 4 ms, phụ thuộc vào điện áp nguồn nuôi. Để viết dữ liệu lên EEPROM người dùng được khuyên là nênkiểm tra xem EEPROM đã sẵn sàng để nhận giá trị mới chưa. Khi CPU được đọc, CPU được tạm dừng 4 chu kỳ trước khi câu lệnh kế tiếp được thi hành. Khi EEPROMđược viết, CPU được tạm nghỉ 2 chu kỳ trước khi câu lệnh tiếp theo được thi hành.

2.6.1. Thanh ghi địa chỉ EEPROM – EEARH và EEARL (EEPROM AdressRegister)

Thanh ghi địa chỉ EEPROM (EEAR) định địa chỉ trong khoảng 512-byte EEPROM.Giá trị của thanh ghi địa chỉ EEAR nằm tuyến tính trong khoảng từ 0 đến 511.

2.6.2. Thanh ghi dữ liệu EEPROM – EEDR (EEPROM Data Register)

Thanh ghi này sẽ chứa dữ liệu khi EEPROM được đọc/viết. Khi vận hành viết, thanh ghi EEDR chứa dữ liệu được viết đến EEPROM tại địa chỉ chứa trong thanh ghi

Hình 2.31 Cấu trúc thanh ghi dữ liệu EEPROM - EEDR

Hình 2.30 Cấu trúc thanh ghi địa chỉ EEPROM

Page 52: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 37

Chương 2: Tổng quan về vi điều khiển AVR

EEAR. Khi vận hành đọc, thanh ghi EEDR chứa dữ liệu đọc ra từ EEPROM tại địa chỉ chứa trong thanh ghi EEAR.

2.6.3. Thanh ghiđiều khiển EEPROM – EECR (EEPROM Control Register)

Bit 7..4 – Res (Reserved Bits)

Đây là những bit dữ trữ trong AT90S8515 và giá trị đọc luôn bằng 0.

Bit 3 – EERIE (EEPROM Ready Interrupt Enable)

Khi bit I trong thanh ghi SREG được thiết lập lên 1 và EERIE được thiết lập lên 1,ngắt do EEPROM sẵn sàng được cho phép. Khi bit này bằng 0 thì ngắt này bị cấm. Ngắt do EEPROM sẵn sàng phát ra một hằng số ngắt khi EEWE bị xoá về 0.

Bit 2 – EEMWE (EEPROM Master Write Enable)

Bít này quy định sự thiết lập bít EEWE =1 có là nguyên nhân để EEPROM được viết hay không. Khi bit EEMWE được thiết lập lên 1, nếu EEWE được thiết lập lên 1 thìdữ liệu sẽ được ghi vào EEPROM tại địa chỉ đã chọn. Nếu bit EEWE không được thiết lập lên 1(hay bị xoá = 0) thì mặc dù EEWE được thiết lập lên 1 thì sự thiết lập nàyvẫn không có một ảnh hưởng nào hết. Bit EEMWE phải được thiết lập lên 1 bằng phần mềm, phần cứng sẽ tự động xoá bit này về 0 sau 4 chu kỳ xung clock.

Bit 1 – EEWE: EEPROM Write Enable

Khi dữ liệu đã được nạp, và địa chỉ được thiết lập đúng, bit EEWE phải được thiết lập lên 1 để viết EEPROM. Phải chắc chắn rằng bit EEMWE phải được thiết lập lên 1,trước khi viết giá trị đến EEWE. Các bước sau cần được quan tâm khi thực hiện viết dữ liệu đến EEPROM.

1. Đợi cho đến khi EEWE về 0.2. Viết địa chỉ EEPROM mới đến EEARL và EEARH (tuỳ chọn).3. Viết dữ liệu EEPROM mới đến EEDR (tuỳ chọn).4. Viết mức logic 1 đến bit EEMWE trong thanh ghi EECR.5. Vào 4 chu kỳ xung clock sau khi thiết lập EEMWE, viết mức logic 1 đến

EEWE.

Hình 2.32 Cấu trúc thanh ghi điều khiển EEPROM - EECR

Page 53: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 38

Chương 2: Tổng quan về vi điều khiển AVR

Một ngắt xảy ra giữa bước 4 và bước 5 sẽ làm cho chu kỳ viết bị lỗi. Để tránh điều này bit ngắt toàn cục I phải bị xoá trong khoảng thời ghi dữ liệu vào EEPROM.

Bit 0 – EERE: EEPROM Read Enable

Khi địa chỉ đúng được thiết lập trong thanh ghi EEAR, bit EERE phải được thiết lập lên 1để yêu cầu đọc dữ liệu từ EEPROM. Khi bit này được xoá bởi phần cứng, dữ liệu yêu cầu được tìm thấy trong thanh ghi EEDR. Sự truy cập đọc EEPROM chỉ lấy mất một lệnh và không cần phải “hỏi vòng” (polling) bit EERE. Khi bit EERE đã được thiết lập lên 1, CPU tạm dừng 4 chu kỳ trước khi thi hành lệnh kế tiếp.

Người dùng được khuyên là nên hỏi vòng bit EEWE trước khi bắt đầu sự vận hànhđọc. Nếu quá trình viết đang được xử lý (khi dữ liệu mới hoặc địa chỉ mới được viết đến các thanh ghi I/O EEPROM, sự vận hành viết sẽ bị ngắt và kết quả thì không thể xác định trước.

Page 54: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 39

Chương 2: Tổng quan về vi điều khiển AVR

2.7. Giao tiếp thiết bị ngoại vi – SPI

SPI (Serial peripheral interface) cho phép truyền dữ liệu đồng thời tốc độ cao giữa AT90S8515 với thiết vị ngoại vi hoặc với các AVR khác

Sơđồ khối SPI :

2.7.1. Thanh ghi điều khiển SPI – SPCR (SPI control register)

Bit 7: (cho phép ngắt SPI) bit nàylàm cho một ngắt SPI phải được tạo ra nếu bit SPIF trong thanh ghi SPSR được đặt và các ngắt toàn cục được cho phép.

Hình 2.33 Sơđồ khối SPI của vi điều khiển AT90S8515

Hình 2.34 Cấu trúc thanh ghi điều khiển SPI - SPCR

Page 55: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 40

Chương 2: Tổng quan về vi điều khiển AVR

Bit 6: (cho phép SPI) khi bit này được đặt thành 1 thì SPI được cho phép.

Bit 5 : (đặt thứ tự dữ liệu) khi đặt thành 1, LSB của từ dữ liệu được truyền trước tiên.Khi bị xóa thành 0, MSB của từ dữ liệu được truyền trước tiên.Bit 4 : (Master/Slave select) khi đặt thành 1, cổng SPI trong chế độ chủ (master mode) và khi xóa thành 0, nó là một cổng slave. Nếu nhưchân SS được cấu hình là lối vào vàđược đặt xuống mức thấp (Low) this bit MSTR sẽ bị xóa thành 0 và SPIF tong SPSRsẽ được đặt. Người dùng sẽ phải đặt MSTR thành 1 một lẫn nữa để bắt đầu (khởi động) nhưlà master.

Bit 3 : (clock polarity) khi đặt thành 1 thì SCK là cao khi nghỉ (idle: không có công việc xử lý) còn khi bị xóa thành 0 thì SCK là thấp khi không có công việc cần xử lý.

Bit 2 : (clock phase) quy định pha kích hoạt của xung nhịp.

Bit 1,0 : hai bit này quyđịnh tốc độ đồng hồ SCK khi được đặt cấu hình nhưlà master.Sự liên qua giữa SCK và tần số dao động fcl được cho bởi bảng sau :

Bảng 2.13 Thiết lập tần số dao động SCKSPR1 SPR0 SCK Frequency0 0 fcl/40 1 fcl/161 0 fcl/641 1 fcl/128

2.7.2. Thanh ghi trạng thái SPI – SPSR (SPI Status Register)

Bit 7 : SPIF (SPI interrupt flag) khi một chuỗi dữ liệu được chuyển đổi hoàn tất, thìSPIF sẽ được thiết lập và một ngắt sẽ được phát ra, nếu SPIE và SPCR được thiết lập và ngắt toàn cục được cho phép.

Bit 6 : WCOL bit này được thiết lập nếu SPI thanh ghi dữ liệuđược viết trong suốt quá trình chuyển đổi. WCOL và SPIF được xoá bằng cách đọc thanh ghi trạng thái ở lần đầu tiên khi đó WCOL được thiết lập và dữ liệu được truy cập vào thanh ghi dữ liệu

Bit 5..0 : các bit dự trữ trong AT90S8515 và luôn được đọc giá trị là 0.

2.7.3. Thanh ghi dữ liệu (SPI DATA REGISTER)

Hình 2.35 Cấu trúc thanh ghi trạng thái SPI - SPSR

Page 56: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 41

Chương 2: Tổng quan về vi điều khiển AVR

Thanh ghi dữ liệu dùng để đọc hay là viết dữ liệu cho SPI

2.8. UART (Universal Asynchronous Receiver and Stransmitter)

Thuật ngữ UART là viết tắt của từ Universal Asynchronous Receiver and Transmitter, tạm dịch Bộ truyền – nhận không đồng bộ đa năng. Bộ UART của vi điều khiển AT90S8535 có thể họat động nhưmột bộ truyền nhận song công, có nghĩa là hoạt động truyền và nhận có thể tiến hành đồng thời( nó chứa các thanh ghi truyền, nhận riêng lẻ). Các đặc tính chính của bộ UART trong AT90S8535 có thể được tóm tắt nhưsau:

Bộ phát tốc độ baud có thể tạo ra một số lớn tốc độ baud ( có nghĩa là có thể dễ dàng tạo ra các tốc độ baud khác nhau).

Có thể tạo ra các tốc độ baud cao tại tần số thạch anh thấp.

Có thể phát dữ liệu 8 hoặc 9 bit.

Chứa bộ lọc nhiễu.

Có thể phát hiện trạng thái Overrun.

Có thể phát hiện khung truyền bị lỗi.

Có thể phát hiện bit Start sai.

Cho phép ba ngắt riêng lẽlà TX Complete (khi truyền xong một kí tự), TX Data Rigister Empty (khi thanh ghi dữ liệu truyền rỗng và sẵn sàng nhận kí tự mới để truyền đi), RX Complete (khi nhận hoàn thành một kí tự).

Hình 2.36 Cấu trúc thanh ghi dữ liệu SPI

Page 57: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 42

Chương 2: Tổng quan về vi điều khiển AVR

2.8.1. Phát dữ liệu trên UART

Sơđồ khối bên phát :

Quá trình truyền dữ liệu được khởi động bằng cách viết dữ liệu cần truyền đến thanh ghi dữ liệu I/O của bộ UART, gọi là thanh ghi UDR. Dữ liệu được truyền từ thanh ghi UDR đến thanh ghi dịch phát khi :

Một kí tự mới được viết đến UDR sau khi bit stop của kí tự trước đó đã được dịch ra ngoài. Thanh ghi dịch sẽ được nạp giá trị mới ngay lập tức.

Hình 2.37 Sơđồ khối phát dữ liệu trên UART

Page 58: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 43

Chương 2: Tổng quan về vi điều khiển AVR

Một kí tự mới được viết đến UDR trước khi bit stop từ kí tự trước đó được dịch ra ngoài. Thanh ghi dịch sẽ được nạp khi bit stop của kí tự hiện đang truyền được dịch ra ngoài.

Nếu thanh ghi dịch phát 10(11)-bit là rỗng, dữ liệu được truyền từ thanh ghi UDR đến thanh ghi dịch. Khi đó Bit cờ thanh ghi dữ liệu rỗng UDRE(UART Data RegisterEmpty) trong thanh ghi trạng thái UART, USR (UART Status Register) được thiết lập lên 1. Khi bit này được thiết lập lên 1 thì UART sẵn sàng nhận kí tự tiếp theo. Vàocùng thời điểm dữ liệu được truyền từ UDR đến thanh ghi dịch 10(11)-bit, bit 0 của thanh ghi dịch được xóa (bit start) và bit 9 hoặc 10 được thiết lập lên 1 (bit stop). Nếu ta muốn truyền dữ liệu 9 bit (bit dữ liệu 9 có thể là bit kiểm tra chẵn /lẻ), thì bit CHR9trong thanh ghi điều khiển UART: UCR (UART control register) phải được thiết lập lên 1. Và bit TXB8 trong thanh ghi UCR được truyền đến bit 9 trong thanh ghi dịch phát. Nhưvậy bit dữ liệu 9 phải được chứa trong bit TXB8 trong thanh ghi UCR.

Theo nhịp đồng hồ tốc độ baud cung cấp cho thanh ghi dịch phát, bit start được dịch ra ngoài đầu tiên trên chân TXD. Theo sau là các bit dữ liệu, trong đó bit có trọng số thấp sẽ được dịch ra trước.Và cuối cùng là bit stop được dịch ra. Khi bit stop được dịch ra ngoài, thanh ghi dịch sẽ được nạp giá trị mới nếu nhưcó bất kỳ dữ liệu nào được viết đến thanh ghi UDR trong suốt thời gian truyền. Trong thời gian nạp giá trị (load), bitUDRE được thiết lập lên 1. Nếu không có dữ liệu mới trong thanh ghi UDR để truyền đi khi bit stop được dịch ra ngoài, cờ UDRE sẽ duy trì trạng thái thiết lập lên 1 chođến khi thanh ghi UDR được viết giá trị một lần nữa. Khi không có dữ liệu mới được ghi và bit stop đã ở trên chân TXD đúng một chiều dài bit, cờ phát hoàn thành TXC(TX Complete) trong thanh ghi USR được thiết lập lên 1.

Bit TXEN trong thanh ghi UCR khi thiết lập lên 1 thì bộ phát UART mới được cho phép. Khi bit này bị xóa (trạng thái mặc định) thì bộ phát UART khôngđược cho phép và chân TXD chỉ có thể sử dụng nhưmục đích I/O thông thường. Khi bit TXEN được thiết lập lên 1, bộ phát UART sẽ được kết nối đến chân TXD (PD1), và chân TXD trở thành chân ngõ ra, bất kể sự thiết lập hướng của bit DDD1 trong thanh ghi DDRD.

Page 59: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 44

Chương 2: Tổng quan về vi điều khiển AVR

2.8.2. Nhận dữ liệu trên UART

Sơđồ khối bên nhận :

Bộ nhận dữ liệu chứa khối logic front-end có nhiệm vụ lấy mẫu tín hiệu trên chânRXD với tần số lấy mẫu bằng 16 lần tốc độ baud. Khi đường truyền ở trạng thái nghỉ (mức logic 1), nếu có sự chuyển về “0” thì nó được xem là cạnh xuống của một bit start và tuần tự phát hiện bit start được khởi động. Vì bộ nhận chứa khối logic front-end lấy mẫu ở tần số bằng 16 lần tốc độ baud nên một bit sẽ được lấy mẫu 16 lần. Trong trường hợp này, khi có sự chuyển mức từ trạng thái nghỉ của đường truyền xuống mức “0”, thì tuần tự phát hiện bit start sẽ căn cứnếu trong ba lần lấy mẫu 8, 9 và 10 của bit start mà hai (hoặc ba) lần là mức logic “1”, thì bit start này bị lọai bỏ vàđược xem nhưmột tín hiệu nhiễu, bộ nhận bắt đầu tìm sự chuyển trạng thái từ 1-đến-0( 1 là trạng thái sau của bit stop chớ không phải là bit dữ liệu) tiếp theo.

Hình 2.38 Sơđồ khối nhận dữ liệu trên UART

Page 60: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 45

Chương 2: Tổng quan về vi điều khiển AVR

Hình 2.40 Cấu trúc thanh ghi dữ liệu I/O UART - UDR

Khi bit stop được đưa vào bộ nhận, thì hai hoặc ba trong 3 lần lấy mẫu phải là 1 đểnhận bit stop hợp lệ. Nếu trong ba lần lấy mẫu, mà nhiều hơn hai lần là mức logic “0”,thì cờ lỗi khung truyền FE (Framing Error) trong thanh ghi trạng thái UART( USR)được thiết lập lên 1 (bằng 1). Trước khi đọc dữ liệu từ thanh ghi dữ liệu UART (UDR), người sử dụng nên kiểm tra bit FE để phát hiện lỗi khung truyền.

Có hoặc không có giá trị bit stop được phát hiện là hợp lệ thì dữ liệu cũng sẽ được truyền đến UDR và cờ nhận hoàn thành RXC được thiết lập lên 1. Thanh ghi UDRthực chất là hai thanh ghi tách biệt về mặt vật lý, một cho dữ liệu truyền và một cho dữ liệu nhận. Khi thanh ghi UDR được đọc thì thanh ghi dữ liệu nhận (the Receive Data register) được truy cập, ngược lại, khi thanh ghi UDR được ghi thì thanh ghi dữ liệu phát (The transmit data register) được truy cập.

Nếu ta muốn truyền dữ liệu 9 bit, thì bit CHR9 trong thanh ghi điều khiển UART(UCR) phải được thiết lập lên 1, và bit RXB8 trong thanh ghi USR sẽ được nạp vàobit 9 trong thanh ghi dịch phát khi dữ liệu được truyền đến thanh ghi UDR. Bit dữ liệu thứ 9 này sẽ được nhận tại bit RXB8 trong thanh ghi USC.

2.8.3. Điều khiển UARTa. Thanh ghi dữ liệu I/O UART – UDR (UART I/O Data Register)

Thanh ghi UDR thực chất là hai thanh ghi riêng lẻ về mặt vật lý nhưng cùng chia sẻ địa chỉ I/O giống nhau. Khi viết đến thanh ghi này thì thanh ghi dữ liệu truyền UART được truy cập. Còn khi đọc thanh ghi này thì thanh ghi dữ liệu nhận UART được truy cập.

b. Thanh ghi trạng thái UART – USR (UART Status Register)

Đây là thanh ghi chỉ cho phép sự truy cập đọc, cung cấp thông tin về trạng thái UART.

Hình 2.39 Hoạt động của UART

Hình 2.41 Cấu trúc thanh ghi trạng thái UART - USR

Page 61: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 46

Chương 2: Tổng quan về vi điều khiển AVR

Bit 7 – RXC: UART nhận hoàn thành (UART Receive Complete)

Bit này được thiết lập lên 1 khi một kí tự nhận được truyền từ thanh ghi dịc bộ nhận đến UDR. Bit này được thiết lập lên 1 bất kể là có xảy ra lỗi khung truyền hay không. Khi bit RXCIE trong thanh ghi điều khiển UCR được thiết lập lên 1, ngắt do UART nhận hoàn thành sẽ được thi hành lúc RXC được thiết lập lên 1. RXC được xóa bằng cách đọc thanh ghi UDR. Khi chương trình “ngắt do nhận dữ liệu hoàn thành” được sử dụng, thì trong chương trình ngắt ta phải đọc giá trị của thanh ghi UDR để xoá RXC, nếu không thì ngay lập tức một ngắt mới sẽ xuất hiện sau khi chương trình ngắt nàykết thúc (gặp lệng reti).

Bit 6 – TXC: UART truyền hoàn thành (UART Transmit Complete)

Bit nàyđược thiết lập lên 1 khi toàn bộ dữ liệu trong thanh ghi dịch phát (bao gồm bit stop) được dịch ra ngoài và không có dữ liệu mới được viết đến UDR. Cờ này đặc biệt hữu ích trong truyền thông bán song công. Khi bit TXCIE được thiết lập lên 1, và bitTXC được thiết lập lên 1 thì nó sẽ là nguyên nhân khiến trình ngắt do UART truyền hoàn thànhđược thi hành. Cờ TXC sẽ được xoá bằng phần cứng khi chương trình ngắt tương ứng được thi hành. Mặc khác, cờ TXC cũng có thể được xoá về 0 bằng cách viết mức logic 1 lên nó.

Bit 5 – UDRE: Thanh ghi dữ liệu UART rỗng (UART Data Register Empty)

Bit này được thiết lập lên 1 khi một kí tự viết đến UDR được truyền đến thanh ghi dịch phát. Việc thiết lập bit này bằng 1 cho ta biết bộ phát sẵn sàng nhận một kí tự mới để phát đi.

Khi bit UDRIE trong thanh ghi UCR được thiết lập lên 1, thì chương trình ngắt do “thanh ghi dữ liệu UART rỗng” được thi hành. Chú ý, nếu ta sử dụng ngắt này trongchưong trình, thì trong chương trình ngắt ta phải xoá bit UDRE bằng cách viết dữ liệu đến UDR, nếu không một ngắt mới lại xuất hiện ngay sau khi chương trình ngắt nàykết thúc.

Bit 4 – FE: Lỗi khung truyền (Framing Error)

Bit này được thiết lập lên 1 nếu điều kiện lỗi khung truyền được phát hiện, chẳng hạn nhưbit stop của kí tự đến nhận được là 0.

Bit FE được xoá về 0 khi bit stop của dữ liệu nhận được là 1.

Bit 3 – OR: OverRun

Bit này được thiết lập lên 1 nếu điều kiện OverRun được phát hiện, chẳng hạn nhưkhimột kí tự đã “hiện diện” (có mặt) trong thanh ghi dữ liệu UART (UDR) mà kí tự nàychưa được đọc thì lại có một kí tự mới được dịch vào thanh ghi dịch nhận.

Page 62: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 47

Chương 2: Tổng quan về vi điều khiển AVR

Bit OR được xoá về 0 khi dữ liệu được nhận và truyền đến UDR.

Bits 2..0 – Res: Reserved Bits

Đây là những bit dữ trữ trong AT90S8535. Giá trị đọc được luôn là 0.

c. Thanh ghiđiều khiển UART – UCR (UART Control Register)

Bit 7 – RXCIE: Cho phép ngắt khi nhận hoàn thành (RX Complete Interrupt Enable)

Khi bit này được thiết lập lên 1 và bit RXC trong thanh ghi USR được thiết lập lên 1sẽ là nguyên nhân khiến cho chương trình ngắt do “nhận hoàn thành” được thi hành.Dĩnhiên là bit cho phép ngắt toàn cục cũng được cho phép trước đó.

Bit 6 – TXCIE: Cho phép ngắt khi truyền hoàn thành (TX Complete Interrupt Enable)

Khi bit nàyđược thiết lập lên 1 và bit TXC trong thanh ghi USR được thiết lập lên 1 sẽ là nguyên nhân khiến cho chương trình ngắt do “phát hoàn thành” được thi hành. Dĩnhiên là bit cho phép ngắt toàn cục cũng được cho phép trước đó.

Bit 5 – UDRIE: Cho phép ngắt khi thanh ghi dữ liệu UART rỗng (UART DataRegister Empty Interrupt Enable)

Khi bit này được thiết lập lên 1 và bit UDRE trong thanh ghi USR được thiết lập lên 1sẽ là nguyên nhân khiến cho chương trình do “thanh ghi dữ liệu UART rỗng” được thi hành. Dĩnhiên là bit ngắt toàn cục cũng được cho phép trước đó.

Bit 4 – RXEN: Cho phép bộ nhận (Receiver Enable)

Khi bit này được thiết lập lên 1 thì bộ nhận UART được cho phép. Khi bộ nhận bị cấm (không cho phép) thì các cờ trạng thái RXC, OR và FE không thể được thiết lập lên 1.Nếu nhưcác cờ trạng thái này được thiết lập lên 1 rồi, cho dù ta có xoá bit RXENxuống 0 thì cũng không làm cho các cờ trạng thái đó được xoá xuống 0.

Bit 3 – TXEN: Cho phép bộ truyền (Transmitter Enable)

Khi bit này được thiết lập thì bộ truyền UART được cho phép. Nếu ta cấm (không cho phép) bộ truyền trong lúc nó đang truyền một kí tự thì việc cấm này sẽ không có tác dụng cho đến khi kí tự nàyđược truyền hoàn thành.

Bit 2 – CHR9: Kí tự 9 bit (9 Bit Characters)

Hình 2.42 Cấu trúc thanh ghi điều khiển UART - UCR

Page 63: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 48

Chương 2: Tổng quan về vi điều khiển AVR

Khi bit này được thiết lập, thì những kí tựtruyền và nhận sẽ có chiều dài là 9 bit (trừ bit start và bit stop). Bit thứ 9 được đọc và viết bằng cách sử dụng các bit RXB8, TXB8 tương ứng trong thanh ghi UCR. Bit thứ chín này có thể được sử dụng hữu ích nhưmột bit kiểm tra chẳn/lẻ.

Bit 1 – RXB8: Nhận dữ liệu bit 8 (Receive Data Bit 8)

Khi bit CHR9 được thiết lập, thì RXB8 sẽ là bit dữ liệu thứ 9 của kí tự nhận.

Bit 0 – TXB8: Truyền dữ liệu bit 8 (Transmit Data Bit 8)

Khi bit CHR9 được thiết lập, TXB8 sẽ là bit dữ liệu thứ 9 của kí tự truyền.

Bộphát tốc độ Baud (Baud rate generator):

Bộ phát tốc độ baud là bộ chia tần số, và tốc độ baud tạo ra sẽ được tính theo công thức sau:

BAUD : Tốc độ baudFCK : tần số đồng hồ thạch anh.

UBRR : giá trị của thanh ghi tạo tốc độ baud cho bộ UART, giá trị UBRR nằm trong khoảng 0 – 255. Sau đây là bảng thiết lập thanh ghi UBRR nhằm tạo ra các tốc độ baud thông dụng ứng với các thạch anh khác nhau. Chú ý là những trường hợp sai số lớn hơn 1% thì ta không nên sử dụng.

)1(16

UBRRf

BAUD CK

Page 64: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 49

Chương 2: Tổng quan về vi điều khiển AVR

Bảng 2.14 Thiết lập giá trị tốc độ Baud của vi điều khiển.

d. Thanh ghi tạo tốc độ baud UBRR

Đây là thanh ghi 8 bit có thể đọc/viết và được sử dụng để tạo ra tốc độ baud cho UART nhưmiêu tả trước đó.

2.9. So sánh tương tựtrong AT90S8515

Bộ so sánh tương tựso sánh hai giá trị trên hai chân ngõ vào : ngõ vào dương PB2(AIN0) và ngõ vào âm PB3 (AIN1). Khi điện áp trên chân ngõ vào dương PB2(AIN0)

Hình 2.43 Cấu trúc thanh ghi tạo tốc độ Baund

Page 65: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 50

Chương 2: Tổng quan về vi điều khiển AVR

lớn hơn điện áp trên chân ngõ vào âm PB3(AIN1) thì ngõ ra của bộ so sánh analog ACO được thiết lập lên 1. Ngõ ra của bộso sánh analog có thể được thiết lập để kích (trigger) chức năng bắt sống ngõ vào của Timer/counter1. Hơn nữa, bộ so sánh analog có thể tạo ra một ngắt riêng lẻ dành riêng cho bộ so sánh analog. Người sử dụng có thể chọn điều kiện kích ngắt do chân ngõ ra. Ta có thể quy định hoặc khi có cạnh xuống, hoặc cạnh lên hoặc có sự thay đổi trạng thái của chân ngõ ra của bộ so sánh làcó thể tạo ra ngắt.

Thanh ghiđiều khiển và trạng thái ACSR

Bit 7 – ACD: Cấm bộ so sánh tương tự(Analog Comparator Disable)

Khi bit này được thiết lập lên 1, nguồn cung cấp cho bộ so sánh tương tựbị cắt (switched off). Bit này có thể được thiết lập lên 1 tại bất kì thời điểm nào để tắt bộ so sánh. Khi thay đổi bit ACD thì ngắt do bộ so sánh tương tựphải được cấm bằng cách xoá bit ACIE trong thanh ghi ACSR. Nếu không một ngắt có thể vận hành khi bit nàythayđổi.

Bit 6 – Res: Reserved Bit

Ta không sử dụng bit này. Giá trị nó luôn được xem là 0.

Hình 2.44 Sơđồ khối bộ so sánh Analog trong AT90S8515

Hình 2.45 Cấu trúc thanh ghi điều khiển bộ so sánh Analog

Page 66: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 51

Chương 2: Tổng quan về vi điều khiển AVR

Bit 5 – ACO: Ngõ ra bộ so sánh tương tự(Analog Comparator Output)ACO chính là ngõ ra bộ so sánh, giá trị cuả bit này phụ thuộc vào hai ngõ vào đầu cộng (+) và đầu trừ (-) của bộ so sánh.Bit 4 – ACI: Cờ ngắt bộ so sánh Analog (Analog Comparator Interrupt Flag)

Bit này được thiết lập lên 1 khi một ngõ ra của bộ so sánh có tác động kích chế độ ngắt. Chẳng hạn ta quy định khi có cạnh lên thì ngắt. Nhưvậy nếu có sự thay đổi mức logic ngõ ra từ 0 lên 1 thì cờ ngắt ACI này sẽ được thiết lập lên 1. Sự quy định tác dụng của sự thay đổi ngõ ra đến ngắt phụ thuộc vào ACIS1 và ACIS0. Khi cờ nàyđược thiết lập lên 1, chương trình ngắt do bộ so sánh tương tựsẽ được thi hành nếu nhưbit ACIE được thiết lập lên 1 và bit ngắt toàn cục I cũng được thiết lập lên 1.

Cờ ACI được xoá bằng phần cứng khi thi hành tại vecto xử lý ngắt tương ứng. Mặt khác, cờ ACI cũng có thể được xoá bằng phần mềm bằng cách viết mức logic 1 lên nó.

Bit 3 – ACIE: Analog Comparator Interrupt Enable(Cho phép ngắt do bộ so sánh analog)

Khi bit này được thiết lập lên 1 và bit I trong thanh ghi trạng thái được thiết lập lên 1,thì ngắt do bộ so sánh tương tựđược kích hoạt. Khi xoá ACIE thì ngắt này bị cấm.

Bit 2 – ACIC: Cho phép bắt sống ngõ vào từ ngõ ra bộ so sánh (Analog ComparatorInput Capture Enable)

Khi được thiết lập lên 1 bit này cho phép chức năng bắt sống ngõ vào của Timer/counter1 được kích (trigger) bởi bộ so sánh tương tự. Trong trường hợp này ngõra của bộ so sánh được kết nối trực tiếp đến bộ logic front-end của bộ bắt sống ngõvào, khiến bộ so sánh có thể sử dụng bộ loại nhiễu và thuộc tính chọn cạnh tác động của ngắt bắt sống ngõ vào Timer/counter1. ( Xem lại phần Timer/counter1 trong chế độ bắt sống ngõ vào)

Bits 1,0 – ACIS1, ACIS0: Chọn chế độ ngắt cho bộ so sánh tương tự(AnalogComparator Interrupt Mode Select)Những bit này quy định ảnh hưởng của ngõ ra bộ so sánh dẫn tới ngắt. Sự quy định được thể hiện trong trong bảng sau:

Bảng 2.15 Thiết lập thanh ghi điều khiển bộ so sánh Analog

2.10. Các Port I/O

Page 67: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 52

Chương 2: Tổng quan về vi điều khiển AVR

2.10.1. PortA

Thanh ghi dữ liệu Port A – PORTA

Thanh ghi trực tiếp Port A – DDRA :

Địa chỉ các chân ngõ vào Port A – PINA :

2.10.2. PortB

Chức năng các chân trên PortB được cho bởi bảng sau :

Bảng 2.16 Chức năng các chân trên Port B

Thanh ghi dữ liệu Port B – PORTB :

Hình 2.46 Cấu trúc thanh ghi dữ liệu Port A

Hình 2.47 Cấu trúc thanh ghi trực tiếp dữ liệu Port A

Hình 2.48 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port A

Hình 2.49 Cấu trúc thanh ghi dữ liệu Port B

Page 68: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 53

Chương 2: Tổng quan về vi điều khiển AVR

Thanh ghi trực tiếp Port B – DDRB :

Địa chỉ các chân ngõ vào Port B – PINB :

2.10.3. PortC

Thanh ghi dữ liệu Port C – PORTC :

Thanh ghi trực tiếp dữ liệu Port C – DDRC :

Địa chỉ các chân ngõ vào Port C – PINC :

2.10.4. PortD

Chức năng các chân trên PortD :

Bảng 2.17 Chức năng các chân trên Port D

Hình 2.50 Cấu trúc thanh ghi trực tiếp dữ liệu Port B

Hình 2.51 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port B

Hình 2.52Cấu trúc thanh ghi dữ liệu Port C

Hình 2.53 Cấu trúc thanh ghi trực tiếp dữ liệu Port C

Hình 2.54 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port C

Page 69: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 54

Chương 2: Tổng quan về vi điều khiển AVR

Thanh ghi dữ liệu Port D – PORTD :

Thanh ghi trực tiếp dữ liệu Port D – DDRD :

Địa chỉ các chân ngõ vào Port D – PIND :

Hình 2.55 Cấu trúc thanh ghi dữ liệu Port D

Hình 2.56 Cấu trúc thanh ghi trực tiếp dữ liệu Port D

Hình 2.57 Cấu trúc thanh ghi chân ngõ vào Port D

Page 70: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 55

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

CHƯƠNG 3

THIẾT KẾ PHẦN CỨNG THIẾT BỊ THỰC TẬP LẬP TRÌNH(VI ĐIỀU KHIỂN AVR)

3.1 Các yêu cầu của phần cứng thiết bị thực tập

Phần cứng : Bởi vì mục đích của sản phẩm là phục vụ cho việc đào tạo nên cấu hìnhphần cứng phải rõ ràng, dàn trải. Kích thước của bộ KIT được thể hiện rõ ràng, dễ nhận biết, một đặc điểm nữa là nó được phân thành các mô đun nhỏ và liên kết với mô đun trung tâm bằng BUS, điều này cũng giúp người học có thể nhìn thấy một cách trực quan, hiểu rõ và dễ dàng hơn về cách điều khiển phần cứng. Đồng thời việc tổ chức thành các mô đun nhỏ cũng tiện cho việc sữa chữa, thiết kế mở rộng và có thể dễ dàngtrong việc thương mại hóa sản phẩm sau này.

Các thành phần của thiết bị thực tập : thiết bị thực tập có đầy đủ các thành phần cơbản của một hệ vi điều khiển và các nguồn tài nguyên ngoại vi phong phú, cho phép người sử dụng có thể tự do phát triển các ứng dụng của mình :

+ Các khối vi điều khiển trung tâm+ Hiển thị Led đơn+ Hiển thị Led 7 đoạn+ Hiển thị Led ma trận+ Hiển thị LCD+ Hiển thị giải mã BIN – DEC/HEX+ THUMSWITCH điện tử+ Nút nhấn đơn, bàn phím tương tự, bàn phím ma trận+ Tạo tín hiệu tương tự, nguồn xung đồng hồ, thời gian thực+ Giao tiếp với ADC+ Giao tiếp với DAC+ Điều khiển động cơmột chiều, động cơbước+ Nhận và giải mã tín hiệu hồng ngoại

Tất cả các thành phần cơbản của thiết bị được thể hiện ở sơđồ khối bên dưới:

Page 71: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 56

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Khối M

CU

Khối hiển thị L

ED đơn

Khối quét hiển thị

LED7đaọn

Khối dịch và

chốt hiển thị L

ED 7 đaọn

Khối hiển thị L

CD

Khối chuyển đổi B

in –D

ec/Hex

Khối giải

mả B

CD

sang

7đoạn

Khối

nútnhấn đơn

Cổng giao tiếp

Khối hiển thị

LED

ma

trậnK

hối quét hiển thị L

ED m

a trận

Khối

điều khiển động cơ

DC

Khối

điều khiển động cơ

bước

Khối động cơ

DC

vàđộng

cơbước

Khối

đồng hồ thời

gianthực

Khối

nguồn xungđồng

Khối

điều khiển động cơbước sử dụng IC

Mắt

nhận tín

hiệu hồng ngoại

Khối

giải mã

tínhiệu

hồng ngoại

Khối A

DC

Khối D

AC

Khối

Dip

Switch

Khối bàn

phímm

atrận

Khối bàn

phímtương

tụK

hối Thumsw

itch điện tử

Khốitín

hiệu Analoge

Khối

nguồn phụK

hối Rơ

lebán

dẫn

Hình

3.1Sơ

đồ khối thiết bị thực tập vi điều khiển AV

R

Page 72: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 57

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.2. Hiển thị LED đơn3.2.1. Yêu cầu

Một trong những ứng dụng đơn giản để sử dụng 4 port của vi điều khiển là xuất dữ liệu. Khối hiển thị LED đơn được thiết kế gồm 24 led tròn 5mm sáng mức 1 nhằm hiển thị các giá trị nhị phân, mức logic, các trạng thái điều khiển của Vi điều khiển.

3.2.2. Thiết kế

Mỗi led đơn để sáng được đòi hỏi dòng qua led là 10mA, hiệu điện thế 2V.

Để điệm dòng cho LED có thể dùng Transistor nhưng để mạch nhỏ gọn nhóm dùng ICđể đệm dòng cho LED. Có nhiều loại IC để đệm dòng như: 74LS245, 74LS373,74LS573, 74HC245… Vì mạch chỉ cần tính năng đệm dòng và vi điều khiển ra mức điện áp TTL do đó chọn IC 74LS245 để đệm dòng cho Vi điều khiển. Các led sáng ở mức thấp nên ta chỉ quan tâm đến các thông số ngõ ra mức thấp của 74LS245 làIOL=25mA trên mỗi chân, VOL=0,25V.

Để đảm bảo ngõ vào không bị nhiễu khi bỏ trống ta dùng điện trở kéo lên nguồn, chọn điện trở kéo lên là 4,7kΩ.

Tính toán chọn điện trở hạn dòng cho led:

Ta có: 27510

)225,0(5)(mA

VVI

VVVRled

ledOLCCled . Chọn Rled=330Ω

Hình 3.2 Sơđồ chân IC 74LS245

Page 73: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 58

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.3 Sơđồ khối bên trong IC 74LS245

Page 74: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 59

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.4 Sơđồ nguyên lý khối hiển thị LED đơn

Page 75: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 60

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.3. Quét hiển thị LED 7 đoạn3.3.1. Yêu cầu

Hiện thị giá trị led 7 đoạn bằng phương pháp quét giải mã bằng phần cứng và phần mềm. Khối quét và hiển thị LED 7 đoạn được thế kế gồm 6 led 7 đoạn Anode chung được điều khiển dạng quét nhằm hiển thị các giá trị thập phân hoặc Hexa.

3.3.2. Thiết kế

Để cho Led sáng ở chếđộ đóng ngắt thì dòng qua led phải gấp 6 lần dòng cố định tức là mỗi led phải cấp dòng đóng ngắt lên đến 60mA. Để hạn chế led bị cháy do người học trong quá trình lập trình gây ra chọn dòngđóng ngắt qua led là 20 mA.

Có thể dùng Trasistor đệm dòng ở cực âm cho LED, nhưng mỗi LED 7 đoạn có 8 LED đơn để đảm bảo mạch gọn hơn và chỉ thực hiện tính năng đệm nhóm thực hiện đề tàichọn IC 74LS245 để đệm cho cực âm của LED. Do led sáng mưc thấp nên ta chỉ quan tâmđến các thông số mức thấp của 74LS245. VOL=0,25V, IOL=48mA trên mỗi chân.

Tính toán chọn transistor:

Để 7 đoạn và dấu chấm sáng thì dòng qua transistor phải là 244mA.

Dòng ngõ ra của vi điều khiển mức thấp là 20mA.

Phải chọn Trasistor có:IEmax=ICmax=8*20mA=160mAβ≥ICmax/IB=160/20= 8

Ta có thể chọn transistor là A1015. Có dòng định mức IC= 200mA, β=180

Tính toán và chọn điện trở Rled : khi transistor dẫn bảo hòa ta có VEC =0,2v và để LED sáng thì đòi hỏi điện áp rơi trên LED là 2v.

VCC = Vled + Iled*R led + VEC +VOL

VR=5-(0,2+2+0,25)=2,55V

a b c d e f g p

Hình 3.5 Sơđồ nguyên lý LED 7đoạn

a

b

c

d

e

f g

p

+

+ pcde

g f a b

Hình 3.6 Sơđồ chân LED 7 đoạn

Page 76: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 61

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Do đó: 5,12720

55,2mA

VIVR

led

Rled . Chọn Rled=150Ω

Tính toán và chọn điện trở RB: khi transistor dẫn bảo hoà VEB=0,8VVcc=VEB+IBRB

mAmAII CsatB 89,0

180160

min

Do đó: KmA

VI

VVVRB

OLBEccB 49,4

89,0)2,08,05( . Chọn RB=4,7kΩ

3.4. Dịch và chốt hiển thị LED 7 đoạn3.4.1. Yêu cầu

Hiện thị giá trị led 7 đoạn bằng phương pháp quét giải mã bằng phần mềm. Khối dịch và chốt hiển thị LED 7 đoạn được thế kế gồm 2 led 7 đoạn Anode chung được điều khiển dạng dịch chốt nhằm hiển thị các giá trị thập phân hoặc Hexa.

3.4.2 Thiết kế

Hình 3.7 Sơđồ nguyên lý khối quét hiển thị LED 7 đoạn

Page 77: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 62

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Để mỗi đoạn led sáng đòi hỏi dòng qua led là 10mA, hiệu điện thế trên led là 2V. Cóthể sử dụng các IC dịch chốt như: 6B595, 74LS595, 74LS299, 4094… Ở đây nhóm thực hiện đề tài sử dụng IC dịch chốt 74LS595 giao tiếp mức TTL với các thông số ngõ ra IOL=24mA, VOL=0,25V phù hợp với yêu cầu, được sử dụng phổ biến trên thị trường.Nguồn cung cấp cho led 5V.

Hình 3.8 Sơđồ chân IC 74LS595

Page 78: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 63

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Tính toán chọn điện trở hạn dòng cho led:

27510

)25,02(5)(mA

VVI

VVVRled

OLledCCled . Chọn Rled= 330Ω

Hình 3.9 Sơđồ nguyên lý trong IC 74LS595

Page 79: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 64

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.5. Giải mã BCD sang LED 7đoạn3.5.1. Yêu cầu

Giải mã BCD sang led 7 đoạn, kết nối với khối quét hiển thị LED 7 đoạn để hiển thị.

3.5.2. Thiết kế

Có rất nhiều IC giãi mã BCD sang 7 đoạn như: 74LS47, 74LS247, 4511, 4543…Chọn IC 74LS247 là IC giải mã BCD sang 7 đoạn.

Hình 3.11 Sơđồ chân IC 74LS247

Hình 3.10 Sơđồ nguyên lý khối dịch và chốt hiển thị LED 7 đoạn

Page 80: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 65

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.12 Sơđồ nguyên lý trong IC 74LS247

Page 81: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 66

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Bảng 3.1 Bảng sự thật IC74LS247.

3.6. Quét hiển thị LED ma trận3.6.1. Yêu cầu

Một trong những ứng dụng phổ biến trong quảng cáo là hiển thị thông tin lên led matrận. Cấu trúc led ma trận 8x8 nhưhình dưới

Theo hình vẽ thì 2 led trên 2 cột không thể sáng đồng thời. Một led sáng khi hàng của led=1 và cột của led=0. Giả sử ta cần sáng đồng thời tại hàng 1 cột 1 và hàng 2 cột 2 thì R1=1, C1=0 (sáng led tại hàng 1, cột 1) và R2=1, C2=0 (sáng led tại hàng 2 , cột 2). Lúc này do R1=1, C2=0 và R2=1, C1=0 nên ta cũng có các led tại hàng 1 cột 2 vàhàng 2 cột 1 sáng.

Hình 3.13 Sơđồ nguyên lý khối giải mã BCD sang LED 7 đoạn

Page 82: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 67

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Nghĩa là khi ta cho led tại hàng 1 cột 1 và hàng 2 cột 2 sáng đồng thời thì sẽ dẫn đến các led tại hàng 2 cột 1 và hàng 1 cột 2 cũng sáng. Do đó để thực hiện sáng ký tự trênmột ma trận ta phải dùng phương pháp quét.

Khối quét hiển thị LED ma trận gồm một led ma trận 8x8, 2 màu đỏ và xanh, nếu điều khiển cho 2 màu sáng cùng lúc thì sẽ được màu cam. Giúp người thực hành nắm được phương pháp điều khiển Led ma trận cơbản.

3.6.2. Thiết kế

Tính toán chọn Transistor đệm ở hàng led ma trận:

Mỗi hàng có 8 led đơn, mỗi led sáng đòi hỏi dòng qua led 20mA. Khi cả 2 màu ở một hàng sáng đòi hỏi dòng cung cấp là: Ihàng=20*16=320mA.

Chọn Transistor C2383 có dòng định mức 1A, β=120:

IC=IE=320mA

mAmAII CsatB 66,2

120320

min

=> kmA

VVI

VVRB

BECCB 54,1

66,28,05 . Chọn RB=2,2kΩ

Tính toán chọn IC đệm ở cột led ma trận:

Hình 3.14 Sơđồ chân LED ma trận

R0

R1

R2

R3

R4

R5

R6

R7

RC7

GC7

RC6

GC6

RC5

GC5

RC4

GC4

RC3

GC3

RC2

GC2

RC1

GC1

RC0

GC0

R ow

R ed & G reen C olum n

Hình 3.15 Sơđồ nguyên lý trong LED ma trận

Page 83: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 68

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.16 Sơđồ chân IC ULN2803 Hình 3.17 Sơđồ nguyên lý chân ngõ ra IC ULN0808

Mỗi cột màu của led ma trận có 8 led khi cả 8 led cùng sáng thì dòng qua led là:Icột=20*8= 160mA chọn IC đệm ở hàng là ULN2803 có dòng cung cấp định mức mỗi chân là 500mA.

Tính toán chọn điện trở hạng dòng cho led:Ta có mỗi cột mỗi màu có 8 led dòng tiêu thụ là 160mA điện áp nguồn cung cấp cho là5V xụt áp trên Led là 2V:

25,16160

)2,02,02(5)(mA

VVI

VVVVR

led

OLCEledCCled .

Chọn công suất điện trở 0,25W, ta có P=I2R => R=P/I2=0,25/0,162=9,7Ω. Chọn R=10Ω

Hình 3.18 Sơđồ nguyên lý khối quét hiển thị LED ma trận

Page 84: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 69

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.7. Dịch và chốt hiển thị LED ma trận3.7.1. Yêu cầu

Hiển thị thông tin trên led ma trận bằng phương pháp dịch chốt. Khối dịch và chốt hiển thị LED ma trận gồm 2 led ma trận 8x8 hai màu đỏ và xanh được điều khiển quét ở hàng và dịch chốt ở cột. Nhằm tăng khả năng mở rộng điều khiển nhiều led hiệu quả hơn phương pháp quét.

3.7.2. Thiết kế

Tính toán thiết kế lựa chọn các transistor đệm hàng:

Mỗi led sáng đòi hỏi phải có dòng cung cấp 10÷60mA và điện áp 2V để led sáng tốt hơn chọn dòng 20mA. Một hàng có 16 led nếu sáng hết 16 led cần 320mA nếu sáng cả 2 màu cùng lúc đòi hỏi cung cấp dòng trên một hàng lên đến 640mA. Chọn Transistor A1013 để đệm dòng ở hàng có dòng định mức IC=1A,β=120.

IC=IE=640mA

mAmAII CsatB 33,5

120640

min

=> kmA

VVI

VVRB

BECCB 72,1

33,58,012' .

Mà R’B=RP1//RB. Chọn RP1=2,2kΩ, =>RB=2kΩ. Chọn RB=2,2kΩ

Tính toán chọn IC đệm ở cột led ma trận:

Mỗi cột màu của led ma trận có 8 led khi cả 8 led cùng sáng thì dòng qua led là:Icột=30*8= 480mA chọn IC dịch chốt ở cột là 6B595 là thanh ghi dịch chốt 8 bit có dòng cung cấp mỗi chân là 500mA.Tính toán chọn điện trở hạng dòng cho led.

Page 85: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 70

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Ta có mỗi hàng 2 màu có 16 led dòng tiêu thụ là 960mA điện áp cung cấp cho Led là12V xụt áp trên led là 2V:

15640

)2,02,02(12)(mA

VVI

VVVVR

led

OLCEledCCled .

Hình 3.19 Sơđồ chân IC 6B595

Hình 3.20 Sơđồ chân IC 6B595

Page 86: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 71

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Chọn công suất điện trở 1W, ta có P=I2R => R=P/I2=1/0,642=2,44Ω. Chọn Rled=2,7Ω

Hình 3.21 Sơđồ nguyên lý khối dịch và chốt hiển thị LED ma trận

Page 87: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 72

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.8. Hiển thị LCD3.8.1. Yêu cầu

Hiển thị các thông tin chữ, số, hoặc dấu câu và các hình ảnh đồ hoạ trên LCD. Khối hiển thị LCD gồm 1 LCD 20x4 có thể thay đổi contrast bằng biến trở vi chỉnh.

3.8.2. Thiết kế

LCD dùng model TA2004, chọn biến trở chỉnh contrast là biến trở tinh chỉnh 5kΩ. Các ngõ dữ liệu và các ngõ điều khiển được đưa ra các pinhead.

Bảng 3.2 Chức năng các chân LCD

Page 88: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 73

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.9. Hiển thị giải mã BIN – DEC/HEX3.9.1. Yêu cầu

Chuyển đổi số nhị phân sang số thập phân và số Hexa phụ thuộc vào công tắc DEC/HEX, Ngoài ra còn hổ trợ mô phỏng nhận dữ liệu nhị phân nối tiếp hoặc song song phụ thuộc vào công tắc SERIAL/PARALLEL. Khối chuyển đổi số nhị phân sang thập phân và Hexa gồm 3 led 7 đoạn hiển thị giá trị thập phân hoặc Hexa. Nhằm hổ trợ cho những thực hành cơbản, người thực hành có thể dễ dàng quan sát kết quả số thập phân hoặc số Hexa khi đưa ngõ vào là số nhị phân.

3.9.2. Thiết kế

Chọn Vi điều khiển AT90S8515 điều khiển quét hiển thị LED 7 đoạn.Tính toán chọn transistor:

Để 7 đoạn sáng thì dòng qua transistor phải là 196mA.

IEmax=ICmax=7*20mA=140mA

Ta chọn transistor này là A1015. Có dong định mức Ic=200mA, β=180.

Tính toán và chọn điện trở Rled : khi transistor dẫn bảo hòa ta có VEC =0,2v và để LED sáng thì đòi hỏi điện áp rơi trên LED là 2v.

VCC = Vled + Iled*R led + VEC +VOL

VR=5-(0,2+2+0,35)=2,45V

Hình 3.22 Sơđồ nguyên lý khối hiển thị LCD

Page 89: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 74

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Do đó: 5,12220

45,2mA

VIVR

led

Rled . Chọn Rled=150Ω

Tính toán và chọn điện trở RB: khi transistor dẫn bảo hoà VEB=0,8VVcc=VEB+IBRB

mAmAII CsatB 77,0

180140

min

Do đó: KmA

VI

VVVRB

OLBEccB 8,4

77,0)5,08,05( . Chọn RB=4,7kΩ

Hình 3.23 Sơđồ nguyên lý khối chuyển đổi nhị phân sang thập phân và Hexa

Page 90: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 75

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.10. THUMSWITCH điện tử3.10.1. Yêu cầu

Cung cấp ngõ ra số Hexa 4bit được thay đổi tăng giảm bằng 2 nút UP và DOWN.Khối THUMSWITCH điện tửgồm một led 7 đoạn hiển thị số Hexa ở ngõ ra. Nhằm hỗ trợ các bài thí nghiệm cần sử dụng số Hexa.

3.10.2. Thiết kếChọn vi điều khiển AT89S2051 điều khiển hiển thị LED 7 đoạn và ngõ ra tín hiệu số Hexa.Tính toán chọn điện trở hạng dòng cho led:

45010

5,05mA

VVI

VVRled

OLCCled . Chọn Rled= 470Ω

3.11. DIPSWITCH3.11.1. Yêu cầu

Khối DIP SWITCH có 1 dip switch 8 bit. Cung cấp mức logic 0,1 đểgiả lập các ngõvào nhị phân.

Hình 3.24 Sơđồ nguyên lý khối Thumswitch điện tử

Page 91: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 76

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.25 Sơđồ nguyên lý khối DipSwitch

3.11.2. Thiết kế

Chọn công tắc DIP 8 bit, chọn điện trở kéo xuống là 4,7kΩ ở trạng thái OFF có mức logic là 0 và ở trạng thái ON có mức logic là 1.

3.12. Nút nhấn đơn3.12.1. Yêu cầu

Khối nút nhấn đơn gồm có 6 nút nhấn. trong đó có 2 nút nhấn chống dội bằng phần cứng để hổ trợ cho các bài thí nghiệm cần sử dụng nút nhấn chống dội bằng phần cứng. Và 4 nút nhấn không chống dội hổ trợ cho các bài thí nghiệm sử dụng nút nhấn có chống dội bằng phần mềm. Cung cấp tín hiệu điều khiển cho hệ thống.

3.12.2. Thiết kế

Mạch có 2 nút được chống dội bằng phần cứng do đó chọn IC chống dội là 74LS221có 2 mạch mono bên trong.

Bảng 3.3 Bảng sự thật IC 74LS221

Page 92: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 77

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Tính toán chọn giá trị điện trở và tụ chống dội:

Thời gian chống dội khoảng 20ms÷1s

=1,1.R.C=500ms

Chọn C = 47uF =>

kR 6,910.47.1,1

10.5006

3

Chọn R=10kΩ

Hình 3.26 Sơđồ chân IC 74LS221

Page 93: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 78

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.27 Sơđồ nguyên lý khối nút nhấn đơn

3.13. Bàn phím tương tự3.13.1. Yêu cầu

Ban đầu khi chưa nhấn ngõ ra có một mức điện áp nhất định. Khối bàn phím tương tựgồm 5 nút nhấn. Khi nhấn các nút khác nhau sẽ cung cấp các mức điện áp khác nhau ở ngõ ra. Kết nối vối khối ADC tạo ra giá trị nút nhấn dạng số nhị phân 8 bit. Cung cấp tín hiệu điều khiển cho hệ thống.

3.13.2. Thiết kế

Chọn R6=1kΩ, R1=100kΩ, R2=330kΩ, R3=680kΩ, R4=1kΩ, R5=2,2kΩ

61

1B1V

RRR

VCC 0,45V

Page 94: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 79

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

62

2B2V

RRRVCC 1,24V

63

3B3V

RRRVCC 2V

64

4B4V

RRRVCC 2,5V

65

5B5V

RRRVCC 3,4V

3.14. Bàn phím ma trận3.14.1. Yêu cầu

Khối bàn phím ma trận gồm 16 phím tương đương với 16 ký tự số Hexa. Dùng để nhập số liệu ( thập phân, Hexa), lệnh điều khiển cho hệ thống.

3.14.2. Thiết kế

Bàn phím ma trận 4x4 được kết nối hàng và cột dạng ma trận đưa ra các pinhead.

Hình 3.28 Sơđồ nguyên lý khối phím tương tự

Page 95: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 80

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.15. Tín hiệu tương tự3.15.1. Yêu cầu

Khối tín hiệu tương tựgồm có 8 biến trở, trong đó có 4 ngõ ra 0V÷+12V và 4 ngõ ra-12V÷+12V. Cung cấp các giá trị ngõ ra tương tựcho hệ thống.

3.15.2. Thiết kế

Chọn biến trở loại biến trở Volume 50KΩ, 4 biến trở RV1…RV4 kết nối với nguồn 12V để cung cấp ngõ ra từ 0V÷12V. Biến trở RV5…RV8 kết nối với nguồn ±12V để cung cấp ngõ ra từ -12V÷+12V.

Hình 3.29 Sơđồ nguyên lý khối phím ma trận

Page 96: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 81

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.16. Nguồn xung đồng hồ3.16.1. Yêu cầu

Khối nguồn xung đồng hồcung cấp 7 giá trị xung là 1Hz, 10Hz, 100Hz, 1kHz, 10kHz,100kHz, 1MHz. Tần số xung ngõ ra được thay đỗi phụ thuộc vào nút nhấn FREQUENCY SELECT. Cung cấp xung cho các thí nghiệm cần xung đồng hồ.

3.16.2. Thiết kế

Chọn vi điều khiển AT89C2051 tạo nguồn xng dao động đồng hồ với 7 cấp tần số 1Hz, 10Hz, 100Hz, 1kHz, 10kHz, 100kHz, 1MHz hiển thị tương ứng 7 LED đơn.Chọn điện trở hạn dòng cho led là 470Ω.

Hình 3.30 Sơđồ nguyên lý khối tín hiệu tương tự

Page 97: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 82

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.17. Đồng hồ thời gian thực3.17.1. Yêu cầu

Khối đồng hồ thời gian thực chứa một IC đồng hồ thời gian thực. Cung cấp cho các thí nghiệm cần đọc thời gian thực.

3.17.2. Thiết kế

Chọn IC thời gian thực là DS12C887 là IC được dùng phổ biến trên thị trường có 8ngõ vào ra song song và các ngõ điều khiển được nối với pinhead.

Hình 2.31 Sơđồ nguyên lý khối nguồn xung đồng hồ

Hình 3.32 Sơđồ chân IC DS12C887

Page 98: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 83

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.18. Mắt nhận hồng ngoại3.18.1. Yêu cầu

Khối mắt nhận hồng ngoại gồm một mắt nhận hồng ngoại có thể nhận tín hiệu hồng ngoài từ remote TV hoặc remote tự chế giải mả bằng phần mềm hoặc phần cứng.

3.18.2. Thiết kế

Chọn mắt nhận hồng ngoài KEC-168 có sẵn mạch khuếch đại tích hợp bên trong.

Hình 3.33 Sơđồ nguyên lý khối đồng hồ thời gian thực

Hình 3.34 Sơđồnguyên lý khối mắt nhận hồng ngoại

Page 99: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 84

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.36 Sơđồ nguyên lý khối giải mã tín hiệu hồng ngoại

3.19. Giải mã tín hiệu hồng ngoại3.19.1. Yêu cầu

Khối giải mã tín hiệu hồng ngoại có một ngõ vào từ khối mắt nhận hồng ngoại. Giải mã tín hiệu hồng ngoại từ remote TV hoặc remote tự chế.

3.19.2. Thiết kế

Chọn IC BL9149 giải mã tín hiệu hồng ngoại. Ở ngõ vào được khuếch đại đệm.

Chọn transistor C1815 để khuếch đại điệm.

Có thể thiết lập mã nhận bằng công tắc DIP.

Hình 3.35 Sơđồ chân IC BL9149

Page 100: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 85

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.20. Chuyển đổi tín hiệu tương tự sang tín hiệu số3.20.1. Yêu cầu

Khối chuyển đổi tín hiệu tương tự sang tín hiệu sốcó 8 ngõ vào analoge và 1 ngõ radigital 8 bit. Nhận ngõ vào Analog 0V÷5V chuyển đổi thành tín hiệu Digital 8 bit, có thể thay đổi điện áp tham chiếu.

3.20.2. Thiết kế

Có thể chọn IC chuyển đổi ADC0808 hoặc ADC0809 có 8 ngõ vào tương tự, một ngõra số. Ở đây nhóm chọn IC chuyển đổi tín hiệu tương tự sang tín hiệu số ADC0808

Tính toán thiết kế khối dao động cho ADC:

Hình 3.37 Sơđồ chân IC ADC0808

Page 101: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 86

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Tần số dao động cung cấp cho ADC theo datasheet của IC ADC0808 là 640kHz-1200kHz

kHzCR

fclock 640.1,1

1 . Chọn C=100pF

=> kCf

Rclock

2,1410.10.640.1,1

1.1.1

1103 . Chọn R=12kΩ

Hình 3.38 Sơđồ khối trong IC DAC0808

Page 102: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 87

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.21. Chuyển đổi tín hiệu số sang tín hiệu tương tự3.21.1. Yêu cầu

Khối chuyển đổi tín hiệu số sang tín hiệu tương tựgồm 2 bộ chuyển đổi Digital sang Analoge, dạng ngõ ra là dạng điện áp, có thể thay đổi điện áp tham chiếu.

3.21.2. Thiết kế

Chọn IC chuyển đổi tín hiệu số sang tín hiệu tương tự DAC0808.

Hình 3.39 Sơđồ nguyên lý khối chuyển đổi tín hiệu tương tự sang tín hiệu số

Page 103: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 88

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

AC 0808 là bộ biến đổi A/D tạo ra dòng điện analog có trị số tuỳ theo giá trị ngõ vàodigital và dòng điện chuẩn ngõ vào. Dòng điện chuẩn có thể có trị số thay đổi từ 0 ÷4mA. Dòng 2 ngõ vào toàn thang (IFS-Full Scale) là một hàm tuyến tính của dòngchuẩn và cho bởi:

REFFS II256255 với K

RVVI REF

REF 1

Dòng điện ra: )2561286416842

( 8764321 AAAAAAAKIo

Để chuyển dòng ngõ ra thành áp ta dùng Op-Amp kết nối nhưsơđồ mạch. Khi đó áp ngõ ra được tính:

Vo=Io.R2=Io.5,1.103(V)

Hình 3.40 Sơđồ chân DAC0808

Page 104: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 89

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.41 Sơđồ nguyên lý mạch chuyển đổi từ số sang tương tự

Page 105: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 90

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.22. Điều khiển động cơDC3.22.1. Yêu cầu

Khối điều khiển động cơDC điều khiển đảo chiều và điều khiển được tốc độ động cơDC.

3.22.2. Thiết kế

Chọn Relay có điện áp định mức 12V dòng chịu dựng trên tiếp điểm 5A. Dòng cungcấp cho relay là 100mA hiệu điện thế là 12 V. Chọn transistor C1815 có dòng định mức 200mA.

Dòng cung cấp cho động cơ500mA÷1A. Chọn FET điều khiển tốc độ động cơlàIRF640 có dòng định mức 16A. Chọn 2 transistor C1815 và A1015 để kích cho FET xung điều chế sẽ được đưa vào cực B của 2 transistor này.

Chọn các diode bảo vệ transistor C1815 đóng ngắt relay và bảo vệ FET IRF640 là4007.

3.23. Điều khiển động cơbước3.23.1. Yêu cầu

Khối điều khiển động cơbước có 4 ngõ vào điều khiển ABCD tương đương với 4 ngõvào cuộn dây của động cơbước. Nhằm thực hiện các thí nghiệm điều khiển động cơbước trực tiếp.

Hình 3.42 Sơđồ nguyên lý mạch điều khiển động cơmột chiều

Page 106: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 91

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.23.2. Thiết kế

Chọn ULN2803 để đệm điều khiển các transisror, có dòng cung cấp tối đa 500mA.

Động cơbước có dòng tiêu thụ 500mA÷1A. Chọn transistor điều khiển động cơbướccó ICmax =1A, và β≥IC/IB=2 . Chọn transistor là TIP122 có dòng định mức lên đến 5A, β=250.

IC=IE=1A

IB=IC/β= 1/250=4mA

k8,24mA

0,8)V-(12I

)V-(VccR'

B

BEB . Chọn RP2 1kΩ, RB=2,2kΩ.

3.24. Điều khiển động cơbước dùng IC3.24.1. Yêu cầu

Khối điều khiển động cơbước dùng IC sử dụng các IC chuyên dùng để điều khiển động cơbước. Nhằm thực hiện các thí nghiệm điều khiển động cơbước bằng các ICchuyên dùng.

3.24.2. Thiết kế

Chọn IC L297, L298 điều khiển động cơbước.

Hình 3.43 Sơđồ nguyên lý mạch điều khiển động cơbước

Page 107: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 92

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Hình 3.44 Sơđồ chân IC L297 Hình 3.45 Sơđồ chân IC L298

3.25. Rơle bán dẫn3.25.1. Yêu cầu

Điều khiển 2 tải công suất, dòng công suất tải tối đa 12 A, điện áp định mức 220VAC, cách ly với khối điều khiển.

3.25.2. Thiết kế

Chọn OPTO triac MOC2030 là IC giao tiếp cách ly giữa khối điều khiền và khối công suất.

Hình 3.46 Sơđồ nguyên lý điều khiển động cơbước sử dụng IC L297, IC L298

Page 108: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 93

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Điện áp cung cấp bên điều khiển là 5V. chọn điện trở hạn dòng cho OPTO là 470Ω, chọn Transistor A1015 điều khiển OPTO và có điện trở cực B là 4,7kΩ

Hình 3.47 Sơđồ chân và cấu trúc bên trong của IC MOC3020

Hình 3.48 Sơđồ nguyên lý khối Relay bán dẫn

Page 109: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 94

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.26. MCU3.26.1. Yêu cầu

Khối MCU được thiết kế tương thích các dòng vi điều khiển AVR, 8051, PIC có thể chọn được tần số thạch anh cho từng dòng vi điều khiển, khi nhấn nút CRYSTAL SELECT và được hiển thị trên các led tương ứng. Giao tiếp với máy tính qua cổng com, ngoài ra còn có cổng SPI để kết nối với mạch nạp.

3.26.2. Thiết kế

Tính toán thiết kế mạch chống dội cho nút nhấn CRYSTAL SELECT:

Chọn IC 555 làm mạch mono, thời gian chống dội 500ms=1,1.R.C=500msChọn C = 100uF =>

kR 5,410.100.1,1

10.5006

3

Chọn R=4,7kΩ

Chọn IC 4066 là công tắc điện tử chọn thạch anh được điều khiển bởi IC ghi dịch 4017

Hình 3.50 Sơđồ chân IC CD4066BC Hình 3.51 Sơđồ ngõ nguyên lý các cổng IC CD4066BC

Hình 3.49 Sơđồ kết nối LM555

Page 110: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 95

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

Bảng 3.4 Bảng chức năng IC HEF4017BC

Chọn các transistor C1815 điều khiển led hiển thị và điện trở hạng dòng cho led là330Ω

Chọn IC MAX232 là IC giao tiếp RS-232 giữa vi điều khiển và máy tính.

Hình 3.53 Sơđồ chân IC MAX232

Hình 3.52 Sơđồ chân IC HEF4017B

Page 111: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 96

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.27. Các MCU ngoài3.27.1.Yêu cầu

Các khối MCU ngoài được thiết kế có các chân nguồn, GND, port, các chân dao động thạch anh tương thích với Khối MCU trên KIT, bao gồm đế cắm các vi điều khiển họ AVR, 8051, và mạch Reset.

3.27.2. Thiết kế

i/ Khối MCU cho các Vi điều khiền: Atmega16/L, Atmega32/L, Atmega164P/V, Atmega324P/V, Atmega644P/V, Atmega 163/L, Atmega8535/L, Atmega323/L,AT90S/LS4434, AT90S/LS8535.

Tính toán thiết kế mạch Reset:

Khi cấp nguồn tụ C1 coi nhưnối tắt. Tại thời điểm đó VRST=GND chân Reset Vi điều khiển tích cực Vi điều khiển được tự động Reset. Sau đó tụ C1 nạp dần đến giá trị Vcc

Hình 3.54 Sơđồ nguyên lý khối MCU

Page 112: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 97

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

tụ coi nhưhở mạch dẫn đến VRST=Vcc, Vi điều khiển bắt đầu làm việc theo xung đồng hồ.

Thời gian tồn tại xung Reset từ 10ms÷30ms:

Tnap=RC.1,1=10ms. Chọn tụ C = 1µF

=>

kR 1010.11.1,1

10.106

3

ii/ Khối MCU cho các vi điều khiển: Atmega161/L, Atmega162/V, Atmega8515/L, AT90S4414, AT90S8515.

Tính toán thiết kế mạch Reset:Khi cấp nguồn tụ C1 coi nhưnối tắt. Tại thời điểm đó VRST=GND chân Reset Vi điều khiển tích cực Vi điều khiển được tự động Reset. Sau đó tụ C1 nạp dần đến giá trị Vcc tụ coi nhưhở mạch dẫn đến VRST=Vcc, Vi điều khiển bắt đầu làm việc theo xung đồng hồ.

Thời gian tồn tại xung Reset từ 10ms÷30ms:

Tnap=RC.1,1=10ms. Chọn tụ C = 1µF =>

kR 1010.11.1,1

10.106

3

Hình 3.56 Sơđồ nguyên lý khối MCU ngoài 1

Page 113: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 98

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

iii/ Khối MCU cho các vi điều khiển: Atmega48/V, Atmega88/V. Atmega168/V, Atmega8/L, AT90S/LS2333, AT90S/LS4433.

Tính toán thiết kế mạch Reset:

Khi cấp nguồn tụ C1 coi nhưnối tắt. Tại thời điểm đó VRST=GND chân Reset Vi điều khiển tích cực Vi điều khiển được tự động Reset. Sau đó tụ C1 nạp dần đến giá trị Vcc tụ coi nhưhở mạch dẫn đến VRST=Vcc, Vi điều khiển bắt đầu làm việc theo xung đồng hồ.

Thời gian tồn tại xung Reset từ 10ms÷30ms:

Tnap=RC.1,1=10ms. Chọn tụ C = 1µF

=>

kR 1010.11.1,1

10.106

3

s

Hình 3.57 Sơđồ nguyên lý khối MCU ngoài 2

Page 114: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 99

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

3.28. Nguồn3.28.1. Yêu cầu

Khối nguồn được thiết kế gồm 3 mức điện áp +12V, +5V, -12V. Có dòng đủ lớn để cung cấp cho toàn KIT và các thiết bị thí nghiệm phụ bên ngoài.

3.28.2. Thiết kế

Tính toán thiết kế nguồn +5V:Dòng tiêu thụ tối đa của các led trên các khối sử dụng nguồn 5V gồm có:

- Khối hiển thị LED đơn 240mA- Khối quét hiển thị LED 7 đoạn 224mA- Khối dịch và chốt hiển thị LED 7 đoạn 160mA- Khối chuyển đổi nhị phân sang thập phân và Hexa 196mA- Khối thumswitch điện tử 70mA- Khối nguồn xung đồng hồ10mA- Khối quét hiển thị LED ma trận

Vậy tổng dòng điện cung cầp cho các led ở các khối là 900mA ngoài ra còn phải cấp nguồn hầu hết các IC trong KIT, vi điều khiển và nguồn phụ bên ngoài do đó chọn ICổn áp +5VDC là MC78H05 có dòng điện cung cấp tối đa 5A.

Tính toán thiết kế nguồn +12V:Dòng tiêu thụ tối đa của các led, và động cơ trên các khối sử dụng nguồn 12V gồm có:

Hình 3.58 Sơđồ nguyên lý khối MCU ngoài 3

Page 115: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 100

Chương 3: Thiết kế phần cứng thiết bị thực tập lập trình (vi điều khiển AVR)

- Khối dịch và chốt hiển thị LED ma trận 896mA- Động cơDC 500mA, 12V- Động cơbước 500mA,12V

Vậy tổng dòng điện cung cấp cho cho led ở 2 khối là 1,344A, ngoài ra còn phải cấp nguồn cho 2 động cơlà 1A, các IC ở một số khối và nguồn phụ bên ngoài do đó chọn IC ổn áp +12V là MC74H12 có dòng cung cấp cực đại 5A.

Tính toán thiết kế nguồn -12V:

Nguồn -12V cung cấp cho IC DAC0808 và các Op-Amp TL082 làm việc nên khôngcần dòng cung cấp lớn do đó chọn IC ổn áp -12V là LM79M12 có dòng cung cấp tối đa 0,5AChọn diode cầu 10A, tụ lọc nguồn 1000µF.

Hình 3.55 Sơđồ nguyên lý khối nguốn

Page 116: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 101

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

CHƯƠNG 4

GIỚI THIỆU TRÌNH BIÊN DỊCH CODEVISIONAVR

4.1. Giới thiệu sơlược về trình biên dịch CodeVisionAVR

CodeVisionAVR là một trong số trình biên dịch cho vi điểu khiển AVR. Không giống nhưchương trình hỗ trợ khác cho AVR, CodeViSionAVR được viết đặc biệt dành chovi điều khiển AVR. Nó cung cấp những mã lệnh chính xác và rõ ràng, sử dụng các đặc điểm của vi điều khiển mà không hoang phí bộ nhớ của nó. So sánh với các trình biêndịch khác, các lệnh của nó thì ngắn hơn và hiệu quả hơn cho vi điều khiển AVR. Cuối cùng là CodeVisionAVR có mã lệnh chùng và thanh công cụ riêng cho các tập tin.

Trong phần này nhóm thực hiện đề tài sẽ chỉ cách tạo một tập tin (project), biên dịch một tập tin ra tập tin có đuôi Hex cũng nhưnạp chương trình cho cho thiết bị đầu ra

4.2. Cách soạn thảo một tập tin trên CodeVision AVR4.2.1. Tạo một Soure mới

Để tạo một Source mới ta vào trình đơn File rồi chọn New

Hoặc nhấn nút có biểu tượng trên thanh công cụ

Sauđó một cửa sổ sẽ được hiện ra :

Page 117: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 102

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Chọn Source rồi click OK

Một cửa sổ để viết chương trình sẽ xuất hiện cho phép đánh lệnh vào

Sau khi biên tập xong chươn trình muốn lưu lại chương trình ta vào trình đơn File rồichọn Save as…

Một cửa sổ sẽ xuất hiện

Page 118: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 103

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Cho phép đánh tên tập tin và chỗ lưu tập tin

Sau khi đã tạo tập tin nguồn xong ta phải tạo một tin project có tập tin nguồn kèm theokhiđó chương trình mới biên dịch được

4.2.2. Tạo một Project mới

Để tạo một Project mới ta vào trình đơn File rồi chọn New

Hoặc nhấn nút có biểu tượng trên thanh công cụ

Sauđó một cửa sổ sẽ được hiện ra :

Chọn Project rồi click OK một cửa sổ sẽ xuất hiện

Nếu chọn nút Yes thì một cửa sổ sẽ xuất hiện

Page 119: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 104

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Cho phép bạn chọn chức năng mà AVR chip mà bạn sử dụng có được CodeVision hỗ trợ

Nếu bạn chọn No thì một cửa sổ sẽ xuất hiện

Bạn đánh tên và đường dẫn của tập tin Project vào rồi click Save

Sauđó một cửa sổ sẽ xuất hiện

Page 120: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 105

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Click Add rồi chọn tập tin nguồn tương ứng cho tập tin Project

Sauđó click Open và OK sẽ hoàn tất việc tạo một tập tin Project

Page 121: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 106

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

4.3. Biên dịch một tập tin trên C CodeVisionĐể biên dịch một tập tin trên Code ta vào trìnhđơn Project rồi chọn Compile hoặc làphím F9 trên bàn phím

Ta cũng có thể sử dụng nút để có thể biên dịch

Khi ta sử dụng lệnh này this dùng để dịch mã nguồn. Ta sẽ nhận được một thông báo cho biết chương trình của ta đã dịch thành công mà không có lỗi và cảnh báo. Thông báo cũng cho ta biết dung lượng bộ nhớ RAM đã được sử dụng là bao nhiêu, kíchthước của ngăn xếp và có bao nhiêu không gian bộ nhớ được dùng cho các biến. Trìnhdịch cũng tạo ra hợp ngữ và lưu trên đĩa.

Page 122: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 107

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Ta cũng có thể biên dịch chương trình bằng cách vào trình đơn Project rồi chọn Make hay tổ hợp phím Shift + F9

Khi ta chọn lệnh này this trình dịch sẽ hoạt động và tạo ra tệp assembly, đồng thời sau đó cũng gọi một trình dịch hợp ngữ một tệp mã đối tượng theo định dạng tệp hex của intel hoặc theo một vài định dạng nào đó.

Page 123: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 108

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

4.4. Nạp một chương trình cho vi điều khiển AVR

Trên màng hình ta nhấn vào biểu tượng để mở hộp thoại nạp chương trình chovi điều khiển

Chúng ta cũng có thể mở hộp thoại bằng cách vào trình đơn Tools rồi chọn Chip Programmer

Ngoài ra chúng ta cũng có thể nhấn tổ hợp phím Shift + F4, một hộp thoại nhưsau sẽ xuất hiện

Page 124: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 109

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Tại ô lựa chọn Chip cho phép chọn chip đúng để nạp chương trình

Khi lựa chọn chip thì tại vị trí FLASH, EEPROM cho ta biết được địa chỉ vùng nhớ trên FLASH và EEPROM

Trên cửa sổ này ta vào trình đơn Program có các sự lựa chọn nhưsau :

Page 125: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 110

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Erase Chip : có tác dụng xóa dữ liệu đã nạp trên Chip

Blank Check : kiểm tra dữ liệu trống trên Chip

FLASH : nạp chương trình cho AVR vào bộ nhớ FLASH

EEPROM : nạp chương trình cho AVR vào bộ nhớ EEPROM, khi ta lựa chọn mục này thị một cửa sổ sẽ xuất hiện

Nếu ta có lập trình cho EEPROM thì ta chọn Yes và chọn file để nạp cho AVR Chip

Nếu ta không lập trình cho EEPROM thì ta chọn No, chương trình sẽ tiếp tục nạp dữ liệu cho AVR

Chọn Cancel để thoát khỏi việc nạp cho EEPROM

Lock Bits : dùng để nạp và khóa các bits được yêu cầu trong FLASH, nó liên quanđến việc lựa chọn ở mục Chip Programming Options

Page 126: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 111

Chương 4: Giới thiệu trình biên dịch CodeVisionAVR

Fuse Bit(s) : nạp chương trình cho các Fuse Bit(s)

All : sự lựa chọn này cho phép chọn tất cả cho việc nạp chương trình vào trong AVRchip

Page 127: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 112

Chương 5: Xây dựng một số chương trình mẫu

CHƯƠNG 5

XÂY DỰNG MỘT SỐ CHƯƠNG TRÌNH MẪU

5.1 Led đơn5.1.1 Yêu cầu

Viết chương trìnhđiều khiển led đơn sáng dần tắt dần 24 led hiển thị trên PORTA,PORTC, PORTD.

5.1.2 Sơđồ kết nối

MCU KHỐI LED ĐƠN

Page 128: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 113

Chương 5: Xây dựng một số chương trình mẫu

5.1.3 Sơđồ giải thuật

Begin

T>24

Đ

S

S

Đ

Khai báobiến và port

Tăng lần lượt PORTA, C, D

Tăng biến T

T=0

Giảm lần lượt PORTA, C, D

Giảm biến T

5.1.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

void main()unsigned int I,r;unsigned int t;unsigned int j;DDRA=0xff;DDRC=0xff;

Page 129: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 114

Chương 5: Xây dựng một số chương trình mẫu

DDRD=0xff;while (1)if (PORTD.7==0)if (t<8)t++;j++;PORTA=j;j=j<<1;delay_ms(200);else if (t<16)t++;i++;PORTC=I;i=i<<1;delay_ms(200);else if (t<24)t++;r++;PORTD=r;r=r<<1;delay_ms(200);else if (PORTD.7==1)if (t>16)t--;PORTA=j;j=j<<1;delay_ms(200);else if (t>8)t--;PORTC=I;i=i<<1;delay_ms(200);

Page 130: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 115

Chương 5: Xây dựng một số chương trình mẫu

else if (t>0)t--;PORTD=r;r=r<<1;delay_ms(200);

5.2 Quét led 7 đoạn5.2.1 Yêu cầu

Viết chương trìnhđiều khiển led 7 đoạn đếm từ 000 đến 999 hiển thị trên 3 led 7 đoạn qua PORTA và PORTB

5.2.2 Sơđồ kết nối

MCU

KHỐI QUÉT HIỂN THỊ LED 7 ĐOẠN

Page 131: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 116

Chương 5: Xây dựng một số chương trình mẫu

5.2.3 Sơđồ giải thuật

Begin

Khai báo biến và port

Tăng biến đơn vị

Xuất mã hiển thị ra led 1Xuất mã quét chọn led

Đơn vị=10

Tăng biến chụcĐơn vị = 0

Xuất mã hiển thị ra led 2Xuất mã quét chọn led

Chục = 10

Tăng biến trămChục = 0

Xuất mã hiển thị ra led 2Xuất mã quét chọn led

Trăm = 10

Đ

S

Đ

S

Đ

Đ

S

Trăm = 0

Page 132: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 117

Chương 5: Xây dựng một số chương trình mẫu

5.2.4 Chương trình

#include<MEGA8515.h>#include<delay.h>char num[ ]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void main()unsigned char cnt_dv;unsigned char cnt_c;unsigned char cnt_t;unsigned int I;DDRB.0=1;DDRB.1=1;DDRB.2=1;DDRA=0xff;while (1)if (cnt_dv>9)cnt_c++;if (cnt_c>9)cnt_t++;cnt_c=0;if (cnt_t>9)cnt_t=0;for (cnt_dv=0;cnt_dv<10;cnt_dv++)for (i=0;i<150;i++)PORTA=num[cnt_dv];PORTB.0=0;delay_us(300);PORTB.0=1;PORTA=num[cnt_c];PORTB.1=0;delay_us(300);PORTB.1=1;PORTA=num[cnt_t];PORTB.2=0;delay_us(300);PORTB.2=1;

Page 133: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 118

Chương 5: Xây dựng một số chương trình mẫu

5.3 Giải mã led 7 đoạn5.3.1 Yêu cầu

Viết chương trìnhđiều khiển led 7 đoạn đếm từ 0 đến 9 hiển thị trên PORTA.

5.3.2 Sơđồ kết nối

5.3.3 Sơđồ giải thuật

MCU KHỐI GIẢI MÃ 7 ĐOẠN

Page 134: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 119

Chương 5: Xây dựng một số chương trình mẫu

Begin

Khai báo biến và port

Tăng PORTA

PORTA = 9

PORTA = 0

S

Đ

5.3.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

void main()unsigned char j;DDRA=0xff;while (1)for (j=0;j<10;j++)delay_ms(500);PORTA=j;

5.4 Hiển thị led 7 đoạn chốt và dịch5.4.1 Yêu cầu

Viết chương trìnhđiều khiển led 7 đoạn đếm từ 00 đến 99 hiển thị trên PORTA.

Page 135: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 120

Chương 5: Xây dựng một số chương trình mẫu

5.4.2 Sơđồ kết nối

5.4.3 Sơđồ giải thuật

MCU

KHỐI DỊCH VÀ CHỐT HIỂN THỊ LED 7 ĐOẠN

Page 136: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 121

Chương 5: Xây dựng một số chương trình mẫu

Begin

Khai báo biến và port

Đưa dữ liệu nối tiếp vào thanh ghi dịch

Xuất dữ liệu song song ở ngõ ra của thanh ghi dịch

Đơn vị=10

Tăng biến chụcĐơn vị = 0

Chục = 10

Chục = 0

Đ

S

S

Đ

5.4.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

char num[]=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;

void main()

unsigned int I,j,cnt,cnt_c;

DDRA=0xff;DDRB=0xff;DDRC=0xff;cnt=0;

Page 137: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 122

Chương 5: Xây dựng một số chương trình mẫu

cnt_c=0;

while (1)if (cnt>9)cnt=0;elsedoPORTB=num[cnt];for (j=0;j<8;j++)PORTA.0=PORTC.0;PORTC=PORTC>>1;PORTA.1=1;PORTA.1=0;

PORTC=num[cnt_c];

for (i=0;i<8;i++)PORTA.0=PORTB.0;PORTB=PORTB>>1;PORTA.1=1;PORTA.1=0;

PORTA.2=1;PORTA.2=0;PORTA.3=1;PORTA.4=0;delay_ms(500);cnt_c++;while (cnt_c<10);cnt_c=0;cnt++;

5.5 Hiển thị led ma trận bằng phương pháp quét5.5.1 Yêu cầu

Page 138: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 123

Chương 5: Xây dựng một số chương trình mẫu

Chương trình hiển thị kí tựA trên led ma trận bằng cách quét hàng và cột. Tín hiệu điều khiển xuất ra ở hai port A và C5.5.2 Sơđồ kết nối

5.5.3 Sơđồ giải thuật

MCU

KHỐI QUÉT HIỂN THỊ LED MA TRẬN

Page 139: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 124

Chương 5: Xây dựng một số chương trình mẫu

Begin

Khai báo biến và port

Xuất dữ liệu ra hàng thứ i

Xuất dữ liệu ra chọn cột thứ i sáng

Delay

Tăng hàng kế, cột kế

5.5.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

char num[]=0xfc,0x0a,0x09,0x0a,0xfc;char num1[]=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;

void main()unsigned char cnt,col;unsigned int I;

DDRA=0xff;DDRC=0xff;

while (1)col=0;for (cnt=0;cnt<5;cnt++)col++;for (i=0;i<40;i++)PORTC=num[cnt];PORTA=num1[col];delay_us(100);

Page 140: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 125

Chương 5: Xây dựng một số chương trình mẫu

5.6 Hiển thị led ma trận chốt và dịch5.6.1 Yêu cầu

Chương trình hiển thị kí tựA trên led ma trận bằng chốt và dịch dữ liệu vào thanh ghidịch (sử dụng IC 6B595). Tín hiệu quét hàng trên port D, tin hiệu dịch chốt trên port A

5.6.2 Sơđồ kết nối

5.6.3 Sơđồ giải thuật

MCU

KHỐI DỊCH CHỐT HIỂN THỊ LED MA TRẬN

Page 141: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 126

Chương 5: Xây dựng một số chương trình mẫu

Begin

Khai báo biến và port

Đưa dữ liệu nối tiếp vào thanh ghi dịch

Xuất dữ liệu song song ở ngõ ra của thanh ghi dịch

Xuất dữ liệu ra chọn cột thứ i sáng

Tăng hàng kế, cột kế

5.6.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

char num[]=0x22,0x22,0x22,0x22,0x3e,0x22,0x14,0x08;char num1[]=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;

void main()

unsigned int I,j,k,cnt;

DDRA=0xff;DDRB=0xff;DDRC=0xff;DDRD=0xff;k=0;cnt=0;

while (1)doPORTA.3=1;OEPORTC=num[cnt];

Page 142: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 127

Chương 5: Xây dựng một số chương trình mẫu

for (j=0;j<8;j++)PORTA.0=PORTC.0;PORTC=PORTC>>1;PORTA.1=1;SRIPORTA.1=0;PORTB=num[cnt];for (i=0;i<8;i++)PORTA.0=PORTB.0;PORTB=PORTB>>1;PORTA.1=1;SRIPORTA.1=0;PORTA.2=1;STPORTA.2=0;PORTA.3=0;OEPORTA.4=0; CLRPORTD=num1[k];cnt++;k++;delay_us(2500);while (k<8);k=0;cnt=0;

5.7 Động cơmột chiều5.7.1 Yêu cầu

Chương trình điều khiển động cơmột chiều bằng nút ấn. Nhấn nút lần một động cơchạy thuận, nhất lần hai động cơđảo chiều quay, nhấn lần ba động cơchạy lại nhưbanđầu. Ngõ ra điều khiển động cơtrên PORTA.0 và PORTA.1, và nút ấn là PORTC.0

Page 143: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 128

Chương 5: Xây dựng một số chương trình mẫu

5.7.2 Sơđồ kết nối

5.7.3 Sơđồ giải thuật

Begin

Khai báo biến và port

Nút ấn chọn chương trình

Biến =1

Động cơ chạy ngịch

S

Đ

Động cơ chạy thuận

5.7.4 Chương trình

MCU

KHỐI ĐIỀU KHIỂN ĐỘNG CƠDC

Page 144: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 129

Chương 5: Xây dựng một số chương trình mẫu

#include<MEGA8515.h>#include<delay.h>

void main(void)unsigned int x;DDRA=0xff;DDRC.0=0;x=0;while (1)if (PINC.0==1)x=~x;dodelay_us(2);while (PINC.0==1);if (x==0)PORTA.0=1;PORTA.1=1;elsePORTA.0=1;PORTA.1=0;

5.8 Điều khiển động cơbước5.8.1 Yêu cầu

Chương trình điều khiển động cơbước quay một vòng rồi dừng thông qua PORTA

Page 145: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 130

Chương 5: Xây dựng một số chương trình mẫu

5.8.2 Sơđồ kết nối

5.8.3 Sơđồ giải thuật

Begin

Khai báo biến và port

Xuất giá trị điều khiển động cơ bước

Biến = 12S

Đ

Động cơ dừng

Tăng giá trị biến lên 1 đơn vị

5.8.4 Chương trình

#include<MEGA8515.h>

MCU

KHỐI ĐIỀU KHIỂN ĐỘNG CƠBƯỚC

Page 146: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 131

Chương 5: Xây dựng một số chương trình mẫu

#include<delay.h>

void main()unsigned int I;DDRA=0xff;

for (i=0;i<12;i++)PORTA.0=0;delay_ms(30);PORTA.0=1;

PORTA.1=0;delay_ms(30);PORTA.1=1;

PORTA.2=0;delay_ms(30);PORTA.2=1;

PORTA.3=0;delay_ms(30);PORTA.3=1;

5.9 Giao tiếp DAC5.9.1 Yêu cầu

Chương trình điều khiển DAC 0808 chuyển đổi tín hiệu số thành tín hiệu tương tự. Xuất tín hiệu ngõ ra điều khiển động cơmột chiều thông qua PORTA là ngõ vàoDAC, PORTB.0 và PORTB.1 là hai nút ấn dùng để tăng và giảm giá trị ngõ vào của DAC 0808

Page 147: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 132

Chương 5: Xây dựng một số chương trình mẫu

5.9.2 Sơđồ kết nối

5.9.3 Sơđồ giải thuật

Begin

Khai báo biến và port

Kiểm tra nút nhấn tăng có được

nhấn không

Xuất dữ liệu đưa vào DAC điều khiển động

cơ chạy

S

Đ

Kiểm tra nút nhấn giảm có được

nhấn không

Tăng PORTA(ngõ vào DAC)

Giảm PORTA (ngõ vào DAC)

Đ

S

MCU

KHỐI DAC

Page 148: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 133

Chương 5: Xây dựng một số chương trình mẫu

5.9.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

sfrb PINB=0x16;sfrb DDRB=0x17;sfrb PORTB=0x18;

void main()unsigned int I;DDRB.0=0;DDRB.1=0;DDRA=0xff;while (1)if (PINB.0==1)i++;dodelay_us(2);while (PINB.0==1);if (PINB.1==1)i--;dodelay_us(2);while (PINB.1==1);PORTA=I;

5.10 Hiển thị LCD5.10.1 Yêu cầu

Chương trình điều khiển LCD hiển thị dòng chữ “DAI HOC SU PHAM KY THUAT TPHCM” lên màng hình LCD

Page 149: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 134

Chương 5: Xây dựng một số chương trình mẫu

5.10.2 Sơđồ kết nối

5.10.3 Sơđồ giải thuật

Begin

Khai báo biến và các port

Thiết lập port LCD

Khởi tạo các dòng cho LCD

Xác định dòng cho việc hiển thị

Định hình thể cho LCD

Xóa dữ liệu cũ trên LCD

Hiển thị dữ liệu mới

MCU KHỐI HIỂN THỊ LCD

Page 150: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 135

Chương 5: Xây dựng một số chương trình mẫu

5.10.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

#define LCD_E PORTA.2#define LCD_RS PORTA.0#define LCD_RW PORTA.1#define LCD_PORT PORTD

const unsigned char flash addLUT[4]=0x80,0xc0,0x94,0xd4;

unsigned char LCD_ADDR,LCD_LINE;

void wr_half(unsigned char data)LCD_RW=0;LCD_E=1;LCD_PORT=(data & 0x0f);LCD_E=0;LCD_RW=1;delay_ms(3);

void wr_disp(unsigned char data)LCD_RW=0;LCD_E=1;LCD_PORT=(data >> 4);LCD_E=0;LCD_E=1;LCD_PORT=(data & 0x0f);LCD_E=0;LCD_RW=1;delay_ms(3);

void line(char which_line)LCD_RS=0;LCD_ADDR=addLUT[which_line-1];wr_disp(LCD_ADDR);LCD_RS=1;LCD_ADDR=0;LCD_LINE=which_line;

Page 151: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 136

Chương 5: Xây dựng một số chương trình mẫu

void disp_char(unsigned char c)LCD_RS=1;wr_dispI;LCD_ADDR++;if (LCD_ADDR==20)line(2);else if (LCD_ADDR==40)line(3);else if (LCD_ADDR==60)line(4);else if (LCD_ADDR==80)line(1);

void disp_cstr(unsigned char flash *sa)while (*sa!=0)disp_char(*sa++);

void init_display(void)char I;

LCD_RW=1;LCD_E=0;LCD_RS=0;delay_ms(50);wr_half(0x33);wr_half(0x33);wr_half(0x33);wr_half(0x22);wr_disp(0x28);wr_disp(0x01);wr_disp(0x10);wr_disp(0x06);wr_disp(0x0c);for (i=0x40;i<0x5f;i++);delay_ms(10);LCD_RS=0;wr_disp(i);

Page 152: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 137

Chương 5: Xây dựng một số chương trình mẫu

delay_ms(10);disp_char(0);LCD_RS=1;

void clear_display(void)LCD_RS=0;wr_disp(0x01);delay_ms(10);LCD_RS=1;

void main(void)PORTA=0x00;DDRA=0x07;PORTD=0x00;DDRD=0x0f;

delay_ms(100);init_display();delay_ms(100);clear_display();delay_ms(100);disp_cstr(“DAI HOC SU PHAM KY THUAT TPHCM “);

5.11 Giao tiếp ADC5.11.1 Yêu cầu

Chương trình điều khiển ADC0809 chuyển đổi dữ liệu kênh 1 thành tín hiệu số, hiển thị điện áp ngõ vào trên 4 led 7đoạn thông qua PORTA, PORTB, PORTC, PORTD

Page 153: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 138

Chương 5: Xây dựng một số chương trình mẫu

5.11.2 Sơđồ kết nối

5.11.3 Sơđồ giải thuật

Begin

Khai báo biến và port

Chờ chuyển đổi xong,hiển thị kết quả

Tạo xung điều khiển ADC: Start, ALE

Chọn kênh thứ 1

MCU KHỐI ADC KHỐI TẠO TÍN HIỆU TƯƠNG TỰ

KHỐI QUÉT HIỂN THỊ LED 7 ĐOẠN

Page 154: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 139

Chương 5: Xây dựng một số chương trình mẫu

5.11.4 Chương trình

#include<MEGA8515.h>#include<delay.h>#include<math.h>

sfrb PINB=0x16;sfrb DDRB=0x17;sfrb PORTB=0x18;

char num[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;

void main()unsigned int z,x,k,l,I,j;float y,d,m,n;DDRA=0x00;DDRC=0xff;DDRB.0=1;//ADDRB.1=1;//BDDRB.2=1;//CDDRB.3=0;//EOCDDRB.4=1;//ALEDDRB.5=1;//STARTDDRD.0=1;DDRD.1=1;DDRD.2=1;DDRD.3=1;while (1)PORTB.0=0;//APORTB.1=0;//BPORTB.2=0;//CPORTB.4=1;//ALEPORTB.5=1;//STARTdoPORTB.5=0;//STARTwhile (PINB.3==0);//EOCx=PINA;y=x*0xc4;z=y/0x2710;d=fmod(y,0x2710);k=d/0x03e8;m=fmod(d,0x03e8);l=m/0x64;n=fmod(m,0x64);

Page 155: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 140

Chương 5: Xây dựng một số chương trình mẫu

i=n/0x0a;j=0;doj++;PORTC=num[z];PORTC.7=0;PORTD.0=0;delay_us(300);PORTD.0=1;PORTC=num[k];PORTD.1=0;delay_us(300);PORTD.1=1;PORTC=num[l];PORTD.2=0;delay_us(300);PORTD.2=1;PORTC=num[l];PORTD.3=0;delay_us(300);PORTD.3=1;while (j<150);

5.12 Điều khiểm phím ma trận5.12.1 Yêu cầu

Chương trình điều khiển phím ma trận và hiển thị mã của phím nhấn trên led 7 đoạn.PORTC, PORTD dùng để quét phím, PORTA dùngđể hiển thị mã của phím ra led 7 đoạn

Page 156: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 141

Chương 5: Xây dựng một số chương trình mẫu

5.12.2 Sơđồ kết nối

5.12.3 Sơđồ giải thuật

MCU

KHỐI PHÍM MA TRẬN

Page 157: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 142

Chương 5: Xây dựng một số chương trình mẫu

Begin

Khai báo biến và port

Đọc giá trị vào PORTD, quét PORTC

S

Đ

Thiết lập giá trị ban đầu cho PORTC, PORTD

Kiểm tra xem phím có nhấn không

Lấy mã và hiển thị

5.12.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

charnum[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;

void main()

DDRA=0xff;DDRC=0x00;DDRD=0x00;PORTA=0xff;

while (1)PORTC=0x0f;

Page 158: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 143

Chương 5: Xây dựng một số chương trình mẫu

PORTD=0x00;if (PIND.0==1)PORTC=0x00;if (PINC.0==1)PORTA=num[7];if (PINC.1==1)PORTA=num[4];if (PINC.2==1)PORTA=num[1];if (PINC.3==1)PORTA=num[0];if (PIND.1==1)PORTC=0x00;if (PINC.0==1)PORTA=num[8];if (PINC.1==1)PORTA=num[5];if (PINC.2==1)PORTA=num[2];if (PINC.3==1)PORTA=num[15];if (PIND.2==1)PORTC=0x00;if (PINC.0==1)PORTA=num[9];if (PINC.1==1)PORTA=num[6];if (PINC.2==1)PORTA=num[3];if (PINC.3==1)PORTA=num[14];if (PIND.3==1)PORTC=0x00;if (PINC.0==1)PORTA=num[10];if (PINC.1==1)PORTA=num[11];if (PINC.2==1)PORTA=num[12];

Page 159: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 144

Chương 5: Xây dựng một số chương trình mẫu

if (PINC.3==1)PORTA=num[13];

5.13 Điều khiển động cơbước sử dụng IC5.13.1 Yêu cầu

Chương trình điều khiển động cơbước quay một vòng sử dụng IC chuyên dụng L297, L298 thông qua PORTA

5.13.2 Sơđồ kết nối

MCU

KHỐI ĐIỀU KHIỂN ĐỘNG CƠBƯỚC DÙNG IC

Page 160: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 145

Chương 5: Xây dựng một số chương trình mẫu

5.13.3 Sơđồ giải thuật

Begin

Khai báo biến và port

Tăng giá trị biến lên 1 đơn vị

Xuất giá trị điều khiển động cơ bước

Tạo xung điều khiển L297, L298

Biến = 12

Động cơ dừng

S

Đ

5.13.4 Chương trình

#include<MEGA8515.h>#include<delay.h>

void main()

unsigned int i;DDRA=0xff;i=0;

while (1)PORTA.0=1;//resetPORTA.1=0;//half/fullPORTA.2=1;//CW/CCWdo

Page 161: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 146

Chương 5: Xây dựng một số chương trình mẫu

PORTA.3=1;//CLOCKPORTA.3=0;i++;while (i<12);i=0;

Page 162: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 147

Chương 6: Kết quả nghiên cứu, kết luận và hướng phát triển

CHƯƠNG 6

KẾT QUẢ NGHIÊN CỨU, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

6.1. Kết quả nghiên cứu

Sau khoảng thời gian 10 tuần nghiên cứu thiết kế và thi công thiết bị thực tập vi điều khiển AVR nhóm thực hiện đã hoàn thành các công việc sau:

[1] Thiết kế và thi công hoàn chỉnh “Thiết bị thực tập lập trình (vi điều khiển AVR)”:tất cảcác khối được thiết kế trên một board mạch.

[2] Xây dựng chương trình mẫu cho từng khối bằng phần mềm CodeVision AVR C compiler.

Page 163: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 148

Chương 6: Kết quả nghiên cứu, kết luận và hướng phát triển

Hình

6.1Thiết bị thực tập lập trình

(viđiều khiển AV

R) hoàn

chỉnh

Page 164: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 149

Chương 6: Kết quả nghiên cứu, kết luận và hướng phát triển

6.2. Kết luận

Đề tài cơbản đã hoàn thành theo đúng yêu cầu của nhóm thực hiện. Thiết bị thực tập vi điều khiển AVR được thiết kế phần lớn các IC có đế cắm nên dễ dàng thay thế khi hưhỏng, được thiết kế trên cùng một board giúp ngưới dùng dễ dàng quan sát, thao táctrên thiết bị và có cái nhìn tổng quát về thiết bị. Ngoài ra được thiết kế trên một boardnên dễ dàng vận chuyển và đóng gói. Trên thiết bị có các port nguồn mở rộng, nguồn có công suất lớn dự phòng giúp người sử dụng có khả năng mở rộng các mạch bênngoài hoặc các khối mở rộng nâng cao. Ngoài ra trên thiết bị có một số khối ứng dụng hỗ trợ người dùng ở cấp độ cơbản dễ tiếp cận với vi điều khiển nhưkhối chuyển đổi Bin-Dec/Hex, khối Thumbswitch điện tử, khối tạo xung...

Tuy nhiên cũng có nhiều khó khăn và hạn chế trong quá trình thực hiện. Tìm kiếm những giải pháp để khắc phục những khó khăn là điều mà nhóm luôn phải thực hiện trong suốt quá trình thực hiện đề tài. Dù vậy, trong chuần mực nhất định, với những hạn chế khách quan cũng nhưchủ quan nên một số vấn đề không được tiềm hiểu vàquan tâm đầy đủ nên sự thiếu sót của đề tài là điều không thể tránh khỏi.

6.3. Hướng phát triển

Mở rộng cho thiết bị thực tập bằng cách thiết kế thêm các khối mở rộng trên một boardphụnhư: mở rộng PORT, mở rộng bộ nhớ, điều khiển I2C, điều khiển CAN, giao tiếp máy tính...Thiết kế thiết bị có các ngõ I/O của các khối có tính tương thích với các dòng vi điều khiền khác như8051, PIC... và các IC lập trình được nhưPLD, CPLD...

Để cho người dùng linh hoạt giữa việc mô phỏng và chạy thực tế trên thiết bị. Đềtàinên thiết kế một dao diện riêng trên máy vi tính.

Thiết kế một mạch nạp đa năng cho tất cả các dòng vi điều khiển và IC lập trìnhđược.

Cao hơn nữa là thiết kế phòng thí nghiệm vi điều khiển.

Page 165: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 150

Phần C: Phụ lục và tài liệu tham khảo

PHẦN C

PHỤ LỤC VÀTÀI LIỆU

THAM KHẢO

Page 166: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 151

Phần C: Phụ lục và tài liệu tham khảo

Phụ lục A: Chương trình của vi điều khiển khối Thum Switch điện tửa. Sơđồ giải thuật:

Page 167: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 152

Phần C: Phụ lục và tài liệu tham khảo

b. Chương trình:ORG 0000HMOV DPTR,#LED7DOANMOV 20H,#0

TD: MOV A,20HMOVC A,@A+DPTRMOV P1,AMOV C,00HMOV P3.2,CMOV C,01HMOV P3.3,CMOV C,02HMOV P3.4,CMOV C,03HMOV P3.5,C

KT_UP:JB P3.1,KT_DOWNCALL DELAYJNB P3.1,KT_DOWNINC 20HMOV R0,20HCJNE R0,#16,KT_DOWNMOV 20H,#0

KT_DOWN:JB P3.0,TDCALL DELAYJNB P3.0,TDDEC 20HMOV R0,20HCJNE R0,#255,TDMOV 20H,#15SJMP TD

LED7DOAN:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,

86H,8EHDELAY: MOV R6,#0FFHDEL2: MOV R7,#0FFHDEL1: DJNZ R7,DEL1

DJNZ R6,DEL2RETEND

Page 168: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 153

Phần C: Phụ lục và tài liệu tham khảo

Phụ lục B: Chương trình vi điều khiển khối nguồn xung đồng hồa. Sơđồ giải thuật:

Begin

SS1

End

Khôûi taïo bieánñeám choïn taàn

soá =0

SS0

SS2

SS3

SS4

SS6

SS5

SS7

Cho pheùptimer0 vaø ngaét

ngoaøi 1 laømvieäc

Ngaét ngoaøi 1

Taêng bieán ñeám

RETI

Page 169: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 154

Phần C: Phụ lục và tài liệu tham khảo

SS0

So saùnh bieánñeám =0

Xuaát giaù trò raP1 cho LEDhieån thò 1Hz

saùng

Naïp giaù trò choTimer ñeám

500ns

RET

Laáy buø P3.7

Ðúng

Sai

SS1

So saùnh bieánñeám =1

Xuaát giaù trò raP1 cho LED

hieån thò 10Hzsaùng

Naïp giaù trò choTimer ñeám

50ns

RET

Laáy buø P3.7

Ðúng

Sai

SS2

So saùnh bieánñeám =2

Xuaát giaù trò raP1 cho LED

hieån thò 100Hzsaùng

Naïp giaù trò choTimer ñeám

5ns

RET

Laáy buø P3.7

Ðúng

Sai

Page 170: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 155

Phần C: Phụ lục và tài liệu tham khảo

SS3

So saùnh bieánñeám =3

Xuaát giaù trò raP1 cho LED

hieån thò 1kHzsaùng

Naïp giaù trò choTimer ñeám

500us

RET

Laáy buø P3.7

Ðúng

Sai

SS4

So saùnh bieánñeám =4

Xuaát giaù trò raP1 cho LED

hieån thò 10kHzsaùng

Naïp giaù trò choTimer ñeám

50us

RET

Laáy buø P3.7

Ðúng

Sai

SS5

So saùnh bieánñeám =5

Xuaát giaù trò raP1 cho LED

hieån thò100kHz saùng

Naïp giaù trò choTimer ñeám

5us

RET

Laáy buø P3.7

Ðúng

Sai

Page 171: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 156

Phần C: Phụ lục và tài liệu tham khảo

b. Chương trình:ORG0000HJMP MAINORG0003HCLR IE.7INC R0JNB P3.2,$SETB IE.7RETI

SS0: CJNE R0,#0,EXIT1MOV 40H,#100MOV P1,#0FEH

WAIT0: MOV TH1,#HIGH(45535)MOV TL1,#LOW(45535)SETB TR1JNB TF1,$CLR TF1CLR TR1DJNZ 40H,WAIT0CPL P3.7

SS6

So saùnh bieánñeám =6

Xuaát giaù trò raP1 cho LED

hieån thò 1MHzsaùng

Naïp giaù trò choTimer ñeám

0,5us

RET

Laáy buø P3.7

Ðúng

Sai

SS7

So saùnh bieánñeám =7

Xoùa bieán ñeám=0

RET

Ðúng

Sai

Page 172: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 157

Phần C: Phụ lục và tài liệu tham khảo

EXIT1: RETSS1: CJNE R0,#1,EXIT2

MOV 40H,#10MOV P1,#0FDH

WAIT1: MOV TH1,#HIGH(45535)MOV TL1,#LOW(45535)SETB TR1JNB TF1,$CLR TF1CLR TR1DJNZ 40H,WAIT1CPL P3.7

EXIT2: RETSS2: CJNE R0,#2,EXIT3

MOV P1,#0FBHMOV TH1,#HIGH(45535)MOV TL1,#LOW(45535)SETB TR1JNB TF1,$CLR TF1CLR TR1CPL P3.7

EXIT3: RETSS3: CJNE R0,#3,EXIT4

MOV P1,#0F7HMOV TH1,#HIGH(63535)MOV TL1,#LOW(63535)SETB TR1JNB TF1,$CLR TF1CLR TR1CPL P3.7

EXIT4: RETSS4: CJNE R0,#4,EXIT5

MOV P1,#0EFHMOV TH1,#HIGH(65335)MOV TL1,#LOW(65335)SETB TR1JNB TF1,$CLR TF1CLR TR1CPL P3.7

EXIT5: RETSS5: CJNE R0,#5,EXIT6

MOV P1,#0DFHMOV TH1,#HIGH(65515)

Page 173: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 158

Phần C: Phụ lục và tài liệu tham khảo

MOV TL1,#LOW(65515)SETB TR1JNB TF1,$CLR TF1CLR TR1CPL P3.7

EXIT6: RETSS6: CJNE R0,#6,EXIT7

MOV P1,#0BFHMOV TH1,#HIGH(65533)MOV TL1,#LOW(65533)SETB TR1JNB TF1,$CLR TF1CLR TR1CPL P3.7

EXIT7: RETSS7: CJNE R0,#7,EXIT8

MOV R0,#0EXIT8: RETMAIN: MOV R0,#0

MOV TMOD,#00010000BSTART:MOV IE,#10000001B

CALL SS0CALL SS1CALL SS2CALL SS3CALL SS4CALL SS5CALL SS6CALL SS7JMP STARTEND

Page 174: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 159

Phần C: Phụ lục và tài liệu tham khảo

Phụ lục C: Chương trình của vi điều khiển khối chuyển Bin – Dec/Hexa. Sơđồ giải thuật:

Begin

Khai báo port và các biến

Kiểm tra biến chọn ngõ vào nối tiếp hay song song

Đưa giá trị vào vi điều khiển

Lấy giá trị song song

Xuất dữ liệu ra led 7 đoạn

Biến = 0

Biến = 0

Lấy giá trị nối tiếpBiến = 1

Kiểm tra biến chọn hiển thị mã Dec hay là mã Hex

Biến = 1Giải mã và chọn

mã Dec

Giải mã và chọn mã Hex

Page 175: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 160

Phần C: Phụ lục và tài liệu tham khảo

b. Chương trình:

#include<MEGA8515.h>#include<math.h>#include<delay.h>

interrupt [USART_RXC] void usart_receive(void)unsigned int y;y=UDR;

char num[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;charnum1[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;

void main(void)unsigned int a,b,c,d,e,f,i,x,y;

UCSRA=0x80;UCSRB=0xd9;UCSRC=0x40;UBRRH=0x00;UBRRL=0x33;#asm("sei")

while (1)DDRB.0=1;DDRB.1=1;DDRB.2=1;DDRB.3=0;DDRB.4=0;DDRA=0x00;DDRC=0xff;y=UDR;if (PINB.4==0)x=y;elsex=PINA;

if (PINB.3==0)

Page 176: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 161

Phần C: Phụ lục và tài liệu tham khảo

a=x/0x64;b=fmod(x,0x64);c=b/0x0a;d=fmod(b,0x0a);i=0;doi++;PORTC=num[d];PORTB.0=0;delay_us(90);PORTB.0=1;PORTC=num[c];PORTB.1=0;delay_us(90);PORTB.1=1;PORTC=num[a];PORTB.2=0;delay_us(90);PORTB.2=1;while (i<50);else if (PINB.3==1)e=x/0x10;f=fmod(x,0x10);i=0;doi++;PORTC=num1[f];PORTB.0=1;delay_us(90);PORTB.0=0;PORTC=num1[e];PORTB.1=1;delay_us(90);PORTB.1=0;while (i<50);

Page 177: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 162

Phần C: Phụ lục và tài liệu tham khảo

Phụ lục D: Mô phỏng vi điều khiển bằng phần mềm Proteus

Các phần mềm mô phỏng thường bị giới hạn bởi linh kiện. trong đó thì ISIS mô phỏng được rất nhiều linh kiện, kể cả các IC lập trình được nhưvi điều khiển MCS_51, AVR, PIC, PLD…Đây là ưu điểm nổi bất nhất của ISIS.

Hình ảnh mô phỏng sinh động .

Tất cả các biểu tượng rõ ràng, giao diện thân thiện giúp người học dễ dàng thao táchơn, trực quan hơn.

Có thể mô phỏng được mạch tương tự và mạch số.

Tuy nhiên một số linh kiện không cho phép mô phỏng. Mô phỏng mạch hiển thị bằngphương pháp quét không ổn định.

Giới thiệu các thanh công cụ.

New file – Tạo một bản thiết kế mới.Open design – Mở một bản thiết kế.Save design – Lưu bản thiết kế.Print design – In bản thiết kế.Toggle grid – Bật hoặc tắt hiển thị lưới.Center at cursor – Di chuyển vị trí trang thiết kế.Zoom in – Phóng to trang thiết kế.Zoom out – Thu nhỏ trang thiết kế.Zoom to view entire sheet – Xem toàn bộ trang hiện hành.Zoom to area – Phóng to vùng chọn.Undo changes – Lặp lại thao tác trước đó.Redo changes – Lặp lại thao tác undo trước đó.Cut to clipboard – Cắt vùng chọn vào clipboard.Copy to clipboard – Sao chép vùng chọn vào clipboard.Paste from clipboad – Gián từ clipboard.Block copy – Sao chép khối chọn trên trang hiện hành.Block move – Di chuyển khối chọn.Block rotate – Xoay khối chọn.Block delete – Xóa khối chọn.Pick parts from libraries – Lấy linh kiện từ thưviện.Made devide – Tạo linh kiện mới.Packaging tool – Thiết lập vỏ cho linh kiện.Decompose – Sữa chửa linh kiện.Toggle wire autorouter – Vẽ dây kết nối đúng điểm lưới.Search tag components – Tìm kiếm linh kiện với giá trị thuộc tính có sẵn.Properties assigment tool –Đặt chú thích cho nhiều linh kiện.New sheet – Tạo trang thiết kế mới.Remove/Delete sheet – Xóa trang thiết kế hiện hành.

Page 178: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 163

Phần C: Phụ lục và tài liệu tham khảo

Select mode – Chế độ chọn linh kiện.Component mode – Chế độ linh kiện.Jonction dot mode – Chế độ điểm nốiWire lable mode – Chế độ đặt nhãn dây dẫn.Text scrip mode – Chế độ đặt bản ghi chú.Buses mode – Chế độ đường Bus.Subcircuit mode – Chế đô tạo mạch phụ.Terminals mode – Chế độ thiết bị đầu cuối.Devide pins mode – Chế độ chân kết nối.Graph mode – Chế độ giản đồ.Generator mode – Chế độ các máy phát.Voltage probe mode – Chế độ đo điện áp.Current probe mode – Chế độ đo dòng.Virtual instrument mode – Các dạng đồng hồ đo.Rotate clockwise – Xoay phải linh kiện.Rotate anti-clockwise – Xoay phải linh kiện.X-mirror – Lấy đối xứng theo trục x.Y-mirror – Lấy đối xứng trục Y.Play – Bắt đầu chạy mô phỏng.Step – Mô phỏng sau 0,05s thì tắt.Pause – Tạm dừng mô phỏng.Stop – Dừng mô phỏng.

Các bước tiến hành mô phỏng vi điều khiển.

Bước 1: Khởi động chương trình ISIS bằng cách chọn strat > programs > proteus 7 Professional > ISIS 7 từ màn hình Destop của Windows.

Page 179: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 164

Phần C: Phụ lục và tài liệu tham khảo

Sau khi khởi động song màng hình làm việc của ISIS sẽ mở ra nhưsau:

Bước 2: Lấy linh kiện ra từ thưviện bằng cách click vào nút chọn hoặc click vào nút cửa sổ thưviện được mở ra nhưsau:

Chọn các linh kiện tương ứng và kết nối lại với nhau ví dụ nhưhình sau:

Page 180: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 165

Phần C: Phụ lục và tài liệu tham khảo

Bước 3: Nạp file .hex cho vi điều khiển bằng cách douple click vào viđiều khiển một cửa sổ sẽ hiện ra và click chọn đường dẫn file .hex để nạp cho vi điều khiển.

Bước 4: Nhấn nút để bắt đầu mô phỏng.

Page 181: baocao

Thiết bị thực tập lập trình (vi điều khiển AVR) Trang 169

Phần C: Phụ lục và tài liệu tham khảo

Tài liệu tham khảo[1] Ngô Diên Tập

Vi điều khiển với lập trình CKỹ thuật vi điều khiển với AVR. Nhà xuất bản Khoa học và Kỹ Thuật, 2003.

[2] Tống Văn OnHọ vi điều khiển 8051. Nhà xuất bản Lao động Xã hội, 2001.

[3] Nguyễn Đình PhúVi điều khiển lý thuyết & thực hành. Trường ĐH Sưphạm Kỹ Thuật Tp.HCM.

[4] Nguyễn Hữu PhươngMạch số. Nhà xuất bản thống kê, 2001.

[5] Cox and O’CullEmbedded C Programming and the Atmel AVR – Barnett

[6] Dhananjay V.GadreProgramming and Customizing the AVR Microcontroller.

[7] Kirk ZurellC Programming for Embedded Systems.

[8] Thomas W.SchultzC and 8051. Emeritus Professor of Electrical & Computer Engineering

Technology Purdue University.

[9] Jivan S.Parab, Vinod G.Shelake, Rajanish K.Kamat, Gourish M.NaikExploring C for Microcontrollers. Shivaji University Kolhapur India.

[10] Nghiên cứu lý thuyết và một số ứng dụng cơbản họ vi điều khiển AVR (Đồ án tốt nghiệp – Phạm Hữu Khanh – 02/2005).

[11] Nghiên cứu và chế tạo thiết bị thực tập vi điều khiển AVR của sinh viên ĐàoNgọc Sơn và Nguyễn Bá Thành khóa 2000 – 2005

[12] KIT thực tập AVR, PIC của công ty TNHH Thiên Minh

[11] Một số trang webwww.diemtuvietnam.comwww.thienminh.com.vnwww.datasheet4U.comwww.atmel.comwww.vagam.dieukhien.netwww.blitzlogic.com