Cấu tạo Vi xử lý gồm có ba khối chmh sau: • Đơn vị logic và số học ALU • Các thanh ghi • Đơn vị điều khiển CU Các Bus dữ liệu nội bộ được sử dụng để kết nối và truyền dữ liệu giữa các kh
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 11
DANH MỤC TỪ VIẾT T Ắ T 13
DANH MỤC HÌNH VẼ 15
DANH MỤC BẢNG BlỂU .21
Chương 1 GIỚI THIỆU VỀ VI x ử LÝ VÀ VI ĐIỀU KHIỂN 25 1.1 Khái niệm Vi xử lý .25
1.1.1 Cấu trúc và hoạt động của Vi xử lý 26
1.1.2 Bộ Vi xử lý CISC và RISC 34
1.2 Vi điều k h iể n 34
1.2.1 Thiết bị nhúng và bộ nhớ n g o à i 37
1.2.2 Kiến trúc Harvard và Von Neumann .37
1.2.3 Vi điều khiển 8-bit và 16-bit 38
1.2.4 Một số loại Vi điều khiển thương mại .39
1.2.4.1 MCS-51 và Atmel 89CXX, 89CXX51 39
1.2.4.2 Họ M C S-51 39
1.2.4.3.Vi điều khiển Atmel 40
1.2.4.4.Vi điều khiển P I C 41
1.3 Lịch sử phát triển của Vi xử lý và Vi điêu k h iê n 42
Trang 4Chương 2 NGỐN NGỮ LẬP TRÌNH NHÚNG _ ^
2.1 Ngôn ngữ lập trình hợp ngữ - 47
2.1.1 Các thành phần hợp n g ữ 48
2.1.2 Cấu trúc hợp n gữ 48
2.2 Ngôn ngữ lập trình c -57
2.2.1 Kiểu dữ liệu, phép toán và biểu thức 57
2.2.1.1.Kiểu và kích thước dữ liệu 57
2.2.1.2.Các phép toán số h ọ c 58
2.2.2 Vòng lặp điều k h iển 61
2.2.3 Hàm và cấu trúc chương trình 65
2.2.4 Con trỏ và mảng 70
2.2.5 Cấu trú c 73
Chương 3 VI ĐIỀU KHIỂN AVR 79 3.1 Tổng quan kiến trúc của Vi điêu khiển ATmegaló 79 3.1.1 Máy tính với tập lệnh rút gọn 79
3.1.2 Tập lệnh hợp ngữ 80
3.1.3 Kiến trúc Vi điều khiển A Tm egaló 81
3.2 Bộ nhớ dữ liệu -82
3.2.1 Bộ nhớ Flash EEPROM 82
3.2.2 Bộ nhớ EEPROM truy cập địa chỉ byte 83
3.2.3 Bộ nhớ truy cập ngẫu nhiên tĩnh SR A M 84
3.3 Hệ thống cổng _ 84 3.4 Bộ chuyển đổi tương tự - số ADC _ 86
VI xử LÝ VA VIĐIÉU KHIỂN - NGUYÊN LÝ VẦ ỨNG DỤNG
Trang 5MỤC LỤC
3.4.1 Các thanh ghi ADC 89
3.4.2 Lập trình ADC 92
3.5 Phân hệ định thời 93 3.5.1 Tổng quan các bộ định thời 93
3.5.2 Bộ định thời TimerO 95
3.52.1 Các chế độ hoạt động 96
3.5.2.2 Các thanh ghi liên quan tới TimerO 98
3.5.3 Bộ định thời T im erl 101
3.5.4 Bộ định thời Tim er2 105
3.5.5 ứ ng dụng của bộ định thời - bộ đếm 109
3.6 Truyền thông nối tiếp _ 112 3.6.1 Truyền thông nối tiếp U SA RT 112
3.6.1.1 Tổng quan khối USART trên A Tm egaló 113
3.6.1.2 Khối tạo xung đồng hồ USART 113
3.6.1.3 Khối truyền USART 113
3.6.1.4.Khối nhận U SA RT 115
3.6.1.5.Các thanh ghi U SA RT 115
3.6.1.6.Lập trình USART 116
3.6.2 Giao tiếp ngoại vi nối tiế p 118
3.6.2.1.Hoạt động của S P I 118
3.6.2.2.Các thanh ghi S P I 120
3.6.3 Giao tiếp nối tiếp 2 d ây 123
3.6.3.1.Hoạt động của TW I 123
Trang 6VI xử LỸ VA VI ĐIỀU KHIỂN - NGUYÊN LỸ VẦ ỨNG DỤNG
3.6.3.2.Các thanh ghi TW I 141
3.7.1 Phân hệ ngắt trên A tm egaló 145
3.7.2 Lập trình n gắt 147
Chưcmg 4 VI ĐIỀU KHIỂN PIC 155 4.1 Tổng quan và các tính năng 155 4.2 Vi điều khiển PIC 16C6X/7X _ 158 4.2.1 Khối ALU của PIC 16C XX 159
4.2.2 Thanh ghi C PU 159
4.2.3 Sơ đồ chân 165
4.2.4 Hoạt động Reset của P IC 165
4.2.5 Chức năng PO R 166
4.2.6 Chức năng BO R 168
4.2.7 Giao tiếp giữa bộ tạo dao động và PIC 168
4.2.8 TỔ chức bộ nhớ của P IC 169
4.2.8.1.BỘ nhớ chương trình 169
4.2.8.2.BỘ nhớ dữ liệu 171
4.2.9 Các lệnh dùng với PIC 16C6/7X 175
4.2.9.1.Các thao tác với b it 175
4.2.9.2.Phép toán tăng và giảm 176
4.2.9.3.Hoạt động vào/ra 176
4.2.10 Các chế đô đia chỉ 179
Trang 7MỤC LỤC
4.2.10.1.Địa chỉ trực tiếp 179
4.2.10.2.Địa chỉ gián tiếp 180
4.2.11.CỔng xuất nhập vào/ra 180
4.2.12.Ngắt trong PIC 16C61/71 182
4.2.12.1.Ngắt ngoài 183
4.2.12.2.Ngắt bộ định thòi TimerO 186
4.2.12.3.Ngắt thay đổi PO RTB 186
4.2.12.4.Ngắt A D C 186
4.2.13.Các bộ định thời của PIC 16C61/71 187
4.2.13.1.BỘ định thời TimerO 187
4.2.13.2.BỘ định thời W D T 189
4.2.13.3.BỘ chuyển đổi tứì hiệu tương tự - số (A D C) 191
4.3 Vi điều khiển PIC 16F8XX _ 194 4.3.1 Sơ đồ chân của PIC 16P8XX 196
4.3.2 Thanh ghi trạng th ái 199
4.3.3 Thanh ghi điều khiển năng lượng 201
4.3.4 Thanh ghi OPTION_REG 202
4.3.5 Bộ nhớ chương trình PIC 16P8XX 203
4.3.6 Bộ nhớ dữ liệu PIC 16P8XX 204
43.6.1.Bộ nhớ dữ liệu R A M 204
4.3.6.2.BỘ nhó dữ liệu EEPROM 207
4.3.6.3 Bộ nhớ dữ liệu EEPROM,bộ nhớ chương trình Flash EEPROM 207
Trang 84.3.7 Ngắt trong Vi điều khiển 16P877 212
4.3.8 Các cổng xuất nhập vào/ra 216
4.3.9 Các bộ định th ờ i 219
4.3.10 Mô-đun bắt Capture/Compare/PW M 223
4.3.10.1.Chế độ Capture 225
4.3.10.2.Chếđộ Com pare 227
4.3.10.3.Chế độ điều chế độ rộng xung PW M 229
4.3.11.M ô-đunM SS P 233
4.3.11.1.Giao tiếp ngoại vi nối tiếp SPI 233
4.3.11.2.BUS P C 244
4.3.12.USAR T 252
4.3.12.1.Chế độ giao tiếp nối tiếp không đồng b ộ 254
4.3.12.2.Chế độ giao tiếp nối tiếp đồng b ộ 259
4.3.13.BỘ chuyển đổi A D C 259
Chương 5 GIAO TIẾP VÀ ỨNG DỤNG CỦA VI ĐIỀU KHIỂN 269 5.1 Giới thiệu _ 269 5.2 Giao tiếp với LED, nút nhấn và R ơ le - 270
5.3 Giao tiếp với bàn phím 279 5.3.1 Phương pháp sử dụng phần cúmg 279
5.3.2 Giao tiếp bàn phím với PIC 16P877 280
5.4 Giao tiếp với LED 7-thanh - - -.284
5.5 Giao tiếp với LCD _ 287 5.5.1 Mô-đun LCD 288
VI xử LÝ VÀ VIĐIÉU KHIỂN - NGUYÊN LỸ VA ỨNG DỤNG
Trang 9MỤC LỤC
5.5.2 Các lện h L C D 290
5.5.3 Khởi tạo mô-đun LCD 292
5.5.4 Giao tiếp giữa LCD và A Tm egaló 292
5.6 Giao tiếp với vi mạch chuyên đổi ADC/DAC _ 296 5.6.1 Lựa chọn bộ chuyển đổi ADC 297
5.6.2 Giao tiếp với ADC0808/0809 298
5.6.3 Giao tiếp với bộ chuyển đổi M AX5822 300
5.7 Các ứng dụng đo lường - 302
5.7.1 Sử dụng biến trở để đo góc khớp của R obot 304
5.7.2 Bộ mã hóa quang h ọ c 305
5.7.3 Biến áp vi sai thay đổi tuyến tính 308
5.7.4 Xác định tốc độ góc (RPM ) 311
5.7.5 Đo nhiệt đ ộ 314
5.7.6 RTD và cặp nhiệt điện tuyến tính 316
5.7.7 Load C e ll 319
5.8 Các ứng dụng điêu khiển và tự động h óa - 320
5.8.1 Bộ điều khiển số P ID 321
5.8.2 Điều khiển thiết b ị 325
5.8.2.1.Điều khiển tốc độ động cơ dc sử dụng PW M 326
5.8.2.2.Điều khiển Thyristo 329
5.8.2.3.Điều khiển tải AC sử dụng TRIA C 333
5.8.3 Điều khiển động cơ bước 334
5.9 Thiết kế hệ th ốn g _ 342
Trang 105.9.1 Trạm theo dõi các thông số thời tiết 343
5.9.1.1.Yêu dâu 343
5.9.1.2.SơđỒcấu trú c 343
5.9.1.3.Sơđ ồm ạch 344
5.9.1.4.Sơ đồ thuật toán 345
5.9.1.5.Code cho Vi điều khiển 346
5.9.2 Điều khiển tốc độ động cơ 357
5.9.2.1.Yêu cầu 357
5.9.2.2.Sơ đồ cấu trú c 357
5.9.2.3.SƠ đồ m ạch 357
5.9.2.4.Sơ đồ thuật toán 357
5.9.2.5.Code cho Vi điều khiển 360
TÀI LIỆU THAM KHẢO 369
VI xử LỶ VÀ VI ĐIÊU KHIẾN - NGUYÊN LÝ VÂ ỨNG DỤNG
Trang 11L0I NÓI ĐẴU
Giáo trình "Vi xử lý và Vi đĩêu khiên - nguyên lý và ứng
dụng" trước hết dành cho sữih viên ngành Công nghệ Kỹ thuật
Cơ điện tử, Khoa Cơ học kỹ thuật và Tự động hóa, Trường Đại học Công nghệ - ĐHQGHN với các môn học Vi xử lý và Vi điều khiển, Vi điều khiển và Hệ thống nhúng và thực tập chuyên ngành (năm thứ 4) Ngoài ra, tài liệu này cũng có thể phục vụ cho sinh viên các khoa khác muốn làm quen với chủ đề Vi xử lý
và Vi điều khiển
Giáo trình được biên soạn dựa trên kừih nghiệm giảng dạy của nhóm tác giả tại Trường trong nhiều năm qua Giáo trình giới thiệu các khái niệm cơ bản về Vi xử lý và Vi điều khiển, nguyên lý hoạt động và kiến thức lập trình cho các mô- đun chức năng của Vi điều khiển AVR/PIC, một số ứng dụng
cơ bản của Vi điều khiển
Giáo trình này gồm 5 chương và được biên soạn với nội dung từng chương như sau:
Chương 1: Giới thiệu các khái niệm cơ bản ve Vỉ xử lý và Vi
điêu khiển.
Chương 2: Trình bày khái quát ve ngôn ngữ lập trình hợp ngữ
và c - lập trình cho Vi đỉêu khiển.
Chương 3: Giới thiệu những khái niệm cơ bản ve kiên trúc và
chức năng của Vi đĩêu khiển A Tm egalô như bộ chuyển đổi ADC, Timer/Counter, truyền thông nối tiếp, điêu chê'độ rộng xung PWM
và ngắt.
Trang 12Chương 4: Trình bày các khái niệm cơ bản, tập lệnh, tính nãn'ị
và lập trình cho các mô-đun của Vi âĩêu khiển PIC 16P877.
Chương 5: Giới thiệu một sô' ứng dụng cơ bản và quỵ trình
thiết kếm ột hệ thống đĩêu khiển sử dụng Vi đĩêu khiển.
Trong quá trình biên soạn, nhóm tác giả đã được các bạn đồng nghiệp đóng góp nhiều ý kiến bổ ích Ban chủ nhiệm Khoa Cơ học kỹ thuật và Tự động hoá, các phòng ban Trường Đại học Công nghệ đã tạo điều kiện tốt nhất để nhóm tác giả hoàn thành giáo trình này Nhóm tác giả xin bày tỏ lời cảm ơn chân thành về sự giúp đỡ quý báu
Mặc dù cố gắng, song không tránh khỏi có những thiếu sót nhất định Nhóm tác giả rất mong nhận được các ý kiến đóng góp của bạn đọc, đặc biệt là các đồng nghiệp và các bạn sinh viên để giáo trình được hoàn thiện hơn Ý kiến đóng góp
xin gửi về địa chỉ: Khoa Cơ học Kỹ thuật và Tự động hóa - Trường Đại học Công nghệ - ĐHQGHN.
Xừi chân thành cảm ơn!
VI xử LÝ VÀ VIOIÉU KHIỂN - NGUYÊN LÝ VÀ ỨNG DỤNG
Nhóm tác giả
Trang 13CHMOS Com plem entary High-Speed
Metal Oxide Semiconductor DAC Digital-to-Analog Converter
DSP Digital Signal Processor
EMR Electromagnetic Relay
EEPROM Electrically Erasable
Program mable Read-Only Memory
HMOS High-Speed Metal Oxide
LCD Liquid Crystal Display
MOSPET Metal-Oxide-Semicondưctor
Field-Effect Transistor
Bộ chuyển đổi tín hiệu tương
tự sang tín hiệu số Chức năng khởi động lại khi điện áp nguồn nhỏ hơn điện
áp hoạt động
M áy tính với tập lệnh phức tạp
Đơn vị điều khiển trung tâm
Bán dẫn oxit kim loại tốc độ cao bổ trợ
Bộ chuyển đổi tín hiệu số sang tín hiệu tương tự
Bộ xử lý tín hiệu số
Rơle điện từ
Bộ nhớ chỉ đọc có thể lập trình xóa bằng điện
Bán dẫn oxit kim loại tốc độ cao
Trang 14VI xử LỸ VÀ VI ĐIÊU KHIỂN - NGUYÊN LÝ VÀ ỨNG DỤNG
NC Normal Close
PC Personal Computer
PCB Printed Circuit Board
PCON Power Control Register
PCLATH Program Counter Latch
PEROM Programmable and Erasable
Read Only M em oiy PIC Peripheral Interíace
Controller PID Proportional-Integral-
Derivative PLC Programmable Logic
Controller POR Power-On-Reset
PSP Parallel Slave Port
PVVM Pulse W idth Modulation
RAM Random-Access Memory
ROM Read-Only Memory
RTD Resistance Temperature
Detector SCR Silicon-Controlled Rectiíier
SRAM Static Random-Access
Memory SSR Solid-State Relay
Bộ điều khiển logic khả trình
Khởi động lại Vi điều khiển khi cấp nguồn
Cổng tớ song song
Điều chế độ rộng xung
Bộ nhớ truy cập ngẫu nhiên
Bộ nhó chi đọc
Đầu đo nhiệt điện trở
Chỉnh lưu có điều khiển Silicon
Bộ nhớ truy cập ngẫu nhiên tĩnh
Rơle trạng thái rắn
Bộ định thời VVatchdog
Trang 15DANH MỤC HÌNH VẼ
Hình 1.1 Sơ đồ khối của Vi xử l ý 27
Hình 1.2 Mô hình lập trình 27
Hình 1.3 Quá trình thực hiện chương trình c o n 30
Hình 1.4 Sơ đồ các khối chức năng cơ bản của Vi điều khiển 35
Hình 1.5 Thiết bị đo và hiển thị nhiệt độ sử dụng Vi điều khiển 36
Hình 1.6 Kiến trúc H arvard 38
Hình 1.7 Kiến trúc Von N eum ann 38
Hìnli 3.1 Sơ đồ chân A tm egaló (P D IP) 82
Hình 3.2 Sơ đồ khối A tm e g a ló 83
Hình 3.3 Các thanh ghi cấu hình cổng A T m eg aló 85
Hình 3.4 Sơ đồ khối bộ chuyển đổi A D C 88
Hình 3.5 Các thanh ghi A D C 89
Hình 3.6 Sơ đồ khối bộ định thòi TimerO 96
Hình 3.7 Các chế độ hoạt động của TimerO 97
Hình 3.8 Các thanh ghi Timer/CounterO 98
Hình 3.9 Thiết lập các bit của thanh ghi TCCRO 100
Hình 3.10 Sơ đồ khối T im erl 101
Hình 3.11 Các thanh ghi T im er/C o u n terl 102
Hình 3.12 Thanh ghi TCCRIA và T C C R IB 104
Hình 3.13 Sơ đồ khối bộ định thời T im er2 106
Hình 3.14 Các thanh ghi T im er/C ounter2 106
Hình 3.15 Thiết lập các bit của thanh ghi TCCR2 108
Hình 3.16 Sơ đồ khối USART 114
Trang 16Hình 3.17 Các thanh ghi U SA R T 116
Hình 3.18 Các hoạt động của U SA R T 117
Hình 3.19 Sơ khối truyền/nhận SPI giữa Master và Slave 119
Hình 3.20 Các thanh thi SPI 120
Hình 3.21 Các bước thực hiện chế độ Master truyền dữ liệu 125
Hình 3.22 Các bước thực hiện chế độ Master nhận dữ liệu 130
Hình 3.23 Các bước lập trình TWI ớ chế độ Slave truyền dữ liệ u 135
Hình 3.24 Các bước lập trình TWI ở chế độ Slave nhận dữ liệu 139
Hình 3.25 Thanh ghi TW W BR 142
Hình 3.26 Thanh ghi T W C R 143
Hình 3.27 Thanh ghi TW SR 144
Hình 3.28 Thanh ghi T W A R 144
Hình 3.29 Đáp ứng ngắt của Vi điều khiển 146
Hình 4.1 Sơ đồ khối PIC 16C 61 160
Hình 4.2 Thanh ghi trạng thái của PIC 16C X X 161
Hình 4.3 Nội dung PCLATH được truyền tới PC khi PCL được g h i 164
Hình 4.4 Bộ đếm chương trình và ngăn xếp 8 m ức của PIC 16C 6/7X 165
Hình 4.5 Sơ đồ chân PIC 1 6 C 6 1 165
Hình 4.6 Sơ đồ chân PIC 1 6 C 7 1 165
Hình 4.7 Mạch Reset Vi điều khiển PIC đon giản 167
Hình 4.8 Mạch Reset Vi điều khiên PIC 168
Hình 4.9 Bộ giao động R C 169
Hình 4.10 Bộ giao động thạch anh 169
Hình 4.11 Bộ đếm chương trình, tổ chức bộ nhớ chưong trình PIC16C6X 170 Hình 4.12 Tổ chức bộ nhớ chương trình PIC 16C 61 170
Hình 4.13 Cấu trúc tệp thanh ghi của PIC 1 6 C 6 X /7 X 171
Hình 4.14 Thanh ghi O P T IO N 173
Hình 4.15 Thanh ghi IN TCO N 174
Hình 4.16 Chế độ địa chi trực tiếp 180
VI xử LỸ VÀ VIĐIÉU KHIỂN - NGUYÊN LỸ VÀ ỨNG DỤNG
Trang 17ĐẠI HỌC QUỔC GIA HÀ NỘI TRUNG TẦM THÒNG ĨIN ĨHƯ VIỆN
OANH MỤC HÌNH VẼ
Hình 4.17 C hế độ địa chi gián tiế p 180
Hình 4.18 Sơ đồ khối logic ngắt PIC 16C 61 183
Hình 4.19 Ví dụ về ngắt ngoài IN T 184
Hình 4.20 Cấp xung giữ nhịp ngoài cho Timer/CounterO 188
Hình 4.21 Tràn và ngắt TimerO 189
Hình 4.22 Bộ định thời VVDT trong PIC 16C X X 190
Hình 4.23 Thanh ghi ADCONO 192
Hình 4.24 Thanh ghi A D C O N l 192
Hình 4.25 AINO/1 là đầu vào cho bộ ADC và RA2/4 là ngõ vào/ra s ố 193
Hình 4.26 Sơ đồ chân của PIC 16P877/874 199
Hình 4.27 Thanh ghi trạng thái STATUS của PIC 16P8XX 200
Hình 4.28 Sử dụng các bit RPl : RPO trong chế độ địa chi trực tiếp 200
Hình 4.29 Sử dụng bit IRP trong chế độ địa chi gián tiếp 201
Hình 4.30 Thanh ghi P C O N 201
Hình 4.31 Thanh ghi OPTIO N _REG 202
Hình 4.32 Sơ đồ bộ nhớ chương trình của 16P877 204
Hình 4.33 Sơ đồ tệp thanh ghi PIC 16P877 206
Hình 4.34 Thanh ghi E E C O N l 208
Hình 4.35 Thanh ghi INTCON của PIC 16P877 212
Hình 4.36 Thanh ghi P I E l 213
Hình 4.37 Thanh ghi P IE 2 214
Hình 4.38 Thanh ghi P IR l 215
Hình 4.39 Thanh ghi PIR 2 216
Hình 4.40 Thanh ghi TRISE 218
Hình 4.41 Thaiih ghi T IC O N 220
Hình 4.42 Thanh ghi T 2C O N 222
Hình 4.43 Sơ đồ khối Tim er2 222
Hình 4.44 Các thanh ghi CCPICO N và C C P2C O N 224
Hình 4.45 Hoạt động ở chế độ C ap tu re 226
Trang 18Hình 4.46 Bắt sự kiện tại sườn trư ớ c 226
Hình 4.47 H oạt động chế độ so sánh 228
Hình 4.48 Sơ đồ khối mô-đun PW M 230
Hình 4.49 Dạng sóng P W M 230
Hình 4.50 PVVM và bộ lọc ửiông thấp đê’ tạo ra đầu ra tương tự d c 233
Hình 4.51 C ác chân của PIC 16P877 sử dụng trong chế độ SPI 234
Hình 4.52 Thanh ghi SSPCO N 234
Hình 4.53 SPI truyền ớ chế độ M aster 237
Hình 4.54 Thanh ghi SSPSTAT 237
Hình 4.55 Thanh ghi SSPCO N 2 239
Hình 4.56 C h ế độ SPI M a ste r 240
Hình 4.57 C h ế độ SPI Slave, CKE = 0 242
H ĩn h 4.58 C hế độ SPI Slave, CKE = 1 246
Hình 4 5 9 12C bus 245
Hình 4.60 Truyền địa chỉ Slave 7-bit hoặc 10-bit 2460
Hình 4.61 START, STOP và truyền byte '1100 0001' bởi bus I2C 247
Hình 4.62 Thanh ghi điều khiển và trạng thái truyền (TXSTA) 252
Hình 4.63 Thanh ghi điều khiển và trạng thái nhận (R C STA ) 253
Hình 4.64 Giao tiếp giữa các PIC sử dụng USART ở chế độ bất đồng bộ 255
Hình 4.65 Khung dữ liệu giao tiếp nối tiếp ở chế độ bất đồng b ộ 255
Hình 4.66 Thanh ghi ADCONO 259
Hình 4.67 Thanh ghi A D C O N l 261
Hình 5.1 Sơ đồ kết nối PIC với L E D 270
Hình 5.2 Giao tiếp LED với PIC 16P877 271
Hình 5.3 LED và nút n h ấn 274
Hìiứi 5.4 Giao tiếp giữa PIC 16P877 và chuyển mạch dạng D IP 274
Hìrửi 5.5 Sơ đồ cấu tạo Rơle 276
Hình 5.6 Sơ đồ kết nối giữa Vi điều khiến và R ơ le 277
Hình 5.7 Kết nối giữa Vi điều khiển và SSR 277
, " VI xử LỸ VÀ VI ĐIÉU KHIỂN-NGUYÊN LỸ VÀ ỨNG DỤNG
Trang 19Hình 5.8 Giao tiếp Rơle với PIC 16P877 278
Hình 5.9 Sừ dụng phần ciíng đ ể loại bỏ n h iễu 280
Hình 5.10 Giao tiếp giữa PIC 16P877 và bàn phím 4 x 4 281
Hình 5.11 Sơ đồ giao tiếp giữa bàn phím 4x4 với PIC 16P877 282
Hình 5.12 Vi m ạch CD4511, vi điều khiển giao tiếp với LED 7-th an h 285
Hình 5.13 Giao tiếp giữa LED 7-thanh, chuyển mạch DIP và PIC 16F 877 285
Hình 5.14 Kết nối giữa Vi điều khiển và L C D 288
Hình 5.15 Sơ đồ giao tiếp giữa A tm egaló và LCD 44780 292
Hình 5.16 Giao tiếp giữa Vi điều khiển vói bộ chuyển đổi ADC và D A C 298
Hình 5.17 Sơ đồ kết nối giữa PIC 16P877 và ADC 0 8 0 9 299
Hình 5.18 Sơ đồ kết nối giữa PIC 16P877 và DAC M A X 5822 301
Hình 5.19 Xác định vị trí tay R ob ot 305
Hình 5.20 Bộ mã hóa quang học tương đ ố i 306
Hình 5.21 Sơ đồ giao tiếp giữa PIC16F877 và Encoder tương đ ố i 308
Hình 5.22 Sơ đồ giao tiếp giữa LVDT với PIC sử dụng A D 6 9 8 310
Hình 5.23 Quan hệ v à o /ra 311
Hình 5.24 Sơ đồ khối thiết bị đo tốc độ sử dụng Vi điều khiển 312
Hình 5.25 Sơ đồ đo đốc độ động c ơ 313
Hình 5.26 Tim erl thu nhận khoảng thời gian đếm xung đầu v à o 313
Hình 5.27 Sơ đồ thuật toán xác định rp m 314
Hinh 5.28 Sơ đồ m ạch đo nhiệt độ sử dụng L M 35 315
Hình 5.29 Tuyến tính tín hiệu RTD sử dụng X TR 103 317
Hình 5.30 XTRIOI và tuyến tính hóa cặp nhiệt điện 318
Hình 5.31 Phương pháp đo lực và sơ đồ m ạch giao tiếp với P IC 16F877 320
Hình 5.32 Tính thành phần I như là tổng diện tích của các hình chữ n h ật.323 Hình 5.33 Xấp xỉ thành phần D 323
Hình 5.34 Lưu đồ thuật toán PID s ố 324
Hình 5.35 Bộ điều khiển PID s ố 325
Hình 5.36 Mạch điều khiển động cơ d c 327 DANHMỤCHlNHVẼ
Trang 20Hình 5.37 Mạch điều khiển động cơ DC sử dụng IC A 3 9 5 2 327
Hình 5.38 Điều khiển động cơ dc sử dụng PIC 16P 877 329
Hình 5.39 Chỉnh lưu toàn sóng và điều khiển động cơ dc sứ dụng SCR 330
Hìiìh 5.40 Cách ly quang và SCR 330
Hình 5.41 Mạch tìm điểm 0 331
Hình 5.42 Tim điểm 0 sử dụng INTO và nguồn công suất không biến áp 332
Hình 5.43 Tim điểm 0 sử dụng cách ly qu ang 332
Hình 5.44 Điều khiển cổng Triac bằng Vi điều khiển 333
Hình 5.45 Điều khiển phase ac sử dụng T riac 334
Hình 5.46 Vi điều khiển điều khiển tải ac qua bộ lái T ria c 334
Hình 5.47 Động cơ bước nam châm vĩnh cửu đơn c ự c 336
Hình 5.48 Động cơ bước nam châm vĩnh cửu lưỡng c ự c 336
Hình 5.49 Động cơ bước có từ trở thay đ ổ i 336
Hình 5.50 Mạch điều khiển sử dụng L297, L298 và Vi điều khiển 339
Hình 5.51 Sơ đồ khối của Vi mạch L 2 9 7 339
Hình 5.52 Chopping bằng tín hiệu p h a 341
Hình 5.53 Chopping bằng tín hiệu INHIBIT 341
Hình 5.54 Sơ đồ cấu tạo mạch chức năng L 2 9 8 342
Hình 5.55 Sơ đồ cấu trúc cho trạm thòi tiết 344
Hình 5.56 Sơ đồ mạch điều khiển cho trạm thời tiết 345
Hình 5.57 Sơ đồ thuật toán cho trạm thời tiết 346
Hình 5.58 Động cơ 24 Vdc, 1500 RPM vơi 3 kênh mã hóa quang h ọ c 358
Hình 5.59 Sơ đồ cấu trúc cho dự án điều khiển tốc độ động c ơ 358
Hình 5.60 Sơ đồ mạch cho dự án điều khiển tốc độ động c ơ 359
Hình 5.61 Sơ đồ thuật toán cho dự án điều khiển tốc độ động c ơ 360
VI xử LỸ VÀ VI ĐIỀU KHIỂN - NGUYÊN LÝ VÀ ỨNG DỤNG
Trang 21DANH MỤC BẢNG BIỂU
Bảng 1.1 Các thành viên họ M C S -51 40
Bảng 1.2 Một số dòng Vi điều khiển của hãng A tm e l 41
Bảng 1.3 Một số dòng Vi điều khiển PIC của hãng M icrochip 42
Bảng 1.4 Lịch sử phát triển của vi xử lý và vi điều khiển 44
Bảng 2.1 Các phép toán số h ọ c 59
Bảng 2.2 Các phép toán logic và so sá n h 59
Bảng 2.3 Bảng sự thật các phép to án 60
Bảng 2.4 Các phép toán thực hiện trên bit 61
Bảng 3.1 Chọn điện áp tham chiếu cho bộ chuyển đổi A D C 90
Bảng 3.2 Chọn hệ số và kênh chuyển đ ổ i 90
Báng 3.3 Hệ số chia xung nhịp cho A D C 92
Bảng 3.4 Tổng quan các bộ định thời A tm el 94
Bảng 3.5 Tân số hoạt động của SPI 122
Bảng 3.6 Tan số xung giữ nhịp 142
Bảng 3.7 Vector ngắt và R eset 146
Báng 3.8 Tên các vector ngắt trong VVinAVR 148
Bảng 4.1 Một S Ố tính năng của PIC 16C61, 16C 71,16C 66 và 1 6 C 7 4 157
Bảng 4.2 Công suất tiêu thụ và điện áp hoạt động của PIC 16CXX 158
Bảng 4.3 Thanh ghi C P U 159
Bàng 4.4 Các bit của thanh ghi trạng thái 161
Bảng 4.5 Mô tả chức năng các chân của Vi điều khiển PĨC 16C 61/16C 71 166
Bảng 4.6 Các thanh ghi có chức năng đặc biệt của PIC 1 6C 61/71 172
Bảng 4,7 Gán giá trị chia tần 174
Bảng 4.8 Các bit trong thanh ghi IN T C O N 174
Trang 22Bảng 4.9 Câu lệnh trong PIC 16C 6X 178 Bảng 4.10 Thanh ghi ADCONO 192 Bảng 4.11 Lựa chọn kênh A D C 192 Bảng 4.12 Xung giữ nhịp A D C 192 Bảng 4.13 M ô tả thanh ghi A D C O N l 193 Bảng 4.14 Các tính năng của PIC 16P8XX 195 Bảng 4.15 M ô tả chức năng các chân của PIC 16P 877 197 Bảng 4.16 Các bit của thanh ghi OPTION_REG 202 Bảng 4.17 Các bit trong thanh ghi E E C O N l 208 Bảng 4.18 Các bit trong thanh ghi INTCON của PIC 16P877 212 Bảng 4.19 Các bit trong thanh ghi P I E l 213 Bảng 4.20 Các bit trong thanh ghi P I E 2 214 Bảng 4.21 Các bit trong thanh ghi P I R l 215 Bảng 4.22 Các bit trong thanh ghi P IR 2 216 Bảng 4.23 Các bit của thanh ghi TRISE 218 Bảng 4.24 Các bit trong thanh ghi T IC O N 220 Bảng 4.25 Các bit trong thanh ghi T 2C O N 222 Bảng 4.26 Mô tả thanh ghi CCPICON và C C P 2C O N 224 Bảng 4.27 Các bit trong thanh ghi SSPCON 234 Bảng 4.28 Các bit trong thanh ghi SSPSTAT 238 Bảng 4.29 Mô tả thanh ghi SSPCO N 2 239 Bảng 4.30 M ô tả thanh ghi T X S T A 252 Bảng 4.31 M ô tả thanh ghi RCSTA 253 Bảng 4.32 M ô tả thanh ghi ADCONO 260 Bảng 4.33 M ô tả thanh ghi A D C O N l 261 Bảng 5.1 Mô tả chức năng các chân LCD 16x2 288 Bảng 5.2 Mã lệnh L C D 290 Bảng 5.3 C ác câu lệnh cho bộ điều khiển L C D 290 Bảng 5.4 Quan hệ giữa vị trí góc khớp và giá trị điện áp đầu vào A D C 305
VI xử LỸ VÀ VIĐIÉU KHIỂN - NGUYÊN LỸ VẦ ỨNG DỤNG
Trang 23DANH MỤC BẢNG BIẾU
Bảng 5.5 Giá trị logic của A, B và hướng Encoder tương lin g 307 Bảng 5.6 H ướng quay xác định từ các giá trị pha logic (B ,A ) 307 Bảng 5.7 Đặc tính kỹ thuật của L M 3 5 315 Bảng 5.8 Mô tả chức năng từng chân của X T R 103 317 Bảng 5.9 Chức năng các chân IC 3 9 5 2 328 Bảng 5.10 Trạng thái cấp điện các pha của động cơ 2 p h a 337 Bảng 5.11 Trạng thái cấp điện các pha của động cơ 4 p h a 338
Trang 24Chương 1
GIỚI THIỆU VÊ VI XỬ LÝ VÀ VI ĐIÊU KHIỂN
Mục tiêu
• Cấu trúc cơ bản của Vi xử lý và Vi điều khiển
• Lịch sử và quá trình phát triển Vi xử lý, Vi điều khiển
• Các thuật ngữ cơ bản như nhúng, bộ nhớ ngoài, bộ Vi
bị ngoại vi thông qua các cổng vào/ra
Vi xử lý chứa bên trong chip tất cả các thành phần chủ yếu cho quá trình tứìh toán ngoại từ bộ nhớ và các cổng vào/ra Xử
lý dữ liệu là chức năng chứứi của Vi xử lý (bao gồm cả từứì toán
và vận chuyển dữ liệu)
Trang 251.1.1 Cấu trúc và hoạt động của Vi xử lý
Vi xử lý gồm có bộ đếm chương trình, bộ giải mã lệnh, thanh ghi lệnh, các thanh ghi mục đích khác, khối điều khiển logic và đơn vị logic và số học (ALU) Sơ đồ khối và mô hình lập trình của Vi xử lý được cho trong Hình 1.1 và Hình 1.2 Sơ
đồ khối của Vi điều khiển chỉ ra chức năng của từng khối và cái cách mà các khối này được kết nối với nhau Mô hình lập trình
hỗ trợ các lập trinh viên trong quá trình viết chương trình Sự khác biệt giữa hai khối này đó là mô hình lập trình chỉ thể hiện những khối mà các lập trình viên có thể thay đổi Vì vậy có thể nói rằng, sơ đồ khối sẽ giúp chúng ta dễ dàng hiểu được cấu trúc của Vi xử lý còn mô hình lập trình giúp chúng ta hiểu được quy trình làm việc của Vi xử lý trong môi trường lập trình
Cấu tạo Vi xử lý gồm có ba khối chmh sau:
• Đơn vị logic và số học (ALU)
• Các thanh ghi
• Đơn vị điều khiển (CU)
Các Bus dữ liệu nội bộ được sử dụng để kết nối và truyền
dữ liệu giữa các khối logic với nhau
Đơn vị logic và sô học (ALU)
Một trong số những đơn vị logic chính của Vi xử lý là đơn
vị logic và SỐ học (ALU) Đơn vị này gồm có hai đầu vào và một đầu ra Bus dữ liệu nội bộ của Vi xử lý được nối tới hai đầu vào của ALU thông qua thanh ghi tạm thời và bộ chứa
Đầu ra duy nhất của ALU được nối tới bus dữ liệu nội bộ Điều này cho phép gửi các thông tin đầu ra của ALU tới mọi thiết bị được nối tới bus Hầu hết các thanh ghi A của Vi xử lý cung cấp dữ liệu cho hoạt động của ALU và sau khi thực hiện các phép toán, kết quả được gửi trở lại thanh ghi A và luTi trữ tại đó Thanh ghi đặc biệt này thông thường được biết đến như
là bô chứa
Trang 26C h ư ơ n g 1 GIỚI THIỆU VÉ VI xử LÝ VÀ VIĐIÉU KHIỂN
ALU làm việc trên một hoặc hai từ (word) dữ liệu phụ thuộc vào loại thao tác ALU sử dụng số lượng cổng đầu vào phụ thuộc vào mỗi hoạt động Ví dụ, phép cộng sử dụng cả hai đầu vào ALU trong khi phép bù dữ liệu chỉ sử dụng một đầu vào duy nhất
EHều k h iển logịc
raẩri
| ^ ỊỊg n h J
B ộ giải m ã iẹn h
t-»anh ghi địỉ chi bộ nhớ
Bus địa chi 16-bit
Hình 1.1 Sơ đồ khối cùa Vi xử lý
Bộ chứa (A) Thanh ghi
trạng thái Thanh ghi B Thanh ghi c
Thanh ghi D Thanh ghi E
Thanh ghi H Thanh ghi L
Con trỏ ngăn xếp (SP)
Bộ đếm chương ưình (PC)
Hình 1.2 Mô hình lập trình
Trang 27ALU của hầu hết các Vi xử lý có thể thực hiện các chức năng như phép cộng, phép trừ, AND, OR, XOR, bù, dịch trái, dịch phải, tăng và giảm.
Các thanh ghi
Các thanh ghi là một bộ phận quan trọng trong sơ đồ khối
và mô hìiứi lập trình của Vi xử lý Các thanh ghi cơ bản được tìm thấy trong hầu hết các Vi xử lý đó là bộ chứa, bộ đếm chương trình, con trỏ ngăn xếp, thanh ghi trạng thái, các thanh ghi mục đích chung, thanh ghi địa chỉ bộ nhớ, thanh ghi lệnh
và các thanh ghi dữ liệu tạm thời
Bộ chứa
Bộ chứa là thanh ghi làm việc chừih của Vi xử lý Tại hầu hết mọi thời điểm nó được sử dụng để chứa dữ liệu cho các thao tác Mỗi thao tác xử lý hai từ cho dù là số học hay logic thì
bộ chứa sẽ chứa một trong các từ đó Từ còn lại có thể xuất hiện hoặc là trong thanh ghi khác hoặc là trong vị trí bộ nhó Trong phần lớn thời gian, kết quả của các thao tác số học hay logic
đều được đặt trong bộ chứa Trong những trường hợp đ ó, nội
dung hiện tại của bộ chứa sẽ bị xóa do bị ghi đè
Bộ chứa cũng được sử dụng cho quá trình truyền dữ liệu giữa một cổng vào/ra và một vị trí bộ nhớ hoặc giữa các vị trí
bộ nhớ với nhau
Bộ đêht chương trình
Bộ đếm chương trình là một trong những thanh ghi quan trọng nhất của Vi xử lý Chương trình là một chuỗi các câu lệnh được lưu trong bộ nhớ Những câu lệnh này sẽ nói cho Vi xử lý chúìh xác làm thế nào để giải quyết một vấn đ'ê Điều quan trọng là phải thực hiện những câu lệnh này một cách chứih xác
đế có được kết quả chính xác như mong muốn Quá trình thực hiện chuỗi lệnh này được giám sát bởi bộ đếm chương trình
Nó theo dõi câu lệnh đang được thực hiện cũng như câu lệnh thực hiện kế tiếp là gì
VI xử LÝ VA VIĐIẼU KHIỂN - NGUYÊN LÝ VẦ ỨNG DỤNG
Trang 28Bộ đếm chương trình cung cấp địa chỉ của vị trí bộ nhớ nơi mà câu lệnh kế tiếp sẽ lấy Độ dài bộ đếm chương trình sẽ quyết định độ dài chương trình lớn nhất (tính theo bytes) Ví
dụ, Vi xử lý có bộ đếm chương trình 16-bit có thể định địa chỉ cho bộ nhớ có dung lượng 216 bytes (64 K)
Trước khi Vi xử lý bắt đầu thực hiện một chương trình, bộ đếm chương trình phải được nạp địa chỉ bộ nhớ thích hợp Vị trí bộ nhớ này phải chứa mã vận hành của câu lệnh đầu tiên trong chương trình Trong hầu hết các Vi xử lý, vị trí này là cố định Ví dụ, địa chỉ bộ nhớ (OOOOH) cho bộ đếm chương trình 16-bit Địa chỉ cố định được nạp vào bộ đếm chương trình bằng cách khởi động lại Vi xử lý
Nói một cách đơn giản hơn, các câu lệnh phải được thực hiện theo một trật tự chính xác để nhận được kết quả chứứi xác Nghĩa là các câu lệnh phải tuân theo một trình tự logic Tuy nhiên, trong một số trường hợp sẽ là tốt hơn để thực hiện một phần của chương trình mà không tuân theo trình tự (nhưng không xung đột với trình tự logic) của chương trình Ví dụ, trong chương trình sẽ có nhiều phần được lặp lại nhiều lần trong quá trình thực hiện chương trình Thay vì cách viết lặp lại nhiều lần đoạn chương trình đó thì người lập trình có thể viết đoạn chương trình đó chỉ một lần Đoạn chương trình này được viết riêng biệt và được gọi là hàm con Hình 1.3 chỉ ra cách mà chưong trình chính và chương trình con được thực hiện
Bộ đếm chương trình đóng vai trò chứữi trong quá trình thực hiện hàm con khi mà nó có thê nạp địa chi bộ nhớ theo yêu cầu Cùng với sự giúp đỡ của câu lệnh, mọi địa chỉ bộ nhớ có thể được nạp vào bộ đếm chương trình Khi hàm con được thực hiện, bộ đếm chương trình được nạp địa chỉ bộ nhớ của câu lệnh đầu tiên trong hàm con Sau khi thực hiện hàm con, bộ đếm chương trình sẽ được nạp địa chỉ bộ nhớ của câu lệnh tiếp theo từ vị trí mà điều khiển chương trình được truyền tới chương trình con
C h ư ơ n g 1 GIỚI THIỆU VẼ VI xử LÝ VÀ VI ĐIÊU KHIỂN
Trang 29VI xử LỸ VÀ VI ĐIÉU KHIẾN - NGUYÊN LÝ VÀ ỨNG DỤNG
Thanh ghi trạng thái
Thanh ghi trạng thái được sử dụng để lưu các kết quả của một điều kiện nào đó khi mà các phép toán được thực hiện trong quá trình thực hiện chương trình Thanh ghi trạng thái cũng được nhắc đến như là thanh ghi cờ Các phép toán ALU
và các phép toán thanh ghi có thể set hoặc reset một hoặc nhiều
bit trong thanh ghi trạng thái Phụ thuộc vào trạng thái của các bit này sẽ dẫn tói thực hiện một tập các câu lệnh mới của Vi xử
lý Các câu lệnh này cho phép thực hiện một chương trình đê thay đổi luồng trên cơ sở điều kiện của các bit trong thanh ghi trạng thái Vì vậy, trạng thái các bit trong thanh ghi trạng thái
có ửiể được sử dụng để thực hiện các quyết định logic trong chương trình
1) Cờ nhớ (Carry/Borroiv Fỉag): Bit này được sử dụng khi
kết quả phép tứứi ALU thực hiện vượt ra ngoài giới hạn lưu trữ
cho phép tính của thanh chứa Bit Carry được set khi tồng của hai số 8-bit lớn hơn 1111 1111 (FFH) Bit Borroĩư được tạo ra khi
thực hiện phép trừ một số nhỏ hơn cho một số lớn hon
2) Cờ Zero (Zero Flag): Bit này được set khi nội dung của
thanh ghi bằng 0 sau khi ALU thực hiện các phép từih Điều
Trang 30nàv xảy ra không chỉ khi thực hiện phép tính giảm thanh ghi
mà còn vói mọi phép từih số học hoặc logic khiến cho nội dung của thanh ghi bằng 0
3) Cờ dấu (Sign Flag): Trong phép toán số học bù 2, bit
quan trọng nhất là bit Sign Nếu bit này có giá trị là '1' thì số đó
là âm, ngược lại là số dương Bit này được set khi mọi phép
toán số học hay logic cho kết quả âm
4) Cờ phụ (Auxiliary Carry Flag): Bit này được set khi có sự
tràn của phép cộng 4-bit đầu tiên nhớ sang bit thứ 5 Cờ này được sử dụng trong phép toán số học BCD
5) Cờ tràn (Over/loĩv Flag): Cờ tràn được sử dụng trong các
phép từih SỐ học có dấu, nó chỉ thị kết quả là một số dương lớn hơn hoặc là một số dương nhỏ hơn khả năng chứa của một
thanh ghi chứa kết quả Cờ này luôn được set khi có tràn; vì vậy
cần phải kiểm tra trạng thái của bit này tùy theo trường hợp số biểu diễn là có dấu hay không có dấu để không ảnh hưởng tới chương trình
6) Cờ chẵn lẻ (Parity FIag): Cờ chẵn lẻ được sử dụng để
thông báo số lượng bit '1' trong kết quả của phép từửì logic là
chẵn hay lẻ, khi bit này bằng '1' thì số lượng bit 'V trong kết
quả là một số chẵn và ngược lại
Con trỏ ngăn xếp
Đây là một thanh ghi quan trọng và được các lập trình viên sử dụng thưòng xuyên Trước đó, chúng ta đã biết được làm thế nào mà các hàm con được thực hiện bằng cách thay đổi nội dung của bộ đếm chương trình Nhimg có một câu hỏi mà bạn sẽ đặt ra đó là làm thế nào mà bộ đếm chương trình được nạp địa chỉ của câu lệnh kế tiếp từ vị trí điều khiển chương trình được chuyển tới hàm con Địa chỉ trả lại này được giữ trong một miền bộ nhớ đặc biệt và được gọi là ngăn xếp Trước khi chuyển điều khiển chương trình tới hàm con, địa chỉ quay lại được đẩy lên ngăn xếp Sau khi thực hiện xong chương trình con, địa chỉ quay lại đó được lấy ra từ ngăn xếp và nạp vào bộ đếm chương trình
C h ư ơ n g 1 GIỚI THIỆU VẼ VI xử LÝ VÀ VI ĐIỂU KHIẾN
Trang 31Địa chỉ bộ nhớ của miền ngăn xếp được cho bởi một thanh ghi đặc biệt được gọi là con trỏ ngăn xếp Giống như bộ đếm chương trình, con trỏ ngăn xếp tự động chỉ tới vị trí phù hợp tiếp theo trong bộ nhớ Trong hầu hết các Vi xử lý, con trỏ ngăn xếp giảm (chi tới vị trí bộ nhớ thấp hơn) khi dữ liệu được đẩy lên ngăn xếp Thông thường các phép toán ngăn xếp là các phép toán 2 bytes Điều này có nghĩa là con trỏ ngăn xếp giảm hai vị trí địa chỉ bộ nhớ mỗi lần đẩy 2 bytes lên ngăn xếp Khi
dữ liệu được lấy ra từ ngăn xếp, con trỏ ngăn xếp tăng hai vị trí địa chỉ bộ nhớ
Cần chú ý khi bạn lưu dữ liệu lên ngăn xếp, con trỏ ngăn xếp luôn chỉ tới dữ liệu cuối cùng cần đẩy lên ngăn xếp và khi bạn cố gắng lấy dữ liệu từ ngăn xếp bạn cần lấy dữ liệu sau cùng được đưa lên ngăn xếp Loại hoạt động này của ngăn xếp được gọi là LIFO (vào sau ra trước - Last Ịn R rst Out)
Các thanh ghi mục đích chung
Các thanh ghi mục đích chung được sử dụng như là miền lưu trữ đơn giản với vai trò chứìh của miền này là để lưu trữ các kết quả trung gian của phép toán Truy xuất toán hạng từ các thanh ghi mục đích chung là nhanh hơn so với việc truy xuất từ bộ nhó
Thanh ghi địa chỉ bộ nhớ
Thanh ghi địa chỉ bộ nhớ cung cấp địa chỉ vị trí bộ nhó mà
Vi xử lý muốn sử dụng Thanh ghi địa chỉ lưu giữ một số có độ dài 16-bit nhị phân Đầu ra của thanh ghi địa chỉ bộ nhớ điều khiển bus địa chỉ 16-bit Đầu ra này được sử dụng để chọn một
Trang 32Thanh ghi dữ liệu tạm thời
ALU không thể lưu chính bản thân nó nên cần phải có các thanh ghi dữ liệu tạm thời ALU có hai đầu vào Một trong số
đó được nối tói bộ chứa và đầu còn lại được nối tới thanh ghi
dữ liệu tạm thời Các lập trình viên không thể truy cập vào thanh ghi này; vì vậy nó không phải là một phần của mô hình lập trình
Điêu khiển logic
Điều khiển logic là một khối quan trọng của Vi xử lý Điều khiển logic có vai trò đối với công việc của tất cả các bộ phận khác của Vi xử lý Nó duy trì sự đồng bộ trong hoạt động của các bộ phận khác nhau Quá trình đồng bộ hóa được thu nhận cùng với sự trợ giúp của một trong những yếu tố đầu vào bên ngoài của điều khiển logic đó là xung đồng hồ của Vi xử lý Xung đồng hồ là tm hiệu thời gian cơ bản bên trong Vi xử lý
Điều khiển logic nhận tín hiệu từ bộ giải mã chỉ lệnh (bộ phận giải mã câu lệnh Imi trong thanh ghi lệnh) Sau đó, điều khiến logic sẽ phát ra các tín hiệu điều khiển cần thiết để thực hiện câu lệnh này Điều khiển logic thực hiện một vài chức năng đặc biệt khác như xử lý các ngắt Một ngắt giống như một yêu cầu Vi xử lý từ các thiết bị ngoại vi khác như bộ nhớ hay mô-đun vào/ra Ngắt sẽ yêu cầu Vi xử lý thực hiện một chương trình đặc biệt
Bus dữ liệu nội bộ
Bus dữ liệu nội bộ có vai trò nối các bộ phận của Vi xử lý
và cho phép chúng giao tiếp với nhau Dữ liệu truyền qua bus nội bộ được điều khiển bởi điều khiển logic
Bus nội bộ của Vi xử lý thường được nối tới bus dữ liệu bên ngoài Do đó, Vi xử lý có thể giao tiếp với bộ nhớ ngoài hay các thiết bị vào/ra Thông thường, bus dữ liệu nội bộ được nối tới bus dữ liệu bên ngoài bởi bus hai chiều (bộ truyền nhận)
C h ư ơ n g 1 GIỚI THIỆU VỂ VI xử LÝ VÀ VIĐIÉU KHIỂN
Trang 331.1.2 Bộ Vi xử lý CISC và RISC
CISC và RISC là các thuật ngữ thường được sử dụng khi nói về Vi xử lý và Vi điều khiển Các bộ xử lý CISC có một tập lệnh lớn Tập lệnh lớn hơn sẽ giúp ích cho những lập trình viên
sử dụng ngôn ngữ hợp ngữ để lập trình khi mà nó có thể cung cấp sự lừih hoạt để viết các chương trình ngắn gọn và hiệu quả Mục tiêu của cấu trúc CISC là viết một chương trình sử dụng ngôn ngữ lập trình hợp ngữ ngắn nhất có thể Điều này có thể thực hiện bằng cách phát ữiển phần cứng của bộ xử lý để có thể hiểu và thực hiện các hoạt động Ví dụ với MCS-51, lệnh MUL (nhân) là một lệnh phức tạp, chỉ thực hiện khi được chỉ rõ trong một lệnh xác định và phép nhân được thực hiện bởi phần cứng Việc xây dựng các lệnh có cấu trúc phức tạp trực tiếp trong phần cứng sẽ mang lại hai hiệu quả Việc thực hiện bởi phần cióng không chỉ nhanh hơn mà còn tiết kiệm được bộ nhớ chương trình bởi dòng lệnh rất ngắn Vì vậy, các lập trình viên cần có một nền tảng kiến thức nhất định
Các lập trình viên muốn có ít câu lệnh, đơn giản và nhanh hơn khi so với các câu lệnh CISC với số lượng câu lệnh lớn, phức tạp và chậm hơn Một trong những ưu điểm của RISC đó
là có các câu lệnh đơn giản hơn, những chip RISC yêu cầu thực hiện phần cứng nhỏ hơn, điều này giúp chúng ta thiết kế đơn giản hơn và chi phí sản xuất thấp hơn Và luôn luôn là dễ hơn
để viết các trình dịch tối ưu khi mà số lượng các câu lệnh là nhỏ hơn Một ví dụ Vi điều khiển với cấu trúc RISC là họ Vi điều khiển PIC của Microchip
1.2 Vi điều khiển
Ngày nay, chúng ta có thể thấy rất nhiều sản phẩm công nghiệp và dân dụng như thiết bị điều khiển tù xa, máy ừi hóa đơn điện thoại, máy biến áp, máy giặt, lò vi sóng, điện thoại di động, động cơ, thiết bị đo lường và các sản phẩm tương tự
VI xử LÝ VÀ VI ĐIỂU KHIỂN - NGUYÊN LỸ VA ỨNG DỤNG
Trang 34C h ư ơ n g 1 GIỚI THIỆU VÉ VI xử LỸ VẦ VI ĐIẾU KHIỂN
khác Tự động hóa ngày càng trở nên cần thiết với sự thuận tiện trong quá trình sản xuất Lưu trữ và xử lý số liệu là một phần không thể thiếu trong bất kỳ hệ thống điều khiển tự động nào Điều cần thiết đó là cần có một thiết bị để đáp ứng được những yêu cầu trên và Vi điều khiển đã ra đời; nó cho phép kiểm soát thòi gian, trình tự hoạt động của các thiết bị và quy trình sản xuất Hơn nữa vói sự trợ giúp của Vi điều khiển, các thiết bị có thể thực hiện các phép từủi logic và số học đơn giản Bất kỳ một
hệ thống nào có bộ điều khiển từ xa thì hầu hết là có sử dụng Vi điều khiển
Vcc
CPU Đơn V ị điều khiển và định thòi
M ạch dao động
Các thanh ghi
V ào/ra song song và nối tiếp
Các kênh ADC
Các khối chức năng thiết bị cụ thế
D A C h o ặc
Hình 1.4 Sơ đồ các khối chức năng cơ bản của Vi đièu khiến
Vi điều khiển là một máy tứửì được tích hợp trên một vi mạch, nó thường được sử dụng để điều khiển các thiết bị điện
tử Vi điều khiển có khối xử lý trung tâm (CPU), bộ Iihớ, các cổng truy xuất vào/ra (I/O), các bộ định thời và bộ đếm, bộ chuyển đổi tương tự - số (ADC), bộ chuyển đổi số - tương tự (DAC), các cổng truyền thông nối tiếp, ngắt logic, mạch dao động và nhiều khối chức năng khác được tích hợp trên vi mạch Hình 1.4 mô tả sơ đồ các khối chức năng của một Vi điều khiển Chú ý rằng, có sự thay đổi các khối chức năng từ thiết bị này sang thiết bị khác và từ nhà sản xuất này sang nhà sản xuất khác Tất cả các khối chức năng này đều được tích hợp trên một
Trang 35vi mạch điện tử duy nhất Vì vậy, có thể giảm kích thước mạch điều khiển, giảm lượng tiêu thụ năng lượng, tăng độ tin cậy và tính lữứi hoạt trong quá trình thiết kế một ling dụng Người thiết kế có thể giảm bớt các vấn đề gặp phải khi cần giao tiếp với các thiết bị ngoại vi như ADC, D AC và có thể tập trung vào phát triển các ứng dụng Các thiết bị có thể được lập trình
để tạo nên một hệ thống thông mứìh Điều này hoàn toàn có thể làm được nhờ vào khả năng xử lý dữ liệu và bộ nhớ của Vi điều khiển Khi người dùng đã tìm hiểu và sử dụng một loại Vi điều khiến thì đó là tiền đề để kích thích họ tìm hiểu thêm các dòng
Vi điều khiển khác Một số loại Vi điều khiển phổ biến như MCS-51, MCS-96 của Intel, họ 68HC12 của hãng Motorola, PIC 16CXX, 17CXX của hãng Microchip
Vi điều khiển có tất cả các khối chức năng có thể thực hiện yêu cầu chung của hệ thống tự động hóa Ví dụ, Vi điều khiển
có thể trực tiếp nhận tín hiệu tương tự từ cảm biến nhiệt độ, xử
lý và hiển thị kết quả lên màn hình LCD như Hình 1.5 Chú ý rằng, bộ chuyển đổi ADC đã được tích hợp trên Vi điều khiển;
vì vậy, chúng ta không cần phải sử dụng bộ chuyển đổi ADC cũng như bộ nhớ ngoài Người thiết kế chỉ phải viết chương trình để đọc dữ liệu từ cảm biến thông qua bộ ADC và hiêh thị lên màn hình LCD
VI xử LÝ VÀ VI ĐIỂU KHIỂN - NGUYÊN LÝ VÀ ỨNG DỤNG
Trang 361.2.1 Thiêí bị nhúng và bộ nhớ ngoài
Ngày nay, các thiết bị nhúng ngày càng trở nên phổ biến
Đó là một thiết bị với với tất cả các khối chức năng được tích hợp trên chip, bao gồm cả bộ nhớ chương trình và bộ nhớ dữ liệu Không cần phải có các bus dữ liệu và địa chỉ bên ngoài Ví
dụ, Atmel 89C2051 là một bộ điều khiển nhúng, nó có các bộ đếm/định thời, bộ nhớ RAM, EPROM, các cổng xuất nhập vào/ra, bộ so sánh chính xác cùng với CPU, đơn vị điều khiển
và định thời Loại Vi điều khiển này chỉ có 20 chân Mã chương trình chỉ được thực hiện từ bộ nhớ chương trình nội
Tuy nhiên, chúng ta có thể thây rằng các thiết bị như 8031 của họ MCS-51 cần phải giao tiếp với bộ nhớ chương trình ngoài Những thiết bị này là các thiết bị bộ nhớ ngoại vi Với 8051/8751, chương trình có thể thực hiện một phần từ bộ nhớ chương trình trên chip và một phần thực hiện từ bộ nhớ ngoài Ngoài ra, có thế lựa chọn thực hiện toàn bộ chương trình từ bộ nhớ ngoại vi Các thiết bị bộ nhớ ngoại vi có một bus địa chỉ/dữ liệu ngoại vi
1.2.2 Kiêk trúc Harvard và Von Neumann
Kiến trúc máy tứih có hai loại chmh đó là kiến trúc Harvard
và kiến trúc Von Neumann Hình 1.6 mô tả kiến trúc Harvard Nhiều loại Vi điều khiển có thiết kế đặc biệt, các bộ xử lý từi hiệu
số DSP (Digital Signal Processor) sử dụng kiến trúc Harvard
Kiến trúc Harvard sử dụng các bộ nhớ riêng biệt cho chương trình vói các bus địa chỉ và bus dữ liệu độc lập với nhau Vì có hai đường địa chỉ và dữ liệu riêng biệt nên không cần phải có kênh phân chia thời gian cho các bus địa chỉ và dữ liệu Kiến trúc này không chi hỗ trợ các bus song song cho địa chỉ và dữ liệu mà còn cho phép tổ chức bên trong khác nhau sao cho câu lệnh có thể được nạp trước và giải mã trong khi vẫn
có dữ liệu đang được thực hiện Hơn nữa, bus dữ liệu có thể có kích thước khác so với bus địa chỉ Điều này cho phép tối ưu độ rộng bus địa chỉ và bus dữ liệu để câu lệnh được thực hiện với
C h ư ơ n g 1 GIỚI THIỆU VẼ VI xử LÝ VÀ Vi ĐIỄU KHIỂN
Trang 37VI xử LÝ VÀ VI ĐIẾU KHIỂN - NGUYÊN LÝ VÀ ỨNG DỤNG
tốc độ nhanh Ví dụ, họ Vi điều khiến MCS-51 của hãng Intel có kiến trúc Harvard vì có bộ nhớ chương trình và bộ nhớ dữ liệu khác nhau, các bus địa chi và bus dữ liệu tách biệt Tương tự, Vi điều khiển PIC của Microchip cũng sử dụng kiến trúc Harvard
Với kiến trúc Von Neumann, chương trình và dữ liệu chia
sẻ cùng một bộ nhớ Hình 1.7 mô tả kiến trúc Von Neumann Kiến trúc Von Neumann cho phép lưu và chừủr sửa các chương trình dễ dàng Tuy nhiên, việc lưu mã có thể không tối ưu và cần phải nạp nhiều lần để hình thành câu lệnh Việc nạp chương trình và dữ liệu được tiến hành bằng cách sử dụng kênh phân chia thời gian, điều này gây ảnh hưởng đến hiệu suất làm việc Vi điều khiển 68HC11 của Motorola là một loại
Vi điều khiển sử dụng kiến trúc Von Neumann
1.2.3 Vi điêu khiển 8-bit và 16-bit
Tính năng khác nhau của các loại Vi điều khiến được thể hiện ở độ dài câu lệnh Vi xử lýA^i điều khiển 8-bit là một thiết
bị với các thanh ghi có độ rộng 8-bit và phần lớn các lệnh của
nó sử dụng các toán hạng với độ rộng 8-bit Hâu như là không
có sự phụ thuộc trực tiếp vào độ rộng của bus dữ liệu hay bus địa chỉ Ví dụ, 8088 có bus dữ liệu ngoại vi 8-bit nhưng nó là một
bộ Vi xử lý 16-bit Trong khi đó^ 8085 là Vi xử lý 8-bit MCS-51 là
họ Vi điều khiển 8-bit MCS-96 là ho Vi điều khiển 16-bit
Trang 38Khi thiết kế một ứng dụng thì việc quyết định sử dụng Vi điều khiển 8-bit hoặc 16-bit sẽ là rất quan trọng Vi điều khiển 8-bit chiếm ưu thế hơn so với Vi điều khiển 16-bit Lý do đó là rất nhiều nhà thiết kế quen dùng Vi điều khiển 8-bit và chúng
ta luôn luôn có thể thực hiện các phép toán 16-bit trên Vi điều khiển 8-bit bằng cách viết những chương trình phù hợp
1.2.4 Một sô'loại Vi đtêu khiển thương mại
Khi thiết kế một ứng dụng thì điều cần thiết là đưa ra được các yêu cầu chức năng và lựa chọn loại Vi điều khiển phù hợp Vì vậy chúng ta cần biết được các loại Vi điều khiển có trên thị trường Các họ Vi điều khiển sẽ được thảo luận dưới đây là PIC của Microchip, MCS-51 của hãng Intel, 89CXX/89CXX51 của Atmel
I.2.4.2 MCS-51 và Atmel 89CXX, 89CXX51
Vi điều khiển MCS-51 và Atmel 89CXX, 89CXX51 là các dòng Vi điều khiêh 8-bit Atmel 89CXX và 89CXX51 tưong thích với họ MCS-51 Do đó, khi học về MCS-51 bạn cũng có thể học các Vi điều khiển này của Atmel Chúng ta hãy coi MCS-51 như
là điểm bắt đầu để học Vi điều khiển Tuy nhiên, ngày nay bạn
có thể dễ dàng có được các công cụ phát triển cũng như ghi chú ứng dụng dễ dàng từ các nhà sản xuất cho các họ Vi điều khiển khác nhau
L2.4.2 HọM CS-51
MCS-51 là họ Vi điều khiển 8-bit, với tần số hoạt động là
12 MHz và nó ra đòi để thay thế cho Vi điều khiển MCS-48 Bảng 1.1 liệt kê danh sách các thiết bị của họ này Được thiết kế dựa trên công nghệ bán dẫn oxit kim loại tốc độ cao, HMOS Các phiên bản CHMOS của thiết bị này cũng rất phổ biến với
thêm ký tự 'C', ví dụ như 80C51, 87C51 Có một số ưu điểm nổi
bật khi sử dụng phiên bản CHMOS của Vi điều khiển MCS-51
so vói phiên bản HMOS đó là phiên bản CHMOS tiêu tốn ít
C h ư ơ n g 1 GIỚI THIỆU VÉ VI xử LÝ VÀ VIĐIÉU KHIỂN
Trang 39VI xử LỸ VA VI eiÉU KHIỂN - NGUYÊN LỸ VẦ ỨNG DỤNG
điện năng, khả năng chống nhiễu tốt và có tốc độ cao Các thiết
bị CHMOS có cấu trúc tương thích với HMOS Chi khác là thiết
bị CHMOS có thêm đặc tứứì khởi động lại khi nguồn thấp (Power-Down) và chế độ ngủ (Idle)
Không có Không có 4KROM 4K ROM 4KEPROM 8K EPROM
Số lượng Timer/Counter 16-bit
Tiêu chí lựa chọn thiết bị là dựa trên những yêu cầu về chức năng, nguồn nuôi, kích thước bo mạch in, số lượng pin và chi phí sản phẩm Đối với sản phẩm sản xuất hàng loạt, người thiết kế cần phải quan tâm tới bộ nhớ ROM Tuy nhiên, đối với các sản phẩm sản xuất ít thì phiên bản EPROM hoặc phiên bản CPU với bộ nhớ chương trình ngoài là phù hợp Cũng có trường hợp dùng phiên bản EPROM /ROM để tránh phải kết nối với bộ nhớ ngoài Tuy nhiên, có một điều cần chú ý đó là EPROM hạn chế về số lần ghi/xóa, thông thường nó chỉ khoảng
1000 lần ghi/xóa Từ những điểm trên, bạn nên chọn phiên bản EPROM hoặc ROM bởi vì nó chỉ yêu cầu thay thế một linh kiện duy nhất trên mạch khi cần thiết Hơn nữa, trong quá trình phát triển sản phẩm, bạn sẽ phải tiêu tốn rất nhiều châ't xám để thiết kế phần mềm Vì vậy, tốt hơn là bạn nên tạo ra các thiết lập bảo mật để tránh bị lấy cắp và sao chép phần mềm
1.2.43 Vi điêu khiển Atmeỉ
Một vài thiết bị họ Vi điều khiển Atmel được liệt kê trong Bảng 1.2 Vấn đề chính được thảo luận ở đây đó là các thiết bị
ỷlash khả trình Các thiết bị này có thể hoạt động với tần số từ 0
tới 24 MHz Hoạt động ở tần số thấp rất là quan trọng khi điện
Trang 40áp tiêu thụ ở mức nhỏ Ví dụ, khi thiết bị sử dụng nguồn từ pin thì công suất tiêu thụ cần được đặc biệt quan tâm Tuy nhiên, cần phải lưu ý rằng tốc độ thực thi câu lệnh cũng giảm khi hoạt động ở tần số thấp Chu kỳ định thời cũng phụ thuộc
vào tần số hoạt động Các chế độ Poiưer-Doiưn và Idle được sử
dụng để giữ cho lượng tiêu thụ điện năng ở mức thấp nhất Bạn có thể chọn một thiết bị hoạt động ở mức điện áp thấp, thông thường từ 2,7 V đến 6 V Các thiết bị 89C1051/2051 của Atmel hỗ trợ hoạt động ở mức điện áp này Ví dụ, Atmel 89C4051 hoạt động ở điện áp 3-6 V
Bảng 1.2 Một số dòng Vi điều khiển của hãng Atmel
C h ư ơ n g 1 6IỚI THIỆU VẼ VI xử LỸ VÀ VIĐIẼU KHIỂN
(bytes)
Timer /Counter 16-bit
Đầu vào /ra số
tiếp vào/ra nối tiếp song công
SỔ chân (PDIP)
Bộ so sánh tương tự
1.2.4.4 Vi điêu khiển PIC
PIC 16CXX, 17CXX là loại Vi điều khiển 8-bit của hãng Microchip sử dụng cộng nghệ CMOS Vi điều khiển PIC được