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

Đồ án: Thiết kế, chế tạo mạch đo nhiệt độ hiển thị trên LCD 16X2

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.52 MB, 57 trang )

  

ĐỒ ÁN MÔN HỌC
Đề tài: 

THIẾT KẾ, CHẾ TẠO
MẠCH ĐO NHIỆT ĐỘ 
HIỂN THỊ TRÊN LCD 16X2
Giáo viên hướng dẫn: Nguyễn Viết Ngư
Sinh viên thực hiện:     Phạm Văn Thực

                                Thân Thị Thương
Lớp:                               112134.1

1


Tháng 10, năm 2015

2


NHÂN XET CUA GIAO VIÊN H
̣
́
̉
́
ƯỚNG DÂN
̃
.................................................................................................................................
.................................................................................................................................


.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Ngày           tháng 10 năm 2015
Giáo viên hướng dẫn

3


MỤC LỤC:

Table of Contents

4



MỞ ĐẦU


Lý do chọn đề tài

   Ngày nay khoa học công nghệ hiện đại đã có những bước tiến nhanh và xa đi 
theo nó là những thành tựu ứng dụng trong các lĩnh vực đời sống, công nghiệp.  
Kỹ thuật điều khiển trong tiến trình hoàn thiện lý thuyết cũng đã tạo cho mình  
nhiều phát triển có ý nghĩa. Bây giờ khi nhắc tới điều khiển con người dường 
như  hình dung tới độ  chính xác, tốc độ  xử  lý và thuật toán thông minh đồng 
nghĩa là lượng chất xám cao hơn. Hiện nay trên thị trường có rất nhiều loại vi 
điều khiển như  8051, Motorola  68HC, AVR,  ARM,....  Ngoài họ  8051  được 
hướng dẫn một cách căn bản ở môi trường đại học, chúng em đã chọn vi điều 
khiển PIC để mở rộng vốn kiến thức và phát triển các ứng dụng trên công cụ 
này vì các nguyên nhân sau:
Họ vi điều khiển nàycó thể tìm mua dễ dàng tại thị trường Việt Nam.
Có đầy đủ tính năng của một vi điều khiển khi hoạt động độc lập.
Là sự  bổ  sung rất tốt về  kiến thức cũng như   ứng dụng cho họ  vi điều 
khiển mang tính truyền thống: họ  vi điều khiển 8051. Giá thành không 
đắt.
Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp  
chương trình từ dơn giản tới phức tạp...
Các tính năng đa dạng của vi điều khiển PIC và các tính năng này không 
ngừng được phát triển.
Số  lượng người sử  dụng họ  vi điều khiển PIC trên thế  giới cũng như 
Việt Nam khá nhiều.Đã tạo thuận lợi trong quá trình tìm hiểu và phát 
triển các  ứng dụng như: số lượng tài liệu, số  lượng các ứng dụng mở 
đã được phát triển, dễ dàng trao đổi, học tập, dễ dàng tìm được hỗ  trợ 
khi gặp khó khăn.


5


Vì vậy, sau một thời gian học tập và tìm hiểu tài liệu với sự giảng dạy 
của các thầy cô giáo. Cùng với sự dẫn dắt nhiệt tình của giáo viên hướng dẫn 
thầy Nguyễn Viết Ngư. Chúng em đã chọn đề tài: 

“thiết kế chế tạo mạch đo nhiệt độ hiển thị trên LCD 16x2” làm đồ án 
tích  hợp 1 của mình.

6


 Đối tượng nghiên cứu

Với đề tài này chúng em tập trung vào:
Tìm hiểu về vi điều khiển PIC 16F877A.
Nghiên cứu và chế tạo thiết bị đo nhiệt độ phòng.


Mục đích nghiên cứu

Khi nghiên cứu đồ án này chúng em đã:
Hiểu được cách thức và chế độ hoạt động của VĐK PIC 16F877A.
Hiểu được cách thức hoạt động của cảm biến nhiệt độ LM 35.
Thiết kế, chế tạo được mạch đo nhiệt độ phòng dùng PIC 16F877A.


Phương pháp nghiên cứu

