1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài Kit thực tập PIC 16F877A

180 771 2

Đ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 180
Dung lượng 4,04 MB

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

Nội dung

Đặt vấn đề: Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ thống điều khiển dần được tự động hóa.Với các kỹ thuật tiên tiến như vi xử lý, vi mạch số…được ứng

Trang 2

Ngày ……… tháng……….năm 2008

Giáo viên hướng dẫn

Thạc sỹ : LÊ ĐÌNH KHA

Trang 3

Ngày ……… tháng……….năm 2008

Giáo viên phản biện

Thầy : TRƯƠNG QUANG TRUNG

Trang 4

Sau những năm học tại trường,chúng em đã được

học và tiếp thu nhiều kiến thức mới từ sự chỉ bảo tận tình

của Quý Thầy Cô, sự giúp đỡ của bạn bè Đây là khoảng

thời gian đầy ý nghĩa Đồ án tốt nghiệp ra trường là nền

tảng quan trọng và đánh dấu một bước ngoặc mới trong

cuộc đời của chúng em

Chúng em xin gửi lời cảm ơn chân thành đến Thầy

Lê Đình Kha Thầy đã hướng dẫn tôi thực hiện đồ án tốt

nghiệp và cung cấp cho tôi nhiều kinh nghiệm quý báu

Chúng em xin chân thành cảm ơn Quý Thầy cô

khoa Điện Tử - Tin Học và các Cán bộ Công nhân viên

Trường Cao Đẳng Kỹ Thuật Cao Thắng, đã tạo điều kiện

thuận lợi để tôi có thể hoàn thành tốt đồ án tốt nghiệp

này

Sinh viên thực hiện

Vũ Thanh Hưng

Trang 5

LỜI NÓI ĐẦU

Ngày nay Khoa học – Kỹ thuật phát triển mạnh mẽ, cùng với sự phát triển không ngừng của các ngành kỹ thuật nói chung và kỹ thuật điện tử nói riêng Chúng đã đi sâu vào mọi mặc đời sống hàng ngày của người dân Đặc biệt

sử dụng vi điều khiển để điều khiển các thiết bị dân dụng và các thiết bị công nghiệp Nắm được tầm quan trọng đó, nhóm chúng em làm đề tài: KIT THỰC TẬP PIC để cho các bạn sinh viên có công cụ học tập và thực hành môn vi điều khiển Pic

Những kiến thức và năng lực đạt được trong quá trình học tập tại trường sẽ được đánh giá qua đợt bảo vệ đồ án tốt nghiệp Vì chúng em cố gắng tận dụng tất cả những kiến thức

đã học ở trường cùng với sự tìm tòi nghiên cứu, để có thể hoàn thành tốt đồ án tốt nghiệp này Những kết quả những sản phẩm đạt được trong ngày hôm nay tuy không lớn lao nhưng

nó là thành quả của ba năm học tập tại trường Là thành công đầu tiên của chúng em trước khi ra trường

Do khoảng thời gian và kiến thức còn hạn hẹp, mặc dù chúng em cố gắng hoàn thành đồ án tốt nghiệp này đúng thời hạn Nên không tránh khỏi những thiếu xót mong Quý thầy cô thông cảm Chúng em mong nhận được những ý kiến đóng góp tận tình của quý thầy cô và các bạn Cuối cùng em xin chân thành cảm ơn quý thầy cô và các bạn

Trang 6

MỤC LỤC

CHƯƠNG 0 DẪN NHẬP………11

PHẦN I KHẢO SÁT VI ĐIỀU KHIỂN PIC 16F877A 12

CHƯƠNG I CẤU TRÚC PHẦN CỨNG CỦA 16F877A 13

1.1 Sơ lượt về vi điều khiển PIC 16F877A 13

1.2 Sơ lượt về các chân của PIC 16F877A 13

1.3.Một số điểm đặc biệt của CPU 18

1.3.1 Dao động 18

1.3.2 Reset 19

1.3.3.MCLR(Master clear) 19

1.3.4 Interrupts 20

1.3.5 Chế độ nguồn thấp Sleep(Power down Mode) 20

1.3.6 Bộ định thời giám sát (Watch Dog Timer – WDT) 21

1.4.Tổ chức bộ nhớ 22

1.4.1 Bộ nhớ chương trình 22

1.4.2 Bộ nhớ dữ liệu 23

1.4.2.2 Vùng thanh ghi chức năng đặt biệt 24

1.4.3 Các thanh ghi chức năng đặc biệt 27

1.4.3.1.Thanh ghi trạng thái(Status register): 27

1.4.3.2 Thanh ghi tùy chọn (Option Reg_Register) 28

1.4.3.3 Thanh ghi điều khiển ngắt INTCON 29

1.4.3.4 Thanh ghi cho phép ngắt ngoại vi 1 30

1.4.3.5 Thanh ghi cờ của các ngắt ngoại vi 1 31

1.4.3.6 Thanh ghi cho phép ngắt ngoại vi 2 32

1.4.3.7 Thanh ghi cờ của các ngắt ngoại vi 2 33

1.4.4 PCL và PCLATH 33

1.4.5 Ngăn xếp Stack 34

1.4.6 Định địa chỉ trực tiếp và địa chỉ gián tiếp, thanh ghi INF và FSR 34

