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

Nghiên cứu thiết kế và chế tạo mạch đo các thông số và điều khiển nhiệt độ trong nhà kính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.56 MB, 45 trang )

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM
KHOA CƠ ĐIỆN

ĐỒ ÁN VI XỬ LÝ TRONG ĐIỀU KHIỂN
Đề tài:

“Nghiên cứu thiết kế và chế tạo mạch đo các thông số và điều
khiển nhiệt độ trong nhà kính’’
Giáo viên hướng dẫn:
Nhóm sinh viên thực hiện:
Lớp

Lại Văn Song
Lê Minh Hà
566487
Hàn Việt Đỉnh 566480
Lã Việt Anh
566463
K56TDH

Năm 2017

1


Giới thiệu
Một trong những lợi ích của việc trồng cây trong nhà kính là khả năng kiểm soát
tất cả các khía cạnh của môi trường sản xuất . Một trong những yếu tố chính ảnh
hưởng đến cây trồng tăng trưởng là nhiệt độ . Cây trồng khác nhau có nhiệt
độ sinh trưởng tối ưu khác nhau và các tối ưu nhiệt độ có thể khác nhau cho gốc
và môi trường , và cho giai đoạn phát triển khác nhau trong cuộc sống của chúng


.Vì chúng ta thường quan tâm đến tăng trưởng và phát triển cây trồng nhanh
chóng , cần phải cung cấp những tối ưu nhiệt độ trong suốt toàn bộ chu kỳ. Nếu
một nhà kính giống như một xây dựng khu dân cư và thương mại , kiểm soát
nhiệt độ sẽ được dễ dàng hơn kể từ khi các tòa nhà được cách nhiệt để các tác
động của điều kiện bên ngoài là giảm đáng kể. Tuy nhiên , nhà kính được thiết
kế để cho phép nhiều ánh sáng càng tốt để nhập vào trồng khu vực . Kết quả là,
các tính chất cách điện của cấu trúc được giảm đi đáng kể và kinh nghiệm môi
trường phát triển ảnh hưởng đáng kể từ liên tục biến động điều kiện thời tiết .
năng lượng mặt trời bức xạ ( ánh sáng và nhiệt ) đến tác động lớn nhất đối với
môi trường ngày càng tăng, kết quả là thách thức duy trì nhiệt độ ngày càng tăng
tối ưu khó kiểm soát.
Vậy nên chúng em là đề tài “Nghiên cứu thiết kế và chế tạo mạch đo các thông
số và điều khiển nhiệt độ trong nhà kính’’ để góp phần ứng dụng công nghệ kỹ
thuật vào nhà kính nhằm giảm đáng kể rủi ro do hiệu ứng nhà kính.
1.2 Mục tiêu của đề tài
Nghiên cứu và xây dựng mô hình điều khiển dựa trên vi điều khiển AT89S52.
Từ đó phát triển cao hơn, đưa bộ điều khiển áp dụng vào trong thực tế.
Làm quen với việc tính toán thiết kế , chế tạo, nguyên lý hoạt động của mô hình
và củng cố phần lý thuyết về mạch điện tử, cảm biến và mạch điều khiển bằng vi
điều khiển
1.3 Nội dung đề tài
2


Việc thực hiện nghiên cứu đề tài ‘‘Nghiên cứu thiết kếvàchếtạo mạch đo các
thông số và điều khiển nhiệt độ trong nhà kính’’. trong điều kiện :
- Thời gian thực hiện đề tài chỉ trong một học kỳ .
- Kinh nghiệm thực tế chưa nhiều
- Vật tư và linh kiện không đồng bộ
Vì vậy chúng em đã thực hiện nghiên cứu đề tài với những đặc điểm chính sau