Do đây là một đồ  án sản phẩm, nên chúng em đã áp dụng phương pháp 

nghiên cứu lý thuyết, nghiên cứu thực nghiệm trực tiếp trên sản phẩm thật, 
chạy thử và hoàn thiện chương trình.


Ý nghĩa nghiên cứu
Như  đã nói  ở  trên thì nếu thực hiện thành công đề  tài này sẽ  mang lại ý  

nghĩa to lớn về cả thực tiễn và lý luận.
Ý nghĩa lý luận: 
Toàn bộ  chương trình và bản thuyết minh của  đề  tài sẽ  trở  thành tài liệu 
nghiên cứu, tham khảo nhanh, dễ hiểu, thiết thực cho các bạn sinh viên, những 
người thích tìm hiểu về đề tài này của chúng em.
Ý nghĩa thực tiễn:  
Với sự thành công của đề  tài sẽ  góp phần giúp cho các bạn sinh viên mới nói 
chung và các bạn sinh viên khoa Điện ­ Điện Tử nói riêng thấy rõ được ý nghĩa  
thực tế và thêm yêu thích chuyên ngành mình đã chọn.
Do kiến thức và trình độ năng lực hạn hẹp nên việc thực hiện đề tài này không 
thể  tránh được thiếu sót, kính mong nhận được sự  thông cảm và góp ý của 
thầy giáo, cô giáo và các bạn để đồ án này hoàn chỉnh hơn.
Chúng em xin trân thành cảm ơn!
Sinh viên thực hiện: 

Phạm Văn Thực
Thân Thị Thương

7



CHƯƠNG I: CÁC PHƯƠNG PHÁP ĐO NHIỆT
ĐỘ
1.1   Khái niệm về nhiệt độ:
   1.1.1  Khái niệm:
        Nhiệt độ là đại lý đặc trưng cho cường độ chuyển động của các nguyên 
tử, phân tử của một hệ vật chất. Tuỳ theo từng trạng thái của vật chất ( rắn, 
lỏng, khí) mà chuyển động này có khác nhau. ở trạng thái láng, các phân tử dao 
động quanh vi trí cân bằng nhưng vi trí cân bằng của nó luôn dịch chuyển làm 
cho chất lỏng không có hình dạng nhất định. Còn ở trạng thái rắn, các phần tử, 
nguyên tử chỉ dao động xung quanh vị trí cân bằng. Các dạng vận động này của 
các phân tử, nguyên tử  được gọi chung là chuyển động nhiệt. Khi tương tác  
với bên ngoài có trao đổi năng lượng nhưng không sinh công, thì quá trình trao 
đổi năng lượng nói trên gọi là sự  truyền nhiệt.     Quá trình truyền nhiệt trên 
tuân theo 2 nguyên lý:
Bảo toàn năng lượng.
Nhiệt chỉ  có thể  tự  truyền từ  nơi có nhiệt độ  cao đến nơi có nhiệt độ 
thất. Ở trạng thái rắn, sự truyền nhiệt xảy ra chủ yếu bằng dẫn nhiệt và bức 
xạ nhiệt.
Đối với các chất lỏng và khí ngoài dẫn nhiệt và bức xạ  nhiệt còn có 
truyền nhiệt bằng đối lưu. Đó là hiện tượng vận chuyển năng lượng nhiệt  
bằng cách vận chuyển các phần của khối vật chất giữa các vùng khác nhau 
của hệ do chênh lệch về tỉ trọng.

8


   1.1.2   Sơ lược về phương pháp đo nhiệt độ:
Nhiệt độ  là đại lượng chỉ  có thể  đo gián tiếp trên cơ  sở  tính chất của 
vật phụ  thuộc nhiệt độ. Hiện nay chóng ta có nhiều nguyên lí cảm biến khác 
nhau  để  chế  tạo  cảm  biến  nhiệt  độ  như: nhiệt   điện  trở,   cặp  nhiệt  ngẫu, 