1.5 I/O port 35

1.5.1 Port B và thanh ghi TRIS B 35

1.5.2 Port B và thanh ghi TRIS B 37

1.5.3 Port C và thanh ghi TRIS C 38

1.5.4 Port D và thanh ghi TRIS D 40

1.5.5 Port E và thanh ghi TRIS E 40

Trang 7

CHƯƠNG II BỘ ĐỊNH THỜI 43

2.1 Bộ định thời timer 0 43

2.1.1 Giới thiệu 43

2.1.2 Hoạt động của bộ định thời 43

2.1.3 Ngắt Timer 0 43

2.1.4 Sử dụng Timer 0 với nguồn xung clock ngoài 44

2.1.5 Bộ tiền định tỉ lệ 8 bit của Timer 0 44

2.2 Bộ định thời Timer 1 44

2.2.1 Giới thiệu 44

2.2.2 Thanh ghi điều khiển Timer 1 45

2.2.3 Chế độ định thời trong hoạt động của Timer 1 45

2.2.4 Chế độ đếm 45

2.2.5 Giao động riêng của Timer 1 46

2.2.6 Ngắt Timer 1 46

2.3 Bộ định thời Timer 2 46

2.3.1 Giới thiệu 46

2.3.2 Thanh ghi điều khiển T2CON 47

2.3.3 Xóa các bộ tỉ lệ 47

2.3.4 Nguồn xung clock cho Timer 2 47

2.3.5 Thanh ghi TMR2 và PR2 47

2.3.6 Tín hiệu báo trạng thái cân bằng 47

2.3.7 Chế độ ngủ 48

CHƯƠNG III MODULE CCP 49

3.1 Giới thiệu 49

3.2 Thanh ghi điều khiển module CCP 49

3.3 Chế độ Capture 50

3.3.1 Bộ định tỉ lệ của CCP 50

3.4 Chế độ Compare 51

3.5 Chế độ điều biến xung PWM 51

3.5.1 Chu kỳ PWM 51

3.5.2.Chu kỳ nhiệm vụ của PWM 52

3.5.3 Cài đặt hoạt động cho PWM 52

3.5.4 Module MSSP 54

Trang 8

CHƯƠNG IV BỘ BIẾN ĐỔI ADC 10 BIT 55

4.1 Giới thiệu module ADC 10 bit 55

4.2 Các thanh ghi điều khiển 55

4.3 Hoạt động của Module ADC 57

4.4.Thời gian lấy mẫu 58

4.5 Lựa chọn xung clock cho biến đổi ADC 58

4.6 Cấu hình các chân Analog 59

4.7 Chuyển đổi ADC 59

4.8 Hoạt động của module ADC trong chế độ ngủ 60

4.9 Ảnh hưởng của Reset 60

CHƯƠNG V ĐIỆN THẾ THAM CHIẾU VÀ CÁC BỘ SO SÁNH ĐIỆN 61

5.1 Module Comparator 61

5.1.1 Giới thiệu về module comparator 61

5.1.2 Cài đặt chế độ cho bộ so sánh 61

5.1.3 Nguồn tham chiếu của bộ so sánh 63

5.1.3.1 Tín hiệu điện áp tham chiếu ngoại 63

5.1.3.2 Tín hiệu điện áp tham chiếu nội 63

5.1.4 Thời gian đáp ứng 63

5.1.5 Tín hiệu ngõ ra của bộ so sánh 63

5.1.6 Ngắt của các bộ so sánh 64

5.1.7 Hoạt động của các bộ so sánh trong chế độ ngủ 64

5.1.8 Ảnh hưởng của Reset 64

5.2 Module điện áp tham chiếu 64

5.2.1 Giới thiệu module điện áp tham chiếu 64

5.2.2 Thanh ghi điều khiển CVRCON 65

5.2.3 Độ chính xác của điện áp tham chiếu 66

5.2.4 Hoạt động của module VREF trong chế độ ngủ 66

5.2.5 Trạng thái của module khi Reset 66

5.2.6 Sử dụng module với các mạch ngoài 66

PHẦN II CÁC THÀNH PHẦN CỦA KIT THỰC TÂP

PIC 16F877A 67

Trang 9

CHƯƠNG I HIỂN THỊ LED ĐƠN 68

1.1 Giới thiệu chung 68

1.2 Mạch nguyên lý 69

CHƯƠNG II HIỂN THỊ LED 7 ĐOẠN 70

2.1 Các khái niệm cơ bản 70

2.2 Kết nối với vi điều khiển 71

2.3 Giao tiếp vi điều khiển với nhiều led 7 đoạn 72

2.4 Lưu đồ giải thuật 74

2.5.Mạch nguyên lý 75

CHƯƠNG III ĐÈN GIAO THÔNG 76

3.1 Giới thiệu 76

3.2 Sơ đồ nguyên lý 77

3.3 Lưu đồ giải thuật 78

CHƯƠNG IV LED MA TRẬN 79

4.1 Hiện thị led ma trận 79

4.1.1 Giới thiệu 79

5.1.2 Led ma trận 8x8 79

4.2 Phương pháp hiển thị bằng IC chốt 80

4.2.1 Chốt hàng 81

4.2.2 Chốt cột 81

