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

Đồ án kit thực tập đa năng PIC

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 (7.04 MB, 213 trang )

ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

MỤC LỤC
CHƯƠNG 0 DẪN NHẬP.....................................................................................trang 9
PHẦN I : KHẢO SÁT VI ðIỀU KHIỂN PIC 16F877A....................................trang 10
CHƯƠNG I: CẤU TRÚC PHẦN CỨNG CỦA 16F877A .................................trang 11
1.1 Sơ lượt về vi ñiều khiển PIC 16F877A ............................................................trang 11
1.2 Sơ lượt về các chân của PIC 16F877A ............................................................trang 17
1.3 Một số ñiểm ñặc biệt của CPU ........................................................................trang 17
1.3.1 Dao ñộng..............................................................................................trang 17
1.3.2 Reset ....................................................................................................trang 18
1.3.3 MCLR (Master clear) ...........................................................................trang 18
1.3.4 Interrupts ..............................................................................................trang 19
1.3.5 Chế ñộ nguồn thấp Sleep (Power down Mode) .....................................trang 20
1.3.6 Bộ ñịnh thời giám sát (Watch Dog Timer – WDT) ...............................trang 20
1.4 Tổ chức bộ nhớ ...............................................................................................trang 21
1.4.1 Bộ nhớ chương trình.............................................................................trang 21
1.4.2 Bộ nhớ dữ liệu......................................................................................trang 22
1.4.2.1Vùng Ram ða Mục ðích ............................................................trang 24
1.4.2.2. Vùng thanh ghi chức năng ñặt biệt............................................trang 24
1.4.3. Các thanh ghi chức năng ñặc biệt ........................................................trang 27
1.4.3.1.Thanh ghi trạng thái (Status register) .........................................trang 27
1.4.3.2. Thanh ghi tùy chọn (Option Reg_Register)...............................trang 28
1.4.3.3. Thanh ghi ñiều khiển ngắt INTCON.........................................trang 29
1.4.3.4. Thanh ghi cho phép ngắt ngoại vi 1 ..........................................trang 30
1.4.3.5. Thanh ghi cờ của các ngắt ngoại vi 1 ........................................trang 30
1.4.3.6. Thanh ghi cho phép ngắt ngoại vi 2 ..........................................trang 31
1.4.3.7. Thanh ghi cờ của các ngắt ngoại vi 2 ........................................trang 32
1.4.4. PCL và PCLATH ................................................................................trang 32


1.4.5. Ngăn xếp Stack ...................................................................................trang 33
1.4.6. ðịnh ñịa chỉ trực tiếp và ñịa chỉ gián tiếp, thanh ghi INF và FSR ........trang 33
1.5. I/O port...........................................................................................................trang 34
1.5.1. Port A và thanh ghi TRIS A.................................................................trang 35
1.5.2. Port B và thanh ghi TRIS B .................................................................trang 36
1.5.3. Port C và thanh ghi TRIS C .................................................................trang 38
1.5.4. Port D và thanh ghi TRIS D.................................................................trang 39
1.5.5. Port E và thanh ghi TRIS E .................................................................trang 39
CHƯƠNG II: BỘ ðỊNH THỜI ..........................................................................trang 41
2.1. Bộ ñịnh thời timer 0 .......................................................................................trang 41
2.1.1. Giới thiệu ............................................................................................trang 41
2.1.2. Hoạt ñộng của bộ ñịnh thời..................................................................trang 41
2.1.3. Ngắt Timer 0 .......................................................................................trang 41
2.1.4. Sử dụng Timer 0 với nguồn xung clock ngoài .....................................trang 42
2.1.5. Bộ tiền ñịnh tỉ lệ 8 bit của Timer 0 ......................................................trang 42
2.2. Bộ ñịnh thời Timer 1 ......................................................................................trang 42
2.2.1. Giới thiệu ............................................................................................trang 42
2.2.2. Thanh ghi ñiều khiển Timer 1..............................................................trang 43
2.2.3. Chế ñộ ñịnh thời trong hoạt ñộng của Timer 1.....................................trang 43
Phạm Xuân Công & Nguyễn Tăng Vương

