Tải bản đầy đủ (.doc) (77 trang)

ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic

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.32 MB, 77 trang )

ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
LỜI NÓI ĐẦU
Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung của thế giới
và khu vực Châu Á bằng nền sản xuất đa dạng và đầy tiềm năng. Nền sản xuất này
không chỉ đòi hỏi một số lượng lao động khổng lồ mà còn yêu cầu về trình độ, chất
lượng tay nghề, kỹ thuật lao động và thiết bị sản xuất. Trên đà phát triển đó, vấn đề
tự động hóa trong quá trình sản xuất, nghiên cứu trở thành một nhu cầu cần thiết.
Thoạt đầu vấn đề tự động hóa được thực hiện riêng lẻ từ cơ khí hóa đến các mạch
điện tử. Ngày nay, với sự xuất hiện của các chíp vi xử lý và máy tính cùng với việc
sử dụng rộng rãi của nó đã đẩy vấn đề tự động hóa lên bước cao hơn và thời lượng
nhanh hơn…
Trong đó, việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã
đem lại những kết quả đầy tính ưu việc. Các thiết bị, hệ thống đo lường và điều
khiển ghép nối với máy vi tính có độ chính xác cao, thời gian thu nhập số liệu
ngắn. Ngoài ra, máy tính còn có phần giao diện lên màn hình rất tiện lợi cho người
sử dụng.
Việc dùng máy tính để điều khiển và thông tin liên lạc với nhau thì vấn đề
truyền dữ liệu rất quan trọng. Hiện nay chúng ta có thể dùng máy tính để liên lạc
với nhau thông qua hệ thống mạng như : mạng cục bộ (LAN) hay mạng toàn cầu
Internet.
Em xin chân thành cảm ơn Thầy NGÔ ĐÌNH NGHĨA đã quan tâm chỉ dẫn
cho em hiểu biết hơn về đề tài. Qua các đề tài Thầy gợi ý cho em tìm hiểu, phân
tích và bắt tay vào thực hiện. Em đã quyết định nghiên cứu đề tài “ Giao tiếp máy
tính điều khiển nhiệt độ bằng phương pháp ON-OFF”.
SVTH : NGUYỄN ĐÌNH BẢO 1
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
LỜI CẢM ƠN
Trong quá trình thực hiện đồ án em đã nhận được sự hướng dẫn và giúp đỡ tận
tình của Thầy NGÔ ĐÌNH NGHĨA. Em xin chân thành cảm ơn Thầy cùng toàn thể
Thầy Cô trong khoa Điện đã tạo điều kiện để em nghiên cứu đề tài.
Dù đã cố gắng rất nhiều nhưng trong quá trình làm còn nhiều thiếu sót nên em


rất mong được sự góp ý của quý Thầy Cô và toàn thể các bạn.
SVTH : NGUYỄN ĐÌNH BẢO 2
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

















NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

SVTH : NGUYỄN ĐÌNH BẢO 3
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA


















SVTH : NGUYỄN ĐÌNH BẢO 4
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
MỤC LỤC
LỜI GIỚI THIỆU 1
LỜI CẢM ƠN 2
MỤC LỤC 5
Chương 1: TỔNG QUAN ĐỀ TÀI 8
I. Đặt vấn đề 8
II. Mục đích 9
III. Hướng tiếp cận đề tài 9
IV. Cách thức tiến hành 10
Chương 2: GIỚI THIỆU CÁC PHẦN TỬ, LINH KIỆN SỬ DỤNG TRONG
MẠCH 11
I. Cổng COM và truyền nhận dữ liệu 11
1 Giới thiệu cổng com 11
2 IC MAX 232 14
II. Vi điều khiển PIC16F877A 16
1 Khái quát về vi điều khiển PIC16F877A 16

