You are on page 1of 34

Trường đại học Bách Khoa Hà Nội

Viện Điện
Báo cáo môn học Đồ án I

Đề tài:Thiết kế mạch đo nhiệt độ, độ ẩm


gửi kết quả đo ra màn hình máy
tính và LCD
Giảng viên hướng dẫn: Th.S Lê Thị Thanh Hà
Th.S Lê Khánh Thành
Sinh viên thực hiện: Phạm Tuấn Anh 20181331
Ngô Duy Lộc 20181584
Nguyễn Đức Hải 20181454
Trần Minh Hoàng 20181496

Hà Nội, tháng 6 năm 2021

1
MỤC LỤC
A: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ ………………………………………Trang 3
B: NỘI DUNG…………………………………………..…………………Trang 4
I: Tổng quan……………………………………………… …………………Trang 4

1. Giới thiệu chung hệ thống đo.....................................................Trang 4


2. Sơ lược các phương pháp đo nhiệt độ, độ ẩm............... Trang 5
3. Lựa chọn phương pháp đo, cảm biến.........................................Trang 6
II: Lựa chọn thiết bị phần cứng…………………………………….. Trang 6
1. Sơ đồ tổng quan của hệ thống……………………………………….Trang 6
2. Khối cảm biến……………………………………………………….…Trang 7
3. Khối vi điều khiển………………………………………………….... Trang10
a. Sơ đồ và chức năng các chân……………………………… .Trang10
b. Bộ Counter/Timer( bộ đếm/ định thời)…………………… ..Trang13
c. Các ngắt của vi điều khiển ………………………………… Trang17
4. Khối hiển thị………………………………………………………… .Trang 19
a. Hiển thị ra LCD………………………………………………… Trang 19
b. Vi điều khiển giao tiếp với máy tinh và hiển thị…………… .Trang 21
III: CHƯƠNG TRÌNH PHẦN MỀM…………………………...…… Trang22
1. Sơ đồ nguyên lí mạch vẽ trên proteus…………………………..... Trang22
2. Lưu đồ thuật toán…………………………………………………… Trang23
3. Chương trình C viết trên KeilC 5………………………………… Trang24
C: KẾT QUẢ THU ĐƯỢC VÀ PHƯƠNG HƯỚNG HOÀN THIỆN..Trang33
I. Kết quả thu được…………………………………………………... Trang 33
II. Phương hướng hoàn thiện…………………………………….….Trang 33
TÀI LIỆU THAM KHẢO……………………………………………… Trang34

2
A. ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ
Trong ứng dụng hàng ngày, nhu cầu theo dõi nhiệt độ và độ ẩm ngày càng trở nên phổ
biến và thiết thực và sử dụng trong: Sản xuất chế biến nông nghiệp Hiển thị và thực thi
điều khiển (quạt gió, máy sấy, điều hòa,... hay báo động) Datalog dữ liệu về môi trường
tại một khu vực... Theo dõi môi trường, chế độ làm việc của một số các dây chuyền, thiết
bị có yêu cầu cao.
Khái niệm về đo nhiệt độ và độ ẩm đã có từ rất lâu, trong tất cả các đại lượng vật
lý thì nhiệt độ và độ ẩm được quan tâm nhiều nhất. Nhiệt độ và độ ẩm là yếu tố ảnh
hưởng trực tiếp đến tính chất của vật chất và môi trường sống. Trong công nghiệp sản
xuất và trong lĩnh vực đo lường điều khiển, quá trình đo và xử lí nhiệt độ, độ ẩm giữ một
vai trò quan trọng.
Trong các thiết bị đó có các thiết bị đòi hỏi về cảm biến đo và điều chỉnh nhiệt độ,
độ ẩm của không khí như điều hòa, chuông báo cháy, lò vi sóng… Do đó ta có thể thấy
tầm quan trọng và tính thực tế của việc đo và điều chỉnh nhiệt độ và độ ẩm trong các thiết
bị tự động hóa cũng như trong đời sống hàng ngày.
Ở đồ án này, chúng em nhận được đề tài thiết kế “Mạch đo nhiệt độ và độ ẩm cho
môi trường, dùng cảm biến đoDHT11”. Đây cũng là một trong những đề tài rất sát với
thực tế, mang tính ứng dụng thực tiễn rất cao. Điều đó càng tạo động lực và cảm hứng
cho sinh viên tìm tòi và nghiên cứu.
Để thực hiện đồ án tốt nhất thì chúng em đã phân công công việc cho từng thành
viên như sau:
Họ và Tên Công việc
Phạm Tuấn Anh Tổng hợp báo cáo
Nguyễn Đức Hải Nghiên cứu viết code
Ngô Duy Lộc Nghiên cứu, tìm hiểu phương thức hoạt động linh
kiện
Trần Minh Hoàng Phụ trách làm mạch thật