4.3 Phương pháp dùng thanh ghi dịch 82

4.3.1 Quét hàng 82

4.3.1.1 Giới thiệu chung về phương pháp quét hàng 82

4.3.1.2 Quá trình thực hiện quét hàng 83

4.3.1.3 Ví dụ 83

4.3.2 Quét cột 84

4.3.2.1 Giới thiệu chung về phương pháp quét cột 84

4.3.2.2 Quá trình thực hiện quét cột 83

4.3.2.3 Ví dụ 84

4.4 Mạch nguyên lý 86

CHƯƠNG V LCD 87

Trang 10

5.1 Giới thiệu chung về LCD 87

5.1.1 Các thanh ghi 89

5.1.2 Cờ báo bận BF 90

5.1.3 Bộ đếm địa chỉ AC 90

5.1.4 Vùng RAM hiển thị DDRAM 90

5.1.5 Vùng ROM chứa ký tự CGROM 91

5.1.6 Vùng RAM chứa ký tự đồ họa CGRAM 92

5.2 Tập lệnh của LCD 94

5.3 Khởi tạo LCD 97

5.3.1 Mạch khởi tạo bên trong chip HD44780 97

5.3.2 Khởi tạo bằng lệnh 97

5.4 Lưu đồ giải thuật 99

5.5 Mạch nguyên lý 100

CHƯƠNG VI ADC 101

6.1 Giới thiệu về module ADC 101

6.1.1 Cơ bản về ADC 101

6.1.2 ADC trong PIC 16F877A 102

6.2 Sơ đồ nguyên lý 103

CHƯƠNG VII BÀN PHÍM GIAO TIẾP LCD 104

7.1 Keypad và nguyên lý hoạt động 104

7.2 Keypad giao tiếp với LCD 104

7.3 Sơ đồ giải thuật 106

CHƯƠNG VIII GIAO TIẾP I2C 107

8.1 Giới thiệu chung về I2C 107

8.1.1 Đặc điểm giao tiếp I2C 107

8.1.2 START and STOP conditions 109

8.1.3 Định dạng dữ liệu truyền 109

8.1.4 Định dạng địa chỉ thiết bị 111

8.1.5 Truyền dữ liệu trên bus I2C 112

8.1.6 Chế độ Multi-Master 113

8.2 Module I2C Trong Vi Điều Khiển PIC 113

8.2.1 Đặc điểm phần cứng của PIC16F877A 113

8.2.2 Cách thức sử dụng Module I2C trong CCS 114

Trang 11

8.2.3 EEPROM 24C04 115

8.2.3.1 Hình dạng 115

8.2.3.2 Sơ đồ cấu tạo 115

8.2.3.3 Sơ đồ chân 115

8.3 Mạch nguyên lý 117

CHƯƠNG IX ĐO NHIỆT ĐỘ DÙNG LM35 118

9.1 Giới thiệu 118

9.2 Một số đặc tính cơ bản của LM35 118

9.3 Mạch nguyên lý 119

PHẦN III CÁC BÀI TẬP THỰC HÀNH 120

BÀI 1 HIỂN THỊ TRẠNG THÁI PORT TRÊN LED ĐƠN 121

BÀI 2 HIỂN THỊ TRẠNG THÁI CÁC PORT VÀ THAY ĐỔI THỜI GIAN DELAY……… 123

BÀI 3 HIỂN THỊ NGÀY THÁNG NĂM SINH TRÊN LED 7 125

BÀI 4 HIỂN THỊ ĐỒNG HỒ TRÊN LED 7 127

BÀI 5 CHƯƠNG TRÌNH ĐÈN GIAO THÔNG 129

BÀI 6 CHẠY CHỮ LED MA TRẬN 131

BÀI 7 HIỂN THỊ KÝ TỰ TRÊN LCD 133

BÀI 8 GIAO TIẾP BÀN PHÍM SỐ HEX HIỂN THỊ LCD……….135

BÀI 9 ĐIỀU CHỈNH ADC HIỂN THỊ LED ĐƠN 137

BÀI 10 ĐO NHIỆT ĐỘ 139

PHẦN VI GIẢI CÁC BÀI TẬP THỰC HÀNH 141

BÀI 1 HIỂN THỊ TRẠNG THÁI PORT TRÊN LED ĐƠN 142

BÀI 2 HIỂN THỊ TRẠNG THÁI CÁC PORT VÀ THAY ĐỔI THỜI GIAN DELAY……… 144

BÀI 3 HIỂN THỊ NGÀY THÁNG NĂM SINH TRÊN LED 7 146

BÀI 4 HIỂN THỊ ĐỒNG HỒ TRÊN LED 7 ……… 149

BÀI 5 CHƯƠNG TRÌNH ĐÈN GIAO THÔNG 151

BÀI 6 CHẠY CHỮ LED MA TRẬN 153

BÀI 7 HIỂN THỊ KÝ TỰ TRÊN LCD 156

BÀI 8 GIAO TIẾP BÀN PHÍM SỐ HEX HIỂN THỊ LCD……….161

BÀI 9 ĐIỀU CHỈNH ADC HIỂN THỊ LED ĐƠN 165

Trang 12

BÀI 10 ĐO NHIỆT ĐỘ 166

PHẦN VI PHỤ LỤC 170