trang 4


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

2.2.4. Chế ñộ ñếm .........................................................................................trang 43
2.2.5. Giao ñộng riêng của Timer 1 ...............................................................trang 44

2.2.6. Ngắt Timer 1 .......................................................................................trang 44
2.3. Bộ ñịnh thời Timer 2 ......................................................................................trang 44
2.3.1. Giới thiệu ............................................................................................trang 44
2.3.2. Thanh ghi ñiều khiển T2CON..............................................................trang 45
2.3.3. Xóa các bộ tỉ lệ....................................................................................trang 45
2.3.4. Nguồn xung clock cho Timer 2............................................................trang 45
2.3.5. Thanh ghi TMR2 và PR2.....................................................................trang 46
2.3.6. Tín hiệu báo trạng thái cân bằng ..........................................................trang 46
2.3.7. Chế ñộ ngủ ..........................................................................................trang 46
CHƯƠNG III: MODULE CCP .........................................................................trang 47
3.1. Giới thiệu .......................................................................................................trang 47
3.2. Thanh ghi ñiều khiển module CCP .................................................................trang 47
3.3. Chế ñộ Capture...............................................................................................trang 48
3.3.1. Bộ ñịnh tỉ lệ của CCP ..........................................................................trang 48
3.4. Chế ñộ Compare.............................................................................................trang 48
3.5. Chế ñộ ñiều biến xung PWM..........................................................................trang 49
3.5.1. Chu kỳ PWM ......................................................................................trang 49
3.5.2.Chu kỳ nhiệm vụ của PWM..................................................................trang 50
3.5.3. Cài ñặt hoạt ñộng cho PWM................................................................trang 50
3.5.4. Module MSSP .....................................................................................trang 51
CHƯƠNG IV: BỘ BIẾN ðỔI ADC 10 BIT .....................................................trang 53
4.1. Giới thiệu module ADC 10 bit........................................................................trang 53
4.2. Các thanh ghi ñiều khiển ................................................................................trang 53
4.3. Hoạt ñộng của Module ADC ..........................................................................trang 54
4.4.Thời gian lấy mẫu............................................................................................trang 55
4.5. Lựa chọn xung clock cho biến ñổi ADC .........................................................trang 56
4.6. Cấu hình các chân Analog ..............................................................................trang 57
4.7. Chuyển ñổi ADC............................................................................................trang 57
4.8. Hoạt ñộng của module ADC trong chế ñộ ngủ................................................trang 58
4.9. Ảnh hưởng của Reset .....................................................................................trang 58

CHƯƠNG V: ðIỆN THẾ THAM CHIẾU VÀ CÁC BỘ SO SÁNH ðIỆN.....trang 59
5.1. Module Comparator .......................................................................................trang 59
5.1.1. Giới thiệu về module comparator.........................................................trang 59
5.1.2. Cài ñặt chế ñộ cho bộ so sánh..............................................................trang 59
5.1.3. Nguồn tham chiếu của bộ so sánh........................................................trang 61
5.1.3.1. Tín hiệu ñiện áp tham chiếu ngoại ............................................trang 61
5.1.3.2. Tín hiệu ñiện áp tham chiếu nội................................................trang 61
5.1.4. Thời gian ñáp ứng ...............................................................................trang 61
5.1.5. Tín hiệu ngõ ra của bộ so sánh.............................................................trang 61
5.1.6. Ngắt của các bộ so sánh.......................................................................trang 62
5.1.7. Hoạt ñộng của các bộ so sánh trong chế ñộ ngủ...................................trang 62
5.1.8. Ảnh hưởng của Reset ..........................................................................trang 62
5.2. Module ñiện áp tham chiếu.............................................................................trang 62
5.2.1. Giới thiệu module ñiện áp tham chiếu .................................................trang 62
5.2.2. Thanh ghi ñiều khiển CVRCON ..........................................................trang 63
5.2.3. ðộ chính xác của ñiện áp tham chiếu...................................................trang 63
Phạm Xuân Công & Nguyễn Tăng Vương

