Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Đề Tài: Kit Thực Tập Vi Điều Khiển Pic
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 4
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc 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
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.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 trang 114
1.1. Giới thiệu chung trang 114
1.2. Mạch ngun lý trang 114
CHƯƠNG II: HIỂN THỊ LED 7 ĐOẠN trang 115
2.1. Các khái niệm cơ bản trang 115
2.2. Kết nối với vi điều khiển trang 116
2.3. Giao tiếp vi điều khiển với nhiều led 7 đoạn trang 117
2.4. Lưu đồ giải thuật trang 118
2.5.Mạch ngun lý trang 119
CHƯƠNG III: ĐÈN GIAO THƠNG trang 120
3.1. Giới thiệu trang 120
3.2. Sơ đồ ngun lý trang 120
3.3. Lưu đồ giải thuật trang 121
CHƯƠNG IV: LED MA TRẬN trang 122
4.1. Hiện thị led ma trận trang 122
4.1.1. Giới thiệu trang 122
4.1.2. Led ma trận 8x8 trang 122
4.2. Phương pháp hiển thị bằng IC chốt trang 123
4.2.1. Chốt hàng trang 124
4.2.2. Chốt cột trang 124
4.3. Phương pháp dùng thanh ghi dịch trang 125
4.3.1. Qt hàng trang 125
Ngơ Ngọc Huynh & Nguyễn Duy Hiến trang 6
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
4.3.1.1. Giới thiệu chung về phương pháp quét hàng trang 125
4.3.1.2. Quá trình thực hiện quét hàng trang 126
8.1 Giới Thiệu trang 145
8.2 Hình dạng trang 145
8.3 Sơ đồ cấu tạo trang 145
8.4 Sơ đồ chân trang 145
8.5 Mạch nguyên lý trang 146
CHƯƠNG IX: ĐO NHIỆT ĐỘ DÙNG LM35 trang 147
9.1. Giới thiệu trang 147
9.2. Một số đặc tính cơ bản của LM35 trang 147
9.3. Mạch nguyên lý trang 148
PHẦN III: CÁC BÀI TẬP THỰC HÀNH trang 150
Bài 1: hiển thị trạng thái port trên led trang 151
Bài 2: hiển thị trạng thái các port và thay đổi thời gian delay trang 152
Bài 3: hiển thị ngày tháng năm sinh trên led 7 trang 153
Bài 4: hiển thị đồng hồ trên led 7 trang 154
Bài 5: chương trình đèn giao thông trang 155
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 7
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Bài 6: chẠy chữ led ma trận trang 156
Bài 7: hiển thỊ ký tự trên lcd trang 157
Bài 8: giao tiếp bàn phím số hex hiển thị lcd trang 158
Bài 9: điều chỉnh adc hiển thị led đơn trang 159
Bài 10: đo nhiệt độ trang 160
PHẦN VI: GIẢI CÁC BÀI TẬP THỰC HÀNH trang 161
Bài 1: hiển thị trạng thái port trên led đơn trang 162
Bài 2: hiển thị trạng thái các port và thay đổi thời gian delay trang 164
Bài 3: hiển thị ngày tháng năm sinh trên led 7 trang 165
Bài 4: hiển thị đồng hồ trên led 7 trang 171
Bài 5: chương trình đèn giao thông trang 173
Bài 6: chạy chữ led ma trận trang 175
Bài 7: hiển thị ký tự trên lcd trang 178
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.
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 9
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 10
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc 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).
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
Ngơ Ngọc Huynh & Nguyễn Duy Hiến trang 12
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 13
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 14
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 15
Đồ Án Tốt Nghiệp Khóa 2006-2009 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.
SƠ ĐỒ KHỐI PIC16F877A
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 16
Đồ Án Tốt Nghiệp Khóa 2006-2009 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:
LP low-power crystal
XT crystal/resonatpor
HS high-speed crystal/resonatpor
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).
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 18
Đồ Án Tốt Nghiệp Khóa 2006-2009 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).
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 19
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc 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
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.
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 20
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Khi Pic16F877A bị kẹt khơng thể thố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 xố 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.
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
Ngơ Ngọc Huynh & Nguyễn Duy Hiến trang 21
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
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.
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 24
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Bảng tóm tắt các thanh ghi chức năng đặc biệt
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 25
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 26
Đồ Án Tốt Nghiệp Khóa 2006-2009 GVHD: Thạc Sỹ LÊ ĐÌNH KHA
Ngô Ngọc Huynh & Nguyễn Duy Hiến trang 27