Phụ lục 1 : 16F877A……… 171

Phụ lục 2 : DEFS_16F877A……… 177

Trang 13

Chương 0 : DẪN NHẬP

I Đặt vấn đề:

Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ thống điều khiển dần được tự động hóa.Với các kỹ thuật tiên tiến như vi xử lý, vi mạch số…được ứng dụng vào lãnh vực điều khiển, thì các hệ thống điều khiển cơ khí thô sơ, với tốc độ

xử lý chậm chạm ít chính xác được thay thế bằng các hệ thống điều khiển tự động với các lệnh chương trình đã được thiết lập trước

Để có thể học tốt môn vi điều khiển chúng ta phải có thiết bị học tập một trong những thiết bị đó là kit thực tập, và được sự đồng ý của khoa Điện Tử - Tin Học Trường

Cao Đẳng Kỹ Thuật Cao Thắng Nhóm chúng em quyết định làm đề tài tốt nghiệp: “Kit

Thực Tập Vi Điều Khiển Pic”

II Giới hạn đề tài:

Với thời gian gần năm tuần thực hiện đề tài cũng như trình độ chuyên môn có hạn, chúng em đã cố gắng hết sức để hoàn thành đồ án này nhưng chỉ giải quyết được những vấn đề sau:

III Mục đích nghiên cứu :

Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học để

đủ điều kiện ra trường Cụ thể khi nghiên cứu đề tài là chúng em muốn phát huy những thành quả ứng dụng của vi điều khiển để tạo ra những sản phẩm cho các bạn sinh viên khóa sau Không những thế nó còn là tập tài liệu cho các bạn sinh viên tham khảo

Ngoài ra quá trình thực hiện đề tài là một cơ hội để chúng em tự kiểm tra lại những kiến thức đã học ở trường Đồng thời phát huy tính sáng tạo, khả năng giải quyết một vấn

đề theo nhu cầu đặt ra Và đây cũng là dịp để chúng em khẳng định mình trước khi ra trường để tham gia vào các hoạt động sản xuất của xã hội

Trang 14

¾ CHƯƠNG III : MODULE CCP (Capture – Compare – PWM)

¾ CHƯƠNG IV : BỘ BIẾN ĐỔI ADC 10 BIT

¾ CHƯƠNG V : ĐIỆN THẾ THAM CHIẾU VÀ CÁC BỘ SO SÁNH

ĐIỆN

Trang 15

CHƯƠNG I : CẤU TRÚC PHẦN CỨNG CỦA

PIC16F877A

1.1 Sơ lược về vi điều khiển PIC16F877A:

PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, 40 chân,

bộ nhớ đủ cho hầu hết các ứng dụng thông thường) Cấu trúc tổng quát của PIC

16F877A như sau:

- 8 K Flash ROM

- 368 Bytes RAM

- 256 Bytes EEPROM

- 5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập

- 2 bộ định thời 8 bits (Timer 0 và Timer 2)

- Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết kiệm năng lượng (SLEEP MODE) với nguồn xung Clock ngoài

- 2 bô CCP( Capture / Compare/ PWM)

- 1 bộ biến đổi AD 10 bits, 8 ngõ vào

- 2 bộ so sánh tương tự (Compartor)

- 1 bộ định thời giám sát (WatchDog Timer)

- Một cổng song song 8 bits với các tín hiệu điều khiển

- Một cổng nối tiếp

- 15 nguồn ngắt

- Có chế độ tiết kiệm năng lượng

- Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial Programming)

- Được chế tạo bằng công nghệ CMOS

- 35 tập lệnh có độ dài 14 bits

- Tần số hoạt động tối đa 20MHz

1.2 Sơ lược về các chân của PIC16F877A:

Trang 18

PIC16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức năng khác nhau.Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt động như một đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các thiết bị ngoại vi

Trang 19

Sơ đồ khối PIC16F877A

Trang 20

1.3 Một số điểm đặc biệt của CPU:

1.3.1 Dao động:

PIC16F877A có thể hoạt động trong bốn chế độ dao động khác nhau:

Trong các chế độ LP, XT và HS chúng ta

sử dụng thạch anh dao động nối vào các chân

OSC1 và OSC2 để tạo dao động

Việc lựa chọn tụ trong dao động thạch anh dựa vào bảng sau:

Lưu ý: Tụ có giá trị lớn sẽ tăng tính ổn định của dao động nhưng cũng làm tăng thời gian khởi động

Chế độ dao động RC được sử dụng như một giải pháp tiết kiệm trong các ứng dụng không cần sự chính xác về thời gian

* Cách tính chu kì máy:

Ví dụ ta sử dụng thạch anh 10Mhz Khi đó:

Tần số dao động của thạch anh là Fosc = 10Mhz

→ Chu kỳ dao động của thạch anh là Tosc = 1/Tosc= 1/10*106 (s)

Trang 21

phần MCLR Bộ lọc nhiễu này sẽ phát hiện

và bỏ qua các tín hiệu nhiễu

Ngõ vào MCLR trên chân 4 của

PIC16F877A Khi đưa chân này xuống

thấp thì các thanh ghi bên trong VĐK sẽ

được tải những giá trị thích hợp để khởi

động lại hệ thống

(Lưu ý: Reset do WDT không làm chân

MCLR xuống mức thấp)

