luận văn nghiên cứu và thiết kế bộ kit pic 16f877a - Pdf 13

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ
LUẬN VĂN TỐT NGHIỆP
Đề tài: Nghiên cứu về vi điều khiển PIC 16F877A
và một số ứng dụng.
Cụ thể: Nghiên cứu và thiết kế bộ KIT PIC
16F877A
GV hướng dẫn :
SV thực hiện :
Lớp : Điện Tử 1 K2
Khoa : Điện Tử
Trường : Đại học Công Nghiệp Hà Nội
LUẬN VĂN TỐT NGHIỆP

SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
2
LUẬN VĂN TỐT NGHIỆP
BỘ CÔNG THƯƠNG CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐH CÔNG NGHIỆP HÀ NỘI Độc lập - Tự do - Hạnh phúc
THỰC TẬP TỐT NGHIỆP ĐẠI HỌC
Họ và tên học sinh : TRẦN XUÂN CHIẾN
Lớp : ĐIỆN TỬ 1 K2
Khoá : 2…… Khoa, Trung tâm : ĐIỆN TỬ
Tên đề tài: Nghiên cứu về vi điều khiển PIC 16F877A và một số ứng dụng.
Cụ thể: Nghiên cứu và thiết kế bộ KIT PIC 16F877A
Giáo viên hướng dẫn : PHẠM THỊ QUỲNH TRANG
NỘI DUNG YÊU CẦU
TT Nội dung
1 Tổng quan về vi điều khiển
2 Giới thiệu về PIC 16F877A

SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
4
LUẬN VĂN TỐT NGHIỆP
MỤC LỤC
LỜI MỞ ĐẦU
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật
và trong dân dụng. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức
tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức
tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần
to lớn vào việc phát triển thông tin. Chính vì các lý do trên, việc tìm hiểu, khảo sát
vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành kỹ
thuật điện-điện tử phải hết sức quan tâm. Đó chính là một nhu cầu cần thiết và cấp
bách đối với mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu cầu đó.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử
dụng đươc lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc
vào con người, đó chính là chương trình hay phần mềm. Nếu không có sự tham gia
của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri. Do vậy khi nói
đến vi điều khiển cũng giống như máy tính bao gồm 2 phần là phần cứng và phần
mềm.
Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cận

công việc. Để kết nối các khối này đòi hỏi người thiết kế phải hiểu biết tinh tường
về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi. Hệ thống được tạo ra khá
phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ
người thiết kế. Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để
áp dụng cho các hệ thống nhỏ.
Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số
mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là
Microcontroller- Vi điều khiển.
Một số đặc điểm khác nhau giữa vi xử lí và VĐK:
- Về phần cứng: VXL cần được ghép thêm các thiết bị ngoại vi bên ngoài như bộ
nhớ, và các thiết bị ngoại vi khác, … để có thể tạo thành một bản mạch hoàn
chỉnh. Đối với VĐK thì bản thân nó đã là một hệ máy tính hoàn chỉnh với CPU,
bộ nhớ, các mạch giao tiếp, các bộ định thời và mạch điều khiển ngắt được tích
hợp bên trong mạch.
- Về các đặc trưng của tập lệnh: Do ứng dụng khác nhau nên các bộ VXL và
VĐK cũng có những yêu cầu khác nhau đối với tập lệnh của chúng. Tập lệnh
của các VXL thường mạnh về các kiểu định địa chỉ với các lệnh cung cấp các
hoạt động trên các lượng dữ liệu lớn như 1byte, ½ byte, word, double word, Ở
các bộ VĐK, các tập lệnh rất mạnh trong việc xử lý các kiêu dữ liệu nhỏ như bit
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
7
LUẬN VĂN TỐT NGHIỆP
hoặc một vài bit.
- Do VĐK cấu tạo về phần cứng và khả năng xử lí thấp hơn nhiều soi với VXL
nên giá thành của VĐK cũng rẻ hơn nhiều. Tuy nhiên nó vẫn đủ khả năng đáp
ứng được tất cả các yêu cầu của người dùng.
Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ, các robot có
chức năng đơn giản, trong máy giặt, ôtô v.v
1.1.2 PHÂN LOẠI
 Độ dài thanh ghi

- Bộ giải mã lệnh và điều khiển, xác định các thao tác mà CPU cần thực
hiện
- Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi
- Thanh ghi PC, lưu giũ địa chỉ của lệnh kế tiếp cần thực thi
- Một tập các thanh ghi dùng để lưu thông tin tạm thời
 2. ROM:
ROM là bộ nhớ dùng để lưu giữ chương trình. ROM còn dùng để chứa số liệu
các bảng, các tham số hệ thống, các số liệu cố định của hệ thống. Trong quá
trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội dung ROM
chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình.
 RAM:
RAM là bọ nhớ dữ liệu. Bộ nhớ RAM dùng làm môi trường xử lý thông tin,
lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép toán, xử lí
thông tin. Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các thao tác
thu phát, chuyển đổi dữ liệu.
 BUS:
BUS là các đường dẫn dùng để di chuyển dữ liệu. Bao gồm: bus địa chỉ, bus
dữ liệu , và bus điều khiển
 BỘ ĐỊNH THỜI: Được sử dụng cho các mục đích chung về thời gian.
 WATCHDOG: Bộ phận dùng để reset lại hệ thống khi hệ thống gặp “bất
thường”.
 ADC: Bộ phận chuyển tín hiệu analog sang tín hiệu digital. Các tín hiệu bên
ngoài đi vào VDK thường ở dạng analog. ADC sẽ chuyển tín hiệu này về dạng tín
hiệu digital mà VDK có thể hiểu được.
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
9
LUẬN VĂN TỐT NGHIỆP
1.2 KHÁI QUÁT VỀ VI ĐIỀU KHIỂN PIC
1.2.1 PIC LÀ GÌ ?
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là “máy

Như đã trình bày ở trên, kiến trúc Havard là khái niệm mới hơn so với kiến trúc
Von-Neuman. Khái niệm này được hình thành nhằm cải tiến tốc độ thực thi của một
vi điều khiển.
Qua việc tách rời bộ nhớ chương trình và bộ nhớ dữ liệu, bus chương trình và
bus dữ liệu, CPU có thể cùng một lúc truy xuất cả bộ nhớ chương trình và bộ nhớ
dữ liệu, giúp tăng tốc độ xử lí của vi điều khiển lên gấp đôi. Đồng thời cấu trúc lệnh
không còn phụ thuộc vào cấu trúc dữ liệu nữa mà có thể linh động điều chỉnh tùy
theo khả năng và tốc độ của từng vi điều khiển. Và để tiếp tục cải tiến tốc độ thực
thi lệnh, tập lệnh của họ vi điều khiển PIC được thiết kế sao cho chiều dài mã lệnh
luôn cố định (ví dụ đối với họ 16Fxxxx chiều dài mã lệnh luôn là 14 bit) và cho
phép thực thi lệnh trong một chu kì của xung clock ( ngoại trừ một số trường hợp
đặc biệt như lệnh nhảy, lệnh gọi chương trình con … cần hai chu kì xung đồng hồ).
Điều này có nghĩa tập lệnh của vi điều khiển thuộc cấu trúc Havard sẽ ít lệnh hơn,
ngắn hơn, đơn giản hơn để đáp ứng yêu cầu mã hóa lệnh bằng một số lượng bit
nhất định.
Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là vi điều khiển
RISC (Reduced Instruction Set Computer) hay vi điều khiển có tập lệnh rút gọn. Vi
điều khiển được thiết kế theo kiến trúc Von-Neuman còn được gọi là vi điều khiển
CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp vì
mã lệnh của nó không phải là một số cố định mà luôn là bội số của 8 bit (1 byte).
1.2.4 PIPELINING
Đây chính là cơ chế xử lí lệnh của các vi điều khiển PIC. Một chu kì lệnh của vi
điều khiển sẽ bao gồm 4 xung clock. Ví dụ ta sử dụng oscillator có tần số 4 MHZ,
thì xung lệnh sẽ có tần số 1 MHz (chu kì lệnh sẽ là 1 us). Giả sử ta có một đoạn
chương trình như sau:
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
11
LUẬN VĂN TỐT NGHIỆP
1. MOVLW 55h
2. MOVWF PORTB

