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

Đề tài BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

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 (1.13 MB, 39 trang )

Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

MỤC LỤC

MỤC LỤC ........................................................................................................ 1
CHƢƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN ..................................... 3
1.1 GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN .................................... 3
1.1.1 GIỚI THIỆU CHUNG ............................................................................ 3
1.1.2 PHÂN LOẠI ........................................................................................... 4
1.1.3 CẤU TRÚC TỔNG QUAN CỦA VDK ................................................. 5
1.2

KHÁI QUÁT VỀ VI ĐIỀU KHIỂN PIC ................................................ 5

1.2.1 PIC LÀ GÌ ? ............................................................................................. 5
1.2.2 KIẾN TRÚC PIC ..................................................................................... 6
1.2.3 RISC VÀ CISC ...................................................................................... 7
1.2.4 PIPELINING .......................................................................................... 7
1.2.5 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC ....... 8
1.2.6 NGÔN NGỮ LẬP TRÌNH CHO PIC ..................................................... 9
1.2.7 MẠCH NẠP PIC..................................................................................... 9
1.3 VI ĐIỀU KHIỂN PIC16F877A ............................................................... 10
1.3.1 CÁC DẠNG SƠ ĐỒ CHÂN ................................................................. 10
1.3.2 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A ................................... 12
1.3.3 CHỨC NĂNG CÁC CHÂN CỦA PIC16F877A ................................. 13
1.3.4 ĐẶC ĐIỂM VI ĐIỀU KHIỂN PIC16F877A ....................................... 15
1.3.5 BỘ NHỚ CHƢƠNG TRÌNH ................................................................ 16
1.3.6 BỘ NHỚ DỮ LIỆU .............................................................................. 17
1. THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR ......................................... 19
1.3.7 STACK ................................................................................................... 20
CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG ............................... 22


2.1 Thiết kế nguyên lý:.................................................................................... 22
2.1.2 Sơ đồ mô hình tổng quát của hệ thống................................................... 22
2.1.2. Sơ đồ đặc tả hệ thống: ........................................................................... 23
2.1.3.Sơ đồ thuật toán của hệ thống: ............................................................... 24


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

2.1.4.Sơ đồ call graph của hệ thống: ............................................................... 25
2.1.5.Sơ đồ nguyên lý mạch ............................................................................ 26
2.2.Nguyên tắc làm việc .................................................................................. 26
2.2.1 Nguyên tắc hoạt động: ........................................................................... 26
2.2.2 Ngyên lý hoạt động của hệ thống: ......................................................... 27
2.3 Giới thiệu về linh kiện dùng trong hệ thống ............................................. 28
2.3.1 Các linh kiện sử dụng ............................................................................. 28
CHƢƠNG 3: XÂY DỰNG HỆ THỐNG..................................................... 29
3.1 các module phần phần cứng trong hệ thống ............................................. 29
3.1.1. Module khối điều khiển trung tâm. ....................................................... 29
3.1.2.Module hiển thị. ..................................................................................... 29
3.1.3.Module đo nhiệt độ. ............................................................................... 30
3.1.4.Module khối nguồn. ............................................................................... 31
3.1.5. Module khối giao tiếp phím bấm. ......................................................... 31
3.2 Xây dựng phần mềm, mạch: ..................................................................... 32
3.3 Sơ đồ mạch in hệ thống :........................................................................... 36


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

CHƢƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN
1.1 GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN

1.1.1 GIỚI THIỆU CHUNG
Bộ Vi xử lý có khả năng vƣợt bậc so với các hệ thống khác về khả năng tính
toán, xử lý, và thay đổi chƣơng trình linh hoạt theo mục đích ngƣời dùng, đặc biệt
hiệu quả đối với các bài toán và hệ thống lớn.Tuy nhiên đối với các ứng dụng nhỏ,
tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần
cân nhắc. Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các
khối mạch điện giao tiếp phức tạp nhƣ nhau. Các khối này bao gồm bộ nhớ để chứa
dữ liệu và chƣơng trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và
điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện đƣợc
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 hoặc một vài bit.



Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