Trang 22

1.3.4 Interrupts:

PIC16F877A có nhiều nguồn ngắt khác nhau Đây là một số ngắt tiêu biểu :

- Ngắt ngoài xảy ra trên chân INT

* Các thanh ghi chức năng ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các thanh ghi

này sẽ được nghiên cứu ở các phần sau)

1.3.5 Chế độ nguồn thấp Sleep (Power down Mode) :

Đây là chế độ hoạt động của VĐK khi lệnh sleep được thực thi Khi đó nếu được cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tục hoạt động bit

PD (STATUS <3>) được reset về không, bit TO được set, oscillator ngưng hoạt động và các PORT giữ nguyên trạng thái như trước khi lệnh sleep được thực thi

Trang 23

Do khi chế độ sleep dòng cung cấp cho VĐK là rất nhỏ nên ta cần thực hiện các bước sau trước khi VĐK thực thi lệnh sleep

• Đưa tất cả các chân về trạng thái VDD hoặc VSS.

• Cần đảm bảo rằng không có mạch ngoại vi nào được điều khiển bởi dòng điện của VĐK vì dòng điện nhỏ không đủ khả năng cung cấp cho các mạch ngoại vi hoạt động

• Tạm ngưng hoạt động của khối A/D và không cho phép các xung clock bên ngoài tác dụng vào VĐK

• Để ý chức năng điện trở kéo lên của PORTB

• Pin MCLR phải ở mức logic cao

1.3.6 Bộ định thời giám sát (Watch Dog Timer -WDT):

Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy nếu không có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạn phải làm một vòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở về điểm bắt đầu Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểm tra một chân input, nếu

nó lên mức cao thì con Pic sẽ tiếp tục kiểm tra một chân input thứ hai có lên mức cao hay không, nếu chân input thứ hai không lên mức cao, con Pic sẽ ngồi đó chờ và nó sẽ chỉ thoát ra khỏi chỗ ngồi của nó nếu chân input thứ hai lên mức cao

Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình, bạn compiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng bước, từng bước một trên máy tính, bằng MPLAB chẳng hạn, có vẻ như mọi chuyện đều tốt, bạn đem nạp vào con Pic Sau một thời gian chạy thử, con Pic thình lình bị kẹt vào nơi nào đó trong chương trình mà không thể thoát ra được trạng thái hiện tại Điều gì là cần thiết để giải quyết hai trường hợp trên, reset lại hay vẫn để cho nó bị kẹt không thoát ra được, đó là mục đích của mạch Watchdog

Mạch Watchdog thì không phải là mới mẽ gì, có rất nhiều microprocessors và microcontrollers đã có mạch Watchdog, nhưng mà nó làm việc ra sao ?

