Tải bản đầy đủ (.pdf) (181 trang)

đề tài thiết bị thực tập lập trình vi điều khiển AVR

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (13.62 MB, 181 trang )

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
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ẠO
TRƯỜ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
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
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Í MINH
KHOA Đ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ỆP
Họ tên sinh viên : NGUYỄN THẾ CHÍ MSSV : 06301006
Chuyên ngành : KỸ THUẬT ĐIỆN – ĐIỆN TỬ Mã ngành : 01
Hệ đào tạo :Đại học chính qui Mã hệ : 01
Khó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 2008
GIÁO VIÊN HƯỚNG DẪN
(ký tên)
NGUYỄN THANH BÌNH

Ngày ……tháng……năm 2008
BM. QUẢN LÝ CHUYÊN NGÀNH
(ký tên)
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. Trong
suố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
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ên
phầ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ài
thự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ình
bằ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ách
sử 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ình
cho 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ên
kế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 board
phụ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.
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 ii
Phân công cán bộ hướng dẫn iii
Nhiệm vụ đồ án iv
Lời cảm ơn v

Tóm tắt đề tài vi
Mục lục vii
Liệt kê bảng xiii
Liệ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 2
1.2 Mục đích nghiên cứu 2
1.3 Đối tượng nghiên cứu và phạm vi nghiên cứu 2
1.4 Ý nghĩa khoa học và thực tiễn của đề tài 3
1.5 Tình hình nghiên cứu 3
1.6 Hướng nghiên cứu của đề tài 4
1.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 6
2.2 Mô tả về AVR 7
2.2.1 Sơđồ khối của AVR AT90S8515 7
2.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 9
2.3.1 Sơđồ cấu trúc của AVR 90s8515 10
2.3.2 Bộ nhớ dữ liệu 11
2.3.3 Sơđồ bộ nhớ trong AVR 90S8515 12
2.3.4 Các thanh ghi trong AVR 12
2.3.5 Tệp thanh ghi của vi điều khiển AVR 13
2.3.6 Bộ nhớ dữ liệu SRAM 13
2.3.7 Bộ nhớ I/O (Các port) 14
2.3.8 Thanh ghi trạng thái (Status Register – SREG) 15
2.3.9 Con trỏ ngăn xếp : Stack Pointer (SP) 16
2.3.10 Sử dụng ngắt trong AT90S8515 17
2.3.11 Reset 18

2.3.12 Ngắt 19
2.3.13 Thanh ghi che ngắt chung GIMSK (General Interrupt Mask Register) 20
2.3.14 Thanh ghi cờ ngắt chung GIFR (General Interrupt Flag Register) 20
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) 21
2.4 Cấu tạo và lý thuyết chung Timer/Counter 23
2.4.1 Bộ chia Timer/counter 24
2.4.2 Timer/counter 0 24
2.4.3 Timer/counter 1 (Timer/counter 16 bits) 26
2.5 Watchdog Timer 36
2.6 Truy xuất ghi/đọc EEPROM 37
2.6.1 Thanh ghi địa chỉ EEPROM EEARH và EEARL (EEPROM Adress
Register) 37
2.6.2 Thanh ghi dữ liệu EEPROM - EEDR (EEPROM Data Register) 37
2.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 39
2.7.1 Thanh ghi điều khiển SPCR (SPI control register) 40
2.7.2 Thanh ghi trạng thái SPSR (SPI STATUS REGISTER) 41
2.7.3 Thanh ghi dữ liệu (SPI DATA REGISTER) 41
2.8 UART (Universal Asynchronous Receiver and Stransmitter) 42
2.8.1 Phát dữ liệu trên UART 42
2.8.2 Nhận dữ liệu trên UART 44
2.8.3 Điều khiển UART 46
2.9 So sánh Analog trong AVR 50
2.10 Các Port I/O 53

