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

Giao trinh PIC vi điều khiển

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

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ – BỘ MÔN CƠ ĐIỆN TỬ

Lưu hành nội bộ



DANH MỤC HÌNH ẢNH

Hình. 1.1: Intel 4004, vi xử lý 4 bit thương mại đầu tiên năm 1971 [1] ................................... 2
Hình. 1.2: Cấu trúc của một chip vi xử lý ............................................................................................... 2
Hình. 1.3: Cấu trúc của một chip vi điều khiển [2] ............................................................................ 3
Hình. 1.4: Chip vi điều khiển PIC16F877A của hãng Microchip ................................................... 6
Hình. 1.5: Chương trình biên dịch CCS................................................................................................... 8
Hình. 1.6: Chương trình nạp PICkit 2 ..................................................................................................... 9
Hình. 1.7: Mạch nạp PICkit 2 của hãng Microchip [11] ................................................................... 9
Hình. 2.1: Sơ đồ chân họ PIC16F877A dạng PDIP [4] .................................................................... 12
Hình. 2.2: Sơ đồ chân họ PIC16F877A dạng TQFP [4] ................................................................... 12
Hình. 2.3: Sơ đồ khối của PIC16F87XA [4] ......................................................................................... 13
Hình. 2.4: Cấu trúc bộ nhớ theo kiểu Von Neumann và Harvard [6] ....................................... 14
Hình. 2.5: Sơ đồ bộ nhớ chương trình v{ ngăn xếp [4] .................................................................. 16
Hình. 2.6: Sơ đồ thanh ghi chức năng đặc biệt [4] ........................................................................... 17
Hình. 2.7: Xuất nhập I/O [7] ..................................................................................................................... 19
Hình. 2.8: Thạch anh 4Mhz được nối vào hai chân OSC1 và OSC2 của vi điều khiển ......... 19
Hình. 2.9: Các chân của port A trên PIC16F877A [4] ..................................................................... 20
Hình. 2.10: C|c thanh ghi liên quan đến Port A [4] ......................................................................... 21
TS. Đặng Phước Vinh – TS. Võ Như Thành

i



Danh mục hình ảnh
Hình. 2.11: Bit RBPU nằm trên thanh ghi OPTION_REG ............................................................... 22
Hình. 2.12: Các chân của port B trên PIC16F877A [4] ................................................................... 22
Hình. 2.13: C|c thanh ghi liên quan đến Port B [4] ......................................................................... 23
Hình. 2.14: Các chân của port C trên PIC16F877A [4] ................................................................... 23
Hình. 2.15: C|c thanh ghi liên quan đến Port C [4] ......................................................................... 25
Hình. 2.16: Các chân của port D trên PIC16F877A [4] ................................................................... 25
Hình. 2.17: C|c thanh ghi liên quan đến Port D [4] ......................................................................... 26
Hình. 2.18: Các chân của port E trên PIC16F877A [4] ................................................................... 27
Hình. 2.19: C|c thanh ghi liên quan đến Port E [4] ......................................................................... 27
Hình. 2.20: Đặc tính ngoại vi của chip vi điều khiển PIC16F877A [8] ..................................... 28
Hình 3.1: Cấu trúc của một chương trình biểu diễn bằng lưu đồ thuật toán ........................ 30
Hình 3.2: Lưu đồ thuật toán dùng cấu trúc điều kiện “if” ............................................................. 34
Hình 3.3: Lưu đồ thuật toán dùng cấu trúc điều kiện “if - else” ................................................. 35
Hình 3.4: Lưu đồ thuật toán dùng cấu trúc điều kiện “switch” .................................................. 37
Hình 3.5: Lưu đồ thuật toán dùng vòng lặp “ while”....................................................................... 40
Hình 3.6: Cấu trúc vòng lặp “while” ...................................................................................................... 40
Hình 3.7: Lưu đồ thuật toán dùng vòng lặp “do – while” .............................................................. 41
Hình 3.8: Sơ đồ mạch nhấp nh|y LED đơn ......................................................................................... 46
Hình 3.9: Sơ đồ mạch hiển thị LED 7 đoạn anode chung .............................................................. 48
Hình 3.10: Sơ đồ chân của LED 7 đoạn (bên trái) và hình ảnh thực tế của một LED 7 đoạn
(bên phải) ..................................................................................................................................... 49
Hình 3.11: LED 7 đoạn hiển thị các số từ 0 đến 9 ............................................................................ 49
Hình 3.12: LED 7 đoạn hiển thị các ký tự Alpha ............................................................................... 49
Hình 3.13: LED 7 đoạn loại Anode chung (Common Anode – CA) ............................................ 50
Hình 3.14: LED 7 đoạn loại Anode chung (Common Cathode – CA) ........................................ 51
Hình 4.1: Sơ đồ khối Timer0 [5] ............................................................................................................. 55
Hình 4.2: Thanh ghi OPTION_REG ......................................................................................................... 55
Hình 4.3: Thanh ghi T1CON...................................................................................................................... 57

Hình 4.4: Sơ đồ khối Timer1 [4] ............................................................................................................. 59
TS. Đặng Phước Vinh – TS. Võ Như Thành

ii


Danh mục hình ảnh
Hình 4.5: Counter 1 phải nhận 1 xung cạnh xuống trước khi có xung đếm [4] ................... 59
Hình 4.6: Sơ đồ khối Timer2 [4] ............................................................................................................. 61
Hình 4.7: Thanh ghi T2CON...................................................................................................................... 61
Hình 4.8: Sơ đồ mạch hiển thị LED 7 đoạn anode chung .............................................................. 63
Hình 4.9: Sơ đồ khối capture [4] ............................................................................................................ 65
Hình 4.10: Sơ đồ khối Compare [4] ....................................................................................................... 65
Hình 4.11: Điều chế độ rộng xung [4]................................................................................................... 66
Hình 4.12: Sơ đồ khối PWM [4] .............................................................................................................. 67
Hình 4.13: Thanh ghi CCPxCON .............................................................................................................. 67
Hình 5.1: Thực thi chương trình không có ngắt (a) và có ngắt (b) ........................................... 71
Hình 5.2: Thanh ghi INTCON ................................................................................................................... 72
Hình 5.3: Thanh ghi PIE1 .......................................................................................................................... 73
Hình 5.4: Thanh ghi PIE2 .......................................................................................................................... 73
Hình 5.5: Thanh ghi PIR1 .......................................................................................................................... 74
Hình 5.6: Thanh ghi PIR2 .......................................................................................................................... 75
Hình 6.1: Sơ đồ khối bộ ADC trong PIC [4] ......................................................................................... 79
Hình 6.2: Thanh ghi ADCON0 .................................................................................................................. 80
Hình 6.3: Thanh ghi ADCON1 .................................................................................................................. 81
Hình 6.4: Các kiểu định dạng kết quả [4] ............................................................................................ 81
Hình 6.5: Chu kỳ chuyển đổi ADC [4] ................................................................................................... 83
Hình 6.6: Sơ đồ mạch đo v{ hiển thị nhiệt độ sử dụng cảm biến nhiệt độ LM35 ................ 84
Hình 7.1: Thanh ghi TXSTA ...................................................................................................................... 87
Hình 7.2: Thanh ghi RCSTA ...................................................................................................................... 87

Hình 7.3: Sơ đồ khối chế độ truyền [4] ................................................................................................ 89
Hình 7.4: Sơ đồ khối chế độ nhận [4] ................................................................................................... 91
Hình 7.5: Giao tiếp simplex ...................................................................................................................... 92
Hình 7.6: Giao tiếp half-duplex ............................................................................................................... 92
Hình 7.7: Giao tiếp full-duplex ................................................................................................................ 93

TS. Đặng Phước Vinh – TS. Võ Như Thành

iii


Danh mục hình ảnh
Hình 7.8: Cổng COM 9 chân [10] ............................................................................................................ 94
Hình 7.9: Cổng COM 25 chân [10] .......................................................................................................... 95
Hình 7.10: Sơ đồ kết nối IC MAX232 và máy tính ............................................................................ 98
Hình 7.11: Ảnh thực tế của IC MAX232 (trái) và mạch sử dụng MAX232 (phải) ................ 98
Hình 7.12: Sơ đồ nối dây dùng giao tiếp UART – RS232 ............................................................... 98
Hình 7.13: Cáp chuyển đổi từ giao tiếp cổng USB sang cổng COM ............................................ 99
Hình 7.14: Sơ đồ khối giao diện SPI [4] ............................................................................................ 101
Hình 7.15: Thanh ghi SSPCON1 ........................................................................................................... 101
Hình 7.16: Thanh ghi SSPSTAT ............................................................................................................ 102
Hình 7.17: Sơ đồ kết nối của chuẩn giao tiếp SPI [4] ................................................................... 104
Hình 7.18: Giản đồ xung SPI ở chế độ Master [4] ......................................................................... 105
Hình 7.19: Giản đồ xung SPI ở chế độ Slave với CKE = 0 [4] .................................................... 106
Hình 7.20: Giản đồ xung SPI ở chế độ Slave với CKE = 1 [4] .................................................... 107
Hình 7.21: Khái niệm giao tiếp I2C ..................................................................................................... 108
Hình 7.22: Các chế độ hoạt động và tốc độ hoạt động của giao tiếp I2C .............................. 110
Hình 7.23: Gi~n đồ thời gian của giao tiếp I2C ............................................................................... 111
Hình 7.24: Quá trình tạo điều kiện START [4] ............................................................................... 111
Hình 7.25: Quá trình tạo điều kiện STOP [4] .................................................................................. 112

Hình 7.26: Quá trình tạo điều kiện START liên tục [4] ............................................................... 112
Hình 7.27: Qu| trình đọc 1 byte........................................................................................................... 114
Hình 7.28: Qu| trình đọc nhiều byte.................................................................................................. 115
Hình 7.29: Quá trình ghi 1 byte ........................................................................................................... 115
Hình 7.30: Quá trình ghi nhiều byte................................................................................................... 116
Hình 7.31: Thanh ghi SSPCON1 ........................................................................................................... 116
Hình 7.32: Thanh ghi SSPCON2 ........................................................................................................... 117
Hình 7.33: Thanh ghi SSPSTAT ............................................................................................................ 118
Hình 7.34: Sơ đồ khối giao tiếp I2C ở chế độ master [4] ........................................................... 119

TS. Đặng Phước Vinh – TS. Võ Như Thành

iv


DANH MỤC CÁC BẢNG

Bảng 1.1: So sánh giữa chip vi xử lý v{ chip vi điều khiển ............................................................. 4
Bảng 1.2: So sánh giữa các loại bộ nhớ .................................................................................................. 7
Bảng 2.1: Lựa chọn bank thanh ghi ....................................................................................................... 15
Bảng 3.1. Các ký hiệu trong lưu đồ thuật toán. ................................................................................. 30
Bảng 3.2. Các kiểu khai báo biến trong vi điều khiển PIC ............................................................. 31
Bảng 3.3. Các kiểu khai báo biến trong vi điều khiển PIC ............................................................. 32
Bảng 3.4. Các phép toán số học trong PIC ........................................................................................... 32
Bảng 3.5: Mã hiển thị LED 7 đoạn Anode chung .............................................................................. 50
Bảng 3.6: Mã hiển thị LED 7 đoạn Cathode chung ........................................................................... 51
Bảng 4.1. Chọn tỉ lệ bộ chia trước của Timer0 .................................................................................. 56
Bảng 4.2. Chọn tỉ lệ bộ chia trước của Timer1 .................................................................................. 58
Bảng 4.3. Lựa chọn ngõ ra của postscaler của Timer2 .................................................................. 61
Bảng 4.4. Lựa chọn ngõ ra của bộ chia trước của Timer2 ............................................................ 62

Bảng 4.5. So sánh ba bộ định thời trên PIC16F877A...................................................................... 62
Bảng 4.6. Dùng Timer trong chế độ CCP.............................................................................................. 68
Bảng 6.1. Lựa chọn xung chuyển đổi ADC .......................................................................................... 80
Bảng 6.2. Lựa chọn kênh ADC.................................................................................................................. 80
TS. Đặng Phước Vinh – TS. Võ Như Thành

v


Bảng 6.3. Lựa chọn cấu hình cổng ADC [4] ......................................................................................... 82
Bảng 7.1: Công thức tính tốc độ baud [4] ........................................................................................... 86
Bảng 7.2: Đặc điểm của giao tiếp cổng nối tiếp theo chuẩn RS232........................................... 93
Bảng 7.3: Chức năng từng chân của cổng COM 25 chân và 9 chân ........................................... 95

TS. Đặng Phước Vinh – TS. Võ Như Thành

vi


MỤC LỤC

DANH MỤC HÌNH ẢNH ..................................................................................................................... i
DANH MỤC CÁC BẢNG .................................................................................................................... v
MỤC LỤC............................................................................................................................................vii
1

GIỚI THIỆU CHUNG .................................................................................................................. 1
1.1

Vi xử lý v{ vi điều khiển ........................................................................................................... 1

1.1.1 Vi xử lý ................................................................................................................................ 1
1.1.2 Vi điều khiển ..................................................................................................................... 2
1.1.3 Sự khác nhau giữa vi xử lý v{ vi điều khiển ......................................................... 3

1.2

Vi điều khiển PIC ........................................................................................................................ 5

1.3

Các loại bộ nhớ ............................................................................................................................ 6
1.3.1 ROM (Read-Only Memory) ......................................................................................... 6
1.3.2 EPROM (Erasable Programmable Read-Only Memory) .................................. 6
1.3.3 EEPROM (Electrically Erasable Programmable Read-Only Memory) ....... 6
1.3.4 Bộ nhớ FLASH .................................................................................................................. 6

1.4

Trình biên dịch và nạp cho vi điều khiển PIC .................................................................. 7
1.4.1 Trình biên dịch cho PIC ................................................................................................ 7
1.4.1.1 Ngôn ngữ bậc thấp – Lập trình hợp ngữ .................................................. 8
1.4.1.2 Ngôn ngữ bậc cao – trình biên dịch CCS .................................................. 8
1.4.2 Chương trình nạp cho PIC ........................................................................................... 8

TS. Đặng Phước Vinh – TS. Võ Như Thành

vii


Mục lục

2

CẤU TRÚC PHẦN CỨNG PIC 16F877A...............................................................................10
2.1

Tổng quan về chip PIC16F877A ........................................................................................ 10

2.2

Tổ chức bộ nhớ ........................................................................................................................ 13
a. Kiến trúc Von Neumann.............................................................................. 14
b. Kiến trúc Harvard.......................................................................................... 14
2.2.2 Cấu trúc bộ nhớ chương trình ................................................................................ 14
2.2.3 Cấu trúc bộ nhớ dữ liệu ............................................................................................. 15
2.2.4 Thanh ghi chức năng đặc biệt ................................................................................. 15
2.2.5 Ngăn xếp Stack.............................................................................................................. 17

2.3

Xuất nhập I/O ........................................................................................................................... 18
2.3.1 Điều khiển hướng xuất/nhập.................................................................................. 18
2.3.2 Chức năng c|c ch}n ..................................................................................................... 19
2.3.2.1 Các chân nối nguồn và thạch anh dao động.......................................... 19
2.3.2.2 Port A................................................................................................................... 20
2.3.2.3 Port B................................................................................................................... 21
2.3.2.4 Port C ................................................................................................................... 23
2.3.2.5 Port D .................................................................................................................. 25
2.3.2.6 Port E ................................................................................................................... 26

2.4

3

C|c đặc tính ngoại vi .............................................................................................................. 28

TẬP LỆNH, CHỈ THỊ TIỀN XỬ LÝ .........................................................................................29
3.1

Lưu đồ thuật toán.................................................................................................................... 29

3.2

Khai báo biến ............................................................................................................................ 31

3.3

Các phép toán ........................................................................................................................... 32

3.4

Toán tử biểu thức điều kiện ................................................................................................ 33

3.5

Toán tử chuyển kiểu .............................................................................................................. 33

3.6

Các cấu trúc điều kiện............................................................................................................ 34
3.6.1 Lệnh “if” ........................................................................................................................... 34
3.6.2 Cấu trúc điều kiện “switch” ...................................................................................... 36

3.6.2.1 Không dùng lệnh default .............................................................................. 36
3.6.2.2 Có dùng lệnh default...................................................................................... 37
3.6.3 Cấu trúc vòng lặp “for” ............................................................................................... 38
3.6.4 Vòng lặp “while” ........................................................................................................... 39

TS. Đặng Phước Vinh – TS. Võ Như Thành

viii


Mục lục
3.6.5 Vòng lặp “do – while” ................................................................................................. 40
3.7

Các chỉ thị tiền xử lý ............................................................................................................... 41

3.8

Các hàm xủa lý xuất/nhập ................................................................................................... 42

3.9

Trình biên dịch CCS ................................................................................................................ 44
3.9.1 Một chương trình mẫu trong CCS .......................................................................... 44

3.10 Ví dụ ............................................................................................................................................. 45
3.10.1 Nhấp nh|y LED đơn ................................................................................................ 45
3.10.2 Hiển thị LED 7 đoạn ................................................................................................ 47
3.10.2.1 Led 7 đoạn: ..................................................................................................... 48
a. Loại Anode chung .......................................................................................... 49

b. Loại Cathode chung ...................................................................................... 50
3.10.2.2 Chú ý.................................................................................................................. 51
3.10.2.3 Chương trình.................................................................................................. 52
4

BỘ ĐỊNH THỜI..........................................................................................................................54
4.1

Tổng quan bộ định thời trong PIC .................................................................................... 54

4.2

Bộ định thời Timer0 ............................................................................................................... 55
4.2.1 Đặc điểm.......................................................................................................................... 55
4.2.2 Thanh ghi OPTION_REG ............................................................................................ 55

4.3

Bộ định thời Timer1 ............................................................................................................... 57
4.3.1 Đặc điểm.......................................................................................................................... 57
4.3.2 Thanh ghi liên quan T1CON ..................................................................................... 57
4.3.3 Timer1 ở chế độ Counter .......................................................................................... 59
4.3.3.1 Chế độ Counter bất đồng bộ ....................................................................... 60
4.3.3.2 Chế độ Counter đồng bộ ............................................................................... 60

4.4

Bộ định thời Timer2 ............................................................................................................... 60
4.4.1 Đặc điểm.......................................................................................................................... 60
4.4.2 Thanh ghi liên quan T2CON ..................................................................................... 61

4.4.3 Lưu ý ................................................................................................................................. 62

4.5

Ví dụ ............................................................................................................................................. 63

4.6

Khối CCP (Capture/Compare/PWM) .............................................................................. 64
4.6.1 Khối Capture .................................................................................................................. 64
4.6.2 Khối Compare................................................................................................................ 65

TS. Đặng Phước Vinh – TS. Võ Như Thành

ix


Mục lục
4.6.3 Khối PWM (Pulse Width Modulation) ................................................................. 66
4.6.3.1 Đặc điểm ............................................................................................................ 66
4.6.3.2 Thanh ghi CCP1CON và CCP2CON ............................................................ 67
4.6.3.3 C|c bước c{i đặt .............................................................................................. 67
4.6.3.4 Lưu ý .................................................................................................................... 68
4.6.3.5 Ví dụ ..................................................................................................................... 68
5

HOẠT ĐỘNG NGẮT ..................................................................................................................70
5.1

Tổng quan .................................................................................................................................. 70


5.2

Các thanh ghi liên quan ......................................................................................................... 72
5.2.1 Thanh ghi điều khiển ngắt INTCON ...................................................................... 72
5.2.2 Thanh ghi PIE1 – PIE2 ............................................................................................... 73
5.2.3 Thanh ghi PIR1 – PIR2 ............................................................................................... 74

6

5.3

Ngắt bộ định thời .................................................................................................................... 76

5.4

Ngắt ngoài RB0/INT ............................................................................................................... 76

BỘ CHUYỂN ĐỔI ADC..............................................................................................................78
6.1

Tổng quan về bộ chuyển đổi ADC ..................................................................................... 78

6.2

Bộ ADC trên PIC16F877 ....................................................................................................... 79
6.2.1 Đặc điểm.......................................................................................................................... 79
6.2.2 Các thanh ghi liên quan ............................................................................................. 80
6.2.2.1 Thanh ghi điều khiển bộ chuyển đổi ADCON0 .................................... 80
6.2.2.2 Thanh ghi điều khiển bộ chuyển đổi ADCON1 .................................... 81

6.2.3 C|c bước thực hiện...................................................................................................... 82
6.2.4 Thời gian chuyển đổi ADC ........................................................................................ 83
6.2.5 Lưu ý ................................................................................................................................. 83

7

GIAO TIẾP NỐI TIẾP ...............................................................................................................85
7.1

Giao tiếp nối tiếp USART ...................................................................................................... 85
7.1.1 USART đồng bộ ............................................................................................................. 86
7.1.2 USART bất đồng bộ ..................................................................................................... 86
7.1.2.1 Các thanh ghi liên quan ................................................................................ 87
a. Thanh ghi TXSTA ........................................................................................... 87
b. Thanh ghi RCSTA ........................................................................................... 87
c. Lỗi “framing”: lỗi khung truyền ............................................................... 88

TS. Đặng Phước Vinh – TS. Võ Như Thành

x


Mục lục
7.1.2.2 Truyền trong chế độ USART bất đồng bộ .............................................. 89
a. Đặc điểm ........................................................................................................... 89
b. C|c bước thực hiện khi TRUYỀN ............................................................. 89
7.1.2.3 Nhận trong chế độ USART bất đồng bộ .................................................. 90
a. Đặc điểm ........................................................................................................... 90
b. C|c bước thực hiện khi NHẬN .................................................................. 91
7.1.3 Giao tiếp cổng nối tiếp UART – RS232 ................................................................. 91

a. Giao tiếp Simplex ........................................................................................... 92
b. Giao tiếp half-duplex .................................................................................... 92
c. Giao tiếp full-duplex ..................................................................................... 92
7.1.3.2 Chuẩn UART (hay chuẩn TTL) ................................................................... 93
7.1.3.3 Chuẩn RS232 (Recommeded Standard 232) ....................................... 93
7.1.3.4 Dạng tín hiệu truyền mô tả như sau (truyền ký tự A): ..................... 96
7.1.3.5 Tốc độ baud. ..................................................................................................... 96
7.1.3.6 Bit chẵn lẻ hay Parity bit. ............................................................................. 97
7.1.3.7 Giao tiếp UART – RS232 ............................................................................... 97
7.2

Giao diện đồng bộ nối tiếp MSSP....................................................................................... 99
7.2.1 Giao tiếp SPI (Serial Pheripheral Interface) .................................................... 100
7.2.1.1 Tổng quan về giao tiếp SPI ....................................................................... 100
7.2.1.2 Các thanh ghi liên quan ............................................................................. 101
7.2.1.3 Hoạt động của chế độ SPI trong PIC ..................................................... 103
7.2.1.4 Thiết lập chân vào/ra trong chế độ SPI: ............................................. 103
7.2.1.5 SPI ở chế độ Master .................................................................................... 104
7.2.1.6 SPI ở chế độ Slave ........................................................................................ 105
7.2.2 Giao tiếp I2C (Inter-Intergrated Circuit) .......................................................... 107
7.2.2.1 Các chế độ hoạt động của chế độ I2C ................................................... 109
a. Chế độ hoạt động ......................................................................................... 109
b. Tốc độ hoạt động ......................................................................................... 109
7.2.2.2 Giản đồ thời gian của chế độ I2C ........................................................... 110
a. Điều kiện START .......................................................................................... 111
b. Điều kiện STOP ............................................................................................. 112
c. Điều kiện START liên tục .......................................................................... 112

TS. Đặng Phước Vinh – TS. Võ Như Thành


xi


Mục lục
7.2.2.3 Qu| trình đọc dùng giao tiếp I2C ........................................................... 113
a. Qu| trình đọc 1 byte ................................................................................... 113
b. Qu| trình đọc nhiều byte .......................................................................... 114
7.2.2.4 Quá trình ghi dùng giao tiếp I2C ............................................................ 115
a. Quá trình ghi 1 byte .................................................................................... 115
b. Quá trình ghi nhiều byte ........................................................................... 116
7.2.2.5 Các thanh ghi liên quan ............................................................................. 116
a. Thanh ghi điều khiển SSPCON1, SSPCON2 ........................................ 116
b. Thanh ghi SSPSTAT .................................................................................... 118
TÀI LIỆU THAM KHẢO ............................................................................................................... 120

TS. Đặng Phước Vinh – TS. Võ Như Thành

xii


CHƯƠNG

1

1.1

1

GIỚI THIỆU CHUNG


Vi xử lý và vi điều khiển

1.1.1 Vi xử lý
Vi xử lý (viết tắt là µP hay uP), đôi khi còn được gọi là bộ vi xử lý, là một linh kiện
điện tử máy tính được chế tạo từ các tranzito thu nhỏ tích hợp lên trên một vi mạch tích
hợp đơn. Khối xử lý trung tâm (CPU) là một bộ vi xử lý được nhiều người biết đến
nhưng ngo{i ra nhiều thành phần kh|c trong m|y tính cũng có bộ vi xử lý riêng của nó,
ví dụ trên card màn hình (Graphic card) chúng ta cũng có một bộ vi xử lý.
Trước khi xuất hiện các bộ vi xử lý, c|c CPU được xây dựng từ các mạch tích hợp cỡ
nhỏ riêng biệt, mỗi mạch tích hợp chỉ chứa khoảng vào chục tranzito. Do đó, một CPU có
thể là một bảng mạch gồm hàng ngàn hay hàng triệu vi mạch tích hợp. Ngày nay, công
nghệ tích hợp đ~ ph|t triển, một CPU có thể tích hợp lên một hoặc vài vi mạch tích hợp
cỡ lớn, mỗi vi mạch tích hợp cỡ lớn chứa hàng ngàn hoặc hàng triệu tranzito. Nhờ
đó công suất tiêu thụ và giá thành của bộ vi xử lý đ~ giảm đ|ng kể.
Sự tiến hóa của các bộ vi xử lý một phần nhờ vào việc chạy theo Định luật Moore và
hiệu suất của nó tăng lên một cách ổn định sau h{ng năm. Định luật này phát biểu rằng
sự phức tạp của một mạch tích hợp sẽ tăng lên gấp đôi sau mỗi chu kỳ 18 tháng. Và thực
tế, sự phát triển của các bộ vi xử lý đ~ b|m s|t định luật này từ những năm 1970. Nhờ
đó, từ máy tính mẹ (mainframe computer) lớn nhất cho đến các máy tính xách tay hiện
nay đều sử dụng một bộ vi xử lý nhỏ nhắn tại trung tâm của chúng.

TS. Đặng Phước Vinh – TS. Võ Như Thành

1


Chương 1. GIỚI THIỆU CHUNG
Vi xử lý là bộ xử lý trung tâm trong: máy tính (PC, Laptop, mini computer, super
computer), thiết bị smartphone, thiết bị nhúng,...v{ đặc biệt trong công nghiệp ngành
Điện - chuyên ngành Tự động hóa: bộ điều khiển khả trình PLC v{ Vi điều khiển để ứng

dụng điều khiển các dây chuyền, hệ thống tự động...

Hình. 1.1: Intel 4004, vi xử lý 4 bit thương mại đầu tiên năm 1971 [1]

Data Bus

CPU
Vi xử lý

RAM

Nhiều chips trên bo mạch chủ

ROM

I/O
Port

Timer

Cổng
nối tiếp

Address Bus

Hình. 1.2: Cấu trúc của một chip vi xử lý

1.1.2 Vi điều khiển
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được sử dụng
để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao gồm

một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng
dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các mô đun v{o/ra, các
mô đun biến đổi số sang tương tự v{ tương tự sang số,... Ở m|y tính thì c|c mô đun
thường được xây dựng bởi các chíp và mạch ngoài [3].
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Nó xuất hiện khá
nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc
DVD, thiết bị đa phương tiện, dây chuyền tự động, v.v.

TS. Đặng Phước Vinh – TS. Võ Như Thành

2


Vi xử lý và vi điều khiển
Vao nam 1971, tap đoan Intel đa giơi thieu bo vi xư ly đau tien: 8080. Sau đo th
Motorola, RCA ke đen la MOS Technolgy va ilog đa giơi thieu cac bo vi xư ly tương tư:
6800, 1801, 6502 va 80.
Vao nam 1976, Intel giơi thieu bo vi đieu khien 8748, mot chip đau tien trong ho vi
đieu khien MCS-48.
Đo phưc tap, k ch thươc va kha nang cua cac bo vi đieu khien đươc tang them mot
bac quan trong vao nam 1980 khi Intel cong bo chip 8051, bo vi đieu khien đau tien cua
ho MCS-51. Chip 8051 bao gom tren 60000 transistors, 4 byte ROM, 128 byte RAM, 32
đương xuat nhap, 1 cong noi tiep va 2 bo đinh thơi 16-bit.

Hình. 1.3: Cấu trúc của một chip vi điều khiển [2]

1.1.3 Sự khác nhau giữa vi xử lý và vi điều khiển
Vào những giai đoạn đầu trong quá trình phát triển của công nghệ vi xử lý, các chip
(hay các vi xử lý) được chế tạo chỉ tích hợp những phần cứng thiết yếu như CPU cùng
các mạch giao tiếp giữa CPU và các phần cứng kh|c. Trong giai đoạn này, các phần cứng

khác (kể cả bộ nhớ) thường không được tích hợp trên chip mà phải ghép nối thêm bên
ngoài. Các phần cứng n{y được gọi là các ngoại vi (Peripherals). Về sau, nhờ sự phát
triển vượt bậc của công nghệ tích hợp, các ngoại vi cũng được tích hợp vào bên trong IC
TS. Đặng Phước Vinh – TS. Võ Như Thành

3


Chương 1. GIỚI THIỆU CHUNG
v{ người ta gọi các vi xử lý đ~ được tích hợp thêm các ngoại vi là các “vi điều khiển”. Việc
tích hợp thêm các ngoại vi vào trong cùng một IC với CPU tạo ra nhiều lợi ích như l{m
giảm thiểu các ghép nối bên ngoài, giảm thiểu số lượng linh kiện điện tử phụ, giảm chi
phí cho thiết kế hệ thống, đơn giản hóa việc thiết kế, nâng cao hiệu suất và tính linh hoạt.
 Cấu trúc: Hầu hết các bộ vi xử lý sử dụng cấu trúc CISC và Von-Neumann. Tuy
nhiên, bộ vi xử lý phổ biến sử dụng cấu trúc CISC. Còn vi điều khiển sử dụng cấu
trúc RISC v{ Harvard. Nhưng cũng có một số vi điều khiển sử dụng cấu trúc CISC
như 8051 v{ SHARC. Bộ vi xử lý có ROM, RAM, bộ nhớ lưu trữ thứ cấp I / O thiết
bị ngoại vi, timer bộ đếm(counters).. vv được xếp cùng trên một board và kết nối
thông qua bus được gọi l{ vi điều khiển.
 Tốc độ CPU: Bộ vi xử lý có tốc độ nhanh hơn so với các bộ điều khiển bởi clock.
Bộ vi xử lý có thể có tốc độ xung nhịp (clock) cao. Bộ vi điều khiển có thể chậm
khi so sánh với các bộ vi xử lý. Tốc độ thực thi luôn luôn phụ thuộc vào clock. Nếu
chúng ta so sánh hiệu suất tổng thể và ứng dụng, vi điều khiển tốc độ thực hiện
rất nhanh bởi vì tất cả các thiết bị ngoại vi sẵn có.
 Thời gian thiết kế: Thiết kế một vi điều khiển sẽ mất ít thời gian hơn khi thiết kế
bộ vi xử lý. Việc giao tiếp giữa các thiết bị ngoại vi v{ chương trình dễ d{ng hơn
khi so sánh với bộ vi xử lý. Vi điều khiển được thiết kế để thực hiện một chức
năng cụ thể. Cụ thể có nghĩa l{ c|c ứng dụng mà quan hệ giữa đầu v{o v{ đầu ra
được x|c định rõ ràng. Tùy thuộc v{o đầu vào, một số xử lý cần phải được thực
hiện và thiết lập từ đầu ra. Ví dụ, bàn phím, chuột, máy giặt, máy ảnh kỹ thuật,

USB, điều khiển từ xa, lò vi sóng, xe hơi, xe đạp, điện thoại, điện thoại di động,
đồng hồ ..vv Khi ứng dụng được cụ thể hóa, cần tài nguyên nhỏ như RAM, ROM, I
/ O port …vv do đó có thể được nhúng vào một chip duy nhất. Điều này sẽ làm
giảm kích thước và chi phí.
 Ứng dụng: bộ vi xử lý chủ yếu được sử dụng trong các hệ thống máy tính, hệ
thống quốc phòng, mạng thông tin liên lạc …vv vi điều khiển được sử dụng chủ
yếu trong các ứng dụng nhúng như đồng hồ, điện thoại di động, máy nghe nhạc
mp3, vv
 Giá thành: So s|nh vi điều khiển và vi xử lý về chi phí là không hợp lý. Chắc chắn
vi điều khiển rẻ hơn so với bộ vi xử lý. Tuy nhiên vi điều khiển không thể được sử
dụng thay cho bộ vi xử lý v{ ngược lại vì vi điều khiển và vi xử lý có tầm quan
trọng riêng trong việc phát triển các ứng dụng.
Bảng 1.1: So sánh giữa chip vi xử lý và chip vi điều khiển

Vi xử lý

Vi điều khiển

CPU chip riêng biệt. RAM, ROM, I/O,
Timer nằm bên ngoài

CPU, RAM, ROM, I/O và Timer nằm
trên cùng 1 chip

Lượng ROM, RAM, I/O Ports tùy ý

Cố định lượng ROM, RAM, I/O Ports

TS. Đặng Phước Vinh – TS. Võ Như Thành


4


Vi điều khiển PIC
trên chip
Thích hợp cho các ứng dụng:
Giá thành cao

Đa năng, đa mục đích

1.2



Giá cả thấp



Năng lượng tiêu thụ thấp



Không gian hạn chế

Đơn mục đích

Vi điều khiển PIC

 PIC được sản xuất bởi công ty Microchip Technology
 "Programmable Intelligent Computer" là một sản phẩm của hãng General

Instruments
 Dòng sản phẩm đầu tiên là PIC1650
 PIC 8-bit được phát triển vào khoảng năm 1975
 Có thể tìm mua dể dàng tại thị trường Việt Nam
 Giá thành không quá cao
 Có đầy đủ tính năng của một VĐ khi hoạt động độc lập
 Số lượng người dùng lớn  số lượng tài liệu lớn, mã nguồn mở, dể d{ng trao đổi
học tập, thảo luận
 Sự hổ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp chương
trình…
 C|c tính năng đa dạng của VĐ liên tục được cập nhật
Các ký hiệu của vi điều khiển PIC:
PIC12xxxx: độ dài lệnh 12 bit
PIC16xxxx: độ dài lệnh 14 bit
PIC18xxxx: độ dài lệnh 16 bit
C:
PIC có bộ nhớ chương trình l{ EPROM (chỉ có 16C84 là EEPROM)
F:
PIC có bộ nhớ chương trình l{ flash
LF:
PIC có bộ nhớ chương trình l{ flash hoạt động ở điện áp thấp
LV:
tương tự như LF, đ}y l{ tín hiệu cũ
 Bên cạnh đó một số vi điều khiển có ký hiệu xxFxxx thì bộ nhớ chương trình l{
EEPROM, nếu có thêm chữ A ở cuối thì bộ nhớ chương trình l{ flash (ví dụ
PIC16F877 là EEPROM, còn PIC16F877A là flash).
 Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do Microchip sản xuất

TS. Đặng Phước Vinh – TS. Võ Như Thành


5


Chương 1. GIỚI THIỆU CHUNG

Hình. 1.4: Chip vi điều khiển PIC16F877A của hãng Microchip

1.3

Các loại bộ nhớ

1.3.1 ROM (Read-Only Memory)




Thông tin trên ROM vẫn được duy trì dù nguồn điện cấp không còn.
Nó dùng cho lưu giữ m~ chương trình điều hành và dữ liệu mặc định của hệ
thống
Cho phép chỉ đọc dữ liệu từ chúng, và chỉ cho phép ghi dữ liệu một lần

1.3.2 EPROM (Erasable Programmable Read-Only Memory)



Thông tin trên bộ nhớ vẫn được duy trì dù nguồn điện cấp không còn
Phải dùng thiết bị chuyên dụng để xóa bộ nhớ. Xóa toàn bộ

1.3.3 EEPROM (Electrically Erasable Programmable Read-Only Memory)



Có khả năng xo| được bằng phương ph|p lập trình mà chúng không cần đến các
thiết bị chuyên dụng như c|c thế hệ trước của nó

1.3.4 Bộ nhớ FLASH



Là một loại EEPROM, đọc/ghi bằng điện và không mất dữ liệu khi ngừng cung cấp
điện
Cho phép đọc/ghi từng khối nhỏ hoặc theo từ của máy

TS. Đặng Phước Vinh – TS. Võ Như Thành

6


Trình biên dịch và nạp cho vi điều khiển PIC
Bảng 1.2: So sánh giữa các loại bộ nhớ

Loại

ROM

EPROM

EEPROM

FLASH


1.4

Mất dữ
liệu
khi mất
điện?

Giá
thành
(theo
byte)

Khả
năng
ghi ?

Cỡ xoá ?

Xoá
nhiều
lần ?

hong

hong

hong
san sang

hong

san sang

Nhanh

hong
đat

hong

Co,
nhưng
can thiet
bi
chuyen
dung

Toan bo

Giơi han

Nhanh

Vưa phai

Giơi han

Nhanh
cho đoc
Cham
cho xoa

va ghi

Đat

Giơi han

Nhanh
cho đoc
Cham
cho xoa
va ghi

Vưa phai

hong

hong

Co

Co

Byte

Sector

Tốc độ ?

Trình biên dịch và nạp cho vi điều khiển PIC


1.4.1 Trình biên dịch cho PIC
Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm ứng dụng
cho việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con
số 0 v{ 1. Ban đầu để việc lập trình cho vi điều khiển là làm việc với dãy các con số 0 và
1. Sau này khi kiến trúc của vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh
nhiều lên, việc lập trình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một
ngôn ngữ mới thay thế: ngôn ngữ lập trình Assembly. Sau này với sự ra đời của ngôn
ngữ C thì việc lập trình cho vi điều khiển trở nên ngắn gọn và dễ hiểu hơn. Hiện này có
rất nhiều chương trình soạn thảo và biên dịch C cho vi điều khiển: eil C, HT‐PIC,
MikroC, CCS.

TS. Đặng Phước Vinh – TS. Võ Như Thành

7


Chương 1. GIỚI THIỆU CHUNG
1.4.1.1 Ngôn ngữ bậc thấp – Lập trình hợp ngữ
 Được cung cấp miễn phí bởi nhà sản xuất Microchip
 Giúp người học và lập trình hiểu rõ hơn về cấu trúc bên trong của vi điều khiển
PIC
 Tối ưu hóa bộ nhớ chương trình.
Tuy nhiên, nhìn chung phương ph|p tiếp cận hợp ngữ là khó và khả năng ph|t triển
ứng dụng là hạn chế, mất thời gian.

1.4.1.2 Ngôn ngữ bậc cao – trình biên dịch CCS
 Kế thừa tất cả đặc điểm của ngôn ngữ C- là ngôn ngữ cơ bản, quen thuộc mà sinh
viên đ~ được đ{o tạo
 Xây dựng sẵn các hàm phục vụ cho việc sử dụng dễ dàng các khối chức năng đặc
biệt của Vi điều khiển PIC như: ADC, PWM, RS232, SPI

 Có khả năng kết hợp với ngôn ngữ hợp ngữ, tạo sự mềm dẻo trong phát triển ứng
dụng
 Khả năng phát triển, nâng cấp ứng dụng là dễ dàng
 Ng{y c{ng được cập nhật với nhiều tính năng ưu việt và hiệu quả hơn.

Hình. 1.5: Chương trình biên dịch CCS

1.4.2 Chương trình nạp cho PIC
PICKit 2 Programmer/ Debugger là một công cụ phát triển giá rẻ nhưng tính năng
v{ độ ổn định cao, dễ d{ng để sử dụng để nạp và gỡ lỗi PIC Microcontrollers Flash. Ngoài
ra còn có thể sử dụng như một thiết bị đầu cuối truyền dữ liệu với PC qua chức năng
UART Tool và Logic Tool Analyzer. Chương trình n{y có khả năng nạp và gỡ lỗi trực tiếp
TS. Đặng Phước Vinh – TS. Võ Như Thành

8


Trình biên dịch và nạp cho vi điều khiển PIC
trong MPLAB IDE hoặc nạp chip bằng phần mềm PICKit 2 Programmer. Bên cạnh đó
chương trình n{y có khả năng tự cập nhật Firmware khi có phiên bản mới. Phần mềm
này v{ firmware sẵn có v{ có thể tải miễn phí trên website của hãng Mirochip.

Hình. 1.6: Chương trình nạp PICkit 2
Các tính năng của PICKIT2 như sau:
 Giao tiếp PC qua cong USB, không cần cài driver, độ ổn định cao, không bị lỗi.
 Giao diện windows nổi bật, supports the Windows Vista 64-bit OS
 Support đầy đủ tất cả các PIC họ baseline (PIC10F, PIC12F5xx, PIC16F5xx),
midrange (PIC12F6xx, PIC16F), PIC18F, PIC24, dsPIC30, dsPIC33, và họ PIC32 8bit, 16-bit, và 32-bit và một số sản phẩm Serial Eprom của Microchip
 Cho phép cập nhật Firmware khi có phiên bản mới
 Có chức năng Programmer-To-Go nạp không cần giao tiếp PC

 Chip mới có thể được bổ sung bằng việc cập nhật phần mềm trên Website của
hãng Microchip www.microchip.com.

Hình. 1.7: Mạch nạp PICkit 2 của hãng Microchip [11]
TS. Đặng Phước Vinh – TS. Võ Như Thành

9


CHƯƠNG

2

2

CẤU TRÚC PHẦN CỨNG PIC 16F877A

Chương n{y sẽ trình bày về sơ đồ chân, chức năng từng chân, tổ chức bộ nhớ (bao
gồm bộ nhớ chương trình v{ bộ nhớ dữ liệu), các thanh ghi chức năng đặc biệt và các
đặc tính ngoại vi của vi điều khiển PIC16F877A.

2.1

Tổng quan về chip PIC16F877A

PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology.
Dòng PIC đầu tiên l{ PIC1650 được phát triển bởi Microelectronics Division
thuộc General Instrument [9].
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy tính
khả trình thông minh) là một sản phẩm của h~ng General Instrument đặt cho dòng sản

phẩm đầu tiên của họ là PIC1650. Lúc này, PIC1650 được dùng để giao tiếp với các thiết
bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên
"Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi). CP1600 là một CPU
tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào
khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600. PIC sử dụng microcode
đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng
PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4
chu kỳ của bộ dao động).
Năm 1985 General Instrument b|n bộ phận vi điện tử của họ, và chủ sở hữu mới
hủy bỏ hầu hết các dự án - lúc đó đ~ qu| lỗi thời. Tuy nhiên PIC được bổ sung EEPROM
để tạo thành 1 bộ điều khiển vào ra khả trình. Ngày nay rất nhiều dòng PIC được xuất
TS. Đặng Phước Vinh – TS. Võ Như Thành

10


Tổng quan về chip PIC16F877A
xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC...), với bộ
nhớ chương trình từ 512 Word đến 32K Word.
Hiện nay, tại Việt Nam, đ~ có một cộng đồng nghiên cứu và phát triển PIC, dsPIC
và PIC32.
Một số đặc điểm chính của vi điều khiển PIC [9]:


8/16 bit CPU, x}y dựng theo kiến trúc Harvard có sửa đổi



FLASH v{ ROM có thể tuỳ chọn từ 256 byte đến 256 byte




C|c cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5.5V, ứng với logic
0 và logic 1)



C|c chuẩn giao tiếp ngoại vi nối tiếp đồng bộ / không đồng bộ USART, AUSART,
EUSARTs



Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit



Bộ so s|nh điện |p (Voltage Comparators)



Các module Capture/Compare/PWM



Thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit



Tất cả các lệnh là 1 chu kỳ máy, ngoại trừ chương trình con là 2 chu kỳ máy.




Một chu kỳ lệnh của vi điều khiển bao gồm 4 xung clock. Ví dụ ta sử dụng thạch
anh 4MHz cho vi điều khiển PIC thì xung lệnh sẽ có tần số là 1MHz (tương ứng
với thời gian là 1µs)



Bộ nhớ chương trình flash với dung lượng 8K x 14 bit, với khả năng ghi/xóa
100.000 lần



Bộ nhớ dữ liệu RAM: 368 byte



Bộ nhớ EEPROM với dung lượng 256 byte, với khả năng ghi/xóa 1.000.000 lần.
Có thể lưu trữ dữ liệu hơn 40 năm



Nguồn sử dụng: 5VDC



Chế độ SLEEP để tiết kiệm năng lượng




Có 5 cổng xuất nhập (A, B, C, D, E) với 33 ch}n



Hỗ trợ giao tiếp USB



Hỗ trợ điều khiển Ethernet



Hỗ trợ giao tiếp CAN



Hỗ trợ giao tiếp LIN



Hỗ trợ giao tiếp IrDA

TS. Đặng Phước Vinh – TS. Võ Như Thành

11


×