3
B. NỘI DUNG

I. Tổng quan

1.Giới thiệu chung hệ thống đo


Để thực hiện phép đo nào đó của một đại lượng nào đó thì tùy thuộc vào đặc tính của đại
lượng cần đo, điều kiện đó, cũng như độ chính xác theo yêu cầu của một phép đo mà ta
có thể thực hiện đo bằng nhiều cách khác nhau trên cơ sở của các hệ thống đo lường khác
nhau.

Sơ đồ khối của một hệ thống đo lường tổng quát:

Khối chuyển đổi: làm nhiệm vụ nhận trực tiếp các đại lượng vật lí đặc trưng cho đối
tượng cần đo, biến đổi các đại lượng thành các đại lượng vật lí thống nhất (dòng điện
hoặc điện áp) để thuận lợi cho việc tính toán.

Mạch đo: có nhiệm vụ tính toán biến đổi tín hiệu nhận được từ bộ chuyển đổi sao cho
phù hợp với yêu cầu thể hiện kết quả đo của bộ chỉ thị.

Khối chỉ thị: làm nhiệm vụ biến đổi tín hiệu điện nhận được từ mạch đo để thể hiện kết
quả đo.

2. Sơ lược các phương pháp đo nhiệt độ, độ ẩm


2.1 Sơ lược về phương pháp đo nhiệt độ

Nhiệt độ là đại lượng chỉ có thể đo gián tiếp trên cơ sở tính chất của vật phụ thuộc
nhiệt độ. Hiện nay chúng ta có nhiều nguyên lý cảm biến khác nhau để chế tạo cảm
biến nhiệt độ như: nhiệt điện trở, cặp nhiệt ngẫu, phương pháp quan dùa trên phân
bố 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ó hai phương pháp chính

4
Ở dải nhiệt độ thấp và trung bình phương pháp đo là phương pháp tiếp xúc, nghiã
là các chuyển đổi được lắp đặ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à không tiếp xúc (công cụ đặt ngoài môi
trường đo). Các thiết bị đo như: cảm biến quang, hỏa quang kế (Hỏa quang kế phát
xạ, hỏa quang kế cường độ sáng, hỏa quang kế màu sắc)…

2.2 Sơ lược về phương pháp đo độ ẩm

Độ ẩm là yếu tố có vai trò quan trọng trong cuộc sống con người, từ sức khỏe,
sinh hoạt, học tập, lao động sản xuất đến tầm quan trọng đối với hàng hóa, vật
dụng, sinh vật, máy móc... Xác định độ ẩm do đó trở thành một công việc không
thể thiếu để đảm bảo một môi trường sống và bảo quản tốt nhất mà ở đó, độ ẩm
luôn được giữ ở mức cân bằng và thích hợp nhất

Các phương pháp đo độ ẩm phổ biến hiện nay có:

+Phương pháp sấy khô: Dùng sức nóng làm bay hơi hết hơi nước trong mẫu. Cân
trọng lượng mẫu trước và sau khi sấy khô, từ đó tính ra phần trăm nước có trong
mẫu

+ Phương pháp chưng cất kín với một dung môi hữu cơ: Khi đun sôi dung môi hữu
cơ đã trộn lẫm với mẫu, dung môi bốc hơi và sẽ kéo theo nước trong mẫu. Dung
môi và nước gặp lạnh ngưng tụ ở ống đo có vạch chia làm hai lớp riêng biệt. Đọc
thể tích nước lắng ở phía dưới, từ đó tính ra phần trăm nước có trong mẫu

+ Phương pháp Karl Fischer: Dựa trên độ mất màu của iot. Ở nhiệt độ thường, iot
kết hợp với nước và SO2 thành HI không màu, theo phản ứng:

I2 + SO2 + 2H2O ↔ 2HI + H2SO4

Từ sự mất màu của dung dịch iot, ta có thể tính phần trăm lượng nước có trong
mẫu. Phản ứng trên là phản ứng thuận nghịch, muốn cho phản ứng theo một chiều,
Fischer cho thực hiện phản ứng trong môi trường có piridin.