đây:
- Lập trình bằng vi xử lý AT89S52-8051
- Thiết kết chế tạo mạch điều khiển nhiệt độ
- Thiết kết mô hình thí nghiệm nhà kính
- Tìm hiểu 1 số linh kiện có trong đồ án
- Các loại relay có trong đồ án
1.4 Phương pháp nghiên cứu
Phương pháp kế thừa: Kế thừa từ các tài liệu, công trình nghiên cứu trước đó về
hai mảng chính của đề tài: Cấu trúc vi điều khiển 8051 và điều khiển nhiệt độ
Phương pháp thực nghiệm kiểm chứng: Sau khi đã xây dựng xong cơ sở lý
thuyết của đề tài sẽ tiến hành thử nghiệm sự hoạt động trên các thiết bị hiện có.
Các bước tiến hành nghiên cứu là tìm hiểu cơ sở lý thuyết về vấn đề nghiên cứu,
tiến hành thiết kế chương trình điều khiển và mạch điều khiển, sau đó thử nghiệm
trên mô hình để đưa ra kết luận.

3


CHƯƠNG II: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN VÀ
CÁC THIẾT BỊ KHÁC

2.1 Vi điều khiển AT89S52
2.1.1 Tổng quan về AT89S52
AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất. Các sản phẩm
AT89S52 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên byte và
các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy
xuất dữ liệu nhanh trên RAM nội. Tập lệnh cung cấp một bảng tiện dụng của
những lệnh số học 8 bit gồm cả lệnh nhân và lệnh chia. Nó cung cấp những
hổ trợ mở rộng trên chip dùng cho những biến một bit như là kiểu dữ liệu
riêng biệt cho phép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển.

AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc
có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3
TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối
tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ONCHIP.
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
• 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ
ghi/xoá
• Tần số hoạt động từ: 0Hz đến 24 MHz
• 3 mức khóa bộ nhớ lập trình
• 3 bộ Timer/counter 16 Bit

4


• 128 Byte RAM nội.
• 4 Port xuất /nhập I/O 8 bit.
• Giao tiếp nối tiếp.
• 64 KB vùng nhớ mã ngoài
• 64 KB vùng nhớ dữ liệu ngoại.
• 4 µs cho hoạt động nhân hoặc chia

Hình 2.1 Sơ đồ khối của 8051

5


Hình 2.2 Sơ đồ khối AT89S52
2.1.2 Mô tả chân 89S52
a) Sơ đồ chân 89S52
Mặc dù các thành viên của họ

8051(ví dụ 8751, 89S52, 89C51,
DS5000) đều có các kiểu đóng vỏ khác
nhau, chẳng hạn như hai hàng chân
DIP (Dual In-Line Pakage), dạng vỏ
dẹt vuông QPF (Quad Flat Pakage) và
dạng chip không có chân đỡ LLC
(Leadless Chip Carrier) thì chúng đều
có 40 chân cho các chức năng khác
nhau như vào ra I/O, đọc RD , ghi WR
, địa chỉ, dữ liệu và ngắt. Cần phải lưu

6


ý một số hãng cung cấp một phiên bản 8051 có 20 chân với số cổng vào ra ít
hơn cho các ứng dụng yêu cầu thấp hơn. Tuy nhiên vì hầu hết các nhà phát
triển sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung
mô tả phiên bản này.
b) Chức năng của các chân 89S52
Port 0:từ chân 32 đến chân 39 (P0.0 _P0.7). Port 0 có 2 chức năng: trong
các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các
đường IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus
địa chỉ và bus dữ liệu.
Port 1:từ chân 1 đến chân 9 (P1.0 _ P1.7). Port 1 là port IO dùng cho giao
tiếp với thiết bị bên ngoài nếu cần.

Port 2:từ chân 21 đến chân 28 (P2.0 _P2.7). Port 2 là một port có tác dụng
kép dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với
các thiết bị dùng bộ nhớ mở rộng.


Port 3:từ chân 10 đến chân 17 (P3.0 _ P3.7). Port 3 là port có tác dụng kép.
Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên
hệ đến các đặc tính đặc biệt của 89S52 như ở bảng sau:

7


Bit

Tên

Chức năng chuyển đổi

P3.0

RXD

Ngõ vào dữ liệu nối tiếp.

P3.1

TXD

Ngõ xuất dữ liệu nối tiếp.

P3.2

INT0

Ngõ vào ngắt cứng thứ 0.


P3.3

INT1

Ngõ vào ngắt cứng thứ 1.

P3.4

T0

Ngõ vào TIMER/ COUNTER thứ 0.

P3.5

T1

Ngõ vào của TIMER/ COUNTER thứ 1.

P3.6

WR

Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.

P3.7

RD

Tín hiệu đọc bộ nhớ dữ liệu ngoài.

Bảng 2.1 Bảng chức năng P3

PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte
mã lệnh.
PSEN ở mức thấp trong thời gian 89S52 lấy lệnh. Các mã lệnh của
chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi
lệnh bên trong 89S52 để giải mã lệnh. Khi 89S52 thi hành chương trình trong
ROM nội, PSEN ở mức cao.
ALE (Address Latch Enable):
Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa
chỉ và dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở
chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và
dữ liệu khi kết nối chúng với IC chốt.

8


Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai
trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
EA (External Access):Tín hiệu vào EA (chân 31) thường được mắc lên
mức 1 hoặc mức 0. Nếu ở mức 1, 89S52 thi hành chương trình từ ROM nội.
Nếu ở mức 0, 89S52 thi hành chương trình từ bộ nhớ mở rộng. Chân EA được
lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89S52.
RST (Reset):Khi ngõ vào tín hiệu này
đưa lên mức cao ít nhất 2 chu kỳ máy, các
thanh ghi bên trong được nạp những giá trị
thích hợp để khởi động hệ thống. Khi cấp
điện mạch phải tự động reset.

Các giá trị tụ và điện trở được chọn là:
R1=10Ω, R2=220Ω, C=10 µF.

Hình 2.3 Sơ đồ kết nối chân RST

Các ngõ vào bộ dao động X1,
X2:
Bộ tạo dao động được tích hợp
bên trong 89S52. Khi sử dụng
89S52, người ta chỉ cần nối thêm
thạch anh và các tụ. Tần số thạch
anh tùy thuộc vào mục đích của người sử dụng, giá trị tụ thường được chọn là
33p.
Hình 2.4 Sơ đồ kết nối chân X1,X2

9


2.1.3 Tổ chức bên trong AT89S52
Bộ nhớ trong 89S52 bao gồm ROM và RAM. RAM trong 89S52 bao
gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữđịa chỉ hóa từng bit,
các bank thanh ghi và các thanh ghi chức năng đặc biệt.
AT89S52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những
vùng bộ nhớ riêng biệt cho chương trình và dữ liệu. Chương trình và dữ liệu
có thể chứa bên trong 89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ
nhớ chương trình và 64K byte dữ liệu bên ngoài.
Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:
Địa chỉ

Địa chỉ


Địa chỉ bit

byte

byte

RAM bên trong AT89S52 được phân chia như sau:

10

Địa chỉ bit


 Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
 RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
 RAM đa dụng từ 30H đến 7FH.
 Các thanh ghi chức năng đặc biệt từ 80H đến FFH
a) RAM đa dụng
RAM đa dụng có địa chỉ từ 30h – 7Fh có thể truy xuất mỗi lần 8 bit
bằng cách dùng chế độ định địa chỉ trực tiếp hay gián tiếp.
Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đích
như trên, ngoài các chức năng đặc biệt được đề cập ở phần sau.
b) RAM có thể định địa chỉ bit
Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM
đa dụng (truy xuât mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng
các lệnh xử lý bit.
c) Các bank thanh ghi
Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ
00h – 07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh.

