MỤC LỤC: Table of Contents MỞ ĐẦU 4 CHƯƠNG I: CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ 6 1.1 Khái niệm về nhiệt độ: 6 1.1.1 Khái niệm: 6 1.1.2 Sơ lược về phương pháp đo nhiệt độ: 6 1.2 Đo nhiệt độ bằng phương pháp tiếp xúc 7 1.2.1 Đo nhiệt độ bằng nhiệt điện trở: 7 1.2.2 Đo nhiệt độ bằng cặp nhiệt ngẫu: 7 1.2.3 IC cảm biến nhiệt độ 8 1.3 Đo nhiệt độ bằng phương pháp không tiếp xúc 8 CHƯƠNG II: CƠ SỞ LÝ THUYẾT 9 2.1Tìm hiểu về cảm biến nhiệt độ LM35. 9 2.2Vi điều khiển PIC 16F877A. 11 2.2.1PIC là gì? 11 2.2.2Các dòng PIC và cách lựa chọn vi điều khiển PIC. 11 2.2.3Các dòng PIC và cách lựa chọn vi điều khiển PIC. 12 2.2.4Tổ chức bộ nhớ. 17 2.2.5Stack. 21 2.2.6Các cổng xuất, nhập của PIC 16F877A. 21 2.2.7Các Timer. 24 2.2.8Chuyển đổi ADC. 28 2.2.9Bộ so sánh. 29 2.2.10 Bộ tạo điện áp so sánh. 30 2.2.11CCP. 32 2.2.12Ngôn ngữ lập trình cho PIC. 32 3.3Màn hình LCD. 35 3.3.1Hình dáng và cấu tạo. 35 3.3.2Chức năng các chân. 36 CHƯƠNG III: THIẾT KẾ VÀ CHẾ TẠO 38 3.1. SƠ ĐỒ KHỐI 38 3.1.1. Phân tích chức năng các khối. 39 3.1.2. Sơ đồ nguyên lý. 43 3.1.3. Phân tích nguyên lý hoạt động của cả mạch điện. 44 3.2. Thiết kế sơ đồ board mạch. 45 3.3. Xây dựng phần mềm. 46 3.4. Chương trình. 46 Lưu đồ thuật toán 46 3.5. Ứng dụng thực tiễn của mạch 49 CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 50 TÀI LIỆU THAM KHẢO 51
Trang 1
ĐỒ ÁN MÔN HỌC
Đề tài:
THIẾT KẾ, CHẾ TẠO MẠCH ĐO NHIỆT ĐỘ HIỂN THỊ TRÊN LCD 16X2
Sinh viên thực hiện: …
Lớp: 112134.1
Tháng 10, năm 2015
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Ngày tháng 10 năm 2015 Giáo viên hướng dẫn
Trang 3MỤC LỤC:
Table of Contents
MỞ ĐẦU 4
CHƯƠNG I: CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ 6
1.1 Khái niệm về nhiệt độ: 6
1.1.1 Khái niệm: 6
1.1.2 Sơ lược về phương pháp đo nhiệt độ: 6
1.2 Đo nhiệt độ bằng phương pháp tiếp xúc 7
1.2.1 Đo nhiệt độ bằng nhiệt điện trở: 7
1.2.2 Đo nhiệt độ bằng cặp nhiệt ngẫu: 7
1.2.3 IC cảm biến nhiệt độ 8
1.3 Đo nhiệt độ bằng phương pháp không tiếp xúc 8
CHƯƠNG II: CƠ SỞ LÝ THUYẾT 9
2.1Tìm hiểu về cảm biến nhiệt độ LM35 9
2.2Vi điều khiển PIC 16F877A 11
2.2.1PIC là gì? 11
2.2.2Các dòng PIC và cách lựa chọn vi điều khiển PIC 11
2.2.3Các dòng PIC và cách lựa chọn vi điều khiển PIC 12
2.2.4Tổ chức bộ nhớ 17
2.2.5Stack 21
2.2.6Các cổng xuất, nhập của PIC 16F877A 21
2.2.7Các Timer 24
2.2.8Chuyển đổi ADC 28
2.2.9Bộ so sánh 29
2.2.10 Bộ tạo điện áp so sánh 30
2.2.11CCP 32
Trang 43.3Màn hình LCD 35
3.3.1Hình dáng và cấu tạo 35
3.3.2Chức năng các chân 36
CHƯƠNG III: THIẾT KẾ VÀ CHẾ TẠO 38
3.1 SƠ ĐỒ KHỐI 38
3.1.1 Phân tích chức năng các khối. 39
3.1.2 Sơ đồ nguyên lý. 43
3.1.3 Phân tích nguyên lý hoạt động của cả mạch điện. 44
3.2 Thiết kế sơ đồ board mạch. 45
3.3 Xây dựng phần mềm. 46
3.4 Chương trình. 46
Lưu đồ thuật toán 46
3.5 Ứng dụng thực tiễn của mạch 49
CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 50
TÀI LIỆU THAM KHẢO 51
Trang 5Họ vi điều khiển nàycó thể tìm mua dễ dàng tại thị trường Việt Nam.
Có đầy đủ tính năng của một vi điều khiển khi hoạt động độc lập
Là sự bổ sung rất tốt về kiến thức cũng như ứng dụng cho họ vi điều khiểnmang tính truyền thống: họ vi điều khiển 8051 Giá thành không đắt
Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạpchương trình từ dơn giản tới phức tạp
Các tính năng đa dạng của vi điều khiển PIC và các tính năng này khôngngừng được phát triển
Số lượng người sử dụng họ vi điều khiển PIC trên thế giới cũng như ViệtNam khá nhiều.Đã tạo thuận lợi trong quá trình tìm hiểu và phát triển cácứng dụng như: số lượng tài liệu, số lượng các ứng dụng mở đã được pháttriển, dễ dàng trao đổi, học tập, dễ dàng tìm được hỗ trợ khi gặp khó khăn
Vì vậy, sau một thời gian học tập và tìm hiểu tài liệu với sự giảng dạy củacác thầy cô giáo Cùng với sự dẫn dắt nhiệt tình của giáo viên hướng dẫn thầy
Nguyễn Viết Ngư Chúng em đã chọn đề tài:
“thiết kế chế tạo mạch đo nhiệt độ hiển thị trên LCD 16x2” làm đồ án tích
Trang 7 Đối tượng nghiên cứu
Với đề tài này chúng em tập trung vào:
Tìm hiểu về vi điều khiển PIC 16F877A
Nghiên cứu và chế tạo thiết bị đo nhiệt độ phòng
Mục đích nghiên cứu
Khi nghiên cứu đồ án này chúng em đã:
Hiểu được cách thức và chế độ hoạt động của VĐK PIC 16F877A
Hiểu được cách thức hoạt động của cảm biến nhiệt độ LM 35
Thiết kế, chế tạo được mạch đo nhiệt độ phòng dùng PIC 16F877A
Phương pháp nghiên cứu
Do đây là một đồ án sản phẩm, nên chúng em đã áp dụng phương phápnghiên cứu lý thuyết, nghiên cứu thực nghiệm trực tiếp trên sản phẩm thật, chạythử và hoàn thiện chương trình
Ý nghĩa nghiên cứu
Như đã nói ở trên thì nếu thực hiện thành công đề tài này sẽ mang lại ý nghĩa
to lớn về cả thực tiễn và lý luận
Ý nghĩa lý luận:
Toàn bộ chương trình và bản thuyết minh của đề tài sẽ trở thành tài liệu nghiêncứu, tham khảo nhanh, dễ hiểu, thiết thực cho các bạn sinh viên, những ngườithích tìm hiểu về đề tài này của chúng em
Ý nghĩa thực tiễn:
Với sự thành công của đề tài sẽ góp phần giúp cho các bạn sinh viên mới nóichung và các bạn sinh viên khoa Điện - Điện Tử nói riêng thấy rõ được ý nghĩathực tế và thêm yêu thích chuyên ngành mình đã chọn
Do kiến thức và trình độ năng lực hạn hẹp nên việc thực hiện đề tài này không thểtránh được thiếu sót, kính mong nhận được sự thông cảm và góp ý của thầy giáo,
cô giáo và các bạn để đồ án này hoàn chỉnh hơn
Chúng em xin trân thành cảm ơn!
Sinh viên thực hiện: Phạm Văn Thực
Trang 8CHƯƠNG I: CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ
1.1 Khái niệm về nhiệt độ:
1.1.1 Khái niệm:
Nhiệt độ là đại lý đặc trưng cho cường độ chuyển động của các nguyên tử,phân tử của một hệ vật chất Tuỳ theo từng trạng thái của vật chất ( rắn, lỏng, khí)
mà chuyển động này có khác nhau ở trạng thái láng, các phân tử dao động quanh
vi trí cân bằng nhưng vi trí cân bằng của nó luôn dịch chuyển làm cho chất lỏngkhông có hình dạng nhất định Còn ở trạng thái rắn, các phần tử, nguyên tử chỉdao động xung quanh vị trí cân bằng Các dạng vận động này của các phân tử,nguyên tử được gọi chung là chuyển động nhiệt Khi tương tác với bên ngoài cótrao đổi năng lượng nhưng không sinh công, thì quá trình trao đổi năng lượng nóitrên gọi là sự truyền nhiệt Quá trình truyền nhiệt trên tuân theo 2 nguyên lý:
Bảo toàn năng lượng
Nhiệt chỉ có thể tự truyền từ nơi có nhiệt độ cao đến nơi có nhiệt độ thất
Ở trạng thái rắn, sự truyền nhiệt xảy ra chủ yếu bằng dẫn nhiệt và bức xạ nhiệt
Đối với các chất lỏng và khí ngoài dẫn nhiệt và bức xạ nhiệt còn có truyềnnhiệt bằng đối lưu Đó là hiện tượng vận chuyển năng lượng nhiệt bằng cách vậnchuyển các phần của khối vật chất giữa các vùng khác nhau của hệ do chênh lệch
về tỉ trọng
1.1.2 Sơ lược về phương pháp đo nhiệt độ:
Nhiệt độ là đại lượng chỉ có thể đo gián tiếp trên cơ sở tính chất của vậtphụ thuộc nhiệt độ Hiện nay chóng ta có nhiều nguyên lí cảm biến khác nhau đểchế tạo cảm biến nhiệt độ như: nhiệt điện trở, cặp nhiệt ngẫu, phương pháp quang
Trang 9dùa trên phân bố phổ bức xạ nhiệt, phương pháp dùa trên sự dãn nở của vật rắn,lỏng, khí hoặc dùa trên tốc độ âm… Có 2 phương pháp đo chính:
Ở dải nhiệt độ thấp và trung bình phương pháp đo là phương pháp tiếpxúc, nghĩa là các chuyển đổi được đặt trực tiếp ngay trong môi trường đo Thiết
bị đo như: nhiệt điện trở, cặp nhiệt, bán dẫn
Ở dải nhiệt độ cao phương pháp đo là phương pháp không tiếp xúc ( dông
cụ dặt ngoài môi trường đo) Các thiết bị đo nh: cảm biến quang, hoả quang kế( hoả quang kế phát xạ, hoả quang kế cường độ sáng, hoả quang kế màu sắc)…
1.2 Đo nhiệt độ bằng phương pháp tiếp xúc
1.2.1 Đo nhiệt độ bằng nhiệt điện trở:
Yêu cầu cơ bản đối với vật liệu dùng làm chuyển đổi của nhiệt điện trở là
có hệ số nhiệt độ lớn và ổn định, điện trở suất khá lớn…
Trong công nghiệp nhiệt điện trở được chia thành nhiệt điện trở kim loại vànhiệt điện trở bán dẫn
1.2.2 Đo nhiệt độ bằng cặp nhiệt ngẫu:
Nguyên lý làm việc:
Bộ cảm biến cặp nhiệt ngẫu là 1 mạch từ có 2 hay nhiều thanh dẫn điện
Trang 10điện này phụ thuộc vào nhiệt độ tương ứng của mối hàn nghĩa là t > t0 thì dòngđiện chạy theo hướng ngược lại Nếu để hở một đầu thì sẽ xuất hiện một sức điệnđộng nhiệt Khi mối hàn có cùng nhiệt độ ( ví dụ bằng t0 ) thì sức điện động tổngbằng:
1.3 Đo nhiệt độ bằng phương pháp không tiếp xúc
Nguyên lý hoạt động:
Dưạ trên định luật bức xạ của vật đen tuyệt đối, tức là vật hấp thụ nănglượng theo mọi hướng với khả năng lón nhất Bức xạ nhiệt của mọi vật đặc trưng
Trang 11bởi mật độ phổ E nghĩa là số năng lượng bức xạ trong một đơn vị độ dài củasóng.
Quan hệ giữa mật độ bức xạ của vật đen tuyệt đối với nhiệt độ và độ dài sóngđược biểu diễn bởi công thức:
T: Nhiết độ tuyệt đối
CHƯƠNG II: CƠ SỞ LÝ THUYẾT
2.1Tìm hiểu về cảm biến nhiệt độ LM35.
LM35 là một cảm biến nhiệt độ analog, thuộc họ IC cảm biến nhiệt độ sảnxuất theo công nghệ bán dẫn dựa trên các chất bán dẫn dễ bị tác động bởi sự thayđổi của nhiệt độ, đầu ra của cảm biến là điện áp (V) tỉ lệ với nhiệt độ mà nó đượcđặt trong môi trường cần đo
Họ LM35 có rất nhiều loại và nhiều kiểu đóng vỏ khác nhau:
Trang 12Hình 1.1: Cảm biến nhiệt độ LM35.
Đặc điểm nổi bật:
Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35
- Điện áp đầu vào từ 4V đến 30V
- Độ phân giải điện áp đầu ra là 10mV/0C
- Độ chính xác cao, tính năng cảm biến nhiệt độ rất nhạy
- Ở nhiệt độ 25(0C) nó có sai số không quá 1% Với dải đo từ -50 đến150(0C), tín hiệu ngõ ra tuyến tính liên tục với những thay đổi của tín hiệungõ vào
Thông số kỹ thuật:
- Tiêu tán công suất thấp
- Dòng làm việc từ 400µA đến 5mA
- Dòng ngược 15mA
- Dòng thuận 10mA
- Độ chính xác cao: khi làm việc ở nhiệt độ 250C là 0,50C
- Trở kháng đầu ra thấp 0,1 cho 1mA tải
Đặc tính điện:
Trang 13Dải nhiệt độ đo được của LM35 là từ -550C đến 1500C với các mức điện áp rakhác nhau Vậy ứng với tầm hoạt động từ 0(0C) đến 100(0C)ta có sự biến thiênđiện áp ngõ ra là:
PIC là viết tắt của “Programmable Intelligent Computer”, có thể tạm dịch là
“máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điềukhiển đầu tiên của họ Hãng Micrchip tiếp tục phát triển sản phẩm này và cho đếnnay hãng đã tạo ra gần 100 loại sản phẩm khác nhau
2.2.2Các dòng PIC và cách lựa chọn vi điều khiển PIC.
Các kí hiệu của vi điều khiển PIC:
- PIC12xxxx: độ dài lệnh 12 bit
- PIC16xxxx: độ dài lệnh 14 bit
- PIC18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ flash
LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
LV: tương tự như LF, đây là kí hiệu cũ
Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêmchữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash).Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC Ở Việt Nam phổbiến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất
Cách lựa chọn một vi điều khiển PIC phù hợp:
Trang 14- 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ềukhiể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ầnchọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình đượcnhiều lần hơn
- Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong viđiều khiển,các chuẩn giao tiếp bên trong Sau cùng cần chú ý đến bộ nhớ chươngtrì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ềukhiển PIC có thể được tìm thấy trong cuốn sách “Select PIC guide” do nhà sảnxuất Microchip cung cấp
Do thời gian làm đồ án có hạn nên chúng em chỉ tập trung tìm hiểu các tính năngcủa PIC 16F877A có liên quan đến đề tài
2.2.3Các dòng PIC và cách lựa chọn vi điều khiển PIC.
PIC 16F877A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầuhết tất cả các ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làm quenvới PIC có thể học tập và tạo nền tảng về họ vi điều khiển PIC của mình
PIC 16F877A thuộc họ vi điều khiển 16Fxxx có các đặc tính ngoại vi sau:
- Ngôn ngữ lập trình đơn giản với 35 lệnh có độ dài 14 bit
- Tất cả các câu lệnh thực hiện trong một chu kì lệnh ngoại trừ một số câu lệnh
rẽ nhánh thực hiện trong hai chu kì lệnh Chu kì lệnh bằng 4 lần chu kì daođộng của thạch anh
- Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xóa khoảng 100ngàn lần
- Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8byte RAM và bộ nhớ
dữ liệu EEPROM với dung lượng 256x8 byte Số PORT I/O là 5 với 33pinI/O
- Khả năng ngắt (lên tới 14 nguồn cả ngắt trong và ngắt ngoài)
- Ngăn nhớ Stack được chia làm 8 mức
- Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp
- Dải điện thế hoạt động rộng: 2.0V đến 5.5V
- Nguồn sử dụng 25mA
Trang 15- Công suất tiêu thụ thấp:<0.6mA với 5V, 4MHz ; 20µA với nguồn 3V, 32KHz.
- Có 3 timer:
Timer 0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer 1: bộ đếm 16 bit với bộ chia tần số,có thể thực hiện chức năng đếmdựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.Timer 2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
- Hai bộ Capture/so sánh/điều chế độ rông xung
- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
- Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR, CS ở bên ngoài
Các đặc tính Analog:
- 8 kênh chuyển đổi ADC 10 bit
- Hai bộ so sánh
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
- Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
- 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 SerialProgramming) 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 16Hình 1.2: Hình ảnh thực tế và sơ đồ chân của PIC 16F877A.
Trang 17Hình 1.3: Sơ đồ khối bộ vi điều khiển PIC 16F877A.
Trang 18PIC 16F877A có tất cả 40 chân,được chia thành 5 PORT, 2 chân cấp nguồn, 2chân GND, 2 chân thạch anh và 1 chân dùng để RESET vi điều khiển.
- 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ủakênh thứ 2/ ngõ vào điện áp chuẩn thấp của bộ AD/ ngõ vào điện áp chẩn cao của
Trang 19+ 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ệuI2C
+ 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
Sơ đồ cụ thể của bộ nhớ dữ liệu PIC 16F877A như sau:
Trang 20Hình 1.4: Bộ nhớ dữ liệu của PIC.
- Bộ nhớ chương trình:
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dunglượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang ( từpage 0 đến page 3) Như vậy bộ nhớ chương trình có thể chứa được 8*1024=8192lệnh (vì mỗi lệnh sau khi mã hóa sẽ có dung lượng 1 word=14 bit)
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chươngtrình có dung lượng 13 bit Khi vi điều khiển được reset, bộ đếm chương trình sẽchỉ đến địa chỉ 0000h(reset vector) Khi có ngắt xảy ra bộ đếm chương trình sẽchỉ đến địa chỉ 0004h(interrupt vector)
Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ hóabởi bộ đếm chương trình
Trang 21Hình 1.5: Bộ nhớ chương trình PIC 16F877A.
Thanh ghi chức năng đặc biệt sfr
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập vàđiều khiển các khối chức năng được tích hợp trong vi điều khiển Có thể phânthanh ghi SFR làm 2 loại: thanh ghi SFR liên quan đến chức năng bêntrong(CPU) và thanh ghi SFR dùng để thiết lập và điều khiển các khối bên ngoài(ví dụ ADC…) Phần này sẽ đề cập đến các thanh ghi liên quan đến các chứcnăng bên trong Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng
sẽ được nhắc đến khi ta đề cập đến các khối chức năng đó
Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả thực hiện
phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong
bộ nhớ dữ liệu
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi,
cho phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các
Trang 22Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh): thanh ghi cho phép đọc và ghi,
chứa các bit diều khiển và các cờ hiệu khi Timer 0 bị tràn, ngắt ngoại vi RB0/INT
và ngắt interrupt-on-change tại các chân của PORTB
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối
chức năng ngoại vi
Thanh ghi PIR1 (0Ch) : chứa cờ ngắt của các khối chức năng ngoại vi, các
ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức
năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi,
các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ
reset của vi điều khiển
Trang 23 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 quathanh ghi FSG(File Select Register) Đây là các thanh ghi dữ liệu thông thường,người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanhghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ chochương trình
2.2.5Stack.
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là mộtvùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL được thực hiệnhay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chươngtrình PC tự động được vi điều khiển cất vào trong stack Khi một trong các lệnhRETURN, RETLW khi RETFIE được thực thi, giá trị PC sẽ tự động lấy ra từtrong stack, vi điều khiển sẽ thực hiện tiếp chương trình theo đúng quy trình địnhtrước
Bộ nhớ Stack trong vi điều khiển PIC họ 16F887xA có khả năng chứa được 8địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ nhớ Stacklần thứ 9 sẽ ghi đè lên giá trị Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lầnthứ 10 sẽ ghi đè giá trị 6 vào Stack lần thứ 2
Cần chú ý là không có cờ hiệu nào chi biết trạng thái stack, do đó ta khôngbiế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 PICcũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toànđược điều khiển bởi CPU
2.2.6Các cổng xuất, nhập của PIC 16F877A.
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng đểtương tác với thế giới bên ngoài Sự tương tác rất đa dạng và thông qua trìnhtươ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
Trang 24Một cổng xuất nhập của vi điều khiển gồn nhiều chân (I/O pin), tùy theo cách
bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượngchân trong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tíchhợp sẵn bên trong các đặc tính giao tiếp ngoại vi bên cạnh chức năng là công xuấtnhập thông thường, một số chân xuất nhập còn có thêm các chức năng khác đểthể hiện sự tác động của các đặc tính ngoại vi nếu trên đối với thế giới bên ngoài.Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xáclập và điều khiển được thông qua các thanh ghi SFR liên quan đến các chân xuấtnhập đó
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,PORTC, PORTD, và PORTE Cấu trúc và chức năng của cổng xuất nhập sẽ được
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 (MasterSynchronous Serial Port)
Các thanh ghi SFR liên quan đến PORTA bao gồm:
- PORTA(địa chỉ 05h) : chứa giá trị các pin trong PORTA
- TRISA (địa chỉ 85h) : điều khiển xuất nhập
- CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh
- CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp
- ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC
Port B
Trang 25PORTB (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ìnhnạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB cònliên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năngđiện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
- PORTB(địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
- TRISB(địa chỉ 86h, 186h) : điều khiển xuất nhập
- OPTION_REG(địa chỉ 81h,181h): điều khiển ngắt ngoại vi và bộ Timer0
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
Port D
PORTD (RPD) gồm 8 pin 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ẩ giao tiếp PSP (parallel slavePort)
Các thanh ghi gồm :
- PORTD : chứa giá trị các pin trong PORTD
- TRISD : điều khiển xuất nhập
Port E
PORTE (RPE)gồm 3 pin 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ácchân điều khiển củag 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
Trang 26- PSP ADCON1 : thanh ghi điều khiển khối ADC.
2.2.7Các Timer.
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úccủa Timer0 cho phép ta lựa chọn xung clock tác động và cạch tích cực của xungclock Ngắt Timer0 sẽ xuất hiện khi Timer 0 bị tràn
Bít TMR0IE (INTCON<5>) là bít điều khiển của Timer0 TMR0IE=1 chophép ngắt Timer0 tác động TMR0IE=0 không cho phép ngắt Timer0 tác động
Sơ đồ khối của Timer0 như sau :
Hình 1.6: Sơ đồ khối của Timer0.
Muốn Timer 0 hoạt động ở chế độ Timer ta clear bit TOSC, khi đó giá trị thanhghi 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