trang 5


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

5.2.4. Hoạt động của module VREF trong chế độ ngủ ...................................trang 63
5.2.5. Trạng thái của module khi Reset.......................................................trang 63
5.2.6. Sử dụng module với các mạch ngồi ...................................................trang 64
5.3 Giao Tiếp Nối Tiếp ........................................................................................... trang 64
5.3.1 Usart....................... ................................................................................ trang 64

5.3.1.1 Usart bất đồng bộ ........................................................................ trang 65
5.3.1.2 Truyền Dữ Liệu Qua Chuẩn Giao Tiếp Usart Bất Đồng Bộ.... trang 65
5.3.1.3 Nhận Dữ Liệu Qua Chuẩn Giao Tiếp Usart Bất Đồng Bộ....... trang 66
5.3.2 Usart Đồng Bộ ....... ................................................................................ trang 68
5.4.2.1 Truyền dữ liệu qua chuẩn giao tiếp usart đồng bộ master mode ..... trang 68
5.3.2.2 Nhận dữ liệu qua chuẩn giao tiếp usart đồng bộ master mode ........ trang 69
5.3.3 Truyền dữ liệu qua chuẩn giao tiếp usart đồng bộ slave mode........... trang 69
5.3.4 Nhận dữ liệu qua chuẩn giao tiếp usart đồng bộ slave mode.............. trang 70
5.4 MSSP......... ....................... ................................................................................ trang 71
5.5 SPI ............ ....................... ................................................................................ trang 71
5.6 I2C............. ....................... ................................................................................ trang 74
5.6.1 I2C Slave Mode..... ................................................................................ trang 75
5.6.2 I2C Master Mode . ................................................................................ trang 81
5.7 Cổng Giao Tiếp Song Song Psp (Parallel Slave Port) ..................................... trang 86
5.8 Các Đặc Tính Của Oscillator ............................................................................ trang 87
CHƯƠNG VI: TÂP LỆNH SỬ DUNG TRONG CCS ......................................trang 88
PHẦN II: CÁC THÀNH PHẦN CỦA KIT THỰC TÂP PIC 16F877A .........trang 113
CHƯƠNG I: HIỂN THỊ LED ðƠN..................................................................trang120
1.1. Giới thiệu chung........................................................................................trang120
1.2. Mạch ngun lý.........................................................................................trang120
CHƯƠNG II: HIỂN THỊ LED 7 ðOẠN........................................................... trang121
2.1. Các khái niệm cơ bản .................................................................................... trang121
2.2. Kết nối với vi điều khiển ............................................................................... trang122
2.3. Giao tiếp vi điều khiển với nhiều led 7 đoạn.................................................. trang122
2.4. Lưu đồ giải thuật ........................................................................................... trang123
2.5.Mạch ngun lý.............................................................................................. trang124
CHƯƠNG III: ðÈN GIAO THƠNG ................................................................ trang125
3.1. Giới thiệu ...................................................................................................... trang125
3.2. Sơ đồ ngun lý............................................................................................. trang125
3.3. Lưu đồ giải thuật ........................................................................................... trang126

CHƯƠNG IV: LED MA TRẬN ........................................................................trang127
4.1. Hiện thị led ma trận .......................................................................................trang127
4.1.1. Giới thiệu ...........................................................................................trang128
5.1.2. Led ma trận 8x8..................................................................................trang128
4.2. Phương pháp hiển thị bằng IC chốt................................................................trang129
4.2.1. Chốt hàng ...........................................................................................trang129
4.2.2. Chốt cột..............................................................................................trang129
4.3. Phương pháp dùng thanh ghi dịch..................................................................trang130
4.3.1. Qt hàng ...........................................................................................trang130
4.3.1.1. Giới thiệu chung về phương pháp qt hàng............................trang131
4.3.1.2. Q trình thực hiện qt hàng..................................................trang131
Phạm Xn Cơng & Nguyễn Tăng Vương