Các bank thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7. Sau
khi khởi động thì hệ thống bank 0 được chọn sử dụng.
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh
ghi được truy xuất bởi các thanh ghi R0 đến R7. Viêc thay đổi bank thanh ghi
được thực hiện thông qua thanh ghi từ trạng thái chương trình (PSW).

11


d) Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89S52 được định dạng như một phần của RAM
trên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm
chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực
tiếp). Cũng như R0 đến R7, 89S52 có 21 thanh ghi có chức năng đặc biệt
(SFR: Special Function Register) ở vùng trên của RAM nội từ địa chỉ 80H
đến 0FFH.
Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:
Thanh ghi trạng thái chương trình (PSW: Program Status Word)
BIT

SYMBOL

ADDRESS

DESCRIPTION

PSW.7

CY


D7H

Cary Flag

PSW.6

AC

D6H

Auxiliary Cary Flag

PSW.5

F0

D5H

Flag 0

PSW4

RS1

D4H

Register Bank Select 1

PSW.3


RS0

D3H

Register Bank Select 0
00=Bank 0; address 00H÷07H
01=Bank 1; address 08H÷0FH
10=Bank 2; address 10H÷17H
11=Bank 3; address 18H÷1FH

PSW.2

OV

D2H

Overlow Flag

PSW.1

-

D1H

Reserved

PSW.0

P


DOH

Even Parity Flag

Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag):Cờ nhớ thường nó được dùng cho các lệnh
toán học: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn

12


và ngược lại C = 0 nếu phép toán cộng không tràn và phép trừ không có
mượn.
- Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng những giá trị
BCD (Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4
bit thấp nằm trong phạm vi điều khiển 0AH - 0FH. Ngược lại AC = 0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng.
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi
reset hệ thống và được thay đổi bởi phần mềm khi cần thiết.
Bảng 2.2 Bảng chọn Bank
RS1

RS0

BANK

0


0

0

0

1

1

1

0

2

1

1

3

Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương
ứng là Bank 0, Bank1, Bank2 và Bank3.
- Cờ tràn OV (Over Flag):
Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn toán
học.
- Bit Parity (P):

13



Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn với
thanh ghi A. Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn
chẵn. Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A
và P tạo thành số chẵn.
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của
Port nối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm trabit Parity sau
khi thu.
Thanh ghi TIMER
Vi Điều Khiển 89S52 có 3 timer 16 bit, mỗi timer có bốn cách làm
việc. Người ta sử dụng các timer để:
o Định khoảng thời gian.
o Đếm sự kiện.
o Tạo tốc độ baud cho port nối tiếp trong 89S52.
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở
những khoảng đều đặn và đặt cờ tràn timer. Cờ được dùng để đồng bộ hóa
chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ
vào hoặc gửi sự kiện ra các ngõ ra. Các ứng dụng khác có thể sử dụng việc
tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví
dụ đo độ rộng xung).
Thanh ghi ngắt (INTERRUPT)
Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo
tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ
bởi một chương trình khác.

14


Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng

dụng vi điều khiển. Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự
kiện và giải quyết sự kiện đó trong khi một chương trình khác đang thực thi.
- Tổ chức ngắt của 89S52:
Có 5 nguồn ngắt ở 89S52: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port
nối tiếp. Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và
được cho phép từng cái một bằng phần mềm. Mức độ ưu tiên của các ngắt
được lưu trong thanh ghi IP (Interrupt Priority) hay nói cách khác thanh ghi
IP cho phép chọn mức ưu tiên cho các ngắt (giá trị thanh ghi IP khi reset là
00h).
Bit

Ký hiệu

Địa chỉ bit

IP.7
IP.6
IP.5

_
_
ET2

_
_
BDH

IP.4

ES


IP.3

ET1

IP.2

EX1

IP.1

ET0

IP.0

EX0

Mô tả

Không được mô tả
Không được mô tả
Chọn mức ưu tiên
tại timer 2
BCH
Chọn mức ưu tiên
tại cổng nối tiếp.
BBH
Chọn mức ưu tiên
tại timer 1
BAH