2.10.1 PortA 53
2.10.2 PortB 53
2.10.3 PortC 54
2.10.4 PortD 55
CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG THIẾT BỊ THỰC TẬP
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 55
3.2 Hiển thị LED đơn 57
3.2.1 Yêu cầu 57
3.2.2 Thiết kế 57
3.3 Quét hiển thị LED 7 đoạn 60
3.3.1 Yêu cầu 60
3.3.2 Thiết kế 60
3.4 Dịch và chốt hiển thị LED 7 đoạn 61
3.4.1 Yêu cầu 61
3.4.2 Thiết kế 62
3.5 Giải mã BCD sang LED 7 đoạn 64
3.5.1 Yêu cầu 64
3.5.2 Thiết kế 64
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 66
3.6.1 Yêu cầu 66
3.6.2 Thiết kế 67
3.7 Dịch và chốt hiển thị LED ma trận 69
3.7.1 Yêu cầu 69
3.7.2 Thiết kế 69
3.8 Hiển thị LCD 72
3.8.1 Yêu cầu 72
3.8.2 Thiết kế 72

3.9 Hiển thị giải mã BIN – DEC/HEX 73
3.9.1 Yêu cầu 73
3.9.2 Thiết kế 73
3.10 THUMSWITCH điện tử 75
3.10.1 Yêu cầu 75
3.10.2 Thiết kế 75
3.11 DIPSWITCH 75
3.11.1 Yêu cầu 75
3.11.2 Thiết kế 76
3.12 Nút nhấn đơn 76
3.12.1 Yêu cầu 76
3.12.2 Thiết kế 76
3.13 Bàn phím tương tự 78
3.13.1 Yêu cầu 78
3.13.2 Thiết kế 78
3.14 Bàn phím ma trận 79
3.14.1 Yêu cầu 79
3.14.2 Thiết kế 79
3.15 Tạo tín hiệu tương tự 80
3.15.1 Yêu cầu 80
3.15.2 Thiết kế 80
3.16 Tạo xung đồng hồ 81
3.16.1 Yêu cầu 81
3.16.2 Thiết kế 81
3.17 Đồng hồ thời gian thực 82
3.17.1 Yêu cầu 82
3.17.2 Thiết kế 82
3.18 Mắt nhận hồng ngoại 83
3.18.1 Yêu cầu 83
3.18.2 Thiết kế 83

3.19 Giải mã tín hiệu hồng ngoại 84
3.19.1 Yêu cầu 84
3.19.2 Thiết kế 84
3.20 Chuyển đổi tín hiệu tương tự sang tín hiệu số 85
3.20.1 Yêu cầu 85
3.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
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 87
3.21.2 Thiết kế 87
3.22 Điều khiển động cơDC 90
3.22.1 Yêu cầu 90
3.22.2 Thiết kế 90
3.23 Điều khiển động cơbước 90
3.23.1 Yêu cầu 90
3.23.2 Thiết kế 91
3.24 Điều khiển động cơbước dùng IC 91
3.24.1 Yêu cầu 91
3.24.2 Thiết kế 91
3.25 Rơle bán dẫn 92
3.25.1 Yêu cầu 92
3.25.2 Thiết kế 92
3.26 MCU 94
3.26.1 Yêu cầu 94
3.26.2 Thiết kế 94
3.27 Nguồn 96
3.27.1 Yêu cầu 96
3.27.2 Thiết kế 96
3.28 MCU ngoài 99