- 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
Dựa vào độ dài của các thanh ghi và các lệnh của VĐK mà ngƣời ta chia ra
các loại VĐK 8bit, 16bit, hay 32bit....
Các loại VĐK 16bit do có độ dài lệnh lớn hơn nên các tập lệnh cũng nhiều
hơn, phong phú hơn. Tuy nhiên bất cứ chƣơng trình nào viết bằng VĐK 16bit
chúng ta đều có thể viết trên VDK 8bit với chƣơng trình thích hợp.
Kiến trúc CISC và RISC
VXL hoặc VĐK CISC là VĐK có tập lệnh phức tạp. Các VĐK này có một số
lƣợng lớn các lệnh nên giúp cho ngƣời lập trình có thể linh hoạt và dễ dàng hơn khi
viết chƣơng trình. VĐK RISC là VĐK có tập lệnh đơn giản. Chúng có một số
lƣơng nhỏ các lệnh đơn giản. DO đó, chúng đòi hỏi phần cứng ít hơn, giá thành thấp
hơn, và nhanh hơn so với CISC. Tuy nhiên nó đòi hỏi ngƣời lập trình phải viết các
chƣơng trình phức tạp hơn, nhiều lệnh hơn.
Kiến trúc Harvard và kiến trúc Vonneumann
Kiến trúc Harvard sử dụng bộ nhớ riêng biệt cho chƣơng trình và dữ liệu. Bus
địa chỉ và bus dữ liệu độc lập với nhau nên quá trình truyền nhận dữ liệu đơn giản
hơn Kiến trúc Vonneumann sử dụng chung bộ nhớ cho chƣơng trình và dữ liệu.
Điều này làm cho VĐK gọn nhẹ hơn, giá thành nhẹ hơn.
Một số loại VĐK có trên thị trƣờng:
- VĐK MCS-51: 8031, 8032, 8051, 8052, ...
- VĐK ATMEL: 89Cxx, AT89Cxx51..
- VĐK AVR AT90Sxxxx

- VĐK PIC 16C5x, 17C43...


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

1.1.3 CẤU TRÚC TỔNG QUAN CỦA VDK
CPU:
Là trái tim của hệ thống. Là nơi quản lí tất cả các hoạt động của VĐK. Bên
trong CPU gồm:
- ALU là bộ phận thao tác trên các dữ liệu
- 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
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.
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 tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều
khiển đầu tiên của họ: PIC1650 đƣợc thiết kế để dùng làm các thiết bị ngoại vi cho


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

vi điều khiển CP1600. Vi điều khiển này sau đó đƣợc nghiên cứu phát triển thêm và
từ đó hình thành nên dòng vi điều khiển PIC ngày nay.
1.2.2 KIẾN TRÚC PIC
Cấu trúc phần cứng của một vi điều khiển đƣợc thiết kế theo hai dạng kiến
trúc: kiến trúc Von Neuman và kiến trúc Havard.

Hình 1.1: Kiến trúc Havard và kiến trúc Von-Neuman
Tổ chức phần cứng của PIC đƣợc thiết kế theo kiến trúc Havard. Điểm khác
biệt giữa kiến trúc Havard và kiến trúc Von-Neuman là cấu trúc bộ nhớ dữ liệu và
bộ nhớ chƣơng trình.
Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chƣơng trình nằm
chung trong một bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ
chƣơng trình và bộ nhớ dữ liệu. Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí
của CPU phải rất cao, vì với cấu trúc đó, trong cùng một thời điểm CPU chỉ có thể
tƣơng tác với bộ nhớ dữ liệu hoặc bộ nhớ chƣơng trình. Nhƣ vậy có thể nói kiến
trúc Von-Neuman không thích hợp với cấu trúc của một vi điều khiển.
Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chƣơng trình tách ra thành
hai bộ nhớ riêng biệt. Do đó trong cùng một thời điểm CPU có thể tƣơng tác với cả
hai bộ nhớ, nhƣ vậy tốc độ xử lí của vi điều khiển đƣợc cải thiện đáng kể.

Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể đƣợc tối ƣu
tùy theo yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ
liệu. Ví dụ, đối với vi điều khiển dòng 16F, độ dài lệnh luôn là 14 bit (trong khi dữ
liệu đƣợc tổ chức thành từng byte), còn đối với kiến trúc Von-Neuman, độ dài lệnh
luôn là bội số của 1 byte (do dữ liệu đƣợc tổ chức thành từng byte). Đặc điểm này
đƣợc minh họa cụ thể trong hình 1.1.


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