Chọn mức ưu tiên
tại ngắt ngoài 1
B9H
Chọn mức ưu tiên
tại timer 0
B8H
Chọn mức ưu tiên
tại ngắt ngoài 0
Tóm tắt thanh ghi IP

cao (=1) hay thấp (=0)
cao (=1) hay thấp (=0)
cao (=1) hay thấp (=0)
cao (=1) hay thấp (=0)
cao (=1) hay thấp (=0)
cao (=1) hay thấp (=0)

 Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có nào có mức ưu tiên cao hơn sẽ
được phục vụ trước.

15


 Nếu 2 ngắt xảy ra đồng thời có cùng mức ưu tiên thì thứ tự ưu tiên
được thực hiện từ cao đến thấp như sau: ngắt ngoài 0 – timer 0 – ngắt ngoài 1
– timer 1 – cổng nối tiếp – timer 2.
 Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà
có một ngắt xảy ra với mức ưu tiên cao hơn thì chương trình này tạm dừng để
chạy một chương trình khác có mức ưu tiên cao hơn.
- Cho phép và cấm ngắt:

Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức
năng đặt biệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa
chỉ A8H.
Bit

Ký hiệu

Địa chỉ bit

Mô tả

IE.7

EA

AFH

Cho phép / Cấm toàn bộ

IE.6

_

AEH

Không được mô tả

IE.5

ET2


ADH

Cho phép ngắt từ Timer 2 (8052)

IE.4

ES

ACH

Cho phép ngắt port nối tiếp

IE.3

ET1

ABH

Cho phép ngắt từ Timer 1

IE.2

EX1

AAH

Cho phép ngắt ngoài 1

IE.1


ET0

A9H

Cho phép ngắt từ Timer 0

IE.0

EX0

A8H

Cho phép ngắt ngoài 0
Tóm tắt thanh ghi IE

Khi chấp nhận ngắt, giá trị được nạp vào PC gọi là vector ngắt. Nó là
địa chỉ bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở
bảng sau :

16


Ngắt

Cờ

Địa chỉ vector

Reset hệ thống


RST

0000H

Bên ngoài 0

IE0

0003H

Timer 0

TF0

000BH

Bên ngoài 1

IE1

0013H

Timer 1

TF1

001BH

Port nối tiếp


TI và RI

0023H

Timer 2

002BH

Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo
nghĩa này, nó giống ngắt: nó ngắt chương trình chính và nạp cho PC giá trị
mới.

2.2 Cảm biến DHT11
Giới thiệu:
- DHT11 là cảm biến nhiệt độ và độ ẩm. Nó ra đời sau và được sử dụng thay
thế cho dòng SHT1x ở những nơi không cần độ chính xác cao về nhiệt độ và
độ ẩm.

17


- DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1
dây.
- Thông số kỹ thuật:
o Do độ ẩm: 20%-95%
o Nhiệt độ: 0-50ºC
o Sai số độ ẩm ±5%
o Sai số nhiệt độ: ±2ºC
2. Nguyên lý hoạt động:

- Sơ đồ kết nối vi xử lý:

18


- Nguyên lý hoạt động:
Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2
bước:
o Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
o Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và
nhiệt độ đo được.
- Bước 1: gửi tín hiệu Start

19


o MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong
khoảng thời gian >18ms. Trong Code mình để 25ms. Khi đó DHT11 sẽ hiểu
MCU muốn đo giá trị nhiệt độ và độ ẩm.
o MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
o Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp. Nếu >40us
mà chân DATA ko được kéo xuống thấp nghĩa là ko giao tiếp được với
DHT11.
o Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong
80us. Bằng việc giám sát chân DATA, MCU có thể biết được có giao tiếp
được với DHT11 ko. Nếu tín hiệu đo được DHT11 lên cao, khi đó hoàn thiện
quá trình giao tiếp của MCU với DHT.
- Bước 2: đọc giá trị trên DHT11
o DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte. Trong đó:
Byte 1: giá trị phần nguyên của độ ẩm (RH%)