1.1 Khái quát : 16
1.2 Sơ đồ chân và sơ đồ nguyên lý của PIC16F877A 18
1.3 Nhận xét : 19
2 Tổ chức bộ nhớ : 20
2.1 Bộ nhớ chương trình : 20
2.2 Bộ nhớ dự liệu 20
a. Thanh ghi chức năng đặc biệt SFR :(Special Function Resister) 22
b. Thanh ghi mục đích chung GPR : (General Purpose Resister) 23
2.3 Stack 23
3 Khái quát về chức năng của các port trong vi điều khiển PIC16F877A 24
3.1 Port A : 24
3.2 Port B : 25
3.3 Port C : 25
3.4 Port D : 25
SVTH : NGUYỄN ĐÌNH BẢO 5
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
3.5 Port E : 26
4 Các vấn đề của Timer 26
4.1 Timer 0 : 26
a. Là bộ định thời hoặc bộ đếm có những ưu điểm sau : 26
b. Hoạt động của Timer 0 : 26
c. Ngắt của timer 0 : 27
d. Các thanh lien quan đến timer 0 : 28
4.2 Timer 1 : 30
a. Timer1 : 30
b. Timer1 có 3 chế độ hoạt động : 30
c. Các thanh ghi lien quan đến Timer1 bao gồm : 31
4.3 Timer2 : 32
a. Timer2 : 32
b. Hoạt động của bộ Timer2 : 32

c. Thanh ghi T2CON : điều khiển hoạt động của timer: 33
5. Ngắt (INTERRUPT) : 33
6. Phương pháp điều chế xung PWM cho PIC16F877A : 38
6.1 Điều chế PWM là gì ? 38
6.2 Nguyên lý của PWM : 38
6.3 Cách thiết lập chế độ PWM cho PIC16F877A: 40
7. ADC : 41
8. Giao tiếp nối tiếp: 42
9. Cổng giao tiếp song song PSP : 44
10. Các đặc tính của OSCILLATOR : 44
11. Các chế độ RESET : 45
III. Cảm biến nhiệt LM35 : 47
IV. Tổng quan về ngôn ngữ lập trình CCS : 48
V. Visual basic và truyền thông nối tiếp : 49
Chương 3 : THIẾT KẾ PHẦN CỨNG 56
I. Lưu đồ giải thuật visual basic: 56
II. Lưu đồ giải thuật vi điều khiển : 59
SVTH : NGUYỄN ĐÌNH BẢO 6
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
III. Phần cứng : 61
IV. Giao diện Visual Basic : 64
V. Code Visual Basic : 64
VI. Code vi điều khiển : 70
VII. Kết luận : 73
SVTH : NGUYỄN ĐÌNH BẢO 7
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Chương 1 : TỔNG QUAN VỀ ĐỀ TÀI
I. Đặt vấn đề :
Nhiệt độ là yếu tố ảnh hưởng rất quan trọng đến đời sống hằng ngày của
chúng ta. Nhiệt độ chiếm vị trí quan trọng trong nền kinh tế quốc dân. Bởi vì nhiệt

độ có vai trò quyết định trong nhiều tính chất của vật chất. Một trong những đặc
điểm tác động của nhiệt độ là làm thay đổi một cách liên tục các đại lượng chịu sự
ảnh hưởng của nó,ví dụ như áp suất ,thể tích của một chất khí. Đặc biệt công nghệ
bảo quản sau thu hoạch là một trong những khâu hết sức quan trọng chịu ảnh
hưởng trực tiếp của nhiệt độ trong không gian bảo quản. Việc đo và giám sát nhiệt
độ đã trở nên rất quan trọng trong việc sử dụng nhiệt độ ví dụ như trong lò nhiệt,
phòng xử lý chất thải… Trong nhiều trường hợp người ta cần xác định đo nhiệt độ
ở trong một phòng, lò xử lý… Ngày nay với sự biến đổi ngày càng xấu đi và khó
lường của thời tiết thì việc đo nhiệt độ môi trường trở nên rất quan trọng. Do vậy
vấn đề đo nhiệt độ được mọi người quan tâm để thực hành và kiểm tra đồng thời
cũng là công cụ để lập trình đo nhiệt độ của thiết bị hay môi trường. Vì nếu nắm
bắt được nhiệt độ cuả môi trường giúp ta biết được tình trạng làm việc của các yêu
cầu. Và có những xử lý kịp thời tránh được những hư hỏng và sự cố có thể xảy ra.
Bởi vậy, trong các nghiên cứu khoa học , trong công nghiệp và đời sống hàng ngày
việc đo nhiệt độ là điều rất cần thiết. Tuy nhiên, để đo được trị số chính xác của
nhiệt độ lại là vấn đề không đơn giản.
Với sự phát triển không ngừng của khoa học kỹ thuật đã ứng dụng rất nhiều
trong công nghiệp. Trong lĩnh vực điều khiển, từ khi công nghệ chế tạo loại vi
mạch lập trình phát triển đã đem đến các kỹ thuật điều khiển hiện đại có nhiều ưu
điểm hơn so với việc sử dụng các mạch điều khiển lắp ráp bằng các linh kiện rời
như kích thước nhỏ, giá thành rẻ, độ làm việc tin cậy, công suất tiêu thụ nhỏ.
Đo nhiệt độ là nhiệm vụ thường gặp trong các ngành nhiệt học, hoá học ,
luyện kim Tuỳ theo nhiệt độ đo mà có thể dùng các phương pháp đo khác
nhau.Thông thường nhiệt độ đo được chia thành 3 giải : Nhiệt độ thấp, nhiệt độ
trung bình và nhiệt độ cao. Ở nhiệt độ trung bình và thấp, phương pháp đo thường
là tiếp xúc nghĩa là các chuyển đổi được đặt trực tiếp ở ngay môi trường cần đo.
SVTH : NGUYỄN ĐÌNH BẢO 8
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Đối với nhiệt độ cao,đo bằng phương pháp không tiếp xúc, nghĩa là dụng cụ
đo đặt ngoài môi trường đo. Một trong số những cách đó là đo nhiệt độ không tiếp