Phương pháp này có thể phát hiện được tới vết nước (lượng nước rất nhỏ) và nếu
sử dụng máy đo tự động có thể xác định đọ ẩm hàng loạt trong công nghiệp

5
+ Phương pháp sử dụng khúc xạ kế: Khi đi từ một môi trường (không khí) vào một
môi trường khác (chất lỏng) tia sáng sẽ bị lệch đi (khúc xạ). Nếu chất lỏng là một
dung dịch chất hòa tan (dung dịch đường, muối, …) dựa trên độ lệch của tia sáng,
ta có thể tính được nồng độ của chất hòa tan và từ đó tính ra phần trăm nước có
trong thực phẩn.

Phương pháp này chủ yếu để xác định hàm lượng chất khô trong các thực phẩm
lỏng hòa tan trong nước

+ Phương pháp đo đô ̣ ẩm bằng cảm biến: Nguyên lý hoạt đô ̣ng: ẩm kế điê ̣n trở
dùng điê ̣n trở hút ẩm( dùng chất hút ẩm phủ lên) sau đó điê ̣n trở được nối tới cầu
Wheatons có bù nhiê ̣t. Điê ̣n trở của cảm biến thay đổi tỷ lê ̣ với đô ̣ ẩm được chuyển
thành tín hiê ̣u điê ̣n tương ứng

3. Lựa chọn phương pháp đo, cảm biến

Từ yêu cầu thực tiễn trên, nhóm chúng em được giao đề tài: “Thiết kế mạch đo
nhiệt độ, độ ẩm gửi kết quả đo ra màn hình máy tính và LCD” để làm đề tài môn
học. Vận dụng những kiến thức đã được học chúng em đã nghiên cứu, dựa vào
thực tế cũng như kinh tế phù hợp chúng em đã lựa chọn thiết bị cảm biến DHT11
đo đồng thời cả nhiệt độ và độ ẩm, vi xử lí 8051,… để hoàn thiện đề tài này.

Trong đồ án chắc hẳn còn nhiều sai sót, chúng em rất mong nhận được sự chỉ bảo,
hướng dẫn của các thầy cô cũng như sự đóng góp của các bạn sinh viên để đồ án
hoàn thiện hơn.

II: Lựa chọn thiết bị phần cứng


1. Sơ đồ tổng quan đề tài:

6
2. Khối cảm biến

Sử dụng cảm biến đo nhiệt độ độ ẩm DHT11

Thông số kỹ thuật:

-Nguồn: 3 -> 5 VDC.

- - Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).

-Đo tốt ở độ ẩm 20 to 70%RH với sai số 5%.

-Đo tốt ở nhiệt độ 0 to 50°C sai số ±2°C.

-Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)

-Kích thước 15mm x 12mm x 5.5mm.

Hình 1

-Nguyên lí hoạt động của DHT11:

+ Nhận tín hiệu từ 8051(Request)

7
Hình 2

+DHT11 Gửi tín hiệu phản hồi(Response)

Hình 3

+Thực hiện qua trình truyền 40 bit dữ liệu

-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.(checksum)

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.

8
*Nó sẽ dựa vào thời gian để xác định truyền ra bit 0 hoặc là bit 1

Hình 4

Hình 5

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

9
3. Vi điều khiển 8051( AT89C52)

a. Sơ đồ chân:

Hình 6

Cấu tạo và chức năng các chân trên AT89C52

AT89C52 có tất cả 40 chân có chức năng như các đường xuất nhâ ̣p. Trong
đó có 24 chân có tác dụng kép (có nghĩa là 1 chân có 2 chức năng), mỗi đường có
thể hoạt đô ̣ng như đường xuất nhâ ̣p hoă ̣c như đường điều khiển hoă ̣c là thành phần
của các bus dữ liê ̣u và bus địa chỉ.

10
* PORT

Port 0: là port có 2 chức năng ở các chân từ 32- 39. Trong các thiết kế cỡ nhỏ
không dùng đến bô ̣ nhớ mở rô ̣ng thì port 0 có chức năng là xuất/nhâ ̣p dữ liê ̣u. Nếu
trong các thiết kế cỡ lớn phải dùng đến bô ̣ nhớ mở rô ̣ng thì port 0 được kết hợp
giữa bus địa chỉ và bus dữ liê ̣u.