trang 6


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

4.3.1.3. Ví dụ .......................................................................................trang132
4.3.2. Quét cột..............................................................................................trang133
4.3.2.1. Giới thiệu chung về phương pháp quét cột...............................trang133
4.3.2.2. Quá trình thực hiện quét cột.....................................................trang133
4.3.2.3. Ví dụ .......................................................................................trang134
4.4. Mạch nguyên lý.............................................................................................trang134
CHƯƠNG V: LCD.............................................................................................trang135
5.1. Giới thiệu chung về LCD ..............................................................................trang136
5.1.1. Các thanh ghi .....................................................................................trang137
5.1.2. Cờ báo bận BF....................................................................................trang137

5.1.3. Bộ ñếm ñịa chỉ AC .............................................................................trang138
5.1.4. Vùng RAM hiển thị DDRAM.............................................................trang138
5.1.5. Vùng ROM chứa ký tự CGROM ........................................................trang139
5.1.6. Vùng RAM chứa ký tự ñồ họa CGRAM.............................................trang140
5.2. Tập lệnh của LCD .........................................................................................trang141
5.3. Khởi tạo LCD................................................................................................trang143
5.3.1. Mạch khởi tạo bên trong chip HD44780 .............................................trang143
5.3.2. Khởi tạo bằng lệnh .............................................................................trang144
5.4. Lưu ñồ giải thuật ...........................................................................................trang145
5.5. Mạch nguyên lý.............................................................................................trang146
CHƯƠNG VI: ADC ...........................................................................................trang147
6.1. Giới thiệu về module ADC............................................................................trang147
6.1.1. Cơ bản về ADC ..................................................................................trang148
6.1.2. ADC trong PIC 16F877A ...................................................................trang148
6.2. Sơ ñồ nguyên lý.............................................................................................trang148
CHƯƠNG VII: BÀN PHÍM GIAO TIẾP LCD................................................trang149
7.1. Keypad và nguyên lý hoạt ñộng.....................................................................trang149
7.2. Keypad giao tiếp với LCD.............................................................................trang149
7.3. Sơ ñồ giải thuật .............................................................................................trang150
CHƯƠNG VIII: EEPROM 24C04 ....................................................................trang151
8.1 Giới Thiệu ......................................................................................................trang151
8.2 Hình dạng.......................................................................................................trang151
8.3 Sơ ñồ cấu tạo..................................................................................................trang152
8.4 Sơ ñồ chân ...................................................................................................trang152
8.5 Mạch nguyên lý.............................................................................................trang153
CHƯƠNG IX: ðO NHIỆT ðỘ DÙNG LM35 ..................................................trang154
9.1. Giới thiệu ......................................................................................................trang154
9.2. Một số ñặc tính cơ bản của LM35 .................................................................trang154
9.3. Mạch nguyên lý ..........................................................................................trang155
PHẦN III: CÁC BÀI TẬP THỰC HÀNH ........................................................trang156

Bài 1: hiển thị trạng thái port trên led ..................................................................trang157
Bài 2: hiển thị trạng thái các port và thay ñổi thời gian delay ...............................trang158
Bài 3: hiển thị ngày tháng năm sinh trên led 7 ......................................................trang159
Bài 4: hiển thị ñồng hồ trên led 7..........................................................................trang160
Bài 5: chương trình ñèn giao thông ......................................................................trang161
Bài 6: chẠy chữ led ma trận .................................................................................trang162
Bài 7: hiển thỊ ký tự trên lcd.................................................................................trang163
Phạm Xuân Công & Nguyễn Tăng Vương

trang 7


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