xúc sử dụng cảm biến LM335. Vì thế, em đã chọn đề tài “Ứng dụng vi điều khiển
pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt LM35 để thể hiện nhiệt
độ môi trường trên phần mềm visual basic.”
II. Mục đích :
- Hiển thị chính xác nhiệt độ môi trường xung quanh.
- Sử dụng cảm biến nhiệt độ để theo dõi nhiệt độ.
- So sánh nhiệt độ đo được với nhiệt độ ngưỡng (ngưỡng trên Tmax và
ngưỡng dưới Tmin, được cài đặt tại bất kì thời điểm nào, tùy theo yêu cầu
thông qua bàn phím) để đưa ra cảnh báo đèn và màn hình khi nhiệt độ vượt
qua ngưỡng.
- Thông qua chương trình vi điều khiển nhằm đáp ứng sự thay đổi nhiệt độ tùy
theo mục đích sử dụng mà tác động tăng hay giảm nhiệt độ.
- Kết hợp với máy tính ghi nhận sự thay đổi nhiệt độ nhằm phân tích đánh giá
sự biến đổi nhiệt độ.
- Sử dụng phần mềm Visual basic nhằm hiển thị giá trị nhiệt độ.
- Các phương án có thể lựa chọn, ưu khuyết điểm của từng phương án.
+ Để đo lường nhiệt độ thì có thể dùng nhiều loại cảm biến nhiệt khác, mỗi
loại có một ưu điểm riêng phù hợp với từng nhu cầu riêng. Trong phạm vi
đề tài là đo nhiệt độ môi trường bình thường nên sử dụng LM35 là tối ưu
nhất vì: đây là loại cảm biến có độ chính xác cao, tầm hoạt động tuyến tính
từ 0-128 độ C, tiêu tán công suất thấp
+ Trong đề tài sử dụng píc6f877a vì dễ mua, rẻ tiền, có tích hợp bộ chuyển
đổi ADC, có khả năng lập trình, có thể phát triển cho các đề tài sau…
III. Hướng tiếp cận đề tài :
- Thu thập và tìm hiểu đề tài qua sách vở và tài liệu trên mạng.
- Tìm hiểu công cụ lập trình qua các kiến thức đã học ở trường, qua hướng dẫn
của Thầy Cô, hỗ trợ từ bạn bè, tìm hiểu từ sách vở tài liệu liên quan.
IV. Cách thức tiến hành :
SVTH : NGUYỄN ĐÌNH BẢO 9
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA

- Tìm hiểu vi xử lý PIC16F877A phần cứng và tập lệnh.
- Tìm hiểu ngôn ngữ lập trình và biên dịch CCS, viết chương trình và
biên dịch ra file.hex nạp cho vi điều khiển PIC.
- Tìm hiểu phần mềm Visual Basic và thiết lập giao diện hiển thị nhiệt độ
trên Visual Basic.
- Viết chương trình và thiết lập phần cứng hiển thị mạch đo nhiệt độ.
SVTH : NGUYỄN ĐÌNH BẢO 10
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Chương 2: GIỚI THIỆU CÁC PHẦN TỬ, LINH KIỆN SỬ
DỤNG TRONG MẠCH
I. Cổng COM và truyền nhận dữ liệu :
1. Giới thiệu cổng com :
Cổng nối tiếp trên máy tính thường gọi là cổng COM, được sử dụng để truyền dữ
liệu hai chiều giữa máy tính và thiết bị ngoại vi và có các ưu điểm sau:
Khoảng cách truyền dài hơn so với cổng song song. Cổng nối tiếp truyền mức 1 từ
-3V đến -25V và mức 0 từ 3V đến 25 V nên khả năng chống nhiễu cao hơn, cho
phép khoảng cách truyền xa hơn.
Số dây kết nối ít tối thiểu 3 dây.
Có thể truyền không dây dùng tia hồng ngoại.
Có thể ghép nối dễ dàng với PLC hay vi điều khiển.
Các thiết bị ghép nối tiếp chia làm 2 loại :
- DCE (Data Communication Equipment):là các thiết bị trung gian như modem…
- DTE(Data Terminal Equipment): là các thiết bị như máy vi tính, vi điều khiển,
PLC là nguồn tạo ra dữ liệu hay tiếp nhận dữ liệu để xử lí.Có thể ghép nối DTE với
DTE hoặc DCE, hoặc DCE với DTE hoặc DCE.
Tín hiệu truyền nối tiếp theo dạng xung chuẩn RS-232 mức logic 0 còn gọi là
Space giữa +3V và +25 V, mức logic 1 còn gọi là Mark ở giữa -3V và -25 V. Từ
DTE tín hiệu được truyền giữa 2 dây GND và TXD theo hình sau:
Khi không truyền đường dây ở trạng thái Mark,khi bắt đầu truyền, xung Start được
truyền (+10V) sau đó là 8 bit dữ liệu, bit D0 được truyền trước, nếu bit logic 0

được truyền trước thì điện áp đường dây tương ứng là 10V, sau bit dữ liệu là bit
kiểm tra chẵn lẻ rồi bit Stop ở logic 1(-10V). DTE nhận tín hiệu truyền ngược trở
lại theo đường RXD, nếu nối hai DTE với nhau thì dùng sơ đồ sau:
SVTH : NGUYỄN ĐÌNH BẢO 11
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Trường hợp dùng DTE và DCE thì chân TXD của DCE nhận tín hiệu còn chân
RXD phát tín hiệu.
Cổng COM có 2 dạng đầu nối: D-9 và D-25.

khoảng cách ngắn ta thường dùng sơ đồ sau:
Sơ đồ truyền dữ liệu ở khoảng cách dài.
SVTH : NGUYỄN ĐÌNH BẢO 12
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Tín hiệu truyền nối tiếp dưới dạng các bit, số bit trong một giây được gọi là baud.
Các vận tốc truyền thông dụng là: 300, 600, 1200, 2400, 4800, 9600, 19200…
baud. Kết nối giữa máy tính (DTE) và modem (DCE) thực hiện theo nguyên tắc
các chân cùng tên nối với nhau. Còn khi kết nối DTE và DTE thì dùng sơ đồ sau:
Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4
với các địa chỉ như sau:
Tên Địa chỉ Ngắt
Vị trí chứa địa
chỉ
COM1 3F8H 4 0000H:0400H
COM2 2F8H 3 0000H:0402H
COM3 3E8H 4 0000H:0404H
COM4 2E8H 3 0000H:0406H
Khi DTE cần truyền dữ liệu thì DTR tích cực đưa về DSR cho biết phía nhận sẵn
sàng đưa về CD cho biết đã nhận được sóng mang của modem ảo. Hai DTE có
SVTH : NGUYỄN ĐÌNH BẢO 13
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA

cùng khung truyền nên RTS và CTS nối với nhau. Đôi khi có thể bỏ đường nối
DTR với DSR và CD.
Khi kết nối DTE với DCE,do vận tốc khác nhau cần điều khiển lưu lượng.Có 2
cách dùng là phần cứng và phần mềm.Khi dùng phần cứng sử dụng hai dây RTS và
DCS.Nếu DTE muốn truyền cho RTS tác động,nếu DCE chấp nhận sẽ gởi trở về
CTS và máy tính sẽ gởi dữ liệu. Điều khiển lưu lượng bằng phần mềm dùng 2 ký tự
Xon và Xoff. Khi modem muốn máy tính ngừng truyền sẽ gởi đi ký tự Xoff,còn khi
modem rảnh sẽ gửi ký tự Xon.
2. IC MAX 232 :
Khi ghép cổng COM máy tính với vi điều khiển hay mạch TTL cần phải có mạch
chuyển mức TTL→232 và ngược lại có nhiều loại vi mạch nhưng thông dụng hơn
cả là vi mạch MAX232 vì chỉ cần nguồn 5V,nguồn ±10V do mạch dao động 16Khz
bên trong cung cấp.
Cấu tạo ic max 232:
Theo tiêu chuẩn EIA(Electronics Industry Association).
- Nguồn cung cấp +5V.
- Dùng thêm 4 tụ ngoài 0.1µF.
- Tốc độ truyền có thể lên đến 1Mbit/s.
- Có hai bộ đệm truyền và hai bộ đệm nhận
Hình 3.1: sơ đồ chân ic max 232
SVTH : NGUYỄN ĐÌNH BẢO 14
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Một vài thông số của MAX 232:
– Nguồn cung cấp: 4,5V đến 5,5V
– 2 bộ chuyển đổi và truyền nhận
– Tốc độ truyền lên đến 120 kbps
– Mức độ điện áp ngõ vào ± 30V
– Dòng do nguồn cung cấp: 8 đến 10 mA
– Tầm nhiệt độ hoạt động: từ 0 đến 70
o

C
Từ hình vẽ ta thấy tín hiệu từ máy tính truyền xuống MAX232 theo tiêu chuẩn
TTL/CMOS, sau khi qua MAX232 được chuyển thành chuẩn RS-232. Tín hiệu
nhận về cũng được chuyển đổi sang chuẩn RS-232 trước khi được đưa về chuẩn
TTL/CMOS trước khi đưa vào máy tính.
Chân nguồn cần 1 tụ Bypass (khoảng 0.1µF) còn 4 tụ còn lại ở các chân C1, C2,
V+ và V- có thể sử dụng loại phân cực hoặc không phân cực, các tụ này phải từ
0.1µF trở lên để làm giảm gợn song ở các ngõ ra của bộ truyền và làm giảm đáng
kể công suất tiêu thụ của nguồn tụ ở các chân C2,V1 và V2 có thể thay đổi giá trị
nhưng tụ C1 thì không.
II. Vi điều khiển PIC16F877A :
1. Khái quát về vi điều khiển PIC16F877A :
1.1 Khái quát :
- PIC là tên viết tắt của “Programmable Intelligent computer” do hãng
General Instrument
đặt
tên cho con vi điều khiển đầu tiên của họ.Hãng
Micrchip tiếp tục phát triển sản phầm này


cho
đến hàng đã tạo ra gần 100
loại sản phẩm khác nhau.
- PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu
SVTH : NGUYỄN ĐÌNH BẢO 15
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
hết tất cả các
ứng
dụng thực tế. Đây là dòng PIC khá dễ cho người mới làm
quen với PIC có thể học tập và tạo

nền
tản về họ vi điều khiển PIC của
mình.
- PIC 16F877A thuộc họ vi điều khiển 16Fxxx có các đặt tính
sau:

Ngôn ngữ lập trình đơn giản với 35 lệnh có độ dài 14
bit.

Tất cả các câu lệnh thực hiện trong 1 chu kì lệnh ngoại trừ 1 số câu
lệnh
rẽ
nhánh thực hiện trong 2 chu kì lệnh. Chu kì lệnh bằng 4 lần chu kì
dao động
của
thạch
anh.

Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xoá
khoảng
100
ngàn
lần.

Bộ nhớ Ram
368x8bytes.

Bộ nhớ EFPROM 256x8
bytes.


Khả năng ngắt (lên tới 14 nguồn cả ngắt trong và ngắt
ngoài).

Ngăn nhớ Stack được chia làm 8
mức.

Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián
tiếp.

Dải điện thế hoạt động rộng: 2.0V đến
5.5V.

Nguồn sử dụng
25mA.