1.2.3 RISC VÀ CISC
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:
1. MOVLW

55h

2. MOVWF PORTB
3. CALL

SUB_1

4. BSF

PORTA,BIT3

5. instruction @ address SUB_1
Ở đây ta chỉ bàn đến qui trình vi điều khiển xử lí đoạn chƣơng trình trên thông
qua từng chu kì lệnh. Quá trình trên sẽ đƣợc thực thi nhƣ sau:


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

Hình 1.2: Cơ chế pipelining
- TCY0: đọc lệnh 1
- TCY1: thực thi lệnh 1, đọc lệnh 2
- TCY2: thực thi lệnh 2, đọc lệnh 3
- TCY3: thực thi lệnh 3, đọc lệnh 4.

- TCY4: vì lệnh 4 không phải là lệnh sẽ đƣợc thực thi theo qui trình thực thi
của chƣơng trình (lệnh tiếp theo đƣợc thực thi phải là lệnh đầu tiên tại label SUB_1)
nên chu kì thực thi lệnh này chỉ đƣợc dùng để đọc lệnh đầu tiên tại label SUB_1.
Nhƣ vậy có thể xem lênh 3 cần 2 chu kì xung clock để thực thi.
- TCY5: thực thi lệnh đầu tiên của SUB_1 và đọc lệnh tiếp theo của SUB_1.
Quá trình này đƣợc thực hiện tƣơng tự cho các lệnh tiếp theo của chƣơng trình.
Thông thƣờng, để thực thi một lệnh, ta cần một chu kì lệnh để gọi lệnh đó, và
một chu kì xung clock nữa để giải mã và thực thi lệnh. Với cơ chế pipelining đƣợc
trình bày ở trên, mỗi lệnh xem nhƣ chỉ đƣợc thực thi trong một chu kì lệnh. Đối với
các lệnh mà quá trình thực thi nó làm thay đổi giá trị thanh ghi PC (Program
Counter) cần hai chu kì lệnh để thực thi vì phải thực hiện việc gọi lệnh ở địa chỉ
thanh ghi PC chỉ tới. Sau khi đã xác định đúng vị trí lệnh trong thanh ghi PC, mỗi
lệnh chỉ cần một chu kì lệnh để thực thi xong.
1.2.5 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC
Các kí hiệu của vi điều khiển PIC:
- PIC12xxxx: độ dài lệnh 12 bit
- PIC16xxxx: độ dài lệnh 14 bit


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

- 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.
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ữ
lập trình đƣợc phát triển dành riêng cho PIC nhƣ PICBasic, MikroBasic,…
1.2.7 MẠCH NẠP PIC
Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC. Có
thể sử dụng các mạch nạp đƣợc cung cấp bởi nhà sản xuất là hãng Microchip nhƣ:
PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II. Có thể dùng các
sản phẩm này để nạp cho vi điều khiển khác thông qua chƣơng trình MPLAB. Dòng
sản phẩm chính thống này có ƣu thế là nạp đƣợc cho tất cả các vi điều khiển PIC,
tuy nhiên giá thành rất cao và thƣờng gặp rất nhiều khó khăn trong quá trình mua
sản phẩm.


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

Ngoài ra do tính năng cho phép nhiều chế độ nạp khác nhau, còn có rất nhiều
mạch nạp đƣợc thiết kế dành cho vi điều khiển PIC. Có thể sơ lƣợc một số mạch