Port 1: là port có 1 chức năng từ chân 1- 8. Có thể dùng cho giao tiếp với thiết bị
ngoài nếu cần. Vì không có chức năng khác ngoài xuất/nhâ ̣p nên nó chỉ được dùng
giao tiếp với các thiết bị bên ngoài.

Port 2: là 1 port có tác dụng kép trên các chân 21- 28 được dùng như các đường
xuất nhâ ̣p hoă ̣c là byte cao của các bus địa chỉ đối với thiết bị dùng bô ̣ nhớ mở
rô ̣ng.

Port3: là port có tác dụng kép trên các chân 10- 17, port này có nhiều chức năng cụ
thể như sau:

P3.0 RXT Ngõ vào đữ 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 0

P3.3 INT1 Ngõ vào ngắt 1

P3.4 T0 Ngõ vào của timer/ counter 0

P3.5 T1 Ngõ vào của timer/ counter 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 dữ liê ̣u bô ̣ nhớ ngoài

Các ngõ tín hiê ̣u điều khiển

11
PSEN

PSEN là tín hiê ̣u ngõ ra ở chân 29 có ứng dụng cho phép đọc bô ̣ nhớ chương
trình mở rô ̣ng thường được nối với chân 0E( output ennable) của EPROM cho
phép đọc các byte mã lê ̣nh. PSEN ở mức 0 khi AT89c52 lấy lê ̣nh, các mã lê ̣nh của
chương trình đọc từ EPROM qua bus dữ liê ̣u và được chốt vào thanh ghi lê ̣nh để
giải lê ̣nh. PSEN ở mức 1 khi AT89c52 thi hành chương trình trong ROM nô ̣i.

ALE

ALE ở chân số 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. Vì khi AT89c52 truy xuất bô ̣ nhớ bên
ngoài port 0 có chức năng là đường địa chỉ và dữ liê ̣u nên phải tách riêng ra.

Tín hiê ̣u ra ở 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

Ngõ tín hiê ̣u vào EA ở chân 31 thường được mắc lên nguồn. Nếu ở mức 1
thì AT89c52 thi hành chương trình từ ROM nô ̣i trong khaongr địa chỉ thấp 8kbyte.
Nếu ở mức 0 thì AT89c52 sẽ thi hành chương trình từ bô ̣ nhớ mở rô ̣ng.

RST

Ngõ tín hiê ̣u RST (reset) ở chân số 9. Khi AT89c52 thực hiê ̣n 2 chu kỳ máy
hoă ̣c khi cấp điê ̣n mạch tự đô ̣ng reset.

X1,X2

Ngõ tín hiê ̣u dao đô ̣ng X1, X2 ở chân 18, 19. Thường được nối với thạch
anh để tạo dao đô ̣ng.

Vcc

Vcc là chân số 40, thường được nối lên nguồn 5V.

12
b. Bộ đếm/định thời( Counter/Timer)

Bộ đếm/Bộ định thời: Đây là các ngoại vi được thiết kế để thực hiện một nhiệm
vụ đơn giản: đếm các xung nhịp. Mỗi khi có thêm một xung nhịp tại đầu vào đếm
thì giá trị của bộ đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên)
hay giảm đi 01 đơn vị (trong chế độ đếm lùi/đếm xuống).

Xung nhịp đưa vào đếm có thể là một trong hai loại:

- Xung nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao
động bên trong IC và các linh kiện phụ bên ngoài nối với IC. Trong trường hợp sử
dụng xung nhịp loại này, người ta gọi là các bộ định thời (timers). Do xung nhịp
bên loại này thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá
chính xác.

- Xung nhịp bên ngoài IC: Đó là các tín hiệu logic thay đổi liên tục giữa 02 mức 0-
1 và không nhất thiết phải là đều đặn. Trong trường hợp này người ta gọi là các bộ
đếm (counters). Ứng dụng phổ biến của các bộ đếm là đếm các sự kiện bên ngoài
như đếm các sản phầm chạy trên băng chuyền, đếm xe ra/vào kho bãi…

*HOẠT ĐỘNG ĐỊNH THỜI CỦA AT89C52

13
Vi điều khiển AT89C52 có 3 bộ định thời 16 bit trong đó 2 bộ timer 0 và 1 có 4
chế độ hoạt động,timer 2 có 3 chế độ hoạt động.Các bộ định thời dùng để định
khoảng thời gian(hẹn giờ), đếm sự kiện xảy ra bên ngoài bộ vi điều khiển hoặc tạo
tốc độ baud cho cổng nối tiếp của vi điều khiển.