3.28.1 Yêu cầu 99
3.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 102
4.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 102
4.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 107
4.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 112
5.2 Led 7 đoạn 115
5.3 Giải mã led 7 đoạn 118
5.4 Hiển thị led 7 đoạn chốt và dịch 119
5.5 Hiển thị led ma trận bằng phương pháp quét 122
5.6 Hiển thị led ma trận chốt và dịch 125
5.7 Điều khiển động cơmột chiều 127
5.8 Điều khiển động cơbước 130
5.9 Giao tiếp DAC 132
5.10 Hiển thị LCD 134
5.11 Giao tiếp ADC 138
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 141
5.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ả 147
6.2 Kết luận 149
6.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ử. 151
Phụ lục B: Chương trình vi điều khiển khối nguồn xung đồng hồ 153
Phụ lục C: Chương trình vi điều khiển khối chuyển đổi Bin – Dec/Hex 159
Phụ lục D: Mô phỏng vi điều khiển bằng phần mềm Proteus 162
Phụ lục E: Sơđồ mạch in lớp trên của thiết bị thực tập lập trình 166
Phụ lục F: Sơđồ mạch in lớp dưới của thiết bị thực tập lập trình 167
Phụ 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
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 9
Bảng 2.2 Vùng I/O trong AT90S8515 14
Bảng 2.3 Bảng địa chỉ các ngắt của vi điều khiển 17
Bảng 2.4 Thiết lập chế độ SLEEP cho vi điều khiển 22
Bảng 2.5 Thiết lập ngắt ngoài INT1 cho vi điều khiển 22
Bảng 2.6 Thiết lập ngắt ngoài INT0 cho vi điều khiển 23
Bảng 2.7 Thiết lập thanh ghi điều khiển Timer/Counter0 25
Bảng 2.8 Thiết lập thanh ghi A điều khiển Timer/Counter1 29
Bảng 2.9 Thiết lập thanh ghi B điều khiển Timer/Counter1 30
Bảng 2.10 Giá trị TOP và tần số PWM 34
Bảng 2.11 Thiết lập chế độ so sánh 1 trong PWM 34
Bảng 2.12 Thiết lập bộ định thời Watchdog 37
Bảng 2.13 Thiết lập tần số dao động SCK 41
Bảng 2.14 Thiết lập giá trị tốc độ Baud của vi điều khiển 50
Bảng 2.15 Thiết lập thanh ghi điều khiển bộ so sánh Analog 53
Bảng 2.16 Chức năng các chân trên Port B 54
Bảng 2.17 Chức năng các chân trên Port D 55
Bảng 3.1 Bảng sự thật IC74LS247 66

Bảng 3.2 Chức năng các chân LCD 72
Bảng 3.3 Bảng sự thật IC 74LS221 76
Bảng 3.4 Bảng chức năng IC HEF4017BC 92
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 5
Hình 2.2 Sơđồ khối của vi điều khiển AT90S8515 6
Hình 2.3 Sơđồ cấu trúc của vi điều khiển AT90S8515 9
Hình 2.4 Sơđồ tổ chức bộ nhớ trong vi điều khiển 90S8515 11
Hình 2.5 Sơđồ tổ chức thanh ghi của vi điều khiển AT90S8515 12
Hình 2.6 Cấu trúc các thanh ghi con trỏ của vi điều khiển AT90S8515 12
Hình 2.7 Sơđồ tổ chức bộ nhớ SRAM của AT90S8515 13
Hình 2.8 Cấu trúc thanh ghi trạng thái – SREG 15
Hình 2.9 Cấu trúc con trỏ ngăn xếp – SP 16
Hình 2.10 Sơđồ vectơngắt RESET 18
Hình 2.11 Cấu trúc thanh ghi che ngắt – GIMSK 19
Hình 2.12 Cấu trúc thanh ghi cờ ngắt chung – GIFR 19
Hình 2.13 Cấu trúc thanh ghi che ngắt Timer/Counter - TIMSK 20
Hình 2.14 Cấu trúc thanh ghi cờ ngắt Timer/Counter – TIFR 20
Hình 2.15 Cấu trúc thanh ghi điều khiển MCU - MCUCR 20
Hình 2.16 Sơđồ bộ chia Timer/Counter 23
Hình 2.17 Sơđồ Timer/Counter0 24
Hình 2.18 Cấu trúc thanh ghi điều khiển Timer/Counter0 – TCCR0 24
Hình 2.19 Cấu trúc thanh ghi Timer/Counter0 – TCNT0 25
Hình 2.20 Sơđồ Timer/Counter1 25
Hình 2.21 Sơđồ nguyên lý chân ICP 26
Hình 2.22 Cấu trúc thanh ghi A điều khiển Timer/Counter1 27
Hình 2.23 Cấu trúc thanh ghi A điều khiển Timer/Counter1 28
Hình 2.24 Cấu trúc thanh ghi Timer/Counter1-TCNT1 29