Byte 2: giá trị phần thập phân của độ ẩm (RH%)
Byte 3: giá trị phần nguyên của nhiệt độ (TC)
Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
Byte 5 : kiểm tra tổng.
Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm và
nhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa.
o Đọc dữ liệu:
Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1 về
MCU, tương ứng chia thành 5 byte kết quả của Nhiệt độ và độ ẩm.
Bit 0:

20


Bit 1:

Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11
kéo lên 1. Nếu chân DATA là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn
tại 70us là 1. Do đó trong lập trình ta bắt sườn lên của chân DATA, sau đó
delay 50us. Nếu giá trị đo được là 0 thì ta đọc được bit 0, nếu giá trị đo được
là 1 thì giá trị đo được là 1. Cứ như thế ta đọc các bit tiếp theo.

21


2.3 Màn hiển thị LCD
2.3.1 Giới thiệu
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: 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ẻ…
2.3.2 Tổng quan về LCD
Hình dáng và kích thước:
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên
hình 2.7 là loại LCD thôngdụng.

Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên
trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh
số thứ tự và đặt tên như hình 2.8 :

22


Chức năng các chân
Chân Ký hiệu
1
2
3
4

5
6

7 - 14

15
16

Mô tả


Vss

Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch
điều khiển
VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V
của mạch điều khiển
VEE Điều chỉnh độ tương phản của LCD.
RS Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND)
hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ
“ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
R/W Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD
hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc.
E
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các
lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi
bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu
chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh
lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào
chân E xuống mức thấp.
DB0 - Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ
DB7 sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB
là DB7
Nguồn dương cho đèn nền

GND cho đèn nền

Bảng 2.3 Chức năng các chân của LCD
* Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua các chân DBx.
Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD thông qua các chân
DBx.

23


Hình 2.5 Sơ đồ khối LCD HD44780

Giải thích sơ đồ khối
a> Các thanh ghi :
Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR
(Instructor Register) và thanh ghi dữ liệu DR (Data Register)
- Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua
tám đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ
ràng. Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi
IR. Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ
tra bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó.
VD : Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7…DB0)
Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110
- Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng
RAM DDRAM hoặc CGRAM
(ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho

24



MPU (ở chế độ đọc). Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội bên
trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc
khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng
RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho MPU.
=> Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ
2 thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập
đối với hai chân RS và R/W theo mục đích giao tiếp.
RS

R/W

Chức năng

0

0

Ghi vào thanh ghi IR để ra lệnh cho LCD

0

1

Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6

1

0

Ghi vào thanh ghi DR


1

1

Đọc dữ liệu từ DR

Bảng 2.3 Chức năng chân RS và R/W theo mục đích sử dụng
b> Cờ báo bận BF: (Busy Flag)
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một
khoảng thời gian để hoàn tất. Khi
đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua mọi giao tiếp
với bên ngoài và bật cờ BF (thông qua chân DB7 khi có thiết lập RS=0,
R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong việc, nó
sẽ đặt cờ BF lại mức 0.
c> Bộ đếm địa chỉ AC : (Address Counter)
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM
(DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối
với 2 vùng RAM theo kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh
ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa
vùng RAM tương tác đã được bao hàm trong mã lệnh.
Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn
vị và nội dung của AC được xuất ra cho MPU thông qua DB0-DB6 khi có
thiết lập RS=0 và R/W=1 (xem bảng tóm tắt RS - R/W).
Lưu ý: Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh mà
được cập nhật sau khi cờ BF lên mức cao (not busy), cho nên khi lập trình
hiển thị, bạn phải delay một khoảng tADD khoảng 4uS-5uS (ngay sau khi
BF=1) trước khi nạp dữ liệu mới. Xem thêm hình bên dưới.

25



×