*CÁC THANH GHI CỦA BỘ ĐỊNH THỜI

• Các thanh ghi của Timer 0 và Timer 1

• Thanh ghi chế độ định thời(TMOD)

• Thanh ghi TMOD chứa 2 nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0 và

Timer 1.

Thanh ghi TMOD

GATE C/#T1 M1 M0 GATE C/#T0 M1 M0


1 0
Bit Ký hiệu Chức năng
7 GATE1 Bit điều khiển cổng.Khi set lên 1,bộ định thời chỉ hoạt động
trong khi INT1 ở mức cao
6 C/#T1 Bit chọn chức năng đếm hoặc định thời
1=đếm sự kiện 0=định thời trong 1
khoảng thời gian

5 M1 Bit chọn chế độ thứ nhất


4 M0 Bit chọn chế độ thứ 2
1 chế độ 0 – Timer 13 bit
2 chế độ 1 – Timer 16 bit
10 chế độ 2 – 8 bit tự động nạp
lại 11 chế độ 3 – tách Timer

14
3 GATE0 Bit điều khiển cổng cho bộ định thời 0
2 C/#T0 Bit chọn chức năng đếm hoặc định thời cho bộ định thời 0
1 M1 Bit chọn chế độ thứ nhất cho bộ định thời 0
0 M0 Bit chọn chế độ thứ 2 cho bộ định thời 0

Thanh ghi điều khiển Timer (TCON)


Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer 0
và Timer 1.
TF1 TR1 TF0 TR0 IT1 IE1 IT0 IE0

Bit Ký hiệu Chức năng

TCON Điều khiển bộ định thời


TCON.7 TF1 Cờ tràn của bộ định thời 1. Cờ này được set bởi
phần cứng khi có tràn, được xóa bởi phần
mềm, hoặc bởi
phần cứng khi bộ vi xử lý trỏ đến trình phục vụ
ngắt
TCON.6 TR1 Bit điều khiển hoạt đong của bộ định thời 1.Bit
này được set hay xóa bằng phần mềm để điều
khiển bộ định thời hoạt động hay ngưng

TCON.5 TF0 Cờ tràn của bộ định thời 0


TCON.4 TR0 Bit điều khiển hoạt động của bộ định thời

TCON.3 IE1 Cờ ngắt bên ngoài 1(kích khởi cạnh).Cờ này


được set bởi phần cứng khi có cạnh âm (cuống)
xuất hiện trên chân INT1, được xóa bởi phần
mềm, hoặc phần cứng khi CPU trỏ đến trình
phục vụ ngắt

15
TCON.2 IT1 Cờ ngắt bên ngoài 1(kích khởi cạnh hoặc
mức).Cờ này được set hay xóa bởi phần mềm
khi xảy ra cạnhâm hoặc mức thấp ở chân ngắt
ngoài
TCON.1 IE0 Cờ ngắt bên ngoài 0(kích khởi cạnh)
TCON.0 IT0 Cờ ngắt bên ngoài 0(kích khởi cạnh hoặc
mức)

*CÁC CHẾ ĐỘ ĐỊNH THỜI CỦA TIMER0 VÀ TIMER1


1. Chế độ 0 : là chế độ định thời 13 bit , chế độ này tương
thích
2. với các bộ vi điều khiển trước đó , trong các ứng dụng
hiện nay chế độ này không còn thích hợp. Trong chế độ
này bộ định thời dùng 13 bit(8 bit cua TH và 5 bit cao
của TL) để chứa giá trị đếm ,3 bit thấp của TL không
được sử dụng.
3. Chế độ 1 : Trong chế độ này , bộ timer dùng cả 2 thanh ghi
TH và TL để chứa giá trị đếm , vì vậy chế độ này còn được
gọi là chế độ định thời 16 bit . Bit MSB sẽ là bit D7 của TH
còn bit LSB là D0 của TL
4. Chế độ 2 : Trong chế độ 2 , bộ định thời dùng TL để
chứa giá trị đếm và TH để chứa giá trị nạp lại vì vậy chế
độ này còn gọi là chế độ tự nạp lại 8 bit.Sau khi đếm 255
sẽ xảy ra tràn,khi đó TF được đặt bằng 1 đồng thời giá trị
của timer tự động được nạp lại bằng nội dung của TH.
5. Chế độ 3 : Trong chế độ 3 , Timer 0 được tách thành 2
bộ Timer hoạt động độc lập , chế độ này sẽ cung cấp cho
bộ vi điều khiển thêm một Timer nữa.