Công suất tiêu thụ
thấp:
<0.6mA với 5V,
4MHz
20uA với nguồn 3V, 32
kHz.

Có 3 timer: timer0, 8 bit chức năng định thời và bộ đếm với hệ số
tỷ lệ trước.Timer1,
16
bit chức năng bộ định thời, bộ đếm với hệ số tỷ lệ
trước, kích hoạt chế độ Sleep.Timer2,
8
bit chức năng định thời và bộ đếm
với hệ số tỷ

lệ
trước và
sau.

Có 2 kênh Capture/ so sánh điện áp (Compare)/điều chế độ rộng xung
PWM 10 bit /
(CCP).

Có 8 kênh chuyển đổi ADC 10
bit.

Cổng truyền thong nối tiếp SSP với SPI phương thức chủ và I
2
C
(chủ/phụ).Bộ
truyền nhận thông tin đồng bộ, dị bộ (USART/SCL) có khả năng phát hiện 9
SVTH : NGUYỄN ĐÌNH BẢO 16
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
bit địa
chỉ.

Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR và CS điều
khiển.

Các
tính
năng của PIC 16F877A có liên quan đến đề tài, dưới đây là 1
vài tính năng
của
PIC 16F877A được ứng dụng

như:
- Tổ chức bộ nhớ của PIC
16F877A.
- Chức năng của các Port
I/O.
- Chức năng và cách thiết lập các tham số của 3 Timer
0,1,2.
- Chức năng và cách thiết lập bộ điều chế độ rộng xung
PWM.
- Định nghĩa ngắt, các nguồn ngắt và tìm hiểu sâu về ngắt timer và
ngắt
ngoài là hai chức năng được sử dụng trong đề tài
này.
SVTH : NGUYỄN ĐÌNH BẢO 17
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Hình 2: Sơ đồ nguyên lí PIC
16F877A
1.2 Sơ đồ chân và sơ đồ nguyên lý của PIC16F877A :
Sơ đổ chân :
SVTH : NGUYỄN ĐÌNH BẢO 18
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Sơ đồ nguyên lý :
1.3 Nhận xét :
Từ sơ đồ chân và sơ đồ nguyên lý ở trên, ta rút ra các nhận xét ban đầu như sau
- PIC16F877A có tất cả 40
chân
- 40 chân trên được chia thành 5 PORT, 2 chân cấp nguồn, 2 chân GND, 2
chân thạch
anh
và một chân dùng để RESET vi điều

khiển.
SVTH : NGUYỄN ĐÌNH BẢO 19
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
- 5 port của PIC16F877A bao gồm
:
+ PORT B: 8
chân
+ PORT D: 8
chân
+ PORT C: 8
chân
+ PORT A: 6
chân
+ PORT E: 3
chân
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ình (Program memory) và bộ
nhớ
dữ
liệu (Data
Memory).
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

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.
2.2 Bộ nhớ dự liệu :
- Bộ nhớ dữ liệu của PIC16F877A được chia thành 4 bank. Mỗi bank có dụng
lượng

128
byte.
- Nếu như 2 bank bộ nhớ dữ liệu của 8051 phân chia riêng biệt : 128 byte đầu
tiên thuộc bank1

vùng Ram nội chỉ để chứa dữ liệu, 128 byte còn lại thuộc
SVTH : NGUYỄN ĐÌNH BẢO 20
Hình 5 : Cấu trúc bộ
nhớ PIC 16f877a
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
bank 2 là cùng các thanh ghi có
chức

năng
đặc biệt SFR mà người dùng không
được chứa dữ liệu khác, còn 4 bank bộ nhớ dữ liệu
của
PIC16F877A được tổ
chức theo cách khác.
- Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có chức
năng đặc biệt

SFR
nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục
đích dùng chung GPR nằm ở vùng
địa
chỉ còn lại của mỗi bank thanh ghi.
Vùng ô nhớ các thanh ghi mục đích dùng chung này chính

nơi người dùng sẽ
lưu dữ liệu trong quá trình viết chương trình. Tất cả các biến dữ liệu nên
được
khai báo chứa trong vùng địa chỉ
này.
- Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào mà
thường xuyên được
sử
dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả các
bank để thuận tiện trong việc truy
xuất.
Sở dĩ như vậy là vì, để truy xuất một
thanh ghi nào đó trong bộ nhớ của 16F877A ta cần phải
khai
báo đúng bank
chứa thanh ghi đó, việc đặt các thanh ghi sử dụng thường xuyên giúp ta thuận
tiên
hơn rất nhiều trong quá trình truy xuất, làm giảm lệnh chương
trình.
Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như sau
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi
dùng chung để chứa dữ
liệu