19183173Bài 8: giao tiếp bàn phím số hex hiển thị lcd.........................................trang164
Bài 9: ñiều chỉnh adc hiển thị led ñơn...................................................................trang165
Bài 10: ño nhiệt ñộ ...............................................................................................trang166
PHẦN VI: GIẢI CÁC BÀI TẬP THỰC HÀNH ..............................................trang167
Bài 1: hiển thị trạng thái port trên led ñơn ...........................................................trang168
Bài 2: hiển thị trạng thái các port và thay ñổi thời gian delay ...............................trang171
Bài 3: hiển thị ngày tháng năm sinh trên led 7 ......................................................trang179
Bài 4: hiển thị ñồng hồ trên led 7.........................................................................trang181
Bài 5: chương trình ñèn giao thông ......................................................................trang183
Bài 6: chạy chữ led ma trận ..................................................................................trang186
Bài 7: hiển thị ký tự trên lcd .................................................................................trang191
Bài 8: giao tiếp bàn phím số hex hiển thị lcd ........................................................trang192
Bài 9: ñiều chỉnh adc hiển thị led ñơn...................................................................trang196
Bài 10: ño nhiệt ñộ ...............................................................................................trang197

PHẦN VI: PHỤ LỤC.........................................................................................trang206
Phụ lục 1: 16F877A .............................................................................................trang207
Phụ lục 2: DEFS_16F877A ..................................................................................trang213

Phạm Xuân Công & Nguyễn Tăng Vương

trang 8


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

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.

Phạm Xuân Công & Nguyễn Tăng Vương

trang 9


ðồ Án Tốt Nghiệp Khóa 2006-2009

Phạm Xuân Công & Nguyễn Tăng Vương

GVHD: Th.s LÊ ðÌNH KHA

trang 10


ðồ Án Tốt Nghiệp Khóa 2006-2009


GVHD: Th.s LÊ ðÌNH KHA

1.1 SƠ LƯỢC VỀ VI ðIỀU KHIỂN PIC16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit. Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối
đa cho phép là 20 MHz.
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 qt của PIC16F877A
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 ngồ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.
CÁC ĐẶC TÍNH NGOẠI VI BAO GỒM CÁC KHỐI CHỨC NĂNG SAU

Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm
dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ
sleep.
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
Hai bộ Capture/so sánh/điều chế độ rông xung.
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
Chuẩn giao tiếp nối tiếp USART với 9 bit đòa chỉ.
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR,
CS ở bên ngoài.
Phạm Xn Cơng & Nguyễn Tăng Vương

trang 11


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

Các đặc tính Analog:
8 kênh chuyển đổi ADC 10 bit.
Hai bộ so sánh.
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
Khả năng tự nạp chương trình với sự điều khiển của phần mềm. Nạp được
chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming)
thông qua 2 chân. Watchdog Timer với bộ dao động trong.

Chức năng bảo mật mã chương trình.
Chế độ Sleep.
Có thể hoạt động với nhiều dạng Oscillator khác nhau.
1.2 SƠ LƯỢC VỀ CÁC CHÂN CỦA PIC16F877A

Phạm Xn Cơng & Nguyễn Tăng Vương

trang 12


ðồ Án Tốt Nghiệp Khóa 2006-2009

Phạm Xuân Công & Nguyễn Tăng Vương

GVHD: Th.s LÊ ðÌNH KHA

trang 13


ðồ Án Tốt Nghiệp Khóa 2006-2009

Phạm Xuân Công & Nguyễn Tăng Vương

GVHD: Th.s LÊ ðÌNH KHA

trang 14


ðồ Án Tốt Nghiệp Khóa 2006-2009


Phạm Xuân Công & Nguyễn Tăng Vương

GVHD: Th.s LÊ ðÌNH KHA

trang 15


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.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.
SƠ ðỒ KHỐI PIC16F877A

Phạm Xuân Công & Nguyễn Tăng Vương

trang 16


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.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:
LP low-power crystal

