67
 Đán tt nghip GVHD: Ths PHAN THANH TON CHƯƠNG 1: DN NHP 1.1. ĐẶT VN Đ Ngày nay vi sphát trin ca các ngành công nghip vi đin t, kthut sdn dn được tđộng hóa. Vi nhưng kthut tiên tiến như vi xlý, vi mch sđược ng dng l ĩ n h vc khoa hc kthut , qun lí, công ngh i p t động hóa , cung cp thông tin…. do đó chúng ta phi nm bt và vn dng nó mt cách có hiu qunhm góp phn vào sphát trin nn khoa hc kthut thế gii nói chung và trong sphát trin kthut đin tnói riêng để ng dng vào thc tin góp phn đưa cuc sng con người ngày càng tt hơn. Sau mt ngày tt bt vi công viêc con người thích quay vvi thiê n nhiên, sông nước, trong đó thú chơi cá cnh đặc bit là hcá gia đình hin nay vic áp dng tđộng hóa còn nhiu hn chế, vic chăm sóc hcá trnên khó khăn hơn. Nm bt được nhu cu đó, nhó m chúng em đã tìm hi u và bt ta y vào th c hi n đề tài “ HCÁ THÔNG MINH”. 1.2. TM QUA N TR NG C A ĐTÀI Đề tài có tính ng dng vào thc tế cao, có thng dng vào nhiu lĩnh vc tnuôi cá cnh trong gia đình cho đến vic nuô i trng thy hi sn tđộng. 1.3. GII HN CA ĐTÀI Đề tài tiến hành trong thi gian ngn song bn than nhóm còn nhiu hn chế vchuyê n môn cũng như vngoi ngnên gp nhiu khó khăn trong quá trình nghiê n cu, thc hin đề tài. Nhóm chúng em chcó thgii quyết mt svn đề sau:  Pt hin n ưc d ơ  Đo n hi t độ môi tr ường nước đ i u chnh nh i t độ  Ch o ă n theo gi đị nh s n   Hin ththông tin trên LCD Do đó nhóm chúng em rt mong sđóng quý báu ca quý Thy Cô và các bn sinh viên. 1.2. MC ĐÍCH NGHIÊN CU Mc đích trước hết khi thc hin đề tài là để hoàn thành chương trình hc để đủ điu kin tt nghip ra trường. Đồng thi khi nghiên cu thc hin đền tài giúp chúng em  phát huy tính sáng to, cách làm vic nhóm, khnăng gii quyết vn đề theo yêu câu đặt ra cũng như mun áp dng nhng kiến thc đã hc trên ghê nhà trường ng dng vào thc tin nhm to ra nhng sn phm, nhng thiết btin nghi phc vcho cng đồng.  Nếu được nghiên cu kĩ và sâu hơn có tháp dng vào thc tế nhm gim bt gánh năng cho nhng người nuôi trng thy hi sn nước ta. Mt khác tp lun văn này có thlàm tài liu tham kho cho nhng sinh viên khóa sau, giúp các bn hiu sâu hơn vng dng ca vi điu khin. Trang 1

NOI DUNG 22.12.4

Embed Size (px)

Citation preview

Page 1: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 1/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

CHƯƠNG 1: DẪN NHẬP

1.1. ĐẶT VẤN ĐỀ

 Ngày nay với sự phát triển của các ngành công nghiệp vi điện tử, kỹ thuật số dần

dần được tự động hóa. Với nhưng kỹ thuật tiên tiến như vi xử lý, vi mạch số… được ứngdụng lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp tự động hóa, cung cấp thôngtin…. do đó chúng ta phải nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp phầnvào sự phát triển nền khoa học kỹ thuật thế giới nói chung và trong sự phát triển kỹ thuậtđiện tử nói riêng để ứng dụng vào thực tiễn góp phần đưa cuộc sống con người ngày càngtốt hơn.

Sau một ngày tất bật với công viêc con người thích quay về với thiên nhiên, sôngnước, trong đó thú chơi cá cảnh đặc biệt là hồ cá gia đình hiện nay việc áp dụng tự độnghóa còn nhiều hạn chế, việc chăm sóc hồ cá trở nên khó khăn hơn. Nắm bắt được nhu cầu

đó, nhóm chúng em đã tìm hiểu và bắt tay vào thực hiện đề tài “HỒ CÁ THÔNGMINH”.

1.2. TẦM QUAN TRỌNG CỦA ĐỀ TÀI

Đề tài có tính ứng dụng vào thực tế cao, có thể ứng dụng vào nhiều lĩnh vựctừ nuôi cá cảnh trong gia đình cho đến việc nuôi trồng thủy hải sản tự động.

1.3. GIỚI HẠN CỦA ĐỀ TÀI

Đề tài tiến hành trong thời gian ngắn song bản than nhóm còn nhiều hạn chế vềchuyên môn cũng như về ngoại ngữ nên gặp nhiều khó khăn trong quá trình nghiên cứu,thực hiện đề tài. Nhóm chúng em chỉ có thể giải quyết một số vấn đề sau:

 – Phát hiện nước dơ  – Đo nhiệt độ môi trường nước và điều chỉnh nhiệt độ – Cho cá ăn theo giờ định sẵn –  Hiển thị thông tin trên LCD

Do đó nhóm chúng em rất mong sự đóng quý báu của quý Thầy Cô và các bạn sinhviên.

1.2. MỤC ĐÍCH NGHIÊN CỨU

Mục đích trước hết khi thực hiện đề tài là để hoàn thành chương trình học để đủđiều kiện tốt nghiệp ra trường. Đồng thời khi nghiên cứu thực hiện đền tài giúp chúng em

 phát huy tính sáng tạo, cách làm việc nhóm, khả năng giải quyết vấn đề theo yêu câu đặtra cũng như muốn áp dụng những kiến thức đã học trên ghê nhà trường ứng dụng vàothực tiễn nhằm tạo ra những sản phẩm, những thiết bị tiện nghi phục vụ cho cộng đồng.

 Nếu được nghiên cứu kĩ và sâu hơn có thể áp dụng vào thực tế nhằm giảm bớt gánh năngcho những người nuôi trồng thủy hải sản ở nước ta.

Mặt khác tập luận văn này có thể làm tài liệu tham khảo cho những sinh viên khóasau, giúp các bạn hiểu sâu hơn về ứng dụng của vi điều khiển.

Trang 1

Page 2: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 2/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

CHƯƠNG 2: KHẢO SÁT LINH KIỆN TRONG MẠCH

2.1. KHÁI QUÁT VỀ VI ĐIỀU KHIỂN PIC16F877A

Trang 2

Page 3: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 3/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

2.1.1. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN2.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ả đốivớ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ựchiệ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àycù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 đòihỏ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ứctạ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ùngrấ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ạchgiao 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à vi điều khiển:

 – Về phần cứng: vi xử lý 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 vi điều khiển 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êntrong 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ộ vi xử lý và vi điềukhiển 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ácvi xử lý 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 độngtrên các lượng dữ liệu lớn như 1byte, ½ byte, word, double word... Ở các bộ vi điềukhiển, 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ộtvài bit.

 – Do vi điều khiển cấu tạo về phần cứng và khả năng xử lí thấp hơn nhiều soi với vi xửlý nên giá thành của vi điều khiển 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ứcnăng đơn giản, trong máy giặt, ôtô v.v...

2.1.1.2. PHÂN LOẠI VI ĐIỀU KHIỂN Độ dài thanh ghi Dựa vào độ dài của các thanh ghi và các lệnh của vi điều khiển mà người ta chia ra

các loại vi điều khiển 8bit, 16bit, hay 32bit....

Các loại vi điều khiển 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 vi điều khiển 16bit chúng tađều có thể viết trên vi điều khiển 8bit với chương trình thích hợp.

Trang 3

Page 4: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 4/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 Kiến trúc CISC và RISC Vi xử lý hoặc vi điều khiển CISC có tập lệnh phức tạp. Các vi điều khiển 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 khiviết chương trình. Vi điều khiển RISC 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ớivi điều khiển CISC. Tuy nhiên nó đòi hỏi người lập trình phải viết các chươngtrình phức tạp hơn, nhiều lệnh hơn.

 Kiến trúc Harvard và kiến trúc VonneumannKiế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úcVonneumann sử dụng chung bộ nhớ cho chương trình và dữ liệu. Điều này làm cho viđiều khiển gọn nhẹ hơn, giá thành nhẹ hơn.Một số loại vi điều khiển có trên thị trường:

 – Vi điều khiển MCS-51: 8031, 8032, 8051, 8052, ...

 –  Vi điều khiển ATMEL: 89Cxx, AT89Cxx51.. –  Vi điều khiển AVR: AT90Sxxxx –  Vi điều khiển PIC: 16C5x, 17C43...

2.1.1.3. CẤU TRÚC TỔNG QUAN CỦA VI ĐIỀU KHIỂN 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 vi điều khiển .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ệucá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 độngnộ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ũngdù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ỉ, busdữ 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ấtthườ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 vi điều khiển thường ở dạng analog. ADC sẽ chuyển tín hiệu nàyvề dạng tín hiệu digital mà vi điều khiển có thể hiểu được.

Trang 4

Page 5: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 5/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

2.1.2. KHẢO SÁT VỀ VI ĐIỀU KHIỂN PIC16F877A2.1.2.1. PIC LÀ GI?

PIC là viết tắt của “ Programable Intelligent Computer ”, có thể tạm dịch là “máytính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầutiên của họ: PIC1650, được thiết kế để dùng làm các thiết bị ngoại vi cho 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ànhnên dòng vi điều khiển PIC ngày nay.2.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 2.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ệtgiữ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ươngtrì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ảirấ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íchhợ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ứcthà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 2.1.2.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úcVon-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.

Trang 5

Page 6: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 6/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢ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à busdữ 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ủaxung 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ìnhcon … 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ộccấ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ềukhiể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ệnhcủ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).2.1.2.4. 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 – 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ấpLV: 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êmchữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash). Ngoàira 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ẵntrong 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.

2.1.3. VI ĐIỀU KHIỂN PIC16F877A

2.1.3.1. CÁC DẠNG SƠ ĐỒ CHÂN

Trang 6

Page 7: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 7/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Trang 7

 Hình 2.2 Vi điều khiển PIC16F877A

Page 8: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 8/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Trang 8

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

Page 9: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 9/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

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

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

Trang 9

 Hình 2.4 Sơ đồ khối vi điều khiển PIC16F877A

Page 10: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 10/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

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

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

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ênhthứ 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.

Trang 10

 Hình 2.5 Sơ đồ chân vi điều khiển PIC16F877A

Page 11: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 11/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

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 choTimer 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. 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ươngtự 5.

Chân RE1/ /AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ vàotươ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.3.1. ĐẶ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ố PORTI/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ồm cá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.

Trang 11

Page 12: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 12/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 – 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,➢ 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.

Trang 12

Page 13: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 13/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

2.1.4. TỔ CHỨC BỘ NHỚ Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trìn

(Program memory) và bộ nhớ dữ liệu (Data Memory).

2.1.4.1.BỘ NHỚ CHƯƠNG TRÌNH

