NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Ngày ……… tháng……….năm 2008
Giáo viên hướng dẫn
Thạc sỹ :
LÊ ĐÌNH KHA
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Ngày ……… tháng……….năm 2008
Giáo viên phản biện
Thầy : TRƯƠNG QUANG TRUNG
L
L
ờ
ờ
i
i
c
c
ả
ả
m
m
ơ
ơ
n
n
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
Hà Xuân Bình
Vũ Thanh Hưng
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 .
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 4
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 5
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 6
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 7
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 8
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 9
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 10
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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:
Led đơn.
Hiển thị Led 7 đoạn.
Đèn giao thông .
Chạy chữ led ma trận.
Hiển thị LCD.
ADC
Giao tiếp bàn phím.
Đo nhiệt độ dùng LM35.
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.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 11
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
PHẦN I
KHẢO SÁT VI ĐIỀU KHIỂN PIC
16F877A
¾ CHƯƠNG I : CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A
¾ CHƯƠNG II : BỘ ĐỊNH THỜI
¾ 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
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 12
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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:
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 13
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 14
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 15
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 16
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
Sơ đồ khối PIC16F877A.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 17
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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*10
6
(s)
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 18
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*10
6
(s) = 0.4 µs = 400 ns
1.3.2 Reset:
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau như:
1.3.3
MCLR
:
PIC16F877A có một bộ lọc nhiễu ở
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).
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 19
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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.
- Ngắt do Timer0.
- Ngắt do Timer1.
- Ngắt do Timer2.
- Ngắt do thay đổi trạng thái trên các chân PortB.
- Ngắt so sánh điện thế.
- Ngắt do Port song song.
- Ngắt USART.
- Ngắt nhận dữ liệu.
- Ngắt truyền dữ liệu .
- Ngắt chuyển đổ
i ADC.
- Ngắt màn hình LCD.
- Ngắt hoàn tất ghi EEPROM.
- Ngắt module CCP.
- Ngắt Module SSP.
* 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.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 20
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
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 V
DD
hoặc V
SS.
• 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.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 21
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
1.4 Tổ chức bộ nhớ:
PIC16F877A có tất cả 3 khối bộ nhớ riêng biệt bao gồm: Bộ nhớ chương trình, bộ
nhớ dữ liệu và bộ nhớ EEPROM.
1.4.1 Bộ nhớ chương trình:
PIC16F877A có bộ đếm chương trình dài 13 bits có thể định địa chỉ cho khoảng
không gian nhớ 8K x 14bits. Không gian bộ nhớ này được chia làm 8 trang, có địa chỉ từ
0005h đến 1FFFh.
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.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 22
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
1.4.2 Bộ nhớ dữ liệu:
Bảng đồ cấu trúc bộ nhớ dữ liệu P16F877A
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 23