phương pháp quang dùa trên phân bố phổ bức xạ nhiệt, phương pháp dùa trên 
sự dãn nở của vật rắn, lỏng, khí hoặc dùa trên tốc độ âm… Có 2 phương pháp  
đo chính: 
Ở dải nhiệt độ thấp và trung bình phương pháp đo là phương pháp tiếp  
xúc, nghĩa là các chuyển đổi được đặt trực tiếp ngay trong môi trường đo.  
Thiết bị đo như: nhiệt điện trở, cặp nhiệt, bán dẫn.
Ở  dải nhiệt độ  cao phương pháp đo là phương pháp không tiếp xúc 
( dông cụ  dặt ngoài môi trường đo). Các thiết bị  đo nh: cảm biến quang, hoả 
quang kế ( hoả quang kế phát xạ, hoả quang kế cường độ sáng, hoả quang kế 
màu sắc)…

1.2  Đo nhiệt độ bằng phương pháp tiếp xúc
   1.2.1 Đo nhiệt độ bằng nhiệt điện trở:
          Nguyên lý hoạt động:
Điện trở của một số kim loại thay đổi theo nhiệt độ và dùa vào sự thay  
đổi điện trở đó người ta đo được nhiệt độ cần đo.
Nhiệt điện trở dùng trong dụng cụ đo nhiệt độ làm việc với dòng phụ tải nhỏ 
để  nhiệt năng sinh ra do dòng nhiệt điện trở  nhỏ  hơn so với nhiệt năng nhận 
được từ môi trường thí nghiệm.
Yêu cầu cơ  bản đối với vật liệu dùng làm chuyển đổi của nhiệt điện  
trở là có hệ số nhiệt độ lớn và ổn định, điện trở suất khá lớn…

9


           Trong công nghiệp nhiệt điện trở  được chia thành nhiệt điện trở  kim 
loại và nhiệt điện trở bán dẫn.

   1.2.2  Đo nhiệt độ bằng cặp nhiệt ngẫu:
Nguyên lý làm việc:

Bộ  cảm biến cặp nhiệt ngẫu là 1 mạch từ  có 2 hay nhiều thanh dẫn 
điện gồm 2 dây dẫn A và B. Sebeck đã chứng minh rằng nếu mối hàn có nhiệt  
độ t và t0 khác nhau thì trong mạch khép kín có một dòng điện chạy qua. Chiều 
của dòng điện này phụ thuộc vào nhiệt độ tương ứng của mối hàn nghĩa là t > 
t0 thì dòng điện chạy theo hướng ngược lại. Nếu để  hở  một đầu thì sẽ  xuất 
hiện một sức điện động nhiệt. Khi mối hàn có cùng nhiệt độ ( ví dụ  bằng t 0 ) 
thì sức điện động tổng bằng:
EAB = eAB(t0) + eAB(t0) = 0
          Từ đó rót ra: eAB = eAB(t0)
          Khi t0 và t khác nhau thì sức điện động tổng bằng:
EAB = eAB(t) – e+AB(t0)
Phương trình trên là phương trình cơ bản của cặp nhiệt ngẫu ( sức điện 
động phụ thuộc vào hệ số nhiệt độ của mạch vòng t và t0)
Nh vậy bằng cách đo sức điện động ta có thể tìm được nhiệt độ của đối 
tượng.
Phương pháp này được sử  dụng nhiều trong công nghiệp khi cần đo  
những nơi có nhiệt độ cao.

   1.2.3  IC cảm biến nhiệt độ                                                      
Có rất nhiều hãng chế tạo linh kiện điện tử  đã sản xuất ra các loại IC 
bán dẫn dùng để  đo dải nhiệt độ  từ  ­55‚ 150  0C. Trong các mạch tổ  hợp IC, 
10


cảm  biến nhiệt thường  là  điện  áp của  líp  chuyển tiếp  p­n trong một loại  
tranzitor loại bipola.

1.3   Đo nhiệt độ bằng phương pháp không tiếp xúc
Nguyên lý hoạt động:
Dưạ  trên định luật bức xạ  của vật đen tuyệt đối, tức là vật hấp thụ 