Bộ nhớ chương trình của vi điều khiểnPIC16F877A là bộ nhớ flash, dung lượng bộnhớ 8K word (1 word = 14 bit) và được phânthành nhiều trang (từ page0 đến page 3). Như vậy bộ nhớ chương trình có khả năngchứa được 8*1024 = 8192 lệnh (vì một lệnhsau khi mã hóa sẽ có dung lượng 1 word (14bit).

Để mã hóa được địa chỉ của 8K wordbộ nhớ chương trình, bộ đếm chương trìnhcódung lượng 13 bit (PC<12:0>).

Khi vi điều khiển được reset, bộ đếmchương trình sẽ chỉ đến địa chỉ 0000h(Resetvector). Khi có ngắt xảy ra, bộ đếm chươngtrình sẽ chỉ đến địa chỉ 0004h(Interruptvector).

Trang 13 Hình 2.4 Bộ nhớ chương trình PIC16F877A

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

Page 14: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 14/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

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.

2.1.4.2. BỘ NHỚ DỮ LIỆUBộ 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ácvù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ệntrong 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 PIC16F877A như sau:

Trang 14

 Hình 2.5 Bộ nhớ chương trình vi điều khiển PIC16F877A

Page 15: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 15/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Trang 15

 Bảng 2.2 Bộ nhớ dữ liệu PIC16F877A

Page 16: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 16/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

2.1.4.2.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 ghiSFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanhghi 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êntrong.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 đếnkhi 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ốichứcnăng ngoại vi.

Trang 16

 Bảng 2.5 Thanh ghi INTCON 

 Bảng 2.3 Thanh ghi STATUS 

 Bảng 2.4 Thanh ghi OPTION_REG

 Bảng 2.6 Thanh ghi PIE1

Page 17: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 17/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

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ắtnà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ăngCCP2, 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ácngắtnà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ủavi điều khiển.

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

ghiFSG (File Select Register). Đây là các thanh ghi dữ liệu thông thường, người sử dụngcó 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ếnsố, hằng số, kết quả hoặc các tham số phục vụ cho chương trình.

Trang 17

 Bảng 2.7 Thanh ghi PIR1 Bảng 2.7 Thanh ghi PIR1 Bảng 2.7 Thanh ghi PIR1

 Bảng 2.8 Thanh ghi PIE2

 Bảng 2.9 Thanh ghi PIR2

 Bảng 2.10 Thanh ghi PCON 

Page 18: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 18/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

2.1.4.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ộtngắ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 địachỉ 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.2.1.5. CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A

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ươngtácvới thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá 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 bao gồm 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 trongmỗ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 trongcác đặc tính giao tiếp ngoại vi nên 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ậptrong 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 thanhghi SFR liên quan đến 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 từng cổng xuất nhập sẽ được đềcập cụ thể trong phần sau.2.1.5.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 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 ghiTRISA (đị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ốnxác lập chức năng của một chân trong PORTA là 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ácPORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORTA là TRISA, đối vớiPORTB là TRISB, đối với PORTC là TRISC, đối với PORTD là TRISD và đối vớiPORTE là TRISE).

Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ

vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master SynchronousSerial Port).Đặc tính này sẽ được trình bày cụ thể trong phần sau.

Các thanh ghi SFR liên quan đến PORTA bao gồm:

Trang 18

Page 19: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 19/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 –  PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA. –  TRISA (địa chỉ 85h) : chứa giá trị các pin trong PORTA. –  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ánh điện áp. –  ADCON1 (ñòa chæ 9Fh): thanh ghi ñieàu khieån boä ADC.

2.1.5.2. PORT BPORTB (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ạpchươ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 đếnngắ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.2.1.5.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

2.1.5.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).

Các thanh ghi liên quan đến PORTD bao gồm: – PORTD : chứa giá trị các pin trong PORTD. –  TRISD : điều khiển xuất nhập.

2.1.5.5. PORT EPORTE (RPE) gồm 3 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là

TRISE.Các chân của PORTE có ngõ vào analog.Bên cạnh đó PORTE còn là các chânđiều khiển của chuẩn giao tiếp PSP.

Các thanh ghi liên quan đến PORTE bao gồm:  – PORTE : chứa giá trị các chân trong PORTE. –  TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao

tiếp PSP. – ADCON1 : thanh ghi điều khiển khối ADC.

2.1.6. TIMER 0Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A.

Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit. Cấu trúc củaTimer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock. Ngắt

Timer0 sẽ xuất hiện khi Timer0 bị tràn.Bit TMR0IE (INTCON<5>) là bit điều khiển của Timer0. TMR0IE=1 cho phép

ngắt Timer0 tác động, TMR0IF= 0 không cho phép ngắt Timer0 tác động. Sơ đồ khối của

Trang 19

Page 20: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 20/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Timer0 như sau:

.

Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC (OPTION_REG<5>),khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung đồng hồ (tần số vào Timer0

 bằng ¼ tần số oscillator). Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắt Timer0 sẽxuất hiện.

Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn định thời điểm ngắt Timer0xuất hiện một cách linh động. Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC(OPTION_REG<5>). Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1.

Bit TOSE (OPTION_REG<4>) cho phép lựa chọn cạnh tác động vào bột đếm. Cạnh tácđộng sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnh xuống nếu TOSE=1.Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set. Đây chính

là cờ ngắt của Timer0.Cờ ngắt này phải được xóa bằng chương trình trước khi bộ đếm bắtđầu thực hiện lại quá trình đếm. Ngắt Timer0 không thể “đánh thức” vi điều khiển từ chếđộ sleep.

Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT (Watchdog Timer).Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽ không có đượchỗ trợ của prescaler và ngược lại.Prescaler được điều khiển bởi thanh ghi OPTION_REG.

Bit PSA (OPTION_REG<3>) xác định đối tượng tác động của prescaler. Các bitPS2:PS0 (OPTION_REG<2:0>) xác định tỉ số chia tần số của prescaler. Xem lại thanhghi OPTION_REG để xác định lại một cách chi tiết về các bit điều khiển trên.

Trang 20

 Hình 2.7 Sơ đồ khối của Timer 0

Page 21: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 21/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động của prescaler.Khi đối tượng tác động là Timer0, tác động lên giá trị thanh ghi TMR0 sẽ xóa prescaler nhưng không làm thay đổi đối tượng tác động của prescaler.Khi đối tượng tácđộng là WDT, lệnh CLRWDT sẽ xóa prescaler, đồng thời prescaler sẽ ngưng tác vụ hỗtrợ cho WDT.

Các thanh ghi điều khiển liên quan đến Timer0 bao gồm: – TMR0 (địa chỉ 01h, 101h) : chứa giá trị đếm của Timer0. – INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và

PEIE).OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler.2.1.7. TIMER 1

Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai thanh ghi(TMR1H:TMR1L). Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>). Bit điều khiểncủaTimer1 sẽ là TMR1IE (PIE<0>).

Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động: chế độ định thời(timer) với xung kích là xung clock của oscillator (tần số của timer bằng ¼ tần số củaoscillator) và chế độ đếm (counter) với xung kích là xung phản ánh các sự kiện cần đếmlấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnh lên). Việclựa chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạt động là timer haycounter) được điều khiển bởi bit TMR1CS (T1CON<1>).

Sau đây là sơ đồ khối của Timer1:

 Ngoài ra Timer1 còn có chức năng reset input bên trong được điều khiển bởimộttrong hai khối CCP (Capture/Compare/PWM). Khi bit T1OSCEN (T1CON<3>) đượcset, Timer1 sẽ lấy xung clock từ hai chân RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm

xung đếm. Timer1 sẽ bắt đầu đếm sau cạnh xuống đầu tiên của xung ngõ vào. Khi đóPORTC sẽ bỏ qua sự tác động của hai bit TRISC<1:0> và PORTC<2:1> được gán giá trị0. Khi clear bit T1OSCEN Timer1 sẽ lấy xung đếm từ oscillator hoặc từ chân

Trang 21

 Hình 2.8 Sơ đồ khối của Timer1

Page 22: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 22/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

RC0/T1OSO/T1CKI.Timer1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ

(Asynchronous). Chế độ đếm được quyết định bởi bit điều khiển (T1CON<2>).

Khi =1 xung đếm lấy từ bên ngoài sẽ không được đồng bộ hóa với xungclock bên trong, Timer1 sẽ tiếp tục quá trình đếm khi vi điều khiển đang ở chế độ sleep

và ngắt do Timer1 tạo ra khi bị tràn có khả năng “đánh thức” vi điều khiển. Ở chế độ đếm bất đồng bộ,

Timer1 không thể được sử dụng để làm nguồn xung clock cho khối CCP

(Capture/Compare/Pulse width modulation). Khi =0 xung đếm vào Timer1 sẽđược đồng bộ hóa với xung clock bên trong. Ở chế độ này Timer1 sẽ không hoạt độngkhi vi điều khiển đang ở chế độ sleep.

Các thanh ghi liên quan đến Timer1 bao gồm: – INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và

PEIE). – PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF). – PIE1( địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE). – TMR1L (địa chỉ 0Eh): chứa giá trị 8 bit thấp của bộ đếm Timer1. – TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer1.

T1CON (địa chỉ 10h): xác lập các thông số cho Timer1.2.1.8. TIMER 2

Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler và postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit cho phép ngắt Timer2tác động là TMR2ON (T2CON<2>). Cờ ngắt của Timer2 là bit TMR2IF (PIR1<1>).Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tần số prescaler 4

 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và được điều khiển bởi các bitT2CKPS1:T2CKPS0 (T2CON<1:0>)).

Timer2 còn được hỗ trợ bởi thanh ghi PR2. Giá trị đếm trong thanh ghi TMR2 sẽtăng từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h. Kh I resetthanh ghi PR2 được nhận giá trị mặc định FFh.

 Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ 1:1

Trang 22

 Hình 2.9 Sơ đồ khối Timer2

Page 23: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 23/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

đến 1:16. Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0. Ngõ ra của postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt.

 Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó Timer2 cònđóngvai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP.

Các thanh ghi liên quan đến Timer2 bao gồm:

 – INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ các ngắt (GIEvà PEIE).

 – PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF). – PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE). – TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2. – T2CON (địa chỉ 12h): xác lập các thông số cho Timer2. – PR2 (địa chỉ 92h): thanh ghi hỗ trợ cho Timer2.

Nhận xét về Timer0, Timer1 và Timer2:Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đa là FFh), trong khi Timer1 là

 bộ đếm 16 bit (giá trị đếm tối đa là FFFFh).Timer0, Timer1 và Timer2 đều có hai chế độ hoạt động là timer và counter. Xung

clock có tần số bằng ¼ tần số của oscillator. Xung tác động lên Timer0 được hỗ trợ bởi prescaler và có thể được thiết lập ở nhiều chế độ khác nhau (tần số tác động, cạnh tácđộng) trong khi các thông số của xung tác động lên Timer1 là cố định.Timer2 được hỗ trợ 

 bởi hai bộ chia tần số prescaler và postcaler độc lập, tuy nhiên cạnh tác động vẫn được cốđịnh là cạnh lên.

Timer1 có quan hệ với khối CCP, trong khi Timer2 được kết nối với khối SSP.Một vài so sánh sẽ giúp ta dễ dàng lựa chọn được Timer thích hợp cho ứng dụng.

2.1.9. ADCADC ( Analog to Digital Converter ) là bộ chuyển đổi tín hiệu giữa hai dạng tương

tự và số. PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0). Hiệu điện thếchuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thể chuẩn được xác lập trênhai chân RA2 và RA3. Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bitsố tương ứng và được lưu trong hai thanh ghi ADRESH:ADRESL. Khi không sử dụng

 bộ chuyển đổi ADC, các thanh ghi này có thể được sử dụng như các thanh ghi thôngthường khác. Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu vào hai thanh ghi

ADRESH:ADRESL, bit (ADCON0<2>) được xóa về 0 và cờ ngắt ADIF đượcset.

Quy trình chuyển đổi từ tương tự sang số bao gồm các bước sau:1. Thiết lập các thông số cho bộ chuyển đổi ADC:

 – Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanhghi ADCON1)

 – Chọnh kênh chuyển đổi AD (thanh ghi ADCON0). – Chọnh xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0). – Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0).

1. Thiết lập các cờ ngắt cho bộ AD – Clear bit ADIF. – Set bit ADIE.

Trang 23

Page 24: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 24/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 – Set bit PEIE. – Set bit GIE.

3. Đợi cho tới khi quá trình lấy mẫu hoàn tất.

4. Bắt đầu quá trình chuyển đổi (set bit )5. Đợi cho tới khi qu trình chuyển đổi hồn tất bằng cch:

 –  Kiểm tra bit Nếu =0, quá trình chuyển đổi đã hoàn tất. – Kiểm tra cờ ngắt.

6. Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit (nếu cần tiếp tục chuyểnđổi).

7. Tiếp tục thực hiện các bước 1 v 2 cho quá trình chuyển đổi tiếp theo.

Trang 24

 Hình 2.10 Sơ đồ khối bộ chuyển đổi ADC.

Page 25: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 25/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Cần chú ý là có hai cách lưu kết quả chuyển đổi AD, việc lựa chọn cách lưu đượcđiều khiển bởi bit ADFM và được minh họa cụ thể trong hình sau:

Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm: – INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE,

PEIE).

 – PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF). – PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE). – ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quả

chuyển đổi AD. – ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số cho bộ

chuyển đổi AD. – PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào analog