của người dùng địa chỉ từ 20h đến 7Fh.
Các thanh ghi PORTA, PORTB, PORTC, PORTD,
PORTE
đều chứa ở
bank0, do đó để truy xuất dữ liệu các thanh ghi này ta phải chuyển đến
bank0. Ngoài
ra
một vài các thanh ghi thông dụng khác ( sẽ giới thiệu
sau) cũng chứa ở
bank0.
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh. Các thanh ghi dùng
chung có địa chỉ từ A0h
đến
Efh. Các thanh ghi TRISA, TRISB, TRISC,
TRISD, TRISE cũng được chứa ở
bank1.
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên
sơ đồ
trên.
Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên
cả 4 bank. Một
điều
quan trọng cần nhắc lại trong việc truy xuất dữ liệu của
PIC16F877A là : phải khai báo đúng bank
chứa
thanh ghi đó.Nếu thanh ghi nào
SVTH : NGUYỄN ĐÌNH BẢO 21
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
mà 4 bank đều chứa thì không cần phải chuyển
bank.

Hình 6: Cấu trúc bộ nhớ dữ liệu của PIC
16F877A
a. Thanh ghi chức năng đặc biệt SFR :(Special Function Resister)
- Đâ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,
…).
- Một số thanh ghi cức năng đặc
biệt:
SVTH : NGUYỄN ĐÌNH BẢO 22
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA

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

chứa các bít điều khiển và các 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
naêng
ngoaï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
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 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.
b. Thanh ghi mục đích chung GPR : (General Purpose Resister)
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.
Hình 7: Cấu trúc thanh ghi chức năng chung của
PIC

16F877A
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
SVTH : NGUYỄN ĐÌNH BẢO 23
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
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, 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. Nghia 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á tri6 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.
3.
Khái quát về chức năng của các port trong vi điều khiển
PIC16F877A
3.1 PORT A:
- PORTA (RPA) bao gồm 6 I/O pin.Đây là các chân “hai chiều” (bidirectional
pin), nghĩa

có thể xuất và nhập được.Chức năng I/O này được điều khiển bởi
thanh ghi TRISA (địa chỉ
85h).

Muốn
xác lập chức năng của một chân trong
PORTA là input, ta “set” bit điều khiển tương ứng
với
chân đó trong thanh ghi
TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA

output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA.
Thao tác này hoàn
toàn
tương tự đối với các PORT và các thanh ghi điều
khiển tương ứng TRIS (đối với PORTA là TRISA, đối với PORTB là TRISB,
đối với PORTC là TRISC, đối với PORTD là TRISD vàđối với
PORTE


TRISE).
- Ngoài ra, PORTA còn có các chức năng quan trọng sau
:

Ngõ vào Analog của bộ ADC : thực hiện chức năng chuyển từ
Analog

sang
Digital

Ngõ vào điện thế so
sánh
SVTH : NGUYỄN ĐÌNH BẢO 24
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA

Ngõ vào xung Clock của Timer0 trong kiến trúc phần cứng : thực
hiện

các nhiệm vụ đếm xung thông qua
Timer0…

Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial
Port)
- Các thanh ghi SFR liên quan đến PORTA bao
gồm:
PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA.
TRISA (địa chỉ 85h) : điều khiển xuất
nhập.
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
CVRCON

(địa
chỉ 9Dh) : thanh ghi điều khiển bộ so sán điện
áp.
ADCON1 (địa chỉ 9Fh)

: thanh ghi điều khiển bộ
ADC.
3.2
PORT B:
PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình
nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORTB còn
liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức năng
điện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
- PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
- TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
- OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0.
3.3 PORT C:
PORTC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ
Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Các thanh ghi điều khiển liên quan đến PORTC:
- PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
- TRISC (địa chỉ 87h) : điều khiển xuất nhập.
3.4 PORT D:
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là
TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave
Port).
SVTH : NGUYỄN ĐÌNH BẢO 25

×