nạp cho PIC nhƣ sau:
- JDM programmer: mạch nạp này dùng chƣơng trình nạp Icprog cho phép
nạp các vi điều khiển PIC có hỗ trợ tính năng nạp chƣơng trình điện áp thấp ICSP
(In Circuit Serial Programming). Hầu hết các mạch nạp đều hỗ trợ tính năng nạp
chƣơng trình này.
- WARP-13A và MCP-USB: hai mạch nạp này giống với mạch nạp PICSTART
PLUS do nhà sản xuất Microchip cung cấp, tƣơng thích với trình biên dịch MPLAB,
nghĩa là ta có thể trực tiếp dùng chƣơng trình MPLAB để nạp cho vi điều khiển PIC
mà không cần sử dụng một chƣơng trình nạp khác, chẳng hạn nhƣ ICprog.
- P16PRO40: mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng. Ông còn
thiết kế cả chƣơng trình nạp, tuy nhiên ta cũng có thể sử dụng chƣơng trình nạp Icprog.
- Mạch nạp Universal của Williem: đây không phải là mạch nạp chuyên dụng
dành cho PIC nhƣ P16PRO40.
Các mạch nạp kể trên có ƣu điểm rất lớn là đơn giản, rẻ tiền, hoàn toàn có thể
tự lắp ráp một cách dễ dàng, và mọi thông tin về sơ đồ mạch nạp, cách thiết kế, thi
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.

1.3 VI ĐIỀU KHIỂN PIC16F877A
1.3.1 CÁC DẠNG SƠ ĐỒ CHÂN


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

Hình 2.1 Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN


1.3.2 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A

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:


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

-

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.

-

Khối chuyển đổi tín hiệu tƣơng tự sang số - ADC.

-

Khối các port xuất nhập.

1.3.3 CHỨC NĂNG CÁC CHÂN CỦA PIC16F877A



Chân OSC1/CLK1(13): ngõ vào kết nối với dao động thạch anh hoặc ngõ
vào nhận xung clock từ bên ngoài.



Chân OSC2/CLK2(14): ngõ ra dao động thạch anh hoặc ngõ ra cấp xung

clock.



Chân

(1) có 2 chức năng
-

: ngõ vào reset tích cực ở mức thấp.
Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC.


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN





Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng
-

RA0,1,2: xuất/ nhập số.

-

AN 0,1,2: ngõ vào tƣơng tự của kênh thứ 0,1,2.

Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ ngõ vào tƣơng tự của
kênh thứ 2/ nhõ vào điện áp chuẩn thấp của bộ AD/ ngõ vào điện áp chẩn cao

của bộ AD.



Chân RA3/AN3/VREF+(5): xuất nhập số/ ngõ vào tƣơng tự kênh 3/ ngõ vào
điện áp chuẩn (cao) của bộ AD.



Chân RA4/TOCK1/C1OUT(6): xuất nhập số/ ngõ vào xung clock bên ngoài
cho Timer 0/ ngõ ra bộ so sánh 1.



Chân RA5/AN4/

/ C2OUT(7): xuất nhập số/ ngõ vào tƣơng tự kênh 4/

ngõ vào chọn lựa SPI phụ/ ngõ ra bộ so sánh 2.


Chân RB0/INT (33): xuất nhập số/ ngõ vào tín hiệu ngắt ngoài.



Chân RB1(34), RB2(35): xuất nhập số.



Chân RB3/PGM(36): xuất nhập số/ cho phép lập trình điện áp thấp ICSP.




Chân RB4(37), RB5(38): xuất nhập số.



Chân RB6/PGC(39): xuất nhấp số/ mạch gỡ rối và xung clock lập trình 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.



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.


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN



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.

1.3.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
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 với một chu kì lệnh là 200ns. Bộ nhớ chƣơng trình 8Kx14
bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lƣợng
256x8 byte. Số PORT I/O là 5 với 33 pin I/O. Có 8 kênh chuyển đổi A/D
Các đặc tính ngoại vi bao gồmcá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,



Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

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.