16
c. Các ngắt của AT89C52
Bảng tóm tắt các ngắt trong AT89C52 như sau:
Cờ Thanh Vector
STT Tên ngắt Mô tả
ngắt Ghi chứa ngắt
cờ
1 INT0 Ngắt ngoài 0 khi có tín IE0 TCON 0x0003
hiệu tích cực
theo kiểu đã chọn ở chân
P3.2
2 Timer 0 Ngắt tràn timer0 khi TF0 TCON 0x000B
giá trị timer0 tràn từ
giá trị max về giá trị min
3 INT1 Ngắt ngoài 1 khi có tín IE1 TCON 0x0013
hiệu tích cực theo kiểu
đã chọn ở chân P3.3
4 Timer 1 Ngắt tràn timer1 khi TF1 TCON 0x001B
giá trị timer1 tràn từ
giá trị max về giá trị min
5 Serial Ngắt cổng nối tiếp khi TI, RI SCON 0x0023
Port vi điều khiển nhận
hoặc truyền xong một
byte bằng cổng nối tiếp
6
Timer2 Ngắt tràn timer2 khi giá TX2 T2CON 002BH
trị timer2 tràn Hoặc
EXF2

17
Thanh ghi IE

EA - - ES ET1 EX1 ET0 EX0

Bit Ký Địa chỉ bit Mô tả


hiệu

IE.7 EA AFH Cho phép / cấm toàn bộ

IE.6 _ AEH Không được miêu tả

IE.5 - ADH Không được miêu tả

IE.4 ES ACH Cho phép ngắt 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

Ngắt do các timer

-AT89C52 có 3 Timer là Timer 0 và Timer 1 và Timer 2. Các


Timer này đều là Timer 16 bit, giá trị đếm max do đó bằng 65535
(đếm từ 0 đến 65535).Ba timer có nguyên lý hoạt động hoàn toàn
giống nhau và độc lập.

18
Các ngắt do các bộ Timer xảy ra do sự kiện tràn ở các Timer, khi
đó các cờ tràn TFx sẽ đươc đặt bằng 1.Khi ISR được đáp ứng, các cờ
TFx sẽ tự động được xóa bởi phần mềm.

Ngắt do cổng nối tiếp

Ngắt do cổng nối tiếp xảy ra khi hoặc cờ phát ngắt (TI) hoặc cờ
ngắt thu (RI) được đặt bằng 1.ngắt phát xảy ra khi bộ đệm truyền rỗng
, ngắt thu xảy ra khi 1 ký tự đã được nhận xong và đang đợi trong
SBUF để được đọc.
Các ngắt do cổng nối tiếp khác các ngắt do timer.cờ gây ra ngắt do
PORT nối tiếp không bị xoá bằng phần cứng khi CPU chuyển tới ISR
do có 2 nguồn ngắt do cổng nối tiếp TI và RI, nguồn ngắt phải được
xác định trong ISR và cờ tạo ngắt sẽ được xoá bằng phần mềm.

4. Khối hiển thị


a. Hiển thị ra LCD

Hình 7
Cấu tạo và các chức năng

- Chân vDD, Vss,VE: Cấp dương nguồn 5v và đất tương ứng thì VE được
dùng để điều khiển độ tương phản của LCD.
- Chân chọn thanh ghi RS: Có hai thanh ghi rất quan trọng bên trong LCD,
chân RS được dùng để chọn các thanh ghi này như sau: Nếu RS = 0 thì thanh ghi
mà lệnh được chọn để cho phép người dùng gửi một lệnh chẳng hạn như xoá màn

19
hình, đưa con trỏ về đầu dòng v.v... Nếu RS = 1 thì thanh ghi dữ liệu được chọn
cho phép người dùng gửi dữ liệu cần hiển thị trên LCD.
- Chân W/R: Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên LCD
khi R/W = 0 hoặc đọc thông tin từ nó khi R/W = 1.
- Chân cho phép E: Chân cho phép E được sử dụng bởi LCD để chốt thông
tin hiện hữu trên chân dữ liệu của nó. Khi dữ liệu được cấp đến chân dữ liệu thì
một xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên
các chân dữ liêu. Xung này phải rộng tối thiểu là 450ns.
- Chân D0-D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên
LCD hoặc đọc nội dung của các thanh ghi trong LCD.
Để hiển thị các chữ cái và các con số, chúng ta gửi các mã ASCII của các
chữ cái từ A đến z, a đến f và các con số từ 0 - 9 đến các chân này khi bật
RS = 1.
Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá màn hình hoặc
đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ. Bảng h1sau liệt kê các mã
lênh.
Chúng ta cũng sử dụng RS = 0 để kiểm tra bít cờ bận để xem LCD có sẵn
sàne nhân thông tin. Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS =
0 như sau:
Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi các công việc
bên trong và sẽ không nhận bất kỳ thông tin mới nào. Khi D7 = 0 thì LCD
sẵn sàng nhận thông tin mới. Lưu ý chúng ta nên kiểm tra cờ bận trước khi
ghi bất kỳ dữ liệu nào lên LCD.

b. Vi điều khiển giao tiếp với máy tinh và hiển thị


-Bộ UART (Universal Ansynchronous Receiver and Tranmistter) của
AT89C52 có chức năng truyền nhận nối tiếp , AT89C52 có thể giao tiếp
với cổng nối tiếp của máy tính thông qua bộ UART, hai chân được dùng
cho truyền và nhận dữ liệu nối tiếp, hai chân này được gọi là TxD và
RxD, là một phần của cổng P3 (đó là P3.0 - chân 10 và P3.1 - chân 11)
-Chuẩn giao tiếp UART khác với RS232 ở mức điện áp ở chỗ UART thể
hiện mức logic 0 (0V) và logic 1 (3-5V), còn với RS232 là -12V đến -3V

20
là mức 1 và +3V đến +12V là mức 0 , từ -3V đến +3V là vùng cấm - ko
xác định nên người ta đã chế tạo ra IC MAX232 đây là IC cho phép ta
kết nối UART với RS232.

Hình 8: Sơ đồ bên trong ICMAX232 và sơ đồ nối ghép AT89C52 – ICMAX232-


Cổng com DB-09

III. CHƯƠNG TRÌNH PHẦN MỀM


1. Sơ đồ nguyên lí mạch vẽ trên proteus

21
Hình 9

2. Lưu đồ thuật toán

22
3. Chương trình C viết trên KeilC 5

23
#include<reg52.h>

#include<stdio.h>

#include<string.h>

// khoi tao ham delay

void delay_ms( int t)