ở PORTA. – PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vào analog

ở PORTE.2.1.10. BỘ SO SÁNH COMPARATOR 

Bộ so sánh bao gồm hai bộ so so sánh tín hiệu analog và được đặt ở PORTA. Ngõvào bộ so sánh là các chân RA3:RA0, ngõ ra là hai chân RA4 và RA5. Thanh ghi điềukhiển bộ so sánh là CMCON. Các bit CM2:CM0 trong thanh ghi CMCON đóng vai tròchọn lựa các chế độ hoạt động cho bộ Comparator (hình 2.10).

Cơ chế hoạt động của bộ Comparator như sau:

Trang 25

 Hình 2.11 Các cách lưu kết quả chuyển đổi ADC 

Page 26: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 26/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Tín hiệu analog ở chân VIN + sẽ được só sánh với điện áp chuẩn ở chân V IN- vàtínhiệu ở ngõ ra bộ so sánh sẽ thay đổi tương ứng như hình vẽ. Khi điện áp ở chân VIN+lớn hơn điện áp ở chân VIN+ ngõ ra sẽ ở mức 1 và ngược lại.

Dựa vào hình vẽ ta thấy đáp ứng tại ngõ ra không phải là tức thời so với thay đổitạingõ vào mà cần có một khoảng thời gian nhất định để ngõ ra thay đổi trạng thái (tối đalà 10 us).Cần chú ý đến khoảng thời gian đáp ứng này khi sử dụng bộ so sánh.

Cực tính của các bộ so sánh có thể thay đổi dựa vào các giá trị đặt vào các bitC2INV và C1INV (CMCON<4:5>).

Trang 26

 Hình 2.12 Nguyên lý hoạt động của một bộ so sánh đơn giản.

Page 27: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 27/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Các bit C2OUT và C1OUT (CMCON<7:6>) đóng vai trò ghi nhận sự thay đổi tínhiệu analog so với điện áp đặt trước. Các bit này cần được xử lí thích hợp bằng chươngtrình để ghi nhận sự thay đổi của tín hiệu ngõ vào. Cờ ngắt của bộ so sánh là bit CMIF(thanh ghi PIR1). Cờ ngắt này phải được reset về 0. Bit điều khiển bộ so sánh là bitCMIE (Tranh ghi PIE).

Các thanh ghi liên quan đến bộ so sánh bao gồm: – CMCON (địa chỉ 9Ch) và CVRCON (địa chỉ 9Dh): xác lập các thông số cho

 bộ so sánh.

Trang 27

 Hình 2.13 Các chế độ hoạt động của bộ comparator.

Page 28: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 28/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 – Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phépcác ngắt (GIE và PEIE).

 – Thanh ghi PIR2 (địa chỉ 0Dh): chứa cờ ngắt của bộ so sánh (CMIF). – Thanh ghi PIE2 (địa chỉ 8Dh): chứa bit cho phép bộ so sánh (CNIE). – Thanh ghi PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): các thanh ghi điều

khiển PORTA..

2.1.11. CCP (CAPTURE/COMPARE/PWM)CCP (Capture/Compare/PWM ) bao gồm các thao tác trên các xung đếm cung cấp

 bởi các bộ đếm Timer1 và Timer2. PIC16F877A được tích hợp sẵn hai khối CCP : CCP1và CCP2. Mỗi CCP có một thanh ghi 16 bit (CCPR1H:CCPR1L và CCPR2H:CCPR2L),

 pin điều khiển dung cho khối CCPx là RC2/CCP1 và RC1/T1OSI/CCP2. Các chức năngcủa CCP bao gồm:

 – Capture.

 – So sánh (Compare). – Điều chế độ rộng xung PWM (Pulse Width Modulation).

Cả CCP1 và CCP2 về nguyên tắc hoạt động đều giống nhau và chức năng củatừng khối là khá độc lập. Tuy nhiên trong một số trường hợp ngoại lệ CCP1 và CCP2 cókhả năng phối hợp với nhau để để tạo ra các hiện tượng đặc biệt (Special event trigger)hoặc các tác động lên Timer1 và Timer2. Các trường hợp này được liệt kê trong bảngsau:

Trang 28

 Hình 2.14 Sơ đồ khối Capture/Compare/PWM 

Page 29: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 29/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Khi hoạt động ở chế độ Capture thì khi có một “hiện tượng” xảy ra tại chânRC2/CCP1(hoặc RC1/T1OSI/CCP2), giá trị của thanh ghi TMR1 sẽ được đưa vào thanhghi CCPR1(CCPR2). Các “hiện tượng” được định nghĩa bởi các bit CCPxM3:CCPxM0

(CCPxCON<3:0>) và có thể là một trong các hiện tượng sau: – Mỗi khi có cạnh xuống tại các pin CCP. – Mỗi khi có cạnh lên. – Mỗi cạnh lên thứ 4. – Mỗi cạnh lên thứ 16.

Sau khi giá trị của thanh ghi TMR1 được đưa vào thanh ghi CCPRx, cờ ngắtCCPIF được set và phải được xóa bằng chương trình. Nếu hiện tượng tiếp theo xảy ra màgiá trị trong thanh ghi CCPRx chưa được xử lí, giá trị tiếp theo nhận được sẽ tự độngđược ghi đè lên giá trị cũ.

Một số điểm cần chú ý khi sử dụng CCP như sau: – Các pin dùng cho khối CCP phải được ấn định là input (set các bit tương ứng

trong –  thanh ghi TRISC). Khi ấn định các pin dùng cho khối CCP là output, việc đưa

giá trị vào PORTC cũng có thể gây ra các “hiện tượng” tác động lên khối CCPdo trạng thái của pin thay đổi.

 – Timer1 phải được hoạt động ở chế độ Timer hoặc chế độ đếm đồng bộ. – Tránh sử dụng ngắt CCP bằng cách clear bit CCPxIE (thanh ghi PIE1), cờ ngắt

CCPIF nên được xóa bằng phần mềm mỗi khi được set để tiếp tục nhận định

được trạng thái hoạt động của CCP. – CCP còn được tích hợp bộ chia tần số prescaler được điều khiển bởi các bit

CCPxM3:CCPxM0. Việc thay đổi đối tượng tác động của prescaler có thể tạo rahoạt động ngắt. Prescaler được xóa khi CCP không hoạt động hoặc khi reset.

Tương tự như ở chế độ Capture, Timer1 phải được ấn định chế độ hoạt động làtimer hoặc đếm đồng bộ. Ngoài ra, khi ở chế độ Compare, CCP có khả năng tạo ra hiệntượng đặc biệt (Special Event trigger) làm reset giá trị thanh ghi TMR1 và khởi động bộchuyển đổi ADC. Điều này cho phép ta điều khiển giá trị thanh ghi TMR1 một cách linh

động hơn.

Khi hoạt động ở chế độ PWM (PulseWidth Modulation _ khối điều chế độ

Trang 29

 Bảng 2.11 Chức năng Capture/Compare/PWM 

Page 30: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 30/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

rộngxung), tín hiệu sau khi điều chế sẽ đượcđưa ra các pin của khối CCP (cần ấnđịnhcác pin này là output). Để sử dụng chứcnăng điều chế này trước tiên ta cầntiếnhành các bước cài đặt sau:

1. Thiết lập thời gian của 1 chu kìcủa xung điều chế cho PWM (period) bằng cách đưagiá trị thích hợp vào thanh ghi PR2.

2. Thiết lập độ rộng xung cần điều chế (duty cycle) bằng cách đưa giá trị vào thanh ghiCCPRxL và các bit CCP1CON<5:4>.

3. Điều khiển các pin của CCP là output bằng cách clear các bit tương ứng trong thanhghi TRISC.

4. Thiết lập giá trị bộ chia tần số prescaler của Timer2 và cho phép Timer2 hoạt động bằng cách đưa giá trị thích hợp vào thanh ghi T2CON.

5. Cho phép CCP hoạt động ở chếđộ PWM.Trong đó giá trị 1 chu kì (period) của xung điều chế được tính bằng công thức:

Bộ chia tần số prescaler của Timer2 chỉ có thể nhận các giá trị 1,4 hoặc 16 (xemlại Timer2 để biết thêm chi tiết). Khi giá trị thanh ghi PR2 bằng với giá trị thanh ghiTMR2 thì quá trình sau xảy ra:

 – Thanh ghi TMR2 tự động được xóa. – Pin của khối CCP được set. – Giá trị thanh ghi CCPR1L (chứa giá trị ấn định độ rộng xung điều chế duty

cycle) – được đưa vào thanh ghi CCPRxH.Độ rộng của xung điều chế (duty cycle) được tính theo công thức:

 Như vậy 2 bit CCPxCON<5:4> sẽ chứa 2 bit LSB. Thanh ghi CCPRxL chứa bytecao của giá trị quyết định độ rộng xung.Thanh ghi CCPRxH đóng vai trò là buffer chokhối PWM. Khi giá trị trong thanh ghi CCPRxH bằng với giá trị trong thanh ghi TMR2

và hai bit CCPxCON<5:4> bằng với giá trị 2 bit của bộ chia tần số prescaler, pin củakhối CCP lại được đưa về mức thấp, như vậy ta có được hình ảnh của xung điều chế tạingõ ra của khối PWM. Một số điểm cần chú ý khi sử dụng khối PWM:

Timer2 có hai bộ chia tần số prescaler và postscaler.Tuy nhiên bộ postscaler không được sử dụng trong quá trình điều chế độ rộng xung của khối PWM. Nếu thời gianduty cycle dài hơn thời gian chu kì xung period thì xung ngõ ra tiếp tục được giữ ở mứccao sau khi giá trị PR2 bằng với giá trị TMR2.2.1.12. GIAO TIẾP NỐI TIẾP

2.1.12.1. USART10.1 USART

USART (Universal Synchronous Asynchronous Receiver Transmitter) là một

Trang 30

PWM period = [(PR2) + 1] x 4 x TOSC x (giá trị bộ chia tần số của TMR2)