Hình 2.25 Cấu trúc thanh ghi so sánh A ngõ ra của Timer/Counter1 - OCR1A 30
Hình 2.26 Cấu trúc thanh ghi so sánh B ngõ ra của Timer/Counter1 - OCR1B 30
Hình 2.27 Cấu trúc thanh ghi bắt sống ngõ vào của Timer/Counter1 31
Hình 2.28 Sơđồ bộ định thời Watchdog 34
Hình 2.29 Cấu trúc thanh ghi điều khiển bộ định thời Watchdog 34
Hình 2.30 Cấu trúc thanh ghi địa chỉ EEPROM 35
Hình 2.31 Cấu trúc thanh ghi dữ liệu EEPROM – EEDR 36
Hình 2.32 Cấu trúc thanh ghi điều khiển EEPROM – EECR 36
Hình 2.33 Sơđồ khối SPI của vi điều khiển AT90S8515 38
Hình 2.34 Cấu trúc thanh ghi điều khiển SPI – SPCR 38
Hình 2.35 Cấu trúc thanh ghi trạng thái SPI – SPSR 39
Hình 2.36 Cấu trúc thanh ghi dữ liệu SPI 40
Hình 2.37 Sơđồ khối phát dữ liệu trên UART 41
Hình 2.38 Sơđồ khối nhận dữ liệu trên UART 42
Hình 2.39 Hoạt động của UART 43
Hình 2.40 Cấu trúc thanh ghi dữ liệu I/O UART – UDR 43
Hình 2.41 Cấu trúc thanh ghi trạng thái UART – USR 44
Hình 2.42 Cấu trúc thanh ghi điều khiển UART – UCR 45
Hình 2.43 Cấu trúc thanh ghi tạo tốc độ Baund 47
Hình 2.44 Sơđồ khối bộ so sánh Analog trong AT90S8515 48
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 48
Hình 2.46 Cấu trúc thanh ghi dữ liệu Port A 50
Hình 2.47 Cấu trúc thanh ghi trực tiếp dữ liệu Port A 50
Hình 2.48 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port A 50
Hình 2.49 Cấu trúc thanh ghi dữ liệu Port B 51
Hình 2.50 Cấu trúc thanh ghi trực tiếp dữ liệu Port B 51
Hình 2.51 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port B 51
Hình 2.52 Cấu trúc thanh ghi dữ liệu Port C 51

Hình 2.53 Cấu trúc thanh ghi trực tiếp dữ liệu Port C 52
Hình 2.54 Cấu trúc thanh ghi địa chỉ chân ngõ vào Port C 52
Hình 2.55 Cấu trúc thanh ghi dữ liệu Port D 52
Hình 2.56 Cấu trúc thanh ghi trực tiếp dữ liệu Port D 53
Hình 2.57 Cấu trúc th anh ghi chân ngõ vào Port D 53
Hình 3.1 Sơđồ khối thiết bị thực tập vi điều khiển AVR 55
Hình 3.2 Sơđồ chân IC 74LS245 56
Hình 3.3 Sơđồ khối bên trong IC 74LS245 56
Hình 3.4 Sơđồ nguyên lý khối hiển thị LED đơn 57
Hình 3.5 Sơđồ nguyên lý LED 7 đoạn 58
Hình 3.6 Sơđồ chân LED 7 đoạn 58
Hình 3.7 Sơđồ nguyên lý khối quét hiển thị LED 7 đoạn 59
Hình 3.8 Sơđồ chân IC 74LS595 60
Hình 3.9 Sơđồ nguyên lý trong IC 74LS595 60
Hình 3.10 Sơđồ nguyên lý khối dịch và chốt hiển thị LED 7 đoạn 61
Hình 3.11 Sơđồ chân IC 74LS247 62
Hình 3.12 Sơđồ nguyên lý trong IC 74LS247 62
Hình 3.13 Sơđồ nguyên lý khối giải mã BCD sang LED 7 đoạn 63
Hình 3.14 Sơđồ chân LED ma trận 64
Hình 3.15 Sơđồ nguyên lý trong LED ma trận 64
Hình 3.16 Sơđồ chân IC ULN2803 64
Hình 3.17 Sơđồ nguyên lý chân ngõ ra IC ULN0808 64
Hình 3.18 Sơđồ nguyên lý khối quét hiển thị LED ma trận 65
Hình 3.19 Sơđồ chân IC 6B595 66
Hình 3.20 Sơđồ chân IC 6B595 66
Hình 3.21 Sơđồ nguyên lý khối dịch và chốt hiển thị LED ma trận 67
Hình 3.22 Sơđồ nguyên lý khối hiển thị LCD 68
Hình 3.23 Sơđồ nguyên lý khối chuyển đổi nhị phân sang thập phân và Hexa 70
Hình 3.24 Sơđồ nguyên lý khối Thumswitch điện tử 70
Hình 3.25 Sơđồ nguyên lý khối DipSwitch 71