Bảng 2.3: Tóm tắt đặc điểm của VDK PIC 16F877A

1.3.5 BỘ NHỚ CHƢƠNG TRÌNH


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

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).
Hình 2.4 Bộ nhớ chương trình PIC16F877A
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.
1.3.6 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.


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A nhƣ sau:

Hình 2.5 Sơ đồ bộ nhớ dữ liệu PIC16F877A


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

1. THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR
Đây là các thanh ghi đƣợc sử dụng bởi CPU hoặc đƣợc dùng để thiết lập và
điều khiển các khối chức năng đƣợc tích hợp bên trong vi điều khiển. Có thể phân
thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong

(CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên
ngoài (ví dụ nhƣ ADC, PWM, …). Phần này sẽ đề cập đến các thanh ghi liên quan
đến các chức năng bên trong. Các thanh ghi dùng để thiết lập và điều khiển các khối
chức năng sẽ đƣợc nhắc đến khi ta đề cập đến các khối chức năng đó.
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực hiện
phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong
bộ nhớ dữ liệu.

Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi,
cho phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các
tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0.

Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi,
chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT
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.

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


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

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.
1.3.7 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 tự động đƣợc vi điều khiển cất vào trong stack. Khi một trong các lệnh RETURN,


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

RETLW hat RETFIE đƣợc thực thi, giá trị PC sẽ tự động đƣợc lấy ra từ trong stack, vi
điều khiển sẽ thực hiện tiếp chƣơng trình theo đúng qui trình định trƣớc.
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa đƣợc 8
địa chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ Stack
lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ
Stack lần thứ 10 sẽ ghi đè lên giá trị 6 cất vào Stack lần thứ 2.
Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta không
biết đƣợc khi nào stack tràn. Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũng
không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn đƣợc
điều khiển bởi CPU.



Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG

2.1 Thiết kế nguyên lý:
2.1.2 Sơ đồ mô hình tổng quát của hệ thống

Khối nguồn

Khối

Khối

hiển

xử
Khối
cảm
biến

thị


trung

Thiết

tâm


bị
chấp
hành

Nhiệt độ
môi trƣờng

Thiết bị
chuyển mạch

Khối
tƣơng tác
điều khiển

Hình 1: Sơ đồ tổng quát của hệ thống


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

2.1.2. Sơ đồ đặc tả hệ thống:

Đợi tín
hiệu

<40

Có tín
hiệu
sensor


>40
Kiểm tra

Kích hoạt

> 40

Kiểm tra
nhiệt độ

Có tín
hiệu
sensor
<=40

Hình 2: Sơ đồ đặc tả hệ thống

Ngừng kích
hoạt


Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

2.1.3.Sơ đồ thuật toán của hệ thống:

Bắt đầu

Định nghĩa các biến, khởi
tạo các ngắt, cài đặt các
thông số LCD


Khởi tạo giá trị đặt

Đúng

Đọc giá trị thiết lập mới

Đúng

Bật LED
màu đỏ

Đọc giá trị max

Đọc giá trị nhiệt độ hiện tại
từ ADC PIC 16F877A

Bật LED
màu xanh

Sai

T>Tmax

Hiển thị các giá trị nhiệt độ
lên LCD

Hình 3: Lưu đồ thuật toán chương trình chính



Đề tài: BÁO CÁO THỰC TẬP VI ĐIỀU KHIỂN

2.1.4.Sơ đồ call graph của hệ thống:

Vi xử lý, vi
điều khiển

Chƣơng
trình
chuyển đổi
ADC

ADC

Chƣơng trình
kết nối bàn
phím

Bàn phím

Chƣơng trình
đo nhiệt độ

Cảm biến
LM35

Chƣơng trình
hiển thị LCD

LCD


Hình 4: Sơ đồ quan hệ giữa các module phần cứng và phần mềm trong hệ thống
cảnh báo nhiệt độ


×