PWM duty cycle (CCPRXL:CCPXCON<5:4> x TOSC x (giá trị bộ chia tần sốTMR2)

Page 31: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 31/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

tronghai chuẩn giao tiếp nối tiếp.USART còn được gọi là giao diện giao tiếp nối tiếp nốitiếp SCI (Serial Communication Interface). Có thể sử dụng giao diện này cho các giaotiếp với các thiết bị ngọai vi, với các vi điều khiển khác hay với máy tính. Các dạng củagiao diện USART ngọai vi bao gồm:

 – Bất động bộ (Asynchronous).

 – Đồng bộ_ Master mode. – Đồng bộ_ Slave mode.

Hai pin dùng cho giao diện này làRC6/TX/CK và RC7/RX/DT, trong đóRC6/TX/CK dùng để truyền xung clock (baud rate) và RC7/RX/DT dùng để

truyền data. Trong trường hợp này ta phải set bit TRISC<7:6> và SPEN (RCSTA<7>) đểcho phép giao diện USART.

PIC16F877A được tích hợp sẵn bộ tạo tốc độ baud BRG (Baud Rate Genetator) 8 bit dùng cho giao diện USART. BRG thực chất là một bộ đếm có thể được sử dụng chocả hai dạng đồng bộ và bất đồng bộ và được điều khiển bởi thanh ghi PSBRG. Ở dạng bấtđồng bộ, BRG còn được điều khiển bởi bit BRGH (TXSTA<2>). Ở dạng đồng bộ tácđộng của bit BRGH được bỏ qua. Tốc độ baud do BRG tạo ra được tính theo công thứcsau:

Trong đó X là giá trị của thanh ghi RSBRG ( X là số nguyên và 0<X<255).➢ Các thanh ghi liên quan đến BRG bao gồm:

 – TXSTA (địa chỉ 98h): chọn chế độ đòng bộ hay bất đồng bộ ( bit SYNC) vàchọn mức tốc độ baud (bit BRGH).

 – RCSTA (địa chỉ 18h): cho phép hoạt động cổng nối tiếp (bit SPEN). – RSBRG (địa chỉ 99h): quyết định tốc độ baud.

2.1.12.2. MSSPMSSP ( Master Synchronous Serial Port ) là giao diện đồng bộ nối tiếp dùng để

giao tiếp với các thiết bị ngoại vi (EEPROM,ghi dịch, chuyển đổi ADC,…) hay các viđiều khiển khác. MSSP có thể hoạt độngdưới hai dạng giao tiếp:

 – SPI (Serial Pheripheral Interface). – I2C (Inter-Intergrated Circuit).

Các thanh ghi điều khiển giao chuẩn giao tiếp này bao gồm thanh ghi trạngthái SSPSTAT và hai thanh ghi điều khiển SSPSON và SSPSON2. Tùy theochuẩn giao tiếp được sử dụng (SPI hay I2C)mà chức năng các thanh ghi này được thể

hiện khác nhau.2.1.13. TỔNG QUAN VỀ MỘT SỐ ĐẶC TÍNH CỦA CPU2.1.13.1. BỘ DAO ĐỘNG (OSCILLATOR)

Trang 31

Page 32: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 32/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

PIC16F877A có khả năng sử dụng một trong 4 loại oscillator, đó là: – LP: (Low Power Crystal). – XT: Thạch anh bình thường. – HS: (High-Speed Crystal).

 –  RC: (Resistor/Capacitor) dao động do mạch RC tạo ra. .

Đối với các loại oscillator LP, HS, XT, oscillator được gắn vào vi điều khiểnthong qua các pin OSC1/CLKI và OSC2/CLKO.

Đối với các ứng dụng không cần các loại oscillator tốc độ cao, ta có thể sử dụngmạch dao động RC làm nguồn cung cấp xung hoạt động cho vi vi điều khiển. Tần số tạora phụ thuộc vào các giá trị điện áp, giá trị điện trở và tụ điện, bên cạnh đó là sự ảnhhưởng của các yếu tố như nhiệt độ, chấtlượng của các linh kiện. Các linh kiện sử dụng cho mạch RC oscillator phải bảo đảm các

giá trị sau:

2.1.14. CÁC CHẾ ĐỘ RESET

Có nhiều chế độ reset vi điều khiển, bao gồm: – Power-on Reset POR (Reset khi cấp nguồn hoạt động cho vi điều khiển).

 –  reset trong quá trình hoạt động.

 –  reset từ chế độ sleep. – WDT reset (reset do khối WDT tạo ra trong quá trình hoạt động). – WDT wake up từ chế độ sleep. – Brown-out reset (BOR). Ngoại trừ reset POR trạng thái các thanh ghi là không xác định vàWDT wake up

không ảnh hưởng đến trạng thái các thanh ghi, các chế độ reset còn lại đều đưa giá trị các

thanh ghi về giá trị ban đầu được ấn định sẵn. Các bit và chỉ thị trạng thái hoạt

động, trạng thái reset của vi điều khiển và được điều khiển bởi CPU. reset: Khi pinở mức logic thấp, vi điều khiển sẽ được reset. Tín hiệu reset được cung cấp bởi

một mạch ngoại vi với các yêu cầu cụ thể sau:

Trang 32

3 K < R EXT< 100 K 

CEXT>20 pF

 Hình 2.15 RC oscillator 

 Hình 2.16 Reset PIC16F877A qua chân MCLR\

Page 33: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 33/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 –  Không nối pin trực tiếp lênnguồn VDD. – R1 phải nhỏ hơn 40 K để đảm bảocác đặc tính điện của vi điều khiển.

 –  R2 phải lớn hơn 1 K để hạn dòng đi vào vi điều khiển. reset còn được

chống nhiễu bởi một bộ lọc để tránh các tín hiệu nhỏ tác động lên pinPower-on reset (POR): Đây là xung reset do vi điều khiển tạo ra khi phát hiện nguồn

cung cấp VDD. Khi hoạt động ở chế độ bình thường, vi điều khiển cần được đảm bảo cácthông số về dòng điện, điện áp để hoạt động bình thường. Nhưng nếu các tham số nàykhông được đảm bảo, xung reset do POR tạo ra sẽ đưa vi điều khiển về trạng thái reset vàchỉ tiếp tục hoạt động khi nào các tham số trên được đảm bảo.

Power-up Timer (PWRT): đây là bộ định thời hoạt động dựa vào mạch RC bên trongvi điều khiển. Khi PWRT được kích hoạt, vi điều khiển sẽ được đưa về trạng thái reset.PWRT sẽ tạo ra một khoảng thời gian delay (khoảng 72 ms) để VDD tăng đến giá trịthích hợp.

Oscillator Start-up Timer (OST): OST cung cấp một khoảng thời gian delay bằng1024 chu kì xung của oscillator sau khi PWRT ngưng tác động (vi điều khiển đã đủ điềukiện hoạt động) để đảm bảo sự ổn định của xung do oscillator phát ra. Tác động của OSTcòn xảy ra đối với POR reset và khi vi điều khiển được đánh thức từ chế đợ sleep. OSTchỉ tác động đối với các lọai oscillator là XT, HS và LP.

Brown-out reset (BOR): Nếu VDD hạ xuống thấp hơn gi trị VBOR  (khoảng 4V) trongkhoảng thời gian lớn hơn TBOR  (khoảng 100 us), BOR được kích hoạtvi điều khiển đượcđưa về trạng thái BOR reset. Nếu điện áp cung cấp cho vi điều khiển hạ xuống thấp hơnVBOR  trong khoảng thời gian ngắn hơn TBOR , vi điều khiển sẽ khơng được reset. Khi điệnáp cung cấp đủ cho vi điều khiển hoạt động, PWRT được kích hoạt để tạo ra một khoảngthời gian delay (khoảng 72ms). Nếu trong khoảng thời gian này điện áp cung cấp cho viđiều khiển lại tiếp tuch hạ xuống dưới mức điện áp VBOR, BOR reset sẽ lại được kích hoạtkhi vi điều khiển đủ điện áp hoạt động. Một điểm cần chú ý là khi BOR reset được cho

 phép, PWRT cũng sẽ hoạt động bất chấp trạng thái của bit.Tóm lại để vi điều khiển hoạt động được từ khi cấp nguồn cần trải qua các bước sau:

 – POR tác động. – PWRT (nếu được cho phép hoạt động) tạo ra khoảng thời gian delay TPWRT để ổn

định nguồn cung cấp.

 – OST (nếu được cho phép) tạo ra khoảng thời gian delay bằng 1024 chu kì xung củaoscillator để ổn định tần số của oscillator. – Đến thời điểm này vi điều khiển mới bắt đầu hoạt động bình thường. –  Thanh ghi điều khiển và chỉ thị trạng thái nguồn cung cấp cho vi điều khiển là thanh

ghi PCON.

Trang 33

Page 34: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 34/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

2.1.15. NGẮT (INTERRUPT)

PIC16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển bởi thanh

ghiINTCON (bit GIE). Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng.Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạngthái của bit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuôc vào bit GIE và các bit điềukhiển khác. Bit điều khiển ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanhghi này còn chứa bit cho phép các ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm trongthanh ghi PIE1 và PIE2. Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2.

Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trìnhngắtđược kết thúc bằng lệnh RETFIE. Khi chương trình ngắt được thực thi, bit GIE tựđộng được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ 

Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h. Lệnh RETFIE được dùng đểthoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIE cũngsẽ được set để cho phép các ngắt hoạt động trở lại. Các cờ hiệu được dùng để kiểm trangắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếptục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.

Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các pin của PORTB (PORTB Interrupt on change), việc xác định ngắt nào xảy ra cần 3 hoặc4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt.

Cần chú ý là trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trìnhđược cất vào trong Stack, trong khi một số thanh ghi quan trọng sẽ không được cất và cóthể bị thay đổi giá trị trong quá trình thực thi chương trình ngắt. Điều này nên được xử lí

Trang 34

 Hình 2.16 Sơ đồ các chế độ reset của PIC16F877A

Page 35: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 35/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 bằng chương trình để tránh hiện tượng trên xảy ra.

2.1.15. WATCHDOG TIMER (WDT)Watchdog timer (WDT) là bộ đếm độc lập dùng nguồn xung đếm từ bộ tạo xung

được tích hợp sẵn trong vi điều khiển và không phụ thuộc vào bất kì nguồn xung clock ngoại vi nào. Điều đó có nghĩa là WDT vẫn hoạt động ngay cả khi xung clock được lấytừ pin OSC1/CLKI và pin OSC2/CLKO của vi điều khiển ngưng hoạt động (chẳng hạnnhư do tác động của lệnh sleep). Bit điều khiển của WDT là bit WDTE nằm trong bộ nhớ chương trình ở địa chỉ 2007h (Configuration bit).

WDT sẽ tự động reset vi điều khiển (Watchdog Timer Reset) khi bộ đếm của

WDT bị tràn (nếu WDT được cho phép hoạt động), đồng thời bit tự động được xóa. Nếu vi điều khiển đang ở chế độ sleep thì WDT sẽ đánh thức vi điều khiển (WatchdogTimer Wake-up) khi bộ đếm bị tràn. Như vậy WDT có tác dụng reset vi điều khiển ở thờiđiểm cần thiết mà không cần đến sự tác động từ bên ngoài, chẳng hạn như trong quá trìnhthực thi lệnh, vi điều khiển bị “kẹt” ở một chổ nào đó mà không thoát ra đươc, khi đó viđiều khiển sẽ tự động được reset khi WDT bị tràn ể chương trình hoạt động đúng trở lại.Tuy nhiên khi sử dụng WDT cũng có sự phiền toái vì vi điều khiển sẽ thường xuyênđược reset sau một thời gian nhất định, do đói cần tính toán thời gian thích hợp để xóaWDT (dùng lệnh CLRWDT). Và để việc ấn định thời gian reset được linh động, WDT

còn được hỗ trợ một bộ chia tần số prescaler được điều khiển bởi thanh ghiOPTION_REG (prescaler này được chia xẻ với Timer0).Một điểm cần chú ý nữa là lệnh sleep sẽ xóa bộ đếm WDT và prescaler. Ngoài

Trang 35

 Hình 2.17 Sơ đồ logic của tất cả các ngắt trong vi điều khiển PIC16F877A.

Page 36: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 36/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

ralệnh xóa CLRWDT chỉ xóa bộ đếm chứ không làm thay đổi đối tượng tác động của prescaler (WDT hay Timer0).2.1.16. CHẾ ĐỘ SLEEP

Đây là chế độ hoạt động của vi điều khiển khi lệnh SLEEP được thực thi. Khi đónếu được cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tục hoạt

động, bit (STATUS<3>) được reset về 0, bit được set, oscillator ngưng tác độngvà các PORT giữ nguyên trạng thái như trước khi lệnh SLEEP được thực thi.

Do khi ở chế độ SLEEP, dòng cung cấp cho vi điều khiển là rất nhỏ nên ta cầnthực hiện các bước sau trước khi vi điều khiển thực thi lệnh SLEEP: – Đưa tất cả các pin về trạng thái VDD hoặc VSS – Cần bảo đảm rằng không có mạch ngoại vi nào được điều khiển bởi dòng điện của

vi điều khiển vì dòng điện nhỏ không đủ khả năng cung cấp cho các mạch ngoại vihoạt động.

 – Tạm ngưng hoạt động của khối A/D và không cho phép các xung clock từ bên ngoài

tác động vào vi điều khiển. – Để ý đến chức năng kéo lên điện trở ở PORTB. –  Pin phải ở mức logic cao. “ĐÁNH THỨC” VI ĐIỀU KHIỂN

Vi điều khiển có thể được “đánh thức” dưới tác động của một trong số các hiện tượngsau:

 –  Tác động của reset ngoại vi thông qua pin – Tác động của WDT khi bị tràn. – Tác động từ các ngắt ngoại vi từ PORTB (PORTB Interrupt on change hoặc pin

INT).

Các bit và được dùng để thể hiện trạng thái của vi điều khiển và để pháthiện nguồn tác động làm reset vi điều khiển. Bit được set khi vi điều khiển được cấpnguồn và được reset về 0 khi vi điều khiển ở chế độ sleep.

2.1.17. SO SÁNH 89C51 VÀ PIC16F877A➢ Vấn đề 1:Đặc điểm nhiệt độ

 –  89C51: Nóng đến 125OC vẫn hoạt động tốt, nhiệt độ khá lý tưởng cho

việc hoạt động ở vùng khí hậu nóng. Tuy nhiên, không thấy thông số về nhiệt độthấp nhất.Bởi vì theo datasheet của Philips 89C51Bx thì nhiệt độ hoạt động là 0 -70C. Như vậy, không hoạt động được ở các nước ôn đới và hàn đới.

 –  PIC16F877A:Nhiệt độ có hai khoảng, 0 – 70OC cho loại thường, và -40OC – 85OC là phổ biến.

➢ Vấn đề 2: Tốc độ dao động thực – P89C51:Tốc độ tối đa 33MHz thạch anh, dao động thực 33MHz/12. –  PIC16F877A : Tốc độ tối đa 20MHz thạch anh, dao động thực 20MHz/4.

 Ngoài ra PIC còn có dao động nội 4MHz, sai số dao động nội 1%.Có thể dùng cho

những ứng dụng phổ thông, và số chân có thể dùng nâng lên 16 chân.Kèm theo chế độ dao động khi điện áp thấp là 32KHz. Đây là một trong những đặc tínhcông nghệ Nanowatt, có dải điện áp hoạt động rộng.

Trang 36

Page 37: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 37/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

➢ Vấn đề 3: Tuổi thọ- 89C51: ghi xóa 10.000 lần dữ liệu lưu trữ được 10 năm- PIC16F877A : ghi xóa EEPROM được 1.000.000 lần, Flash được 100.000 lần,dữ liệu lưu trữ được 100 năm.

➢ Vấn đề 4: Interrupts

- 89C51: Có 6 nguồn ngắt, và 4 mức độ ngắt ưu tiên- PIC16F87xA:có 15 nguồn ngắt, và xử lý ưu tiên ngắt bằng phần mềm.Các mứcđộ ưu tiên ngắt sau có thể quy định bằng phần mềm.

➢ Vấn đề 5: Timer - 89C51 mạnh hơn với 2 timer 16 bit và 1 timer 8 bit

 – PIC chỉ có 1 timer 16 bit và 2 timer 8 bit.2.2. IC ĐỒNG HỒ THỜI GIAN THỰC DS13B072.2.1. KHẢO SÁT SƠ ĐỒ CHÂNSơ đồ khối

Sơ đồ chân

Trang 37

1. X1: Nối thạch anh 32.768Khz2. X2: Nối thạch anh 32.768Khz3. VBat: Đầu vào pin 3V4. GND:Nối đất5.

SDA: Chuỗi data6. SCL: Dãy xung clock 7. SQW/OUT: Xung vuông/đầy ra driver 8. VCC: Nối nguồn

 Hình 2.18 Sơ đồ khối DS13B07 

 Hình 2.18 Sơ đồ chân DS13B07 

Page 38: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 38/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thờigian và ngày tháng với 56 bytes SRAM. Địa chỉ và dữ liệu được truyền nối tiếp qua 2

đường bus 2 chiều. Nó cung cấp thông tin về giờ, phút, giây, thứ, ngày ,tháng, năm. Ngày cuối tháng sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31 ngày, bao gồmcả việc tự động nhảy năm. Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thịAM/PM. DS13B07 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tựđộng đóng ngắt với nguồn pin cung cấp.

DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp. Việc truy cập đượcthi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp bởi địa chỉ cácthanh ghi. Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP đượcthực thi.

Chức năng các chân Vcc, GND: nguồn một chiều được cung cấp tới các chân này. Vcc là đầu vào

5V. Khi 5V được cung cấp thì thiết bị có thể truy cập hoàn chỉnh và dữ liệu cóthể đọc và viết. Khi pin 3V được nối tới thiết bị này và Vcc nhỏ hơn 1,25Vbatthì quá trình đọc và viết không được thực thi, tuy nhiên chức năng timekeepingkhông bị ảnh hưởng bởi điện áp vào thấp. Khi Vcc nhỏ hơn Vbat thì RAM vàtimekeeper sẽ được ngắt tới nguồn cung cấp trong (thường là nguồn 1 chiều 3V).

Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V . Điện áp pin phải được giữtrong khoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị.

SCL(serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu trênđường dây nối tiếp.

SDA(serial data input/out): là chân vào ra cho 2 đường dây nối tiếp. Chân SDAthiết kế theo kiểu cực máng hở , đòi hỏi phải có một điện trở kéo trong khi hoạtđộng.

SQW/OUT(square wave/output driver)- khi được kích hoạt thì bit SQWE đượcthiết lập1, chân SQW/OUT phát đi 1 trong 4 tần số (1Hz, 4kHz, 8kHz, 32kHz).Chân này cũng được thiết kế theo kiểu cực máng hở vì vậy nó cũng cần có mộtđiện trở kéo trong. Chân này sẽ hoạt động khi cả Vcc và Vbat được cấp.

X1,X2: được nối với một thạch anh tần số 32,768kHz.Là một mạch tạo dao độngngoài, để hoạt động ổn định thì phải nối thêm 2 tụ 33pF.

2.2.2. SƠ ĐỒ RAM VÀ RTCThông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte thanh

ghi thích hợp. Thời gian và ngày tháng được thiết lập cũng thông qua các byte thanhghi này bằng cách viết vào đó những giá trị thích hợp. Nội dung của các thanhghi dưới dạng mã BCD (binary coded decreaseimal). Bit 7 của thanh ghi seconds là bitclock halt (CH), khi bit này được thiết lập [1] thì dao động disable, khi nó được xoá về

[0] thì dao động được enable. Chú ý là phải enable dao động trong suốt quá trình cấuhình thiết lập (CH=0).Thanh ghi thời gian thực được mô tả như sau:

Trang 38

Page 39: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 39/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

DS1307 có thể chạy ở chế độ 24h cũng như 12h. Bit thứ 6 của thanh ghi hours là bit chọn chế độ 24h hoặc 12h. khi bit này ở mức cao thì chế độ 12h được chọn. ở chế độ12h thì bit 5 là bit AM/PM với mức cao là là PM. ở chế độ 24h thì bit 5 là bit chỉ 20h(từ20h đến 23h).

Trong quá trình truy cập dữ liệu, khi chỉ thị START được thực thi thì dòng thờigian được truyền tới một thanh ghi thứ 2,thông tin thời gian sẽ được đọc từ thanhghi thứ cấp này,trong khi đó đồng hồ vẫn tiếp tục chạy.

Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của chânSQW/OUT

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0OUT X X SQWE X X RS1 RS0

OUT output control): bit này điều khiển mức ra của chân SQW/OUT khi

đầu ra xung vuông là disable. Nếu SQWE= 0 thì mức logic ở chânSQW/OUT sẽ là [1]nếu OUT= 1, và = 0 nếu OUT= [0]

SQWE (square wave enable): bit này được thiết lập [1] sẽ enable đầu racủa bộ tạo dao động.

Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của RS1 và RS0

RS1 RS0 Tần số đầu ra SQW

0 0 1Hz

0 1 4,096kHz1 0 8,192kHz1 1 32,768kHz

Trang 39

 Hình 2.19 Thanh ghi thời gian thực

 Bảng 2.12 Thanh ghi điều khiển SQW/OUT 

Page 40: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 40/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

DS13B07 hỗ trợ bus 2 dây 2 chiều và giao thức truyền dữ liệu. Thiết bị gửi dữliệu lên bus được gọi là bộ phát và thiết bị nhận gọi là bộ thu, thiết bị điều khiển quá

trình này gọi là master. Thiết bị nhận sự điều khiển của master gọi là slave. Các busnhận sự điều khiển của master, là thiết bị phát ra chuỗi xung clock (SCL), master sẽ điềukhiển sự truy cập bus, tạo ra các chỉ thị START và STOP.

Sự truyền nhận dữ liệu trên chuỗi bus 2 dây

Tuỳ thuộc vào bit R/W  mà 2 loại truyền dữ liệu sẽ được thực thi: Truyền dữ liệu từ master truyền và slave nhận: Master sẽ truyền byte

đầu tiên là địa chỉ của slave. Tiếp sau đó là các byte dữ liệu. slave sẽgửi lại bit thông báo đã nhận được (bit acknowledge) sau mỗi byte dữliệu nhận được. dữ liệu sẽ truyền từ bit có giá trị nhất (MSB).

Truyền dữ liệu từ slave và master nhận: byte đầu tiên (địa chỉ của slave)được truyền tới slave bởi master. Sau đó slave sẽ gửi lại master bitacknowledge. tiếp theo đó slave sẽ gửi các byte dữ liệu tới master.Master sẽ gửi cho slave các bit acknowledge sau mỗi byte nhận được trừ

 byte cuối cùng,sau khi nhận được byte cuối cùng thì bit acknowledge sẽkhông được gửi .Master phát ra tất cả các chuỗi xung clock và các chỉ thị START và STOP. Sự

truyền sẽ kết thúc với chỉ thị STOP hoặc chỉ thị quay vòng START. Khi chỉ thị STARTquay vòng thì sự truyền chuỗi dữ liệu tiếp theo được thực thi và các bus vẫn chưa đượcgiải phóng. Dữ liệu truyền luôn bắt đầu bằng bit MSB.

DS13B07 có thể hoạt động ở 2 chế độ sau: Chế độ slave nhận (chế độ DS1307 ghi): chuỗi dữ liệu và chuỗi xung clock sẽ

được nhận thông qua SDA và SCL. Sau mỗi byte được nhận thì mộ t bit

acknowledge sẽ được truyền. Các điều kiện START và STOP sẽ được nhậndạng khi bắt đầu và kết thúc một truyền một chuỗi. Nhận dạng địa chỉ được thựchiện bởi phần cứng sau khi chấp nhận địa chỉ của slave và bit chiều. Byte địa chỉ

Trang 40

 Bảng 2.13 Giá trị tần số xung ở SQW 

 Hình 2.19 Truyền nhận dữ liệu trên chuỗi bus 2 dây

Page 41: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 41/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

là byte đầu tiên nhận được sau khi điều kiện START được phát ra từ master.Byte địa chỉ có chứa 7 bit địa chỉ của DS1307 là 1101000, tiếp theo đó là bitchiều (R/w) cho phép ghi khi nó bằng [0]. Sau khi nhận và giải mã byte địa chỉ thìthiết bị sẽ phát đi một tín hiệu acknowledge lên đường SDA. Sau khi DS1307nhận dạng được địa chỉ và bit ghi thì master sẽ gửi một địa chỉ thanh ghi tới

DS1307 , tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng bytedữ liệu cho DS1307 sau mỗi bit acknowledge nhận được. Sau đó master sẽ truyềnđiều kiện STOP khi việc ghi hoàn thành.

Chế độ slave phát (chế độ DS1307 đọc): byte đầu tiên slave nhận được tương tựnhư chế độ slave ghi. Tuy nhiên trong chế độ này thì bit chiều lại chỉ chiều truyềnngược lại. Chuỗi dữ liệu được phát đi trên SDA bởi DS 1307 trong khi chuỗixung clock vào chân SCL. Các điều kiện START và STOP được nhận dạng

khi bắt đầu hoặc kết thúc truyền một chuỗi. byte địa chỉ nhận được đầu tiên khimaster phát đi điều kiện START. Byte địa chỉ chứa 7 bit địa chỉ của slave và 1 bit chiều cho phép đọc là 1. Sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽnhận 1 bit acknowledge trên đường SDA. Sau đó DS1307 bắt đầu gửi dữ liệu tớiđịa chỉ con trỏ thanh ghi thông qua con trỏ thanh ghi. Nếu con trỏ thanh ghikhông được viết vào trước khi chế độ đọc được thiết lập thì địa chỉ đầu tiên đượcđọc sẽ là địa chỉ cuối cùng chứa trong con trỏ thanh ghi. DS13B07 sẽ nhậnđược một tín hiệu  Not Acknowledge khi kết thúc quá trình đọc.

Thời gian thực hiện việc đọc, ghi dữ liệu của DS1307:Sơ đồ đồng bộ:

Trang 41

 Hình 2.20 Ghi dữ liệu ở chế độ Slave nhận

 Hình 2.21 Đọc dữ liệu ở chế độ Slave phát 

 Hình 2.22 Thời gian đọc ghi dữ liệu của DS13B07 

Page 42: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 42/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Đặc tính và thời gian thực hiện:

2.3. IC ĐỆM DÒNG ULN2803Giới thiệu:

ULN 2803 là một vi mạch đệm, bản chất cấu tạo là các mảng darlington chịu đượcdòng điện lớn và điện áp cao trong đó có chứa 7 cặp darlington cực góp hở với cực phátchung. Mỗi kênh trong số 7 kênh đều có thể chịu được dòng điện lớn trong một khoảng

thời gian dài lên tới 500 mA với biên độ đỉnh lên tới 600 mA. Mỗi kênh có một diodechặn- diode này có thể sử dụng trong trường hợp tải có tính cảm ứng, ví dụ như cácrơle…

Trang 42

 Bảng 2.14 Đặc tính và thời gian thực hiện của DS13B07 

Page 43: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 43/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Ứng dụng của ULN2803 được sử dụng trong các mạch đệm điều khiển động cơ một chiều ,động cơ bước, khối hiển thị ma trận led…

Chức năng các chân:

 

Trang 43

 Hình 2.24 Sơ đồ chân

 Hình 2.23 Hình dáng thực tế 

- Chân 9: nối GND

- Chân 10: nối Vcc

- Chân 1 ÷ 8: gồm 8 ngõ vào I1 ÷I8

- Chân 11 ÷ 18: gồm 8 ngõ ra O1 ÷ O7

 Hình 2.25 Cấu trúc bên trong của ULN 2803

Page 44: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 44/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Theo sơ đồ ta thấy với mỗi bộ đệm có một diode kết nối theo kiểu anod được kếtnối với ngõ ra còn catod được nối chung với catot của các diode còn lại. Ngõ ra của vi

mạch là các cực góp hở, tải được nối giữa nguồn nuôi và ngõ ra của vi mạch đệm. Nguồnnuôi là nguồn điện áp dương bất kỳ nhỏ hơn 50V, chẳng hạn tải là động cơ bước thìnguồn nuôi là 12V, tải là hệ thống hiển thị ma trận led thì nguồn nuôi là 5V…dòng quatải phải được tính toán sao cho dòng chảy lâu dài nhỏ hơn 500 mA và dòng đỉnh nhỏ hơn600 mA tính trên mỗi mạch.

Bên trong ULN 2803 có mắc thêm các Diode tránh dòng ngược khi điều khiển cácthiết bị có cuộn dây (ví dụ: rơle …)

Nguyên lý hoạt động:

- Nếu các chân đầu vào I1 ÷ I8 là mức 0 thì ngõ ra thả nổi.- Nếu các chân đầu vào I1 ÷ I8 là mức 1 thì ngõ ra ở mức 0

Lý do lựa chọn:- Được bán rộng rãi trên thị trường với giá tương đối rẻ.- ULN 2803 đệm được 8 đường riêng biệt (nối trược tiếp được với 8 châncủa vi điều khiển 5V).- Dòng ra tới 500 mA/ 50V đủ để kích các Rơ le.

2.4. CẢM BIẾN NHIỆT ĐỘ DS18B20

2.4.1. GIỚI THIỆU

DS1820 là nhiệt kế số có độ phân giải 9-12bit giao tiếp với vi điều khiển trungtâm thông qua 1 dây duy nhất (1 wire communication). DS18B20 hoạt động với điện áptừ 3V-5.5V có thể được cấp nguồn qua chân DQ- chân trao đổi dữ liệu.

DS1820 có thể đo nhiệt độ trong tầm -55-125oC với độ chính xác +-0.5OC. MỗiDS1820 có một Serial code 64bits duy nhất, điều này cho phép kết nối nhiều IC trên cùngđường bus.

Chuẩn 1 wire có những đặc điểm sau: 

Chỉ có một master trong hệ thống. Giá thành thấp. Tốc độ đạt dược tối đa 16kbps. Khoảng cách truyền xa nhất là 300m. Lượng thông tin trao đổi nhỏ.

2.4.2. SƠ ĐỒ CHÂNSơ đồ khối

Trang 44

 Bảng 2.15 Tthông số cơ bản của ULN 2803

Page 45: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 45/67

Chân 1: nối massChân 2: chân DQ chân trao đổi dữ liệu đồng thời cũng làchân cấp nguồn cho toàn bộ hoạt động của IC (nếu chânV

DDkhông sử dụng). Khi kết nối với vi điều khiển thì

cần có điện trở kéo lên (khoảng 4.7k)Chân 3: chân V

DD, cấp nguồn cho IC

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

2.4.3. THANH GHI DỮ LIỆUMỗi IC DS1820 có một mã 64bit riêng biệt bao gồm: 8 bit Family code, 48 bitserial code và 8 bit CRC code được lưu trong Rom. Các giá trị này giúp phân biệtgiữa các IC với nhau trên cùng một bus. Giá trị Family code của DS1820 là 28H vàgiá trị CRC là kết quả của quá trình kiểm tra 56 bits trước đó.

Tổ chức bộ nhớ Scratchpad: Bộ nhớ DS1820 bao gồm 9 thanh ghi 8bits

Trang 45

 Hình 2.26 Sơ đồ khối DS18B20

Page 46: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 46/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Byte 0 và 1 lưu giá trị nhiệt độ chuyển đổi. Byte 2 và 3 lưu giá trị ngưỡng nhiệt độ. Giá trị này được lưu khi mất điện. Byte 4 là thanh ghi cấu hình cho hoạt động của DS1820. Byte 5,6 và 7 không sử dụng. Byte 8 là thanh ghi chỉ đọc lưu giá trị CRC từ byte 0 đến byte 7.

Dữ liệu trong byte 2,3,4 được ghi thông qua lệnh Write Scratchpad [4Eh] và dữliệu được truyền đến DS18B20 với bit LSB của byte 2, sau khi ghi dữ liệu có thểđược đọc lại thông qua lệnh Read Scratchpad [BEh], và khi đọc Scratchpad thì bitLSB của byte 0 sẽ được gửi đi trước tất cả các byte đều được đọc, nhưng chỉ ghiđược byte 2,3 và 4. Để chuyển giá trị TH và TL từ bộ nhờ vào EEPROM thì cầngửi lệnh Copy Scratchpad [48h] đến DS1820. Và dữ liệu từ EPROM cũng có thểđược chuyển vào thanh ghi TH,TL thông qua lệnh Recall E2 [B8h].

2.4.4. TRAO ĐỔI DỮ LIỆU VỚI VI ĐIỀU KHIỂNTrao đổi dữ liệu giữa vi điều khiển và DS1820 thông qua ba bước sau:

Khởi tạoQuá trình khởi tạo bao gồm 1 xung reset do vi điều khiển master gửi đến slaveDS1820, sau đó là xung presence từ DS1820 gửi đến vi điều khiển, để chỉ ra sự hiện diệncủa vi điều khiển và DS1820 và quá trình hoạt động trao đổi dữ liệu có thể bắt đầu.

Lệnh điều khiển ROMCác lệnh này làm việc với 64bits serial code ROM, lệnh này được phát ra sau quá

trình khởi tạo. Lệnh cho phép vi điều khiển biết có bao nhiêu thiết bị và thiết bị loại gìtrên bus. Có 5 lệnh điều khiển ROM:

SEARCH ROM [F0h]: Khi hệ thống bắt đầu hoạt động, thì vi điều khiển sử

dụng lệnh này để kiểm tra code ROM của tất cả các thiết bị có trên bus cho phép vi điều khiển biết được số thiết bị và loại của thiết bị trên bus. Nếu trên bus chỉ có 1 thiết bị thì có thể sử dụng lệnh Read_ROM thay cho lệnh

Trang 46

 Bảng 2.27 Tổ chức bộ nhớ DS18B20

Page 47: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 47/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Search_ROM. Sau mỗi quá trình Search_ROM thì cần phải quay lại quá trìnhkhởi tạo để reset hệ thống.

 READ ROM [33h]: Lệnh này được sử dụng khi chỉ có 1 thiết bị trên bus.Lệnh này cho phép vi điều khiển đọc 64bit ROM code của thiết bị. Nếu trên

 bus có nhiều thiết bị thì lệnh này sẽ gây ra sự xung đột bus dữ liệu giữa các

thiết bị.  MATCH ROM [55h]: Lệnh này theo sau bởi 64 bit ROM code cho phép vi

điều khiển định địa chỉ thiết bị cần giao tiếp. Chỉ thiết bị có ROM code phùhợp sẽ trả lời, các thiết bị còn lại sẽ đợi xung reset tiếp theo.

 SKIP ROM [CCh]: Lệnh này cho phép vi điều khiển gửi đồng thời đến tất cảcác thiết bị trên bus mà không cần bất cứ thông tin nào về ROM Code. Ví dụ,muốn gửi lệnh Convert_T đến tất cả các thiết bị trên bus, thì đầu tiên ta gửilệnh Skip_ROM sau đó tiếp theo là gửi lệnh Convert_T. Tương tự như vậy,nếu theo sau lệnh Skip_ROM là lệnh Read_Scratchpad thì dữ liệu trên

DS1820 được đọc về, và lưu ý rằng lệnh này chỉ thực hiện được khi trên buscó 1 thiết bị, nếu trên bus có nhiều thiết bị thì sẽ gây ra xung đột bus.

  ALARM SEARCH [ECh]: Lệnh này gần giống với lệnh Search_ROM, nhưnglệnh này chỉ tác động đến thiết bị mà cờ alarm được bật lên sẽ trả lời. Lệnhnày cho phép xác định các thiết bị mà ở đó nhiệt độ đo được vượt qua ngưỡngnhiệt độ, và sau khi lệnh này được thực thi thì vi điều khiển phải lập lại quátrình khởi tạo – quay lại bước 1.

Lệnh điều khiển DS1820Sau khi vi điều khiển định địa chỉ thiết bị cần giao tiếp thông qua các lệnh ROM, vi điều

khiển sẽ gửi các lệnh điều khiển hoạt động của DS1820. Những lệnh này cho phép viđiều khiển ghi và đọc dữ liệu từ bộ nhờ Scratchpad của DS1820, bắt đầu quá trìnhchuyển đổi nhiệt độ, và xác định chế độ cấp nguồn.2.4.5. CẤP NGUỒN CHO DS18B20

Các DS18B20 có thể được hỗ trợ bởi một nguồn cung cấp bên ngoài trên chân Vdd,hoặc nó có thể hoạt động ở chế độ nguồn ký sinh cho phép DS18B20 không cần nguồncung cấp bên ngoài. Nguồn ký sinh là rất hữu ích cho các ứng dụng đo nhiệt độ cảm ứngtừ xa hoặc có không gian đo rất chật hẹp. Hình 1 cho thấy mạch kiểm soát nguồn ký sinhcủa DS18B20 khi nó lấy nguồn qua chân DQ từ các bus 1-Wire ở mức cao. Việc lấy điện

cho DS18B20 được thực hiện trong khi các bus ở mức cao, và đồng thời điện sẽ được lưugiữ trên các tụ điện ký sinh (CPP) để cung cấp điện khi bus ở mức thấp. Khi DS18B20 sửdụng trong chế độ nguồn ký sinh thì các chân Vdd phải được nối mass.

Trang 47

Page 48: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 48/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Các DS18B20 có thể được hỗ trợ bởi một nguồn bên. Ưu điểm của phương phápnày là không cần các MOSFET pullup, và bus 1-Wire có thể thực hiện hoạt động kháctrong thời gian chuyển đổi nhiệt độ.

Không nên sử dụng nguồn kí sinh cho khi ở nhiệt độ trên 100°C vì DS18B20cóthể không thể duy trì thông tin liên lạc do dòng rò rỉ cao. Đối với các ứng dụng đo nhiệtđộ cao thì DS18B20 nên sử dụng nguồn cung cấp bên ngoài.

Trong một số trường hợp bus chủ phải xác định xem liệu các DS18B20s sử dụngnguồn ký sinh hay nguồn bên ngoài để vi điều khiển ra lệnh các pullup bus mạnh có đượcsử dụng trong quá trình chuyển đổi nhiệt độ hay không. Để có được thông tin này, vi điềukhiển có thể ra lệnh Skip ROM [CCH] tiếp theo là Read Power Supply [lệnh B4h] theosau là "read time slot". Trong "read time slot", nguồn ký sinh của DS18B20s sẽ được hỗtrợ kéo bus thấp, và nguồn DS18B20s bên ngoài cung cấp cho phép bus cao. Nếu busđược kéo thấp, vi điều khiển biết rằng nó phải cung cấp các pullup mạnh trên bus 1-Wiretrong thời gian chuyển đổi nhiệt độ.2.4.6. CÁCH ĐỌC NHIỆT ĐỘ Ở DS18B07

Bên trong DS1820 sẽ có bộ chuyển đổi giá trị nhiệt độ sang giá trị số và được lưutrong các thanh thi ở bộ nhớ scratchpad. Độ phân giải nhiệt độ đo có thể được cấu hình ở chế độ 9 bits, 10bits, 11bits, 12bits. Ở chế độ mặc định thì DS1820 hoạt động ở độ phângiải 12bits.

Để bắt đầu quá trình đọc nhiệt độ, và chuyển đổi từ giá trị tương tự sang giá trị sốthì vi điều khiển gửi lênh Convert T [44h], sau khi chuyển đổi xong thì giá trị nhiệt độ sẽđược lưu trong 2 thanh ghi nhiệt độ ở bộ nhớ scratchpad và IC trở về trạng thái nghỉ.

 Nhiệt độ được lưu bên trong DS1820 được tính ở nhiệt độ Celcius nếu tính ở nhiệtđộ Fahrenheit cần phải xây dựng thêm bảng chuyển đổi nhiệt độ. Giá trị nhiệt độ lưutrong bộ nhớ gồm 2bytes-16bits: số âm sẽ được lưu dưới dạng bù 2.

Bit cao nhất là bit dấu (S) nếu S= [0] thì giá trị nhiệt độ dương và S= [1] thì giá trịnhiệt độ âm.

 Nếu cấu hình độ phân giải là 12bits thì tất cả các bit đều được sử dụng. Nếu độ phân giải 11bits thì bit 0 không được sử dụng. Tương tự nếu cấu hình là 10bits thì bit 1, bit 0 không được sử dụng…

Trang 48

 Hình 2.27. Cung cấp nguồn ký sinh cho DS18B20

 Hình 2.28 Cấp nguồn bên ngoài cho DS18B20

Page 49: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 49/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

 Nhiệt độ sau khi được lưu vào trong 2 thanh ghi bộ nhớ sẽ được so sánh với 2thanh ghi ngưỡng nhiệt độ TH và TL. Các giá trị ngưỡng nhiệt độ do người dùng quyđịnh, và nó sẽ không thay đổi khi mất điện.

 Như vậy chỉ có phần nguyên, các bit 11-4 của giá trị nhiệt độ được so sánh vớithanh ghi ngưỡng. Nếu giá trị nhiệt độ đọc về nhỏ hơn mức TL hoặc lớn hơn mức TH thìcờ báo quá nhiệt sẽ được bật lên, và nó sẽ thay đổi ở mỗi quá trình đọc nhiệt độ. Vi điềukhiển có thể kiểm tra trạng thái quá nhiệt bằng lệnh Alarm Search [ECh].

2.5. TỔNG QUAN VỀ TEXT LCD2.5.1. GIỚI THIỆU

Text LCD (Text Liquid Crystal Display) là lọai màn hình tinh thể lỏng dùng đểhiển thị các dòng chữ hoặc số trong bảng mã ASCII. Không giống các loại LCD lớn, TextLCD được chia sẵn thành từng ô, với mỗi ô chỉ có thể hiển thị một ký tự. Cũng vì lý dochỉ hiển thị được ký tự ASCII nên loại LCD này được gọi là Text LCD (để phân biệt vớiGraphic LCD có thể hiển thị hình ảnh).

Mỗi ô của Text LCD bao gồm các chấm tinh thể lỏng, việc kết hợp ẩn và hiện cácchấm này sẽ tạo thành một ký tự cần hiển thị. Trong các Text LCD, các mẫu ký tự đượcđịnh nghĩa sẵn vì thế việc điều khiển Text LCD sẽ trở nên dễ dàng hơn Graphic LCD.

Trang 49

 Bảng 2.16 Mã nhị phân và lục phân tương ứng nhiệt độ

Page 50: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 50/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Kích thướt của Text LCD được xác định bằng số ký tự có thể hiển thị trên mộtdòng và tổng số dòng mà Text LCD đó có. Ví dụ LCD 16x2 là loại có 2 dòng, mỗi dòngcó thể hiển thị tối đa 16 ký tự. Một số kích thướt của Text LCD thong dụng gồm: 16x1,16x2, 20x2, 20x4…

 

2.5.2. CHỨC NĂNG CÁC CHÂN

Trang 50

 Hình 2.28 Hình ảnh thực tế của text LCD

 Hình 2.29. Sơ đồ khối text LCD 16x2

Page 51: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 51/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

D0-D7:8 đường dữ liệu RS:chọn thanh ghi điều khiển hay thanh ghi dữ liệu

RS = 0: Chọn thanh ghi điều khiểnRS = 1: Chọn thanh ghi dữ liệu

R/W\: Chọn chế độ đọc hay ghi

R/W\ = 0: Chọn chế độ đọcR/W\ = 1: Chọn chế độ ghi

E: Cho phép đọc hoặc ghi

E = 1 :cho phépE = 0:Không cho phép Vdd(Vcc): nguồn cung cấp = 5VDC VSS = nối mass VEE: Nối với biến trở sẽ cho phép điều chỉnh độ tương phản (Contrast) của LCD.

2.5.3. MỘT SỐ LỆNH CƠ BẢN CHO LCD

Mã hex Chức năng

01Lệnh xoá màn hình “Clear Display”: khi thực hiện lệnh này thì LCD sẽ bịxoá và bộ đếm địa chỉ được xoá về 0.

Trang 51

 Hình 2.30 Sơ đồ chân text LCD 16x2

Page 52: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 52/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

02 Lệnh di chuyển con trỏ về đầu màn04 Giảm con trò (Dịch con trỏ sang trái)06 Tăng con trỏ (Dịch con trỏ sang phải)05 Dịch hiển thị sang phải07 Dịch hiển thị sang trái08 Tắt con trò, tắt hiển thị0A Tắt hiển thị, bật con trỏ0C Bật hiển thị, tắt con trỏ0E Bật hiển thị, nhấp nháy con trỏ0F Tắt con trỏ, nhấp nháy con trỏ84 Đưa con trỏ về đầu dòng 1 LCDC0 Đưa con trò về đầu dòng 2 của LCD

2.6. THU PHÁT SÓNG HỒNG NGOẠI2.6.1. KHÁI NIỆM VỀ TIA HỒNG NGOẠIÁnh sáng hồng ngoại (tia hồng ngoại) là ánh sáng không thể nhìn thấy được

 bằng mắt thường , có bước sóng khoảng từ 0.86μm đến 0.98μm . Tia hồngngoại có vận tốc truyền bằng vận tốc ánh sáng .

Tia hồng ngoại có thể truyền đi được nhiều kênh tín hiệu. Nó được ứng dụngrộng rãi trong công nghiệp. Lượng thông tin có thể đạt 3 mega bit /s. Lượngthông tin được truyền đi với ánh sáng hồng ngoại lớn gấp nhiều lần so với sóngđiện từ mà người ta vẫn dùng .

Tia hồng ngoại dễ bị hấp thụ , khả năng xuyên thấu kém . Trong điều khiển từ xa bằng tia hồng ngoại , chùm tia hồng ngoại phát đi hẹp , có hướng , do đó khithu phải đúng hướng .

Sóng hồng ngoại có những đặc tính quan trọng giống như ánh sáng (sự hội tụ quathấu kính , tiêu cự …). Ánh sáng thường và ánh sáng hồng ngoại khácnhau rất rõ trong sự xuyên suốt qua vật chất. Có những vật chất ta thấy nó dướimột màu xám đục nhưng với ánh sáng hồng ngoại nó trở nên xuyên suốt . Vìvật liệu bán dẫn “trong suốt” đối với ánh sáng hồng ngoại , tia hồng ngoại không bị yếuđi khi nó vượt qua các lớp bán dẫn để đi ra ngoài.

2.6.2. LINH KIỆN THU PHÁT SÓNG HỒNG NGOẠI

LED phátLed hồng ngoại còn gọi là nguồn phát hồng ngoại. Vật liệu chế tạo ra led hồng

ngoại là GaAs (gallium arserid) với vùng cấm có độ rộng khoảng 1,43 ev, cơ chế tái hợp

trực tiếp giữa vùng dẫn và vùng hóa trị GaAs cho ta bước sóng của tia hồng ngoại:

λ = hc/∆ w =900nm

Trang 52

 Bảng 2.17Một số lệnh cơ bản cho text LCD

Page 53: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 53/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

với:h = 4,14.10-15 (ev/s): hằng số Flanck c = 3.108 m/s : vận tốc ánh sáng∆ w = 1,38 ev

 Nguyên lý làm việc của LED phát hồng ngoại : khi chuyển tiếp P-N phân cực

thuận , sẽ có hiện tượng phun hạt dẫn ở mức cao (lổ trống từ P++ phun sang N++, điệntử từ N++ phun sang P++) và kèm theo đó là hiện tượng tái hợp bức xạ làm phát ra ánhsáng. Hiện tượng tái hợp bức xạ là hiện tượng giải phóng ra các hạt photon khi có sự táihợp trực tiếp giữa điện tử và lổ trống .LED thu

Để thu nhận tín hiệu hồng ngoại ta có nhiều loại cảm biến khác nhau. Tất cả các bộ phận cảm biến này đều dựa trên nguyên tắc hiệu ứng quang điện. Với hiệu ứng quangđiện này thì lớp chuyển tiếp P-N sẽ phát sinh một giá trị điện áp khi nó nhận được ánhsáng.

 Nguyên lý làm việc của LED thu hồng ngoại: diode quang được phân cực nghịchnhờ nguồn điện áp V và do đó có một dòng điện ngược ban đầu I0 rất nhỏ. Khi được ánhsáng chiếu vào, có thêm dòng điện bởi các hạt dẫn sinh ra nhờ năng lượng của photon vàchạy cùng chiều với dòng điện ngược. Vì vậy dòng điện tổng chạy qua tải có trị số tănglên theo cường độ chiếu sáng vào.

2.7. QUANG TRỞ Thông thường, điện trở của quang trở khoảng 1000 000 ohms. Khi chiếu ánh sáng

vào, điện trở này giảm xuống rất thấp.

Quang điện trở có cấu tạo gồm: một sợi dây (hoặc một màng) bằng chất quang dẫn(1) gắn trên một đế cách điện (2)

Một quang điện trở bằng CdS có điện trở vào khoảng 3.10-6W khi không đượcchiếu sáng, và có điện trở vào khoảng 20W khi được chiếu sáng.

 Nguyên lý làm việc của quang trở là khi có bức xạ chiếu vào, chất bán dẫn hấp thunăng lượng làm phát sinh các điên tử tự do và lỗ trống, tức sự dẫn điện tăng lên và giảmđiện trở của chất bán dẫn. Các đặc tính điện và độ nhạy của quang trở tùy thuộc vào vậtliệu dùng trong chế tạo.

Các quang điện trở thường được lắp với các tranzito trong các thiết bị điều khiểntự động bằng ánh sáng, trong các máy đo ánh sáng và trong nhiều thiết bị khác.

2.8. ĐỘNG CƠ BƯỚCGiới thiệu

Trang 53

 Hình 2.30 Quang trở 

Page 54: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 54/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Động cơ bước có thể được mô tả như là một động cơ điện không dùng bộchuyển mạch. Cụ thể, các mấu trong động cơ là stator, và rotor là nam châm vĩnh cửuhoặc trong trường hợp của động cơ biến từ trở, nó là những khối răng làm bằng vật liệunhẹ có từ tính. Tất cả các mạch đảo phải được điều khiển bên ngoài bởi bộ điều khiển, vàđặc biệt, các động cơ và bộ điều khiển được thiết kế để động cơ có thể giữ nguyên bất kỳ

vị trí cố định nào cũng như là quay đến bất kỳ vị trí nào. Hầu hết các động cơ bước có thểchuyển động ở tần số âm thanh, cho phép chúng quay khá nhanh, và với một bộ điềukhiển thích hợp, chúng có thể khởi động và dừng lại dễ dàng ở các vị trí bất kỳ.

Phân loại động cơ bướcĐộng cơ bước được chia làm hai loại, nam châm vĩnh cửu và biến từ trở (cũng có

loại động cơ hỗn hợp, nhưng nó không khác biệt gì với động cơ nam châm vĩnh cửu). Ởđây nhóm mình trình bày chương trình điều khiển động cơ nam châm vĩnh cữu đơn cựccó 6 đầu dây ra. Như hình 2.31:

Khi dùng, các đầu nối trung tâm thường được nối vào cực dương nguồn cấp, vàhai đầu còn lại của mỗi mấu lần lượt nối đất để đảo chiều từ trường tạo bởi cuộn đó. Mấu1 nằm ở cực trên và dưới của stator, còn mấu 2 nằm ở hai cực bên phải và

 bên trái động cơ. Rotor là một nam châm vĩnh cửu với 6 cực, 3 Nam và 3 Bắc, xếp xen kẽtrên vòng tròn..ở đây động cơ quay với 1 góc là 30° với 12 bước 1 vòng. Để xử lý góc

 bước ở mức độ cao hơn, rotor phải có nhiều cực đối xứng hơn.Động cơ 30 độ mỗi bước trong hình là một trong những thiết kế động cơ nam

châm vĩnh cửu thông dụng nhất, mặc dù động cơ có bước 15 độ và 7.5 độ là khá lớn. Người ta cũng đã tạo ra được động cơ nam châm vĩnh cửu với mỗi bước là 1.8 độ và vớiđộng cơ hỗn hợp mỗi bước nhỏ nhất có thể đạt được là 3.6 độ đến1.8 độ, còn tốt hơn nữa, có thể đạt đến 0.72 độ.

Xác định cặp dây của động cơ đơn cực 5 dâyĐể phân biệt hai cặp dây của động cơ đơn cực 5 dây, trước tiên chúng ta dùng Ohm kế đểxác định dây nối trung tâm. Đưa điện áp xoay chiều vào dây trungtâm và một trong 4 dây còn lại. Dùng Volt kế xoay chiều đo điện áp giữa dây nốitrung tâm và 3 dây còn lại. Chúng ta sẽ thấy rằng điện áp giữa dây trung tâm với 2 trong

3 dây còn lại đó gần như bằng không, và với dây thứ ba thì gần như bằng điện áp xoaychiều áp vào động cơ. Như vậy, hai dây cho điện áp gần bằng 0 là một cặp, hai dây cònlại sẽ là cặp thứ hai.

Trang 54

 Hình 2.31 Động cơ bước đơn cực

Page 55: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 55/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

3.1. Ý TƯỞNG THIẾT KẾVới sự phát triển vượt bậc của kỹ thuật điện tử hiện nay, các khuyết điểm từ chế

độ chăm sóc hồ cá bình thường đã được giải quyết bằng những linh kiện điện tử có độtích hợp cao. Nhóm chọn thực hiện đề tài này đã giải quyết được những nhược điểm củahồ cá, đáp ứng nhu cầu cho người nuôi cá cảnh cũng như trong nuôi trồng thủy sản…

Cần thiết kế các mạch điện có nhiệm vụ phát hiện nước dơ và tự động thay nước,hẹn giờ cho cá ăn, cung cấp oxi.

3.2. SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG3.2.1. SƠ ĐỒ KHỐI

Trang 55

Page 56: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 56/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Trang 56

Page 57: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 57/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Khối xử lý trung tâm: khối này là vi điều khiển PIC16F877A, xử lý các thông tintừ các khối cảm biến đưa về, các số liệu thời gian thực, thời gian do người sử dụngcài đặt cũng như xử lý dữ liệu để đưa đến khối hiển thị, khối relay, khối động cơ...

Cảm biến nhiệt độ: sử dụng IC đo nhiệt độ DS18B20, được đưa vào vi xử lý đểcảm biến nhiệt độ nước và hiển thị nhiệt độ ra text LCD.

Cảm biến môi trường nước : sử dụng cặp LED hồng ngoại để phát hiện nước dơ.Khi nước dơ LED hồng ngoại sẽ dẫn, thông tin sẽ được truyền đến vi xử lý để điềukhiển thay nước và báo động.

Đồng hồ thời gian thực: xác lập ngày giờ chính xác và thời gian được lưu lại khi bị

mất điện. Khối cảm biến quang: sử dụng quang trở để do độ sang tối nhằm cung cấp đủ ánh

sáng cho hồ cá. Khối hiển thị: là thiết bị I/O tạo mối quan hệ một chiều từ khối điều khiển đến

người sử dụng, khối hiển thị sẽ hiển thị trạng thái đang hoạt động của mạch nhưhiển thị nhiệt độ nước , ngày tháng năm, báo quá trình thay nước, quá trình cho cáăn… Khối hiển thị giúp người sử dụng dễ dàng thao tác trên mạch.

Khối relay: được điều khiển bởi vi điều khiển có nhiệm vụ mở van xả-hút nước,cung cấp oxi…

Khối động cơ bước: được điều khiển bởi vi điều khiển thông qua IC đệm dòngULN2803 cấp nguồn cho động cơ bước trong quá trình cho cá ăn.

3.2.2. NGUYÊN LÝ HOẠT ĐỘNG CỦA CÁC KHỐI

Trang 57

SƠ ĐỒ KHỐI A3

Page 58: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 58/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

3.2.2.1. KHÔI CẢM BIẾN NƯỚC DƠ 

Bình thường khi nước trong hồ sạch, lúc này điện trở LED thu giảm xuống rấtnhỏ, ILED = IR35 ≠ 0 vì vậy V- = VR35 ≠ 0 hay V- = VCC ~ 5V, V- > V+ do đó V0 (chân 1 của

IC LM358) ở mức thấp không kích dẫn BJT.Khi nước dơ thì LED thu không nhận được ánh sang từ LED phát do vậy điện trở 

LED thu rất lớn, ILED = IR35 = 0, V- = VR35 = 0, V- > V+ do đó V0 ở mức cao, kích dẫn BJT.Lúc này vi điều khiển sẽ điền khiển khối thay nước hoạt động.

3.2.2.2. KHỐI CẢM BIẾN NHIỆT ĐỘ

Khi được cấp nguồn vi điều khiền bắt đầu hoạt động, vi điều khiển gửi một xung

reset đến cảm biến DS18B20. Sau đó DS18B20 gửi một xung presence đến vi điều khiển,để chỉ ra sự hiện diện của vi điều khiển và DS18B20.

Trang 58

 Hình 3.2 Khối cảm biến nước dơ 

 Hình 3.3 Khối cảm biến nhiệt độ

Page 59: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 59/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Tiếp theo vi điều khiển định địa chỉ DS18B20 thông qua các lệnh ROM, vi điềukhiển gửi lệnh hoạt động của DS18B20. Những lệnh này cho phép vi điều khiển ghi vàđọc dữ liệu từ bộ nhớ Scratchpad của DS18B20, bắt đầu quá trình chuyển đổi nhiệt độ vàxác định chế độ cấp nguồn.

Sau khi DS18B20 gửi dữ liệu đến vi điều khiển , vi điều khiển xử lí dữ liệu xuất ra

LCD.3.2.2.3. KHỐI CẢM BIẾN QUANG

Quang trở là một điện trở có điện trở tỉ lệ nghịch với ánh sáng, tức khi có ánh sángchiếu vào làm điện trở trên quang trở giảm, ILDR = 0, V- > V+ do đó V0 (chân 1 của ICLM358) ở mức thấp không kích dẫn BJT.

 Ngược lại, khi trời tối hay ánh sáng chiếu vào giảm thì ILDR ≠ 0, V- > V+ do đó V0

(chân 1 của IC LM 358) ở mức cao, kích dẫn BJT. Lúc này vi điều khiển sẽ điền khiểncấp đủ ánh sáng cho hồ cá.3.2.2.4. KHỐI THỜI GIAN THỰC

Trang 59

 Hình 3.4 Khối cảm biến quang 

Page 60: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 60/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

3.2.2.5. KHỐI HIỂN THỊKhối hiển thị sẽ hiển thị trạng thái đang hoạt động của mạch như hiển thị nhiệt độ

nước , ngày tháng năm, báo quá trình thay nước, quá trình cho cá ăn…

3.2.2.6. KHỐI ĐỘNG LỰC

Tạo tín hiệu điều khiển sủi bọt khí, thay-xả nước, bật tắt đèn chiếu sáng, điều khiển độngcơ bước cho cá ăn…

Trang 60

 Hình 3.5 Khối thời gian thực

 Hình 3.6 Khối hiển thị

Page 61: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 61/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

3.3. THI CÔNG MẠCHDưới đây là sơ đồ nguyên lý, sơ đồ mạch in, sơ đồ bố trí linh kiện của mạch sau khi thi

công.

Trang 61

 Hình 3.7 Khối RELAY 

 Hình 3.8 Khối điều khiển động cơ bước

Page 62: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 62/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

SƠ ĐỒ NGUYÊN LÝ A3

Trang 62

Page 63: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 63/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Trang 63

 Hình 3.10 Sơ đồ mạch in

Page 64: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 64/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Trang 64

 Hình 3.11 Sơ đồ phân bố linh kiện

Page 65: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 65/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

4.1. LƯU ĐỒ GIẢI THUẬT4.2. CHƯƠNG TRÌNH NẠP CHO VI ĐIỀU KHIỂN PIC16F877A

Trang 65

Page 66: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 66/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

CHƯƠNG 5: TÓM TẮT – KÊT LUẬN – ĐỀ NGHỊ

5.1. TÓM TẮT ĐỀ TÀIVới thời gian được giao, nhóm thực hiện đã hoàn thành việc nghiên cứu đề tài

“HỒ CÁ THÔNG MINH” với những phần sau: Thiết kế mạch với ba modul: modul trung tâm, modul động lực và modul hiển thị Thực hiện mô hình hồ cá tự động với vi điều khiển PIC16F877A

Các phần trên đã hoạt động ổn định.5.2. KẾT LUẬN

Qua thời gian thực hiện đề tài, với sự hướng dẫn tận tình của Thầy “PHANTHANH TOẢN” đề tài “HỒ CÁ THÔNG MINH” đã hoàn thành đúng với thời gian

quy định. Đây là đề tài mang tính tổng hợp đòi hỏi sinh viên phải có sự kết hợp giữa kiếnthức trong lĩnh vực điện tử và kỹ thuật lập trình.

Với sự quyết tâm và nỗ lực không ngừng, đồ án này đã giúp cho chúng em bướcđầu làm quen với đề tài nghiên cứu và nhóm đã thực sự tích lũy khá nhiều về phần viđiều khiển, thiết kế mạch và kỹ thuật lập trình.

Mặc dù thời gian có hạn, hơn nữa có nhiều vấn đề nảy sinh trong khi thiết kế phầncứng lẫn phần mềm đã mất rất nhiều thời gian và công sức nhưng nhóm vẫn cố gắnghoàn thành được mô hình.

Trải qua quá trình thực hiện đồ án, chúng em đánh giá được phần nào còn hạn chế

và ít nhiề bổ sung kiến thức còn hạn hẹp trong thời gian học tại trường nhất là môn kỹthuật vi điều khiển.

Tuy nhiên, đây là lần đầu tiên làm quen với việc lập trình cho vi điều khiển ứngdụng trên mô hình thực tế và kiến thức có hạn nên đồ án này chắc chắn vẫn còn nhữngsai sót. Chúng em rất mong sự đóng góp ý kiến của quý Thầy Cô cùng với các bạn sinhviên để đồ án được hoàn hảo hơn.5.3. ĐỀ NGHỊ

 Nhóm thực hiện hy vọng các nhóm sau có nghiên cứu đề tài này có cải tiến đượccác tính năng: Có thể bơm vào và xả nước ra theo giới hạn cho phép bằng việc gắn các cảm biến

mực nước. Có thể điều khiển hồ cá thông qua máy tính và mạng internet khi chúng ta phải đi

công tác xa nhà. Mạch có thể hoạt động khi mất điện bằng việc sử dụng nguồn dự phòng.

5.4.TÀI LIỆU THAM KHẢO

Trang 66

Page 67: NOI DUNG 22.12.4

5/12/2018 NOI DUNG 22.12.4 - slidepdf.com

http://slidepdf.com/reader/full/noi-dung-22124 67/67

Đồ án tốt nghiệp GVHD: Ths PHAN THANH TOẢN

Trang 67