Hình 3.26 Sơđồ chân IC 74LS221 72
Hình 3.27 Sơđồ nguyên lý khối nút nhấn đơn 73
Hình 3.28 Sơđồ nguyên lý khối phím tương tự 74
Hình 3.29 Sơđồ nguyên lý khối phím ma trận 75
Hình 3.30 Sơđồ nguyên lý khối tín hiệu tương tự 76
Hình 3.31 Sơđồ nguyên lý khối nguồn xung đồng hồ 77
Hình 3.32 Sơđồ chân IC DS12C887 77
Hình 3.33 Sơđồ nguyên lý khối đồng hồ thời gian thực 78
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 78
Hình 3.35 Sơđồ chân IC BL9149 79
Hình 3.36 Sơđồ nguyên lý khối giải mã tín hiệu hồng ngoại 79
Hình 3.37 Sơđồ chân IC ADC0808 80
Hình 3.38 Sơđồ khối trong IC DAC0808 80
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ố 81
Hình 3.40 Sơđồ chân DAC0808 82
Hình 3.41 Sơđồ nguyên lý mạch chuyển đổi từ số sang tương tự 83
Hình 3.42 Sơđồ nguyên lý mạch điều khiển động cơmột chiều 84
Hình 3.43 Sơđồ nguyên lý mạch điều khiển động cơbước 85
Hình 3.44 Sơđồ chân IC L297 85
Hình 3.45 Sơđồ chân IC L298 85
Hình 3.46 Sơđồ nguyên lý điều khiển động cơbước sử dụng IC L297, IC L298 86
Hình 3.47 Sơđồ chân và cấu trúc bên trong của IC MOC3020 86
Hình 3.48 Sơđồ nguyên lý khối Relay bán dẫn 87
Hình 3.49 Sơđồ kết nối LM555 87
Hình 3.50 Sơđồ chân IC CD4066BC 88
Hình 3.51 Sơđồ ngõ nguyên lý các cổng IC CD4066BC 88
Hình 3.52 Sơđồ chân IC HEF4017B 88
Hình 3.53 Sơđồ chân IC MAX232 89

Hình 3.54 Sơđồ nguyên lý khối MCU 89
Hình 3.55 Sơđồ nguyên lý khối nguồn 91
Hình 3.56 Sơđồ nguyên lý khối MCU ngoài 1 92
Hình 3.57 Sơđồ nguyên lý khối MCU ngoài 2 93
Hì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
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
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 đơn
giả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ác
ngà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:
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 cho
cá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ình
mẫ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ày
cà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ên
nhu 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ư:
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 đòi
hỏ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ình
bằ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ên
mộ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ạng
qué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-EMS51
củ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ên
thị 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.
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ài
liệ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.com
vớ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ên
quan đế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.
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
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ề AVR
2.2.1. Sơđồ khối của AVR AT90S8515
Hình 2.2 S
ơđ
ồ khối của vi điều khiển AT90S8515
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ụng
SRAM 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ên
trong. 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ên
trong. Ngõ ra của Port C có thể hạ xuống 20mA. Khi chân port C
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

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ên
trong. Ngõ ra của Port D có thể hạ xuống 20mA. Khi chân port D
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
D 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 50ns
sẽ 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.
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 cho
cá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 AT90S8515
Bộ 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
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

×