Bên trong con Pic có một mạch RC, mạch này cung cấp 1 xung Clock độc lập với bất kỳ xung Clock nào cung cấp cho Pic Khi Watchdog Timer (viết tắt là WDT) được cho phép (enabled), nó sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến FFh, khi nó tăng từ FFh đến 00 ( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm gì, chỉ có 1 cách là ngăn không cho WDT đếm tới 00

Khi con Pic bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT vẫn tiếp tục đếm mà không bị bất kỳ điều gì ngăn cấm nó đếm tới FF và đến FF+1, vì vậy nó sẽ reset con Pic làm cho chương trình phải khởi động lại từ đầu

Để sử dụng WDT chúng ta cần làm 3 việc

• Thứ nhất, cần thời gian bao lâu để reset WDT ?

• Thứ hai, làm sao xoá WDT ?

• Cuối cùng, chúng ta phải nói cho con Pic biết chương trình cho phép WDT hoạt động

Trang 24

Mọi sự truy cập ngoài vùng không gian nhớ này sẽ không có tác dụng

Ngoài ra, bộ nhớ chương trình còn bao gồm một ngăn xếp (Stack) 8 mức Vector Reset được đặt tại địa chỉ 0000h và vector ngắt được đặt tại địa chỉ 0004h

Trang 25

1.4.2 Bộ nhớ dữ liệu:

Bảng đồ cấu trúc bộ nhớ dữ liệu P16F877A

Trang 26

Bộ nhớ dữ liệu bao gồm 4 Bank: Bank 0, Bank1, Bank2 và Bank3 Mỗi bank có dung lượng 128 Bytes, bao gồm vùng Ram đa mục đích (GPR) và vùng thanh ghi chức năng đặc biệt (SFR)

Các Bank này được lựa chọn bằng 2 bit ở thanh ghi STATUS là RP0(Status<5>) và RP1(Status<6>)

1.4.2.1 Vùng Ram đa mục đích:

Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập trực tiếp hoặc gián tiếp thông qua thanh ghi FSR Vùng RAM đa mục đích được phân phối ở các Bank như sau:

- Bank 0: 96 Bytes từ địa chỉ 20h đến địa chỉ 7Fh

- Bank 1: 80 Bytes từ địa chỉ A0h đến địa chỉ EFh

- Bank 2: 96 Bytes từ địa chỉ 110h đến địa chỉ 16Fh

- Bank 3: 96 Bytes từ địa chỉ 190h đến địa chỉ 1EFh

1.4.2.2 Vùng thanh ghi chức năng đặc biệt:

Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm CPU hoặc các module ngoại vi để điều khiển hoạt động của VĐK Các thanh ghi chức năng đặc biệt này được chia làm 2 loại: loại thứ nhất dùng cho các chức năng của CPU, loại thứ 2 dùng cho các chức năng ngoại vi

Trang 27

Bảng tóm tắt các thanh ghi chức năng đặc biệt:

Trang 29

1.4.3 Các thanh ghi chức năng đặc biệt:

1.4.3.1 Thanh ghi trạng thái ( Status Register):

Thanh ghi trạng thái chứa các trạng thái số học của bộ ALU, trạng thái Reset và các bit chọn Bank của bộ nhớ dữ liệu

Trang 30

Bit 7 IRP: Bit lựa chọn bank thanh ghi (Sử dụng cho định địa chỉ gián tiếp)

Bit 4 TO: Bit báo hiệu hoạt động của WDT

1: Lệnh xóa WDT hoặc Sleep xảy ra

Bit 3 PD: Bit báo công suất thấp ( Power down bit)

1: Sau khi nguồn tăng hoặc có lệnh xóa WDT

0: Thực thi lệnh Sleep

Bit 2 Z: bit Zero

1: Khi kết quả của một phép toán bằng 0

0: Khi kết quả của một phép toán khác 0

Bit 1 DC: Digit Carry

1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp 0: Không có số nhớ sinh ra

Bit 0 C: cờ nhớ (Carry Flag)

1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ

0: Không có số nhớ sinh ra

1.4.3.2 Thanh ghi tùy chọn (Option _Reg Register):

Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa năng như: ngắt ngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và thời gian chờ của WDT

Bit 7 RBPU : Bit cho phép PORTB được kéo lên nguồn

1: Không cho phép PORTB kéo lên nguồn

0: Cho phép PORTB kéo lên nguồn

Trang 31

Bit 6 INTEDG: Bit lựa chọn cạnh tác động ngắt (INTERRUPT EDGE)

1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT 0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT

Bit 5 T0CS: Bit lựa chọn nguồn xung Clock cho Timer 0

1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI 0: Xung Clock cung cấp bởi nguồn dao động nội

Bit 4 T0SE: Bit lựa chọn cạnh nào của xung clock tác động lên timer 0

1: Cạnh xuống 0: Cạnh lên

Bit 3 PSA: Bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0 hay WDT

1: Tốc độ đếm PS2:PS0 sẽ tác động lên WDT 0: Tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0

Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT

Thời gian tràn WDT

18 ms 36ms 72ms 144ms 288ms 576ms 1.1s 2.2s

1.4.3.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register):

Bit 7 GIE: Bit cho phép ngắt toàn cục

1: Cho phép ngắt toàn cục

0: Không cho phép ngắt

Bit 6 PEIE: Bit cho phép ngắt khi ghi vào EEPROM hoàn tất

1: Cho phép ngắt ghi vào EEPROM hoạt động

0: Không cho phép ngắt ghi vào EEPROM hoạt động

Trang 32

Bit 5 TMR0IE: Bit cho phép ngắt khi timer 0 tràn

1: Cho phép ngắt khi timer 0 tràn

0: Không cho phép ngắt khi timer 0 tràn

Bit 4 INTE: Bit cho phép ngắt ngoại vi trên chân RB0/INT

1: Cho phép ngắt ngoại vi

0: Không cho phép ngắt ngoại vi

Bit 3 RBIE: Cho phép ngắt khi trạng thái PORTB thay đổi

Bit 2 TMR0IF: Cờ báo ngắt Timer 0

1: Timer 0 tràn 0: Timer 0 chưa tràn

Bit 1 INTF: Cờ báo ngắt ngoài RB0/INT

1: Có ngắt 0: Không xảy ra ngắt

Bit 0 RBIF: Cờ báo ngắt khi có thay đổi trạng thái PORTB

1: Có thay đổi 0: Không có thay đổi xảy ra trên PORTB

1.4.3.4 Thanh ghi cho phép ngắt ngoại vi 1(PIE1 Register):

Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai vi nào xảy ra

Bit 7 PSPIE: Bit cho phép ngắt đọc/ ghi Port song song

Trang 33

1.4.3.5 Thanh ghi cờ của các ngắt ngoại vi 1:

Bit 7 PSPIF: Cờ ngắt đọc/ ghi của Port song song

1: Một hoạt động đọc/ghi đã diễn ra (phải xóa bằng phần mềm) 0: Không có hoạt động đọc/ghi

Bit 6 ADIF: Cờ báo ngắt chuyển đổi A/D

1: Một quá trình chuyển đổi A/D đã hoàn thành 0: Chuyển đổi A/D chưa hoàn tất

Bit 5 RCIF: Cờ báo ngắt nhận USART

1: Buffer nhận USART đầy

0: Buffer nhận USART trống

Bit 4 TXIF: Cờ báo ngắt phát USART

1: Buffer truyền USART trống

0: Buffer truyền USART đầy

Bit 3 SSPIF: Cờ báo ngắt port nối tiếp đồng bộ (ngắt SSP)

1: Ngắt SSP xảy ra và phải được xóa bằng phần mềm trước khi trở lại chương trình chính từ chương trình phục vụ ngắt