- PIC16xxxx: độ dài lệnh 14 bit
- PIC18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ flash
LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
LV: tương tự như LF, đây là kí hiệu cũ
Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm
chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash).
Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC.
Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản
xuất.
Cách lựa chọn một vi điều khiển PIC phù hợp:
- Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng.
Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi
điều khiển chỉ có 8 chân, ngoài ra còn có các vi điều khiển 28, 40, 44, …
chân.
- Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình
được nhiều lần hơn. Tiếp theo cần chú ý đến các khối chức năng được tích
hợp sẵn trong vi điều khiển, các chuẩn giao tiếp bên trong.
- Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép.
- Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm
thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung
cấp.
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
13
LUẬN VĂN TỐT NGHIỆP
1.2.6 NGÔN NGỮ LẬP TRÌNH CHO PIC
Ngôn ngữ lập trình cho PIC rất đa dạng. Ngôn ngữ lập trình cấp thấp có
MPLAB (được cung cấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữ lập
trình cấp cao hơn bao gồm C, Basic, Pascal, … Ngoài ra còn có một số ngôn ngữ

LUẬN VĂN TỐT NGHIỆP
công, kiểm tra và chương trình nạp đều dễ dàng tìm được và download miễn phí
thông qua mạng Internet. Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về
số vi điều khiển được hỗ trợ, bên cạnh đó mỗi mạch nạp cần được sử dụng với một
chương trình nạp thích hợp.
CHƯƠNG 2: VI ĐIỀU KHIỂN PIC16F877A
2.1 GIỚI THIỆU CHUNG
2.1.1 CÁC DẠNG SƠ ĐỒ CHÂN
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
15
LUẬN VĂN TỐT NGHIỆP
Hình 2.1 Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân
2.1.2 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
16
LUẬN VĂN TỐT NGHIỆP

Hình 2.2 Sô ñoà khoái vi ñieàu khieån PIC16F877A.
Hình 2.2 là sơ đồ khối của PIC 16F877A, gồm các khối:
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
17
LUẬN VĂN TỐT NGHIỆP
- Khối ALU – Arithmetic Logic Unit.
- Khối bộ nhớ chứa chương trình – Flash Program Memory.
- Khối bộ nhớ chứa dữ liệu EPROM – Data EPROM.
- Khối bộ nhớ file thanh ghi RAM – RAM file Register.
- Khối giải mã lệnh và điều khiển – Instruction Decode Control.
- Khối thanh ghi đặc biệt.
- Khối ngoại vi timer.
- Khối giao tiếp nối tiếp.

ICSP.
• Chân RB7/PGD(40): xuất nhập số/ mạch gỡ rối và dữ liệu lập trình ICSP.
• Chân RC0/T1OCO/T1CKI(15): xuất nhập số/ ngõ vào bộ giao động Timer1/
ngõ vào xung clock bên ngoài Timer 1.
• Chân RC1/T1OSI/CCP2(16) : xuất nhập số/ ngõ vào bộ dao động Timer 1/
ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
• Chân RC2/CCP1(17): xuất nhập số/ ngõ vào Capture1 ,ngõ ra compare1, ngõ
ra PWM1.
• Chân RC3/SCK/SCL(18): xuất nhập số/ ngõ vào xung clock nối tiếp đồng
bộ, ngõ ra chế độ SPI./ ngõ vào xung clock nối tiếp đồng bộ, ngõ ra của chế
độ I2C.
• Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữ liệu
I2C.
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
19
LUẬN VĂN TỐT NGHIỆP
• Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI.
• Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung
đồng bộ USART.
• Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART.
• Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song.
• Chân RE0/ /AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vào
tương tự 5.
• Chân RE1/ /AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ
vào tương tự kênh thứ 6.
• Chân RE2/ /AN7(10): xuất nhấp số/ Chân chọn lụa điều khiển port song
song/ ngõ vào tương tự kênh thứ 7.
• Chân VDD(11, 32) và VSS(12, 31): là các chân nguồn của PIC.
2.1.4 ĐẶC ĐIỂM 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

SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
21
LUẬN VĂN TỐT NGHIỆP
2.2 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ìn
(Program memory) và bộ nhớ dữ liệu (Data Memory).
2.2.1 BỘ NHỚ CHƯƠNG TRÌNH
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 Hình 2.4 Bộ nhớ chương trình
PIC16F877A
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.
2.2.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

và ngắt interrput- on-change tại các chân của PORTB.
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối
chức
năng ngoại vi.
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
24
LUẬN VĂN TỐT NGHIỆP
Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1.
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức
năng
CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM.
Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các
ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2.

Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset
của vi điều khiển.
2. THANH GHI MỤC ĐÍCH CHUNG GPR
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh
ghi
FSG (File Select Register). Đây là các thanh ghi dữ liệu thông thường, người sử
dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để
chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình.
2.2.3 STACK
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng
nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện hay khi
một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC
SV: TRẦN XUÂN CHIẾN LỚP: ĐIỆN TỬ 1 K2
25


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status