XT crystal/resonatpor
HS high-speed crystal/resonatpor
RC resistor/capacitor
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/Fosc= 1/10*10 (s)
Chu kỳ máy: T_instruction = 4*Tosc = 4/10*10 (s) = 0.4 µs = 400 ns
6

6

1.3.2 RESET
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau như:
Power-on Reset (POR)
MCLR Reset during sleep
MCLR Reset during normal operation
WDT Reset (during normal operation)

WDT Wake-up (during sleep)
Brown-out Reset (BOR)

Phạm Xuân Công & Nguyễn Tăng Vương

trang 17


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

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).

Phạm Xuân Công & Nguyễn Tăng Vương

trang 18


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.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).

Phạm Xuân Công & Nguyễn Tăng Vương

trang 19


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

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.
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 hoặc V

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ì Pic16f877A 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 vi xử lí 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 Pic16F877A 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 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 Pic biết chương trình cho phép WDT hoạt ñộng.
DD

Phạm Xuân Công & Nguyễn Tăng Vương

SS.

trang 20


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA


1.4 TỔ CHỨC BỘ NHỚ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory).
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 ngồi vùng khơng gian nhớ này sẽ khơng có tác dụng. Ngồ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.
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng
bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đến
page 3). Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì
một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit).
Để mã hóa được đòa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình
có dung lượng 13 bit (PC<12:0>). Khi vi điều khiển được reset, bộ đếm chương trình
sẽ chỉ đến đòa chỉ 0000h (Reset vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ
chỉ đến đòa chỉ 0004h (Interrupt vector).
Bộ nhớ chương trình không bao gồm:
Bộ nhớ stack và không được đòa chỉ hóa bởi bộ đếm chương trình. Bộ nhớ stack
sẽ được đề cập cụ thể trong phần sau.
Phạm Xn Cơng & Nguyễn Tăng Vương

trang 21


ðồ Án Tốt Nghiệp Khóa 2006-2009


GVHD: Th.s LÊ ðÌNH KHA

1.4.2 Bộ Nhớ Dữ Liệu:
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank. Đối với
PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có dung lượng 128
byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register)
nằm ở các vùng đòa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose
Register) nằm ở vùng đòa chỉ còn lại trong bank. Các thanh ghi SFR thường xuyên
được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ
dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương
trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau:

Phạm Xn Cơng & Nguyễn Tăng Vương

trang 22


ðồ Án Tốt Nghiệp Khóa 2006-2009

Phạm Xuân Công & Nguyễn Tăng Vương

GVHD: Th.s LÊ ðÌNH KHA

trang 23


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA


1.4.2.1Vù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.

Phạm Xuân Công & Nguyễn Tăng Vương

trang 24


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

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

Phạm Xuân Công & Nguyễn Tăng Vương

trang 25



ðồ Án Tốt Nghiệp Khóa 2006-2009

Phạm Xuân Công & Nguyễn Tăng Vương

GVHD: Th.s LÊ ðÌNH KHA

trang 26


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

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)
Phạm Xuân Công & Nguyễn Tăng Vương

trang 27


ðồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Th.s LÊ ðÌNH KHA

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.

Bit 7 IRP: Bit lựa chọn bank thanh ghi (Sử dụng cho ñịnh ñịa chỉ gián tiếp).
1 = Bank 2, 3 (100h – 1FFh )
0 = Bank 0, 1 (00h – FFh)

Bit 6 – 5 RP1 – RP0: Bit lựa chọn bank thanh ghi (Dùng trong ñịnh ñiạ chỉ trực tiếp).
11 = Bank 3 ( 180h – 1FFh)
10 = Bank 2 (100h – 17Fh)
01 = Bank 1 (80h – FFh)
00 = Bank 0 (00h – 7Fh)
Each bank is 128 bytes
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.
0: WDT hoạt ñộng.
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.
Bit 6 INTEDG: Bít 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
Phạm Xuân Công & Nguyễn Tăng Vương

trang 28


×