0: Không có ngắt xảy ra

Bit 2 CCP1IF: Cờ báo ngắt CCP1

Trang 34

0: Khi các giá trị so sánh trong thanh ghi TMR1 không được thỏa

Chế độ PWM: Không sử dụng trong chế độ này

Bit 1 TMR2IF: Cờ báo ngắt xảy ra khi giá trị trong thanh ghi TMR2 bằng trong thanh

ghi PR2 1: Giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được xóa bằng phần mềm)

0: Giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2

Bit 0 TMR1IF: Cờ báo tràn thanh ghi TMR1

1: Thanh ghi TMR1 tràn (phải được xóa bắng phần mềm) 0: Thanh ghi TMR1 chưa tràn

1.4.3.6 Thanh ghi cho phép ngắt ngoại vi 2:

Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai vi nào xảy ra

Bit 7,5,2,1 Unimplemented : read as ‘0’

Bit 6 CMIE: Bit cho phép ngắt do bộ so sánh điện thế

Trang 35

1.4.3.7 Thanh ghi cờ của các ngắt ngoại vi 2:

Bit 7,5,2,1 Unimplemented : read as ‘0’

Bit 6 CMIF: Cờ báo ngắt do bộ so sánh

1: Ngõ vào bộ so sánh đã thay đổi (phải được xóa bằng phần mềm)

0: Ngõ vào bộ so sánh không thay đổi

Bit 4 EEIF: Cờ báo ngắt ghi EEPROM

1: Ghi EEPROM hoàn tất (phải được xóa bằng phần mềm) 0: Ghi EEPROM chưa hoàn tất

Bit 3 BCLIF: Cờ báo ngắt do xung đột bus

1: Xung đột bus đã xuất hiện trong chế độ SSP 0: Không có xung đột bus xảy ra

Bit 0 CCP2IF: Cờ báo ngắt CPP2

(program counter) có độ dài 13 bit,

được dùng để chứa địa chỉ của lệnh

được thực thi kế tiếp Byte thấp chứa

trong thanh ghi PCL có thể đọc/ghi

một cách trực tiếp Các bit cao (bit

12:8) chứa trong thanh ghi PCLATH,

không thể đọc nhưng có thể ghi gián

tiếp bằng cách sử dụng thanh ghi

PCLATH Khi có bất kỳ sự Reset nào

xảy ra, các bit cao của bộ đếm chương

trình PC sẽ bị xóa Xem thêm hai ví dụ

sau đây để hiểu thêm về hoạt động của

bộ đếm chương trình PC

Trang 36

1.4.5 Ngăn xếp Stack:

Stack cho phép 8 lệnh gọi chương trình con và ngắt hoạt động Stack chứa địa chỉ

mà chương trình chính sẽ quay về thực hiện từ sau chương trình con hay ngắt Đối với PIC16F877A Stack có độ sâu 8 lớp Stack không nằm trong cả bộ nhớ chương trình lẫn

bộ nhớ dữ liệu

1.4.6 Địa chỉ trực tiếp và địa chỉ gián tiếp, thanh ghi INF và thanh ghi FSR:

Thanh ghi INF không phải là một thanh ghi vật lí Nó chứa giá trị của thanh ghi có địa chỉ nằm ở thanh ghi FSR

Ví dụ:

Thanh ghi tại địa chỉ 10h có giá trị 5Ah

Nếu ta đưa 10h vào thanh ghi FSR thì khi đọc thanh ghi INF ta sẽ có giá trị 5Ah

Data EEPROM và Flash Program Memory:

EEPROM là bộ nhớ có khả năng đọc và ghi trong điều kiện làm việc bình thường (khi nguồn Vdd không đổi) Bộ nhớ này không được định địa chỉ trực tiếp trong bản đồ

bộ nhớ mà được định địa chỉ gián tiếp thông qua các thanh ghi chức năng đặc biệt:

Trang 37

1.5 I/O ports:

1.5.1 Port A và thanh ghi TRISA:

Port A gồm 6 chân từ RA0 đến RA5 Việc

ghi giá trị vào thanh ghi TRISA sẽ qui định các

chân của Port A là input hay output (nếu là 1 thì

là input, là output nếu là 0) Việc đọc thanh ghi

Port A sẽ đọc trạng thái của các chân ở Port A

Việc ghi giá trị vào thanh ghi Port A sẽ thay đổi

trạng thái của các chân Port A

Riêng chân RA4 được tích hợp chức năng

là chân cung cấp xung clock ngoài cho Timer 0

(RA4/T0CKI) Những chân khác của Port A

được đa hợp với các chân ngõ vào Analog của

ADC và chân ngõ vào điện thế so sánh của bộ

so sánh Comparator Hoạt động của những chân

này được quy định bằng những bit tương ứng

trong các thanh ghi ADCCON1 và CMCON1

Khi các chân của Port A được sử dụng làm ngõ

vào Analog thì các bit trong thanh ghi TRISA

phải được set bằng 1

Trang 38

Chức năng của các chân Port A

Trang 39

Bảng tóm tắt các thanh ghi liên quan đến Port A

1.5.2 Port B và thanh ghi TRISB:

Port B gồm 8 chân từ chân RB0-RB7 Việc ghi giá trị vào thanh ghi TRISB sẽ quy định các chân của Port B là input hay output (1: input, 0: output) Việc đọc thanh ghi Port

