1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Vi xử lý và vi điều khiển nguyên lý và ứng dụng

370 232 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 370
Dung lượng 8,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 3

MỤ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 4

Chươ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 5

MỤ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 6

VI 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 7

MỤ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 8

4.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 9

MỤ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 10

5.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 11

L0I 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 12

Chươ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 13

CHMOS 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 14

VI 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 15

DANH 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 16

Hì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 18

Hì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 19

Hì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 20

Hì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 21

DANH 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 22

Bả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 23

DANH 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 24

Chươ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 25

1.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 26

C 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 27

ALU 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 28

Bộ đế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 29

VI 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 30

nà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 32

Thanh 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 33

1.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 34

C 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 35

vi 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 36

1.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 37

VI 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 38

Khi 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 39

VI 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

Ngày đăng: 29/12/2019, 11:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w