năng lượng theo mọi hướng với khả năng lón nhất. Bức xạ nhiệt của mọi vật  
đặc trưng bởi mật độ  phổ  El  nghĩa là số năng lượng bức xạ trong một đơn vị 
độ dài của sóng.
Quan hệ  giữa mật độ  bức xạ  của vật đen tuyệt đối với nhiệt độ  và độ  dài  
sóng được biểu diễn bởi công thức:
E0l  = C1.l ­5(ec2/l T­1)­1 
Trong đó: C1: Hằng số và C1= 37,03.10­7 (Jm2/s)
                 C2: Hằng số vá C2= 1,432.10­2 (m.độ)
                  l : Độ dài sóng
                  T: Nhiết độ tuyệt đối

CHƯƠNG II: CƠ SỞ LÝ THUYẾT

11


2.1Tìm hiểu về cảm biến nhiệt độ LM35.
LM35 là một cảm biến nhiệt độ analog, thuộc họ IC cảm biến nhiệt độ 
sản xuất theo công nghệ bán dẫn dựa trên các chất bán dẫn dễ bị tác động bởi 
sự thay đổi của nhiệt độ, đầu ra của cảm biến là điện áp (V) tỉ lệ với nhiệt độ 
mà nó được đặt trong môi trường cần đo.
Họ LM35 có rất nhiều loại và nhiều kiểu đóng vỏ khác nhau:

Hình 1.1: Cảm biến nhiệt độ LM35.
Đặc điểm nổi bật:
Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35.
­

Điện áp đầu vào từ 4V đến 30V.


­

Độ phân giải điện áp đầu ra là 10mV/0C.

­

Độ chính xác cao, tính năng cảm biến nhiệt độ rất nhạy.

­

Ở  nhiệt độ  25(0C) nó có sai số  không quá 1%. Với dải đo từ  ­50 đến  
150(0C), tín hiệu ngõ ra tuyến tính liên tục với những thay đổi của tín 
hiệu ngõ vào.

Thông số kỹ thuật:
12


­

Tiêu tán công suất thấp.

­

Dòng làm việc từ 400µA đến 5mA.

­

Dòng ngược 15mA.


­

Dòng thuận 10mA.

­

Độ chính xác cao: khi làm việc ở nhiệt độ 250C là 0,50C.

­

Trở kháng đầu ra thấp 0,1 cho 1mA tải.

Đặc tính điện:
     Dải nhiệt độ đo được của LM35 là từ ­55 0C đến 1500C với các mức điện áp 
ra khác nhau. Vậy  ứng với tầm hoạt động từ  0( 0C) đến 100(0C)ta có sự  biến 
thiên điện áp ngõ ra là:
Ở ­550C thì điện áp ngõ ra Vout = ­550mV
Ở 00C thì điện áp ngõ ra Vout = 0V
Ở 250C thì điện áp ngõ ra Vout = 250mV
Ở 1500C thì điện áp ngõ ra Vout = 1500mV

2.2Vi điều khiển PIC 16F877A.
2.2.1PIC là gì?
PIC là viết tắt của “Programmable 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ọ. Hãng Micrchip tiếp tục phát triển sản phẩm này 
và cho đến nay hãng đã tạo ra gần 100 loại sản phẩm khác nhau.

2.2.2Cá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

­

PIC18xxxx: độ dài lệnh 16 bit

C:   PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
F:    PIC có bộ nhớ flash
13


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.
Do thời gian làm đồ  án có hạn nên chúng em chỉ  tập trung tìm hiểu các tính  
năng của PIC 16F877A có liên quan đến đề tài.

2.2.3Các dòng PIC và cách lựa chọn vi điều khiển PIC.
PIC 16F877A là dòng PIC khá phổ  biến, khá đầy đủ  tính năng phục vụ cho  
hầu 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ảng 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 đặc tính ngoại vi 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 một chu kì lệnh ngoại trừ một số câu  

lệnh rẽ nhánh thực hiện trong hai chu kì lệnh. Chu kì lệnh bằng 4 lần chu  
kì dao động của thạch anh.
14


­ Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xóa khoảng 100 

ngàn lần.

­ Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8byte RAM và bộ nhớ 