B sẽ đọc trạng thái của các chân ở Port B Việc ghi giá trị vào thanh ghi Port B sẽ thay đổi trạng thái của các chân Port B

Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và Low Voltage Programming function: RB3/PGM, RB6/PGC, RB7/PGD

Mỗi chân Port B có một transistor kéo lên Vdd Chức năng này hoạt động khi bit RBPU (Option <7>) được xóa Chức năng này sẽ tự động được xóa khi Port B được quy định là input

Bốn chân của Port B từ RB7 đến RB4 có chức năng ngắt khi trạng thái chân Port B thay đổi (Khi Port B được quy định là output thì chức năng này không hoạt động Giá trị chân của Port được so sánh với giá trị đã được lưu trước đó, khi có sự sai lệch giữa 2 giá trị này ngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0) sẽ bật lên Ngắt có thể làm cho VĐK thoát khỏi trạng thái SLEEP

Bất cứ sự truy xuất nào trên PortB sẽ xóa trạng thái sai lệch, kết thúc ngắt và cho phép xóa cờ ngắt RBIF

Trang 40

Bảng chức năng PortB :

Bảng tóm tắt các thanh ghi liên quan đến Port B :

1.5.3 Port C và thanh ghi TRISC:

Port C gồm 8 chân từ chân RC0-RC7 Việc ghi giá trị vào thanh ghi TRISC sẽ quy định các chân của Port C là input hay output (1: input, 0: output) Việc đọc thanh ghi Port C sẽ đọc trạng thái của các chân ở Port C Việc ghi giá trị vào thanh ghi Port C sẽ thay đổi trạng thái của các chân Port C

Các chân của Port C được đa hợp với các chức năng ngoại vi

Khi các chức năng ngoại vi được cho phép ta cần quan tâm chặt chẽ tới giá trị các bit của thanh ghi TRISC Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lên các bit của thanh ghi TRISC và mặc định các chân này là output, ngoài ra một số chức năng ngoại vi khác sẽ tự động mặc định một số chân là ngõ vào Do đó cần xem xét kĩ các tính năng của các hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho thích hợp

Ngày đăng: 16/04/2015, 11:03

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối PIC16F877A. - Đề tài Kit thực tập PIC 16F877A
Sơ đồ kh ối PIC16F877A (Trang 19)
Bảng tóm tắt các thanh ghi liên quan đến Port A - Đề tài Kit thực tập PIC 16F877A
Bảng t óm tắt các thanh ghi liên quan đến Port A (Trang 39)
Sơ đồ khối của bộ biến đổi ADC 10 bit: - Đề tài Kit thực tập PIC 16F877A
Sơ đồ kh ối của bộ biến đổi ADC 10 bit: (Trang 59)
Sơ đồ khối chõn ngừ ra của cỏc bộ so sỏnh - Đề tài Kit thực tập PIC 16F877A
Sơ đồ kh ối chõn ngừ ra của cỏc bộ so sỏnh (Trang 65)
Bảng mã hiển thị led 7 đoạn: - Đề tài Kit thực tập PIC 16F877A
Bảng m ã hiển thị led 7 đoạn: (Trang 73)
3.2  Sơ đồ nguyên lý: - Đề tài Kit thực tập PIC 16F877A
3.2 Sơ đồ nguyên lý: (Trang 79)
Hình 4.2: Sơ đồ cấu trúc bên trong của led ma trận: (a) cathode chung, (b) anode  chung. - Đề tài Kit thực tập PIC 16F877A
Hình 4.2 Sơ đồ cấu trúc bên trong của led ma trận: (a) cathode chung, (b) anode chung (Trang 82)
Hình 4.3: Giao tiếp led ma trận dùng phương pháp chốt. - Đề tài Kit thực tập PIC 16F877A
Hình 4.3 Giao tiếp led ma trận dùng phương pháp chốt (Trang 82)
Hình 4.4: Qui trình hiển thị chốt hàng. - Đề tài Kit thực tập PIC 16F877A
Hình 4.4 Qui trình hiển thị chốt hàng (Trang 83)
Hình 4.6: Sơ đồ mạch thanh ghi. - Đề tài Kit thực tập PIC 16F877A
Hình 4.6 Sơ đồ mạch thanh ghi (Trang 84)
Hình 4.7: Qui trình đưa dữ liệu ra 8 cột cho led ma trận. - Đề tài Kit thực tập PIC 16F877A
Hình 4.7 Qui trình đưa dữ liệu ra 8 cột cho led ma trận (Trang 85)
Hình 4.9: Hiển thị chữ B trên led ma trận dùng phương pháp quét cột.  Cột 1 - Đề tài Kit thực tập PIC 16F877A
Hình 4.9 Hiển thị chữ B trên led ma trận dùng phương pháp quét cột. Cột 1 (Trang 87)
Hình 2 : Sơ đồ chân của LCD - Đề tài Kit thực tập PIC 16F877A
Hình 2 Sơ đồ chân của LCD (Trang 89)
Hình 3 : Sơ đồ khối của HD44780 - Đề tài Kit thực tập PIC 16F877A
Hình 3 Sơ đồ khối của HD44780 (Trang 91)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w