BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
ISO 9001:2008
THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG ĐIỀU
KHIỂN ĐỘNG CƠ THEO NHIỆT ĐỘ
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
NGÀNH ĐIỆN TỰ ĐỘNG CÔNG NGHIỆP
HẢI PHÒNG – 2017
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
ISO 9001:2008
THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG ĐIỀU
KHIỂN ĐỘNG CƠ THEO NHIỆT ĐỘ
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
NGÀNH ĐIỆN TỰ ĐỘNG CÔNG NGHIỆP
Sinh viên: Kiều Công Hòa
Ngƣời hƣớng dẫn: Ths. Nguyễn Đoàn Phong
HẢI PHÒNG – 2017
Cộng hoà xã hội chủ nghĩa Việt Nam
Độc lập – Tự Do – Hạnh Phúc
—————-o0o—————–
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
NHIỆM VỤ ĐỀ TÀI TỐT NGHIỆP
Sinh viên : Kiều Công Hòa – MSV : 1312102017
Lớp : ĐC1201- Ngành Điện Tự Động Công Nghiệp
Tên đề tài : Thiết kế và xây dựng hệ thống điều khiển động cơ
theo nhiệt độ.
NHIỆM VỤ ĐỀ TÀI
1. Nội dung và các yêu cầu cần giải quyết trong nhiệm vụ đề tài tốt nghiệp (
về lý luận, thực tiễn, các số liệu cần tính toán và các bản vẽ).
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
2. Các số liệu cần thiết để thiết kế, tính toán
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
……………………………………………………………………………………………………………..
3. Địa điểm thực tập tốt nghiệp………………………………………………………………..:
CÁC CÁN BỘ HƢỚNG DẪN ĐỀ TÀI TỐT NGHIỆP
Ngƣời hƣớng dẫn thứ nhất:
Họ và tên :
Học hàm, học vị :
Cơ quan công tác :
Nội dung hƣớng dẫn :
Nguyễn Đoàn Phong
Thạc sĩ
Trƣờng Đại học dân lập Hải Phòng
Toàn bộ đề tài
Ngƣời hƣớng dẫn thứ hai:
Họ và tên :
Học hàm, học vị :
Cơ quan công tác :
Nội dung hƣớng dẫn :
Đề tài tốt nghiệp đƣợc giao ngày tháng năm 2017.
Yêu cầu phải hoàn thành xong trƣớc ngày……tháng…….năm 2017.
Đã nhận nhiệm vụ Đ.T.T.N
Sinh viên
Kiều Công Hòa
Đã giao nhiệm vụ Đ.T.T.N
Cán bộ hƣớng dẫn Đ.T.T.N
Th.S Nguyễn Đoàn Phong
Hải Phòng, ngày……..tháng……..năm 2017
HIỆU TRƢỞNG
GS.TS.NGƢT TRẦN HỮU NGHỊ
PHẦN NHẬN XÉT TÓM TẮT CỦA CÁN BỘ HƢỚNG DẪN
1.Tinh thần thái độ của sinh viên trong quá trình làm đề tài tốt nghiệp.
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
2. Đánh giá chất lƣợng của Đ.T.T.N ( so với nội dung yêu cầu đã đề ra trong
nhiệm vụ Đ.T.T.N, trên các mặt lý luận thực tiễn, tính toán giá trị sử dụng,
chất lƣợng các bản vẽ..)
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
3. Cho điểm của cán bộ hƣớng dẫn
( Điểm ghi bằng số và chữ)
Ngày……tháng…….năm 2017
Cán bộ hƣớng dẫn chính
(Ký và ghi rõ họ tên)
NHẬN XÉT ĐÁNH GIÁ CỦA NGƢỜI CHẤM PHẢN BIỆN
ĐỀ TÀI TỐT NGHIỆP
1. Đánh giá chất lƣợng đề tài tốt nghiệp về các mặt thu thập và phân tích số
liệu ban đầu, cơ sở lý luận chọn phƣơng án tối ƣu, cách tính toán chất lƣợng
thuyết minh và bản vẽ, giá trị lý luận và thực tiễn đề tài.
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
2. Cho điểm của cán bộ chấm phản biện
( Điểm ghi bằng số và chữ)
Ngày……tháng…….năm 2017
Ngƣời chấm phản biện
(Ký và ghi rõ họ tên)
MỤC LỤC
LỜI MỞ ĐẦU …………………………………………………………………………………….. 1
CHƢƠNG 1. TỔNG QUAN VỀ CÁC PHẦN TỬ ………………………………… 2
1.1. TỔNG QUAN VỀ PIC16F877A …………………………………………………… 2
1.1.1. Chức năng và sơ đồ chân vi điều khiển PIC16F877A…………………. 2
1.1.2. Một vài thông số về vi điều khiển PIC16877A ………………………….. 3
1.1.3. Sơ đồ khối vi điều khiển PIC16F877A
……………………………………… 4
1.1.4. Tổ chức bộ nhớ ……………………………………………………………………… 5
1.1.5. Các cổng xuất nhập của PIC16F877A
………………………………………. 9
1.1.6. Timer0
………………………………………………………………………………… 11
1.1.7. Timer1
………………………………………………………………………………… 13
1.1.8. Timer2
………………………………………………………………………………… 15
1.2. THIẾT BỊ LCD …………………………………………………………………………. 16
1.2.1. Hình dáng kích thƣớc
……………………………………………………………. 17
1.2.2. Các chân chức năng ……………………………………………………………… 18
1.2.3. Sơ đồ khối của HD44780
………………………………………………………. 19
1.2.4. Tập lệnh của LCD
………………………………………………………………… 22
1.2.5. Đặc tính của các chân giao tiếp ……………………………………………… 27
CHƢƠNG 2. THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN ĐỘNG CƠ DC
THEO NHIỆT ĐỘ ……………………………………………………………………………. 28
2.1. SƠ ĐỒ KHỐI
……………………………………………………………………………. 28
2.2. THIẾT KẾ CÁC KHỐI ……………………………………………………………… 28
2.2.1. Mạch đo nhiệt độ …………………………………………………………………. 28
2.2.2. Khối xử lý …………………………………………………………………………… 30
2.2.3. Khối ADC (tích hợp trong PIC16F877A) ……………………………….. 31
2.2.4. Khối khuếch đại hiệu chỉnh …………………………………………………… 32
2.2.5. Khối công suất …………………………………………………………………….. 33
2.2.6. Khối hiển thị ……………………………………………………………………….. 38
2.2.7. Motor DC ……………………………………………………………………………. 38
2.2.8. Sơ đồ mạch nguyên lý hệ thống
……………………………………………… 43
CHƢƠNG 3. CHƢƠNG TRÌNH ĐIỀU KHIỂN…………………………………. 45
3.1. LƢU ĐỒ THUẬT TOÁN
…………………………………………………………… 45
3.2. CHƢƠNG TRÌNH ĐIỀU KHIỂN ……………………………………………….. 46
KẾT LUẬN ………………………………………………………………………………………. 56
TÀI LIỆU THAM KHẢO …………………………………………………………………. 58
1
LỜI MỞ ĐẦU
Ngày nay với những ứng dụng của khoa học kĩ thuật tiên tiến, thế giới
của chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Trong
đó sự phát triển của kĩ thuật tự động hóa đã đóng góp vai trò quan trọng, tạo
ra hàng loạt những thiết bị với các đặc điểm nổi bật nhƣ: sự chính xác, an
toàn, tốc độ nhanh, gọn nhẹ … Ý tƣởng đề tài xuất phát từ bài toán thực tế là
thiết kế hệ thống đo nhiệt độ phòng, từ đó dựa vào nhiệt độ đặt để điều khiển
động cơ phù hợp với sự thay đổi nhiệt độ.
Đề tài “Thiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt
độ”, do Thạc sĩ Nguyễn Đoàn Phong hƣớng dẫn. Là sự kết hợp của nhiều
mạch điện tử cơ bản cũng nhƣ sử dụng phần tử vi điều khiển trong chƣơng
trình giảng dạy, là sự tổng hợp kiến thức các môn cơ sở ngành và kĩ năng thực
hành trong môn Vi điều khiển. Đề tài của em gồm 3 chƣơng:
Chƣơng 1. Tổng quan về các phần tử
Chƣơng 2. Thiết kế hệ thống điều khiển động cơ DC theo nhiệt độ
Chƣơng 3. Chƣơng trình điều khiển
2
CHƢƠNG 1.
TỔNG QUAN VỀ CÁC PHẦN TỬ
1.1. TỔNG QUAN VỀ PIC16F877A
1.1.1. Chức năng và sơ đồ chân vi điều khiển PIC16F877A
PIC16F877A là dòng PIC phổ biến nhất hiện nay, đủ mạnh về tính năng,
bộ nhớ đủ cho hầu hết các ứng dụng thông thƣờng.
Hình 1.1: Vi điều khiển PIC 16F877A/PIC16F874A và các dạng sơ đồ chân.
3
Chức năng của PIC16F877A:
– Có khả năng xử lí ngắt từ nhiều nguồn ngắt khác nhau nhƣ ngắt ngoài, ngắt
tràn Timer, ngắt ngoại vi nhƣ ngắt ADC…
– Chức năng CCP gồm Comporator (bộ so sánh), capture và PWM (điều chế
độ rộng xung).
– Chức năng giao tiếp đồng bộ nối tiếp SSP gồm 2 giao tiếp SPI và I2C.
– Chức năng bộ truyền phát không đồng bộ đa năng nối tiếp USART ở dạng
module phần cứng phục vụ cho giao tiếp theo chuẩn RS-232.
– Bộ ADC 10 bit chuyển đổi tín hiệu tƣợng tự sang tín hiệu số.
– Chức năng giao tiếp song song PSP.
1.1.2. Một vài thông số về vi điều khiển PIC16877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 37 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à 20MHz với một chu kì lệnh là 200ms. Bộ nhớ
chƣơng trình 8Kx14 bit, bộ nhớ dữ liệu 368×8 byte RAM và bộ nhớ dữ liệu
EEPROM với dung lƣợng 256×8 byte. Số PORT I/O là 5 với 33 pin I/O.
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.
-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) 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.
4
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.
– Có thể hoạt động với nhiều dạng Oscillator.
1.1.3. Sơ đồ khối vi điều khiển PIC16F877A
Sơ đồ khối của PIC16F877A:
Hình 1.2: Sơ đồ khối vi điều khiển PIC16F877A.
5
1.1.4. Tổ chức bộ nhớ
Cấu trúc bộ nhớ vi điều khiển PIC16F877A bao gồm bộ nhớ chƣơng
trình (Program memory) và bộ nhớ dữ liệu (Data Memmory).
1.1.4.1. Bộ nhớ chƣơng trình
Bộ nhớ chƣơng trình của vi điều khiển PIC16F877A là bộ nhớ flash,
dung lƣợng bộ nhớ 8K word (1 word = 14 bit) và đƣợc phân thanh nhiều
trang (từ page 0 đến page 3). Nhƣ vậy bộ nhớ chƣơng trình có khả năng chứa
đƣợc 8×1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lƣợng 1
word = 14 bit).
Để mã hóa đƣợc địa chỉ của 8K word bộ nhớ chƣơng trình có dung
lƣợng 3 bit (PC<12:0>).
Khi vi điều khiển đƣợc reset, bộ đếm chƣơng trình sẽ chỉ đến địa chỉ
0000h (Reset vector). Khi có ngắt xảy ra, bộ đếm chƣơng trình sẽ chỉ đến địa
chỉ 0004h (Interrupt vector).
Bộ nhớ chƣơng trình không bao gồm bộ nhớ stack và không đƣợc địa chỉ
hóa bởi bộ đếm chƣơng trình.
Hình 1.3: Bộ nhớ chƣơng trình PIC16F877A.
6
1.1.4.2. Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM đƣợc chia ra làm nhiều
bank. Đối với PIC16F877A bộ nhớ dữ liệu đƣợc chia ra làm 4 bank. Mỗi
bank có dung lƣợng 28 byte, bao gồm các thanh ghi có chức năng đặc biệt
SFR (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi
mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại
trong bank. Các thanh ghi SFR thƣờng xuyên đƣợc sử dụng (ví dụ nhƣ thanh
ghi STATUS) sẽ đƣợc đặt ở tất cả các bank của bộ nhớ dữ liệu giúp thuận tiện
trong quá trình truy xuất và làm giảm bớt lệnh của chƣơng trình. Sơ đồ cụ thể
của bộ nhớ dữ liệu PIC16F877A nhƣ sau:
Hình 1.4: Sơ đồ bộ nhớ dữ liệu PIC16F877A.
7
1.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 ghi SFR thành 2 loại: thanh ghi SFR liên quan đến các chức
năng bên trong (CPU) và thanh ghi SFR dùng để thiết lập và điều khiển các
khối chức năng bên ngoài (ADC, PWM,…).
– 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 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.
8
– Thanh ghi PIE2 (8Dh): chứa các bit điều khiển 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.
1.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 ghi FSR (File Select Register). Đây là các thanh ghi dữ liệu thông
thƣờng, ngƣời sử dụng có thể tùy theo mục đích chƣơng trình mà có thể dùng
các thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số
phục vụ cho chƣơng trình.
1.1.4.3. Stack
Stack không nằm trong bộ nhớ chƣơng trình hay bộ dữ liệu mà là một
vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL đƣợc thực
hiện hay khi một ngắt xảy ra làm chƣơng trình bị rẽ nhánh, giá trị của bộ đếm
chƣơng trình PC tự động đƣợc vi điều khiển cất vào trong stack. Khi một
trong các lệnh RETURN, RETLW hay RETFIE đƣợc thực thi, giá trị PC sẽ tự
9
độ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 quy trình định trƣớc.
Bộ nhớ stack trong vi điều khiển PIC họ 16Fxxxx có khả năng chứa
đƣợc 8 địa chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ
nhớ stack lần thứ 9 sẽ ghi đè lên giá trị cất vào stack lần đầu tiên và giá trị cất
vào stack lần thứ 10 sẽ ghi đè lên giá trị 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.
1.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ƣơng tác vớ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.
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA,
PORTB, PORTC, PORTD, PORTE.
1.1.5.1. Cổng PORTA
PORTA (RPA) 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 ghi TRISA (địa chỉ 85h). Muốn xác lập chức năng của một chân
trong PORTA là input, ta “set” bit điều khiển tƣơng ứng với chân đó trong
thanh ghi TRISA và ngƣợc lại, muốn xác lập chức năng của một chân trong
PORTA là output, ta “clear” bit điều khiển tƣơng ứng với chân đó trong thanh
ghi TRISA. Thao tác này hoàn toàn tƣơng đối với các PORT và các thanh ghi
điều khiển tƣơng ứng TRIS ( đối với PORTA là TRISA, PORTB là TRISB,
PORTC là TRISC,….). Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so
10
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 Synchronous Serial Port).
Các thanh ghi SFR liên quan đến PORTA 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.
1.1.5.2. Cổng PORTB
PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tƣơng
ứng là TRISB. Bên cạnh đó một số chân của PORTB còn đƣợc sử dụng trong
quá trình nạp chƣơng trình cho vi điều khiển với các chế độ nạp khác nhau.
PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn đƣợc tích
hợp chức năng điện trở kéo lên đƣợc điều khiển bởi chƣơng trình.
Các thanh ghi SFR liên quan đến PORTB 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.
1.1.5.3. Cổng PORTC
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.
11
1.1.5.4. Cổng PORTD
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 gồm:
– Thanh ghi PORTD: chứa giá trị các pin trong PORTD.
– Thanh ghi TRISD : điều khiển xuất nhập.
– Thanh ghi TRISE: điều khiển xuất nhập PORTE và chuẩn giao tiếp
PSP.
1.1.5.5. PORTE
PORTE (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 có 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 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.
– SDCON1: thanh ghi điều khiển khối ADC.
1.1.6. Timer0
Đâ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ủa Timer0 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 (INTCIN<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 Timer0 nhƣ sau:
12
Hình 1.5: Sơ đồ khối của Timer0.
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 Timer0 xuấ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ộ đế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
13
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ó đƣợc hỗ 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 bit PS2:PS0 (OPTION_REG<2:0>) xác
định tỉ số chia tần số của prescaler. Xem lại thanh ghi OPTION_REG để xác
định lại một cách chi tiết về các bit điều khiển trê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 làm thay đổi đối tƣợng tác động của prescaler.
Khi đối tƣợ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.
1.1.7. Timer1
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ển của Timer1 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ủa oscillator) và chế độ đếm (counter) với xung kích là xung phản
ánh các sự kiện cần đếm lấ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ệc lựa chọn xung tác
14
động (tƣơng ứng với việc lựa chọn chế độ hoạt động là timer hay counter)
đƣợc điều khiển bởi bit TMR1CS (TICON<1>). Sau đây là sơ đồ khối của
Timer1:
Hình 1.6: 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ởi một trong hai khối CCP(Capture/Compare/PWM).
Khi bit T1OSCEN (T1CON<3>) đƣợc set, Timer1 sẽ lấy xung clock từ
hai chân RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm. Timer 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
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 T1SYNC
(T1CON<2>).
Khi T1SYNC=1 xung đếm lấy từ bên ngoài sẽ không đƣợc đồng bộ hóa
với xung clock 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 đồng bộ, Timer1 không thể đƣợc sử dụng
15
để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse width
modulation).
Khi T1SYNC=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 động khi vi điều khiển
đang ở chế độ sleep.
Các thanh ghi liên quan đến Timer1 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.
1.1.8. Timer2
Timer2 là bộ định thời 8 bit và đƣợc hỗ trợ bởi hai bộ chia tần số
prescaler và postcaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit
cho phép ngắt Timer2 tá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:6 và đƣợc điều khiển bởi các bit T2CKPS1:T2CKPS0
(T2CON<1:0>)).
Timer2 còn đƣợc hỗ trợ 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. Khi reset thanh ghi PR2 đƣợc nhận giá trị mặc định FFh.
Ngõ ra của Timer2 đƣợc đƣa qua bộ chia tần số postcaler với các mức
chia từ 1:1 đến 1:16. Postcaler đƣợc điều khiển bởi 4 bit T2OUTPS3:
T2OUTPS0. Ngõ ra của postcaler đóng vai trò quyết định trong việc điều
khiển cờ ngắt.
16
Hình 1.7:Sơ đồ khối Timer2.
Ngoài ra ngõ ra của Timer2 còn đƣợc kết nối với khối SSP, do đó
Timer2 còn đóng vai trò tạo ra xung clock đồng bộ cho khối SSP.
Các thanh ghi liên quan đến Timer2 gồm:
– INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ các ngắt
(GIE và 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.
1.2. THIẾT BỊ LCD
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) đƣợc sử dụng
trong rất nhiều các ứng dụng của VĐK. LCD có rất nhiều ƣu điểm so với các
dạng hiển thị khác nhƣ nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ,
số và kí tự đồ họa), dễ dàng đƣa vào mạch ứng dụng theo nhiều giao thức giao
tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ … Trong đề tài
này em sử dụng HD44780 của Hitachi, một loại thiết bị hiển thị LCD rất
thông dụng ở nƣớc ta.