dữ liệu EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33pin 
I/O.
­ 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 ; 20µA với nguồn 3V, 32 

KHz.
­ Có 3 timer: 

Timer 0: bộ đếm 8 bit với bộ chia tần số 8 bit.
Timer 1: 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.
Timer 2: 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.

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.

15



­

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.

16


Hình 1.2: Hình ảnh thực tế và sơ đồ chân của PIC 16F877A.

17


Hình 1.3: Sơ đồ khối bộ vi điều khiển PIC 16F877A.

18


PIC 16F877A có tất cả 40 châ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à 1 chân dùng để RESET vi điều khiển.
Chức năng các chân:
+ 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.
(1) có 2 chức năng.

+ Chân 
­

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

+ 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/ ngõ 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ố.

19


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

2.2.4Tổ chức bộ nhớ.
Cấu trúc bộ  nhớ  của vi điều khiển PIC16F877A bao gồm bộ  nhớ  dữ  liệu  
(Data memory) và bộ nhớ chương trình (Program memory). 
­  Bộ nhớ dữ liệu: 

Bộ  nhớ  dữ  liệu của PIC là bộ  nhớ  EFPROM đượ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   SFR  
(Special Funcition 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ỉ  trong bank.các 
20


thanh ghi SFR thường xuyên được sử dụng 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 PIC 16F877A như sau:

Hình 1.4: Bộ nhớ dữ liệu của PIC.
­   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ừ 
page   0   đến   page   3).   Như   vậy   bộ   nhớ   chương   trình   có   thể   chứa   được  
8*1024=8192 lệnh (vì mỗi lệnh sau khi mã hóa sẽ  có dung lượng 1 word=14 
bit) 

21


Để 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. 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. 

Hình 1.5: Bộ nhớ chương trình PIC 16F877A.
 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 trong vi điều khiển. Có thể phân 
thanh   ghi   SFR   làm   2   loại:   thanh   ghi   SFR   liên   quan   đến   chức   năng   bên 
trong(CPU) và thanh ghi SFR dùng để  thiết lập và điều khiển các khối bên  
ngoài (ví dụ ADC…). 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.
22



     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 
thông số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer 
0.

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

23


      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.

 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.5Stack.
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, RETLW khi RETFIE được thực thi, giá trị  PC sẽ tự  động  
lấy ra từ  trong stack, vi điều khiển sẽ  thực hiện tiếp chương trình theo đúng 
quy trình định trước.
Bộ  nhớ  Stack trong vi  điều khiển PIC  họ  16F887xA 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ộ 
24


nhớ Stack lần thứ 9 sẽ ghi đè lên giá trị Stack lần đầu tiên và giá trị cất vào bộ 
nhớ Stack lần thứ 10 sẽ ghi đè giá trị 6 vào Stack lần thứ 2.
Cần chú ý là không có cờ hiệu nào chi 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.

2.2.6Các cổng xuất, nhập của PIC 16F877A.
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để 
tương tác với thế giới bên ngoài. Sự  tương tác rất đa dạng và thông qua trình  
tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.
Một cổng xuất nhập của vi điều khiển gồn nhiều chân (I/O pin), tùy theo 

cách bố trí và chức năng  của vi điều khiển mà số lượng cổng xuất nhập và số 
lượng chân trong mỗi cổng có thể  khác nhau. Bên cạnh đó, do vi điều khiển 
được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi bên cạnh chức năng  
là công xuất nhập thông thường, một số chân xuất nhập còn có thêm các chức 
năng khác để thể hiện sự tác động của các đặc tính ngoại vi nếu trên đối với 
thế  giới bên ngoài. Chức năng của từng chân xuất nhập trong mỗi cổng hoàn 
toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên  
quan đến các chân xuất nhập đó.
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,  
PORTC, PORTD, và PORTE. Cấu trúc và chức năng của cổng xuất nhập sẽ 
được đề cập ở phần sau.
Port A
PORTA (RPA) bao gồm 6 I/O pin.  Đây là chân “hai chiều” (bidirectional 
pin),nghĩa là 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 là output, ta “clear” bit điều khiển  
25


×