{ int x,y;

for(x=0;x<t;x++)

{ for (y=0;y<123;y++);

// Khoi tao ham delay bang bo dem timer

void timer_delay20ms() //delay 20ms

TMOD = 0x01;

TH0 = 0xB8;

TL0 = 0x0C;

TR0 = 1;

while(TF0 == 0);

TR0 = 0;

TF0 = 0;

24
void timer_delay30us() // delay 30us

TMOD = 0x01;

TH0 = 0xFF;

TL0 = 0xF1;

TR0 = 1;

while(TF0 == 0);

TR0 = 0;

TF0 = 0;

void timer_delay50us() // delay 30us

TMOD = 0x01;

TH0 = 0xFF;

TL0 = 0xCE;

TR0 = 1;

while(TF0 == 0);

TR0 = 0;

TF0 = 0;

25
//Giao dien ket noi LCD

// gan chan du lieu

sbit LCD_RS = P1^4;

sbit LCD_EN = P1^5;

#define LCD_data P2

void LCD_cmd( unsigned char cmd) // khoi tao ham lenh

{ LCD_RS = 0;

LCD_data= cmd;

LCD_EN = 0;

LCD_EN=1;

delay_ms(2);

void LCD_chat( unsigned char c) // ham ghi du lieu

{ LCD_RS = 1;

LCD_data= c;

LCD_EN= 0;

LCD_EN=1;

delay_ms(1);

void LCD_chat_str( char *str) // ham in ra man hinh

26
{ int i=0;

while (str[i]!=0)

{ LCD_chat (str[i]);

i++;

void LCD_kt ()

LCD_cmd(0x30);

delay_ms(5);

LCD_cmd(0x30);

delay_ms(1);

LCD_cmd(0x30);

LCD_cmd(0x38); // khoi tao 2 hang font 5x8

LCD_cmd(0x01); // xoa man hinh

LCD_cmd(0x0C);

// giao tiep voi DHT11

//gan chan du lieu

sbit DHT11= P0^3;

27
// ham chuyen du lieu vao thanh ghi

void Request() // gui tin hieu khoi dong toi


DHT11

DHT11 = 0;

timer_delay20ms();

DHT11 = 1;

void Response() // DHT gui tin hieu phan hoi

while(DHT11==1);

while(DHT11==0);

while(DHT11==1);

// lay du lieu tu cam bien

int nhap_du_lieu()

{ int k,c=0;

for(k=0;k<8;k++)

while(DHT11==0);

timer_delay30us();

28
if(DHT11 == 1)

c=(c<<1)|(0x01);

else c=(c<<1);

while (DHT11==1);

return c;

void Uart_kt()

{ SM0=0; SM1=1;

TMOD=0x20;

TH1=0xFD;

TR1=1;

TI=1;

REN=1;

void Uart_write_char( char m )

{while(TI==0);

TI=0;

SBUF=m;

void Uart_write_str( char *str_PC)

29
{ unsigned char n=0;

while(str_PC[n]!=0)

{Uart_write_char(str_PC[n]);

n++;

/*gan chan dieu khien LED*/

sbit LED_C=P1^3;

sbit LED_P=P1^2;

void main ()

{ int
I_RH,D_RH,I_Temp,D_Temp,Checksum,w,I_RHt,D_RHt,I_Tt,D_Tt;

char chuoi[20];

EA=1;EX0=1;

LCD_kt();

Uart_kt();

delay_ms(10);

I_RHt=D_RHt=I_Tt=D_Tt=0;

while(1)

{LED_C=0;LED_P=1;

30
Request();

Response();

I_RH=nhap_du_lieu();

D_RH=nhap_du_lieu();

I_Temp=nhap_du_lieu();

D_Temp=nhap_du_lieu();

Checksum=nhap_du_lieu();

if ((I_RH + D_RH + I_Temp + D_Temp) != Checksum)

{ LCD_chat_str("ERROR");while(1);}

else

{w=(I_Temp!=I_Tt)|(D_Temp!=D_Tt)|(I_RH!=I_RHt)|
(D_RH!=D_RHt);

if(w==1) LCD_cmd(0x01);

sprintf(chuoi,"do am = %d.%d % ",I_RH,D_RH);

Uart_kt();

LCD_chat_str(chuoi);

if (w==1 )

{Uart_write_str(chuoi);

I_RHt=I_RH;D_RHt=D_RH;

LCD_cmd(0xC0);

31
sprintf(chuoi,"nhiet do = %d.%d
",I_Temp,D_Temp);

LCD_chat_str(chuoi);

if (w==1 )

{Uart_write_str(chuoi);

Uart_write_str("\r\n");

I_Tt=I_Temp;D_Tt=D_Temp;

while (DHT11==0);

/*chuong trinh ngat*/

sbit Check_ngat = P1^6;

void ngat(void) interrupt 0

{ int e,f;

LED_C=1;LED_P=0;

while(1)

if(Check_ngat==0)

{ LED_C=0;LED_P=1;

32
for(e=0;e<2;e++)

{ for (f=0;f<123;f++);

break;}

C. KẾT QUẢ THU ĐƯỢC VÀ PHƯƠNG HƯỚNG HOÀN THIỆN

I. Kết quả thu được

-Biết được quy định trình bày đồ án

-Có kiến thức và kỹ năng sử dụng các phần mềm hỗ trợ làm mạch.

- Hiểu biết nhiều hơn về các loại vi điều khiển và cảm biến.

- Có được các kênh tìm hiểu thông tin, kiến thức để nghiên cứu.

-có thêm kỹ năng làm việc nhóm, phân chia công việc

II. Phương hướng cải thiện

-Sẽ cố gắng hoàn thành mạch thật và chạy trong thực tế.

-Cải thiện mạch sử dụng những cảm biến có sai số nhỏ để kết quả đo có sự
chuẩn xác cao nhất.

33
Tài liệu tham khảo

1. Nguyễn Tăng Cường, Phan Quốc Thắng(2004), Cấu trúc và lập trình họ
vi điều khiển 8051, Nhà xuất bản khoa học và kỹ thuật

2. DHT11 Himidity&Temperature Sensor ,https://www.mouser.com/


datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-
1143054.pdf

3. Specification of LCD mode ,https://www.sparkfun.com/datasheets/LCD/


ADM1602K-NSW-FBS-3.3v.pdf

4. https://sites.google.com/site/t2vietdtk/Downhome/gi/8051/vdk/truyen-
thong-noi-tiep-voi-8051

34

You might also like