Một trong những ứng dụng thiết thực trong đó là ứng dụng về nhiệt kế điện tử.Qua những kiến thức đã học được ở môn Vi Điều Khiển, chúng em đã quyết định nhận làm đồ án môn học: “Thiết kế
Tổng quan về bộ đo và khống chế nhiệt độ, độ ẩm hiển thị bằng LCD16x02
Cầu trúc của hệ thống
Vi điều khiển AT89C52 đóng vai trò là bộ não của hệ thống, chịu trách nhiệm xử lý dữ liệu từ cảm biến nhiệt độ, điều khiển hiển thị và quản lý hệ thống khống chế nhiệt độ.
- Cảm biến nhiệt độ: Cảm biến đo nhiệt độ và độ ẩm, cung cấp dữ liệu dạng số trực tiếp.
- Màn hình LCD: Được sử dụng để hiển thị thông tin nhiệt độ và độ ẩm, kết nối với vi điều khiển thông qua các cổng I/O.
- DHT11: Kết nối chân DATA của cảm biến với một chân I/O của vi điều khiển (ví dụ: P2.1).
- LCD: Kết nối các chân D0-D7 với P0 của vi điều khiển, RS với P2.2, RW với P2.3 và
- Relay/Triac: Kết nối với các chân xuất của vi điều khiển thông qua mạch lái relay hoặc optoisolator để điều khiển
Nguyên lý hoạt động
Cảm biến DHT11 có khả năng đo nhiệt độ và độ ẩm trong môi trường, sau đó truyền tải dữ liệu số đến vi điều khiển.
- Xử lý dữ liệu: Vi điều khiển đọc và xử lý dữ liệu từ DHT11, tính toán giá trị nhiệt độ và độ ẩm thực tế.
- Hiển thị dữ liệu: Vi điều khiển điều khiển màn hình LCD để hiển thị các giá trị nhiệt độ và độ ẩm.
Vi điều khiển có khả năng khống chế nhiệt độ bằng cách so sánh nhiệt độ đo được với giá trị mục tiêu Khi phát hiện sự khác biệt, nó sẽ điều khiển relay hoặc triac để điều chỉnh nhiệt độ của hệ thống, đảm bảo duy trì mức nhiệt ổn định và hiệu quả.
Lập trình vi điều khiển AT89C52
3.1 Khởi Động và Cấu Hình
- Thiết lập các cổng I/O: Cấu hình các cổng xuất và nhập cho cảm biến, LCD16x02 và relay/triac.
- Khởi tạo giao tiếp với DHT11: Viết mã để điều khiển việc đọc dữ liệu từ DHT11.
3.2 Đo nhiệt độ và độ ẩm
- Đọc dữ liệu từ DHT11: Sử dụng giao thức 1-Wire để nhận dữ liệu số từ cảm biến.
- Xử lý dữ liệu: Tách và xử lý các giá trị nhiệt độ và độ ẩm từ dữ liệu nhận được.
3.3 Hiển thị nhiệt độ và độ ẩm
- Xuất dữ liệu ra LCD: Gửi dữ liệu nhiệt độ và độ ẩm tới màn hình LCD để hiển thị.
- So sánh nhiệt độ: So sánh nhiệt độ đo được với giá trị cài đặt sẵn.
- Điều khiển relay/triac: Kích hoạt relay hoặc triac để duy trì nhiệt độ trong phạm vi mong muốn.
- Sử dụng phần mềm Keil àVision : Mụi trường phỏt triển tớch hợp (IDE) phổ biến cho vi điều khiển 8051, hỗ trợ lập trình và mô phỏng.
+ Trình soạn thảo mã: Hỗ trợ ngôn ngữ Assembly và C.
+ Trình biên dịch C51: Biên dịch mã C thành mã máy cho AT89C52.+ Trình giả lập: Kiểm tra và gỡ lỗi mã trước khi nạp vào phần cứng.
Cơ sở lý thuyết thiết kế mạch đo nhiệt độ và độ ẩm hiển thị kết quả lên màn hình LCD 16x02, sử dụng cảm biến DHT11 và vi điều khiển AT89S52
Giới thiệu khái quát về họ MCS-51 và chip AT89S52
1.1 Khái quát về họ MCS-51
MCS-51 là họ vi điều khiển của hãng Intel Vi mạch tổng quát của họ MCS-51 là chip 8051.
Chip 8051 có một số đặc trưng cơ bản:
Bộ nhớ chương trình bên trong: 4KB (ROM)
Bộ nhớ dữ liệu bên trong: 128 byte (RAM)
Bộ nhớ chương trình bên ngoài: 64KB (ROM)
Bộ nhớ dữ liệu bên ngoài: 64KB (RAM)
4 port xuất nhập vào ra 8 bit
Mạch giao tiếp nối tiếp
210 vị trí nhớ được định địa chỉ bit
Ngoài ra, MCS-51 còn có một số chip vi điều khiển khác có cấu trúc gần tương tự như chip 8031, 8032, 8051, 8052, 8751, 8752, 8951, 8952, …
Dung lượng RAM Dung lượng ROM Chế độ nạp
Dung lượng RAM Dung lượng ROM Chế độ nạp
1.2 Cấu trúc vi xử lý AT89S52 Đây là một vi điều khiển 8bit với 8k byte trong hệ thống lập trình flash Các thông số cơ bản:
- Tương thích với sản phẩm MCS-51 ®
- 8k bite trong bộ nhớ của hệ thống lập trình flash ( ISP) – độ bền : 1000 chu kỳ Ghi / Xóa.
- Hoạt động khi hoàn toàn tĩnh điện: 0 Hz to 33 MHz
- Khóa bộ nhớ chương trình có 3 mức.
- Bộ nhớ RAM bên trong là 256x8bit
- 3 Bộ đếm / Bộ định thời 16 bit
Hình 1.1 Sơ đồ chân của AT89S52
- Kênh nối tiếp UART song công
- Chế độ giảm điện áp và nghỉ ngơi điện áp thấp.
- Phục hồi ngắt ở chế độ giảm điện áp
- Con trỏ dữ liệu kép
AT89S52 là vi điều khiển CMOS 8-bit tiết kiệm năng lượng, hiệu suất cao với 8K byte bộ nhớ Flash lập trình Sản phẩm này được sản xuất bằng công nghệ bộ nhớ không biến đổi mật độ cao của Atmel, tương thích với chân và lệnh 80C51 theo tiêu chuẩn công nghiệp Chip Flash cho phép tái lập trình bộ nhớ chương trình trong hệ thống hoặc qua bộ lập trình bộ nhớ không biến đổi thông thường Kết hợp CPU 8-bit đa năng với bộ nhớ Flash trên một chip, AT89S52 mang đến giải pháp linh hoạt và hiệu quả chi phí cho nhiều ứng dụng điều khiển nhúng.
AT89S52 được thiết kế với logic tĩnh cho phép hoạt động ở tần số thấp và hỗ trợ hai chế độ tiết kiệm năng lượng Chế độ nhàn rỗi dừng CPU nhưng vẫn cho phép bộ nhớ RAM, bộ đếm/bộ định thời, cổng nối tiếp và hệ thống ngắt hoạt động Trong khi đó, chế độ giảm điện áp giữ lại nội dung bộ nhớ RAM nhưng tắt bộ tạo dao động và vô hiệu hóa tất cả các chức năng khác của chip cho đến khi có ngắt tiếp theo hoặc hệ thống được thiết lập lại.
Chức năng cơ bản của các chân.
VCC:Cung cấp điện áp.
Cổng 0: từ chân 32 đến chân 39 (P0.0 _P0.7) là cổng I/O 2 mở 2 chiều 8 bit Cổng 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.
Cổng 0 cũng được byte mã trong khi lập trình flash và kết quả đầu ra các byte mã trong khi xác minh chương trình Trở pullups bên ngoài được yêu cầu trong quá trình xác minh chương trình
Cổng 1 :từ chân 1 đến chân 9 (P1.0 _ P1.7) là cổng I/O 8 bit 2 hướng với trở pullups ở bên trong, Cổng 1 dùng cho giao tiếp với thiết bị bên ngoài nếu cần.
Cổng 1 cũng nhận các byte địa chỉ mức thấp trong khi xác minh chương trình.
Chân cổng Các chức năng thay thế
P1.0 T2 ( đầu vào đếm ngoài cho Bộ đếm/ bộ định thời 2) , dừng đồng hồ.
P1.1 T2EX ( Bộ đếm/ bộ định thời 2 chụp/ tải lại kích hoạt và điều khiển hướng ) P1.5 MOSI ( được dùng cho lập trình trong hệ thống )
P1.6 MISO ( được dùng cho lập trình trong hệ thống )
P1.7 SCK ( được dùng cho lập trình trong hệ thống )
Bảng 1.3: Chức năng các chân của 89S52
Cổng 2:từ chân 21 đến chân 28 (P2.0 _P2.7) và là cổng I/O 8 bit 2 hướng với trở pullups ở bên trong Cổng 2 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
Cổng 2 cũng nhận các bit địa chỉ mức cao và 1 số tín hiệu điều khiển trong khi xác minh chương trình.
Cổng 3:từ chân 10 đến chân 17 (P3.0 _ P3.7) và là cổng I/O 8 bit 2 hướng với trở pullups ở bên trong Cổng 3 có tác dụng kép Các chân của cổng 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:
Bit Tên Chức năng chuyển đổi
P3.0 RXD Cổng vào dữ liệu nối tiếp
P3.1 TXD Cổng xuất dữ liệu nối tiếp
P3.2 INT0 Cổng vào ngắt cứng thứ 0
P3.3 INT1 Cổng vào ngắt cứng thứ 1
P3.4 T0 Cổng vào Timer/Counter thứ 0
P3.5 T1 Cổng vào 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 1.4: Chức năng các bit cổng P3
Cổng 3 cũng nhận 1 vài tín hiệu điều khiển cho lập trình Flash và xác minh.
PSEN là tín hiệu đầu ra quan trọng, cho phép truy cập vào bộ nhớ chương trình mở rộng Tín hiệu này thường được kết nối với chân OE của Eprom, giúp thực hiện việc đọc các byte mã lệnh một cách hiệu quả.
Trong quá trình 89S52 thực hiện lệnh, tín hiệu PSEN được duy trì ở mức thấp để đọc mã lệnh từ Eprom qua bus dữ liệu, sau đó được lưu vào thanh ghi lệnh bên trong để tiến hành giải mã Khi 89S52 thi hành chương trình trong ROM nội, tín hiệu PSEN sẽ chuyển sang mức cao.
Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 đóng vai trò là bus địa chỉ và dữ liệu, yêu cầu tách biệt các đường dữ liệu và địa chỉ Tín hiệu ALE tại chân 30 được sử dụng như 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 với bộ nhớ.
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) là tín hiệu quan trọng, khi ngõ vào đạt mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên trong sẽ được nạp giá trị thích hợp để khởi động hệ thống Đồng thời, khi cấp điện, mạch cần phải tự động thực hiện quá trình reset.
Các giá trị tụ và điện trở được chọn là:
Các ngõ vào bộ dao động X1, X2:
Bộ tạo dao động tích hợp trong vi điều khiển 89S52 cho phép người dùng dễ dàng thiết lập tần số bằng cách chỉ cần kết nối thêm thạch anh và các tụ điện Tần số thạch anh có thể được điều chỉnh theo nhu cầu sử dụng, trong khi giá trị tụ điện thường được lựa chọn là 33pF.
Hình 1 3: Bộ tạo dao động bên trong 89S52
Tổng quan về màn hình LCD 16x0
LCD, viết tắt của Liquid Crystal Display, là màn hình tinh thể lỏng nổi bật với khả năng hiển thị đầy đủ các ký tự trong bảng mã ASCII Mặc dù có giá thành cao và yêu cầu khoảng cách nhìn gần, LCD 16x2 là loại màn hình phổ biến nhất trên thị trường, với cấu trúc 16 cột và 2 hàng.
- Tích hợp bộ điều khiển (KS 0066 hoặc tương đương)
- Nguồn cấp +5V ( cũng có sẵn cho loại 3V)
- B/L được chạy bởi chân 1, 2, 15,16 hoặc A.K (LED)
- Tùy chọn N.V cho nguồn cấp 3V.
STT Chân Ký hiệu Chức năng
3 Vo Điều chỉnh tương phản
4 RS Tín hiệu lựa chọn thanh ghi H/L
7 DB0 Đường bus dữ liệu H/L
8 DB1 Đường bus dữ liệu H/L
9 DB2 Đường bus dữ liệu H/L
10 DB3 Đường bus dữ liệu H/L
11 DB4 Đường bus dữ liệu H/L
12 DB5 Đường bus dữ liệu H/L
13 DB6 Đường bus dữ liệu H/L
14 DB7 Đường bus dữ liệu H/L
15 A/Vee 4.2V cho LED/đầu ra điện áp âm
Bảng 2.1: Mô tả chân của LCD 16x2
Tổng quan về cảm biến DHT11
Hình 2.2: Thiêt bị cảm biến DTH 11
DHT11 là cảm biến nhiệt độ và độ ẩm, được thiết kế để thay thế dòng SHT1x ở những ứng dụng không yêu cầu độ chính xác cao Mỗi cảm biến DHT11 được hiệu chỉnh trong phòng thí nghiệm, đảm bảo độ chính xác cao về độ ẩm Các hệ số hiệu chỉnh được lưu trữ trong bộ nhớ OTP, hỗ trợ tín hiệu nội bộ trong quá trình phát hiện Với giao diện nối tiếp 1 dây, DHT11 cho phép tích hợp hệ thống nhanh chóng và dễ dàng Kích thước nhỏ gọn, tiêu thụ điện năng thấp và khả năng truyền tín hiệu lên đến 20 mét làm cho DHT11 trở thành lựa chọn lý tưởng cho nhiều ứng dụng khác nhau.
- Phạm vi đo đạc: độ ẩm trong khoảng RH 20-90%, nhiệt độ trong khoảng 0-50
- Sai số độ ẩm: ±5%RH℃
Hình 2.3: Sơ đồ kết nối với vi xử lý
Sơ đồ khối và sơ đồ nguyên lý của hệ thống
Sơ đồ nguyên lý và chức năng từng khối
2.1 Khối xử lý trung tâm
Hình 3.3 Sơ đồ nguyên lý khối xử lý trung tâm
- 1 chip vi xử lý AT89S52 thuộc họ 8051.
- Mạch tạo dao động thạch anh kết nối với 2 chân XTAL1 và XTAL2 của chip AT89S52.
- Mạch Reset cho vi điều khiển.
- Trở treo 10k nối với port 0 để xác định mức logic 1.
Nhiệm vụ chính của vi xử lí bao gồm:
• Gửi tín hiệu yêu cầu giao tiếp đến cảm biến DHT11.
• Nhận tín hiệu về độ ẩm và nhiệt độ là các bit nhị phân do DHT11 gửi về.
• Gửi lệnh và dữ liệu lên LCD để hiển thị kết quả đo nhiệt độ và độ ẩm.
Hình 3.4 Sơ đồ nguyên lý khối hiển thị
- Là 1 màn hình LCD 16x02 có tích hợp trên đó chip HD44780.
- Sơ đồ chân: gồm 16 chân
+ Vss: chân nối mass cho LCD, ta nối với GND của mạch điều khiển.
+ Vdd: chân cấp nguồn cho LCD, ta nối với Vcc = +5V của mạch điều khiển.
+ Vee: dung điều chỉnh độ tương phản của LCD, nối với chân điều khiển của biến trở 10k.
+ D0 – D7: 8 bus dữ liệu trao đổi thông tin giữa LCD và VĐK.
+ RS: Chân chọn thanh ghi:
RS = 0 → D0 – D7 sẽ nối với thanh ghi lệnh IR của LCD (chế độ ghi) hoặc nối với bộ đếm địa chỉ của LCD (chế độ đọc)
RS = 1 → D0 – D7 sẽ nối với thanh ghi dữ liệu DR trong LCD
+ RW: chân chọn chế độ đọc/ghi
• RW = 0: LCD hoạt động ở chế độ ghi
• RW = 1: LCD hoạt động ở chế độ đọc
• Chế độ ghi: dữ liệu được LCD chuyển từ bus vào thanh ghi bên trong nó khi có 1 xung cao chuyển xuống thấp ở chân EN
• Chế độ đọc: dữ liệu được LCD xuất ra D0-D7 khi phát hiện 1 xung thấp lên cao ở chân EN
* Chế độ đọc: MCU đọc thông tin từ LCD thông qua các chân D0-D7
* Chế độ ghi: MCU xuất thông tin điều khiển cho LCD thông qua các chân D0-D7
Hình 3.5 Bảng mã kí tự hiển thị trên LCD
Hình 3.6 Sơ đồ nguyên lý khối cảm biến
• Vài thông số kỹ thuật quan trọng về DHT11 :
- Dải độ ẩm đo được: 20-90%, sai số: ± 5%, độ phân giải: 1
- Dải nhiệt độ đo được: 0-50 ° C, sai số: ± 2° C, độ phân giải: 1
• Cách VĐK giao tiếp với DHT11 : qua 2 bước
VĐK gửi tín hiệu Start tới DHT11, sau đó chờ DHT11 xác nhận lại:
Hình 3.7 Một số thông số của cảm biến DHT11 (nguồn: Datasheet DHT11)
Hình 3.8 Sơ đồ quá trình VĐK gửi tín hiệu Start và DHT11 gửi tín hiệu xác nhận giao tiếp
Đọc dữ liệu do DHT11 gửi về:
Hình 3.9 Quá trình gửi bit “0” của DHT11
Hình 3.10 Quá trình gửi bit “1” của DHT11
2.4 Mạch nạp và cấp nguồn cho vi điều khiển
• Sử dụng mạch nạp USB ISP ver 2.0:
Giao tiếp và cấp nguồn cho VĐK qua cổng USB 5VDC.
Cổng nạp chuẩn SPI 10pins.
• Sơ đồ nối chân giữa mạch nạp và VĐK:
Mạch nạp USB ISP IC AT89S52
MOSI Chân số 6 của VĐK
RST Chân số 9 của VĐK
SCK Chân số 8 của VĐK
MISO Chân số 7 của VĐK
Bảng 3.1 Sơ đồ nối chân giữa mạch nạp và VĐK
Hình 3.11 Hình ảnh mạch nạp USB ISP Hình 3.12 Sơ đồ chân của mạch nạp
Hình 3.13.Sơ đồ mạch in
3 Phần lập trình và mô phỏng
SET_TEMP DATA 37H ; Bien luu nhiet do cai dat
BTN_UP BIT P3.0 ; Nút tang nhiet do
BTN_DOWN BIT P3.1 ; Nút giam nhiet do
BTN_UP_RH BIT P3.2 ; Nút tang do am
BTN_DOWN_RH BIT P3.3 ; Nút giam do am
LED BIT P2.3 ; Ðèn LED báo nhiet do vuot nguong cai dat LED2 BIT P2.4 ; Den Led bao do am vuot nguong cai dat MAIN:
MOV SET_TEMP, #30 ; Khoi tao nhiet do cai dat là 30°C MOV SET_RH, #80 ; Khoi tao do am cai dat la 80%
ACALL READ_BUTTONS ; Kiem tra nut
MOV RH_D, A ; phan thap phan
; Hien thi nhiet do cai dat
MOV LCD_DATA, #85H ; di chuyen con tro LCD den vi trí "ký tu thu 12 trên dòng dau tiên
ACALL LCD_CMD ; gui lenh tu bien LCD_DATA den màn hình LCD de thuc thi MOV A, TEMP_I
MOV LCD_DATA, #"%" ; Hien thi ký tu "%"
; Hien thi nhiet do cài dat
MOV LCD_DATA, #0x8C ; Di chuyen con tro den dòng 1, cot 12 ACALL LCD_CMD
MOV LCD_DATA, #0x8D ; Di chuyen con tro den vi trí 0x8D ACALL LCD_CMD
MOV LCD_DATA, #0DFH ; Hien thi ký tu "°"
; Hien thi do am cài dat
MOV LCD_DATA, #0CCH ; Di chuyen con tro den dòng 2, cot 13 ACALL LCD_CMD
MOV LCD_DATA, #0CDH ; Di chuyen con tro den vi trí 14 ACALL LCD_CMD
MOV LCD_DATA, #"%" ; Hien thi ký tu "%"
; So sánh nhiet do hien tai voi nhiet do cài dat
JC TEMP_OK ; Neu nhiet do hien thi < nhiet do cài dat, nhay toi TEMP_OK
SETB LED ; Bat LED neu nhiet do hien thi > nhiet do cài dat
JC RH_OK ; Neu do am hien thi < do am cài dat, nhay toi RH_OK
JMP CHECK_DONE ; Nhay toi nhãn CHECK_DONE de tiep tuc kiem tra các dieu kien khác
CLR LED ; Tat LED neu nhiet do hien thi