You are on page 1of 30

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ


¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

BÁO CÁO ĐỒ ÁN
ĐỀ TÀI: ĐO NHIỆT ĐỘ, ĐỘ ẨM SỬ DỤNG CẢM BIẾN
DHT11 HIỂN THỊ TRÊN LCD

Giảng viên hướng dẫn: Đặng Văn Hải


Sinh viên thực hiện: Nguyễn Văn Cường
Nguyễn Văn Ninh
Lê Minh Tuấn

Hà Nội, 2021
MỤC LỤC
LỜI NÓI ĐẦU

Trong những thập niên thế kỉ XX, từ sự ra đời của công nghệ bán dẫn, kĩ
thuật cảm biến đã có sự phát triển vượt bậc. Các thiết bị điện tử sau đó đã được
tích hợp với mật độ cao và rất cao trong các diện tích nhỏ, nhờ vậy các thiết bị điện
tử kích thước nhỏ hơn và nhiều chức năng hơn. Các thiết bị điện tử thông minh
ngày càng nhiều chức năng trong khi giá thành ngày càng rẻ hơn, chính vì vậy mà
cảm biến có mặt khắp mọi nơi.
Ngày nay, trong các hệ thống đo lường - điều khiển, mọi quá trình đều được
đặc trưng bởi các biến trạng thái. Các biến trạng thái này thường là các đại lượng
không điện như nhiệt độ, áp suất, lưu lượng, tốc độ, độ di chuyển v.v… Để thực
hiện các quá trình đo lường và điều khiển cần phải thu thập thông tin, đo đạc, theo
dõi sự biến thiên của các biến trạng thái của quá trình thực hiện chức năng trên là
các thiết bị cảm biến. Hầu hết các thiết bị kỹ thuật từ phức tạp đến đơn giản như
thiết bị điều khiển tự động, thiết bị văn phòng cho đến các thiết bị trong gia đình
đều được tích hợp các cảm biến. Các thiết bị cảm biến đang dần trở thành một
phần không thể thiếu trong đời sống hiện đại của chúng ta. Giờ đây không có một
lĩnh vực nào mà ở đó không sử dụng cảm biến. Chúng có mặt trong các hệ thống tự
động phức tạp, người máy, kiểm tra chất lượng sản phẩm, tiết kiệm năng lượng,
chống ô nhiễm môi trường. Cảm biến cũng được ứng dụng rộng rãi trong lĩnh vực
giao thông vận tải, sản xuất hàng tiêu dùng, bảo quản thực phẩm, sản xuất ô tô,
điện thoại…. Và một trong những cảm biến đang được ứng dụng rộng rãi ngày nay
là cảm biến đo nhiệt độ, độ ẩm DHT11.
Cảm biến đo nhiệt độ, độ ẩm được ứng dụng trong thực tế rất phổ biến như
ứng dụng để theo dõi thời tiết, đo nhiệt độ phòng, những nơi cần kiểm soát độ
ẩm… trong nhiều ứng dụng đó nhóm sinh viên chúng em đã tham gia vào thực
hiện đề tài “ĐO NHIỆT ĐỘ, ĐỘ ẨM SỬ DỤNG CẢM BIẾN DHT11 HIỂN
THỊ TRÊN LCD”. Trong quá trình thực hiện làm do chúng em chưa có kinh
nghiệm nhiều nên còn thiếu sót mong thầy (cô) chỉ dạy chúng em thêm trong
những lần tiếp theo để chúng em thực hiện đề tài thành công hơn.
Chúng em xin chân thành cảm ơn!!!

NHÓM SINH VIÊN THỰC HIỆN ĐỒ ÁN


CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI

1.1. Giới thiệu về đề tài


Trong cuộc sống hiện nay có rất nhiều yếu tố ảnh hưởng đến quá trình sản xuất và
con người. Trong đó nhiệt độ và độ ẩm cũng là yếu tố được đề cập tới rất nhiều, vì
thế mạch đo nhiệt độ và độ ẩm ra đời là sự tất yếu. Với sự phát triển của công nghệ
hiện nay việc sản xuất mạch đo nhiệt độ và độ ẩm đơn giản mà độ chính xác cao là
điều khá đơn giản. Việc áp dụng trong thực tế càng phổ biến hơn khi nhiệt độ độ ẩm
đóng vai trò lớn ảnh hưởng đến con người, hàng hoá, máy móc, độ bền … Vì vậy
nhiệt độ được sử dụng hầu hết các nhà máy sản xuất, kho chứa hàng hoá, bảo quản
máy móc cũng như điều kiện vận hành. Trong y tế nó được sử dụng rộng rãi trong
các phòng cách ly, phòng điều trị cho bệnh nhân cũng như áp dụng hầu hết trong các
dây chuyền cũng như các công nghệ sản xuất tuỳ theo nhu cầu mà chúng ta có thể
tuỳ biến thêm ngoài chức năng của đề tài này để phù hợp với đúng nhu cầu trong
quá trình hoạt động ngoài chức năng chính là hiển thị nhiệt độ độ ẩm của các khu
vực cần khảo sát nhiệt độ và độ ẩm.
Với đề tài này 1 bộ mạch “Đo nhiệt độ và độ ẩm” ta có thể đo cùng lúc nhiệt độ và
độ ẩm có thể phát triển hiệu quả hơn, nhưng đề tài chỉ trong phạm vi là Đồ án 1 nên
tính hiệu quả thực tế cũng như tính chính xác của mạch không cao.

1.2. Mục đích đề tài


1.3. Nhiệm vụ đề tài
1.4. Phương pháp nghiên cứu
CHƯƠNG 2. NỘI DUNG ĐỀ TÀI
2.1. Nội dung đề tài
2.2. Cơ sở lý thuyết
2.3. Sơ đồ đề tài
CHƯƠNG 3. TỔNG QUAN VỀ LINH KIỆN

3.1. Tổng quan về Arduino Uno R3


3.1.1. Giới thiệu về Arduino
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là những
người tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây, gần
giống với những gì Apple đã làm được trên thị trường thiết bị di động. Số lượng
người dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại
học đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về mức độ phổ
biến.

Hình 2.1. Những thành viên khởi xướng Arduino

Arduino là gì mà có thể khiến ngay cả những sinh viên và nhà nghiên cứu tại
các trường đại học danh tiếng như MIT, Stanford, Carnegie Mellon phải sử dụng;
hoặc ngay cả Google cũng muốn hỗ trợ khi cho ra đời bộ kit Arduino Mega ADK
dùng để phát triển các ứng dụng Android tương tác với cảm biến và các thiết bị
khác?
Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tác với
các thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác. Đặc
điểm nổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với
một ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít am
hiểu về điện tử và lập trình. Và điều làm nên hiện tượng Arduino chính là mức giá
rất thấp và tính chất nguồn mở từ phần cứng tới phần mềm. Chỉ với khoảng $30,
người dùng đã có thể sở hữu một bo Arduino có 20 ngõ I/O có thể tương tác và
điều khiển chừng ấy thiết bị.
Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị
vua vào thế kỷ thứ 9 là King Arduin. Arduino chính thức được đưa ra giới
thiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo
sư Massimo Banzi, là một trong những người phát triển Arduino, tại trường
Interaction Design Instistute Ivrea (IDII). Mặc dù hầu như không được tiếp thị gì
cả, tin tức về Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền
miệng tốt đẹp của những người dùng đầu tiên. Hiện nay Arduino nổi tiếng tới nỗi
có người tìm đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino.
3.1.2. Tổng quan về Arduino Uno R3
3.1.2.1. Giới thiệu board Arduino Uno R3
Mạch Arduino Uno là dòng mạch Arduino phổ biến, khi mới bắt đầu làm
quen, lập trình với Arduino thì mạch Arduino thường nói tới chính là dòng
Arduino UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (Mạch Arduino
Uno R3).
Arduino Uno R3 là dòng cơ bản, linh hoạt, thường được sử dụng cho người
mới bắt đầu. Bạn có thể sử dụng các dòng Arduino khác như: Arduino Mega,
Arduino Nano, Arduino Micro… Nhưng với những ứng dụng cơ bản thì mạch
Arduino Uno là lựa chọn phù hợp nhất.

Hình 2.2. Board Arduino Uno R3

Arduino UNO R3 là kit Arduino UNO thế hệ thứ 3, với khả năng lập trình
cho các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh cho các loại
bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều ngõ có
khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn giao tiếp đa
dạng như UART, SPI, TWI (I2C).
3.1.2.2. Cấu tạo của Arduino Uno R3

Hình 2.3. Cấu trúc của Arduino Uno R3

1. Nguồn (DC Power Jack)


Cổng nguồn ngoài nhằm sử dụng nguồn điện bên ngoài như pin, bình acquy
hay các adapter cho bo Arduino hoạt động. Bo mạch hoạt động với nguồn ngoài ở
điện áp từ 5 – 12 volt. Có thể cấp một diện áp lớn hơn tuy nhiên chân 5V sẽ có
mức điện áp lớn hơn 5V. Nếu sử dụng nguồn lớn hơn 12 volt thì sẽ có hiện tượng
nóng và làm hỏng board mạch. Nên sử dụng nguồn ổn định từ 5 đến dưới 12 volt.
2. Cổng USB (USB Connector)
Arduino sử dụng cáp USB để giao tiếp với máy tính. Thông qua cáp USB
chúng ta có thể Upload chương trình cho Arduino hoạt động, ngoài ra USB cò là
nguồn cho Arduino.
3. Nút Reset (Reset Button)
Nút reset được sử dụng để reset lại chương trình đang chạy. Đôi khi chương
trình chạy gặp lỗi, người dùng có thể reset lại chương trình.
4. ICSP của ATmega 16U2
ICSP là chữ viết tắt của In-Circuit Serial Programming. Đây là các chân giao
tiếp SPI của chip Atmega 16U2. Các chân này thường ít được sử trong các dự án
về Arduino.
5. Các cổng ra (Digital Outputs)
Có tất cả 14 chân xuất tín hiệu ra trong Arduino Uno, những chân có dấu ~
là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc
độ sáng của đèn. Hình 2 thể hiện rất rõ những chân để băm xung này.
6. IC ATmega 328
IC Atmega 328 là linh hồn của bo mạch Arduino Uno, IC này được sử dụng
trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra, …
7. IC Atmega 16U2
IC này được lập trình như một bộ chuyển đổi USB –to-Serial dùng để giao
tiếp với máy tính thông qua giao thức Serial (dùng cổng COM).
8. ICSP của ATmega 328
Các chân ICSP của ATmega 328 được sử dụng cho các giao tiếp SPI (Serial
Peripheral Interface), một số ứng dụng của Arduino có sử dụng chân này, ví dụ
như sử dụng module RFID RC522 với Arduino hay Ethernet Shield với Arduino.
9. Tín hiệu Analog (Analog Inputs)
Các chân này lấy tín hiệu Analog (tín hiệu tương tự) từ cảm biến để IC
Atmega 328 xử lý. Có tất cả 6 chân lấy tín hiệu Analog, từ A0 đến A5.
10. Chân cấp nguồn cho cảm biến
Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như role, cảm
biến, RC servo, …trên khu vực này có sẵn các chân GND (chân nối đất, chân âm),
chân 5V, chân 3.3V như được thể hiện ở hình 2. Nhờ những chân này mà người sử
dụng không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, role, rc servo,
…Ngoài ra trên khu vực này còn có chân Vin và chân reset, chân IOREF. Tuy
nhiên các chân này thường ít được sử dụng nên trong tài liệu này xin không đi sâu
về nó.
12. Các linh kiện khác trên board Arduino Uno
Ngoài các linh kiện đã liệt kê bên trên, Arduino Uno còn 1 số linh kiện đáng
chú ý khác. Trên bo có tất cả 4 đèn led, bao gồm 1 led nguồn (led ON nhằm cho
biết boa đã được cấp nguồn), 2 led Tx và Rx, 1 led L. Các led Tx và Rx sẽ nhấp
nháy khi có dữ liệu truyền từ board lên máy tính hoặc ngược lại thông qua cổng
USB. Led L được được kết nối với chân số 13. Led này được gọi là led on board
(tức led trên bo), led này giúp người dùng có thể thực hành các bài đơn giản mà
không cần dùng thêm led ngoài.

Các thông số chi tiết của Arduino Uno R3:


Vi điều khiển ATmega328 họ 8bit

5V DC (chỉ được cấp qua cổng


Điện áp hoạt động
USB)

Tần số hoạt động 16 MHz

Dòng tiêu thụ khoảng 30mA

Điện áp vào khuyên dùng 7-12V DC

Điện áp vào giới hạn 6-20V DC

Số chân Digital I/O 14 (6 chân hardware PWM)

Số chân Analog 6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA

Dòng ra tối đa (5V) 500 mA

Dòng ra tối đa (3.3V) 50 mA

32 KB (ATmega328) với 0.5KB


Bộ nhớ flash
dùng bởi bootloader

SRAM 2 KB (ATmega328)

EEPROM 1 KB (ATmega328)
Bảng 2.1. Thông số kỹ thuật của Arduino UNO R3

3.1.2.3. Sơ đồ chân và các chức năng của board Arduino Uno R3


Nếu không có sẵn nguồn từ cổng USB, có thể cấp nguồn cho Arduino UNO
từ một bộ chuyển đổi AC→DC hoặc pin. Các bộ chuyển đổi có thể được kết nối
bằng một plug-2.1mm trung tâm tích cực vào jack cắm điện. Trường hợp cấp
nguồn quá ngưỡng trên sẽ làm hỏng Arduino UNO.
Hình. Sơ đồ chân của board Arduino Uno R3

Các chân năng lượng


- GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi dùng các
thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối
với nhau.
- 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
- 3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa ở chân này là 50mA.
- Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, ta nối cực dương
của nguồn với chân này và cực âm với chân GND.
- IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo
ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy không được lấy nguồn 5V
từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn.
- RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với
việc chân RESET được nối với GND qua 1 điện trở 10KΩ.

Các chân Input/Output:


Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ
có 2 mức điện áp là 0V và 5V với dòng tối đa trên mỗi chân là 40mA.
Một số chân digital có các chức năng đặc biệt như sau:
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive
– RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông
qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối
Serial không dây. Nếu không cần giao tiếp Serial, không nên sử dụng 2 chân
này nếu không cần thiết
- Chân PWM (~) 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 2 8-1 tương ứng với 0V → 5V) bằng hàm
analogWrite(). Nói một cách đơn giản, có thể điều chỉnh được điện áp ra ở chân
này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân
khác.
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các
chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao
thức SPI với các thiết bị khác.
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm
nút Reset, ta sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số
13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu
10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF
trên board, ta có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog.
Tức là nếu cấp điện áp 2.5V vào chân này thì ta có thể dùng các chân analog để đo
điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.

3.2. Cảm biến nhiệt độ và độ ẩm DHT11


3.2.1. Giới thiệu sơ lược về module
Là cảm biến nhiệt độ, độ ẩm rất thông dụng hiện nay vì chi phí rẻ và rất dễ
lấy dữ liệu thông qua giao tiếp 1-wire (giao tiếp digital 1-wire truyền dữ liệu duy
nhất). Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về được
chính xác mà không cần phải qua bất kỳ tính toán nào.
Hình 2.3. Cảm biến và module cảm biến DHT11

 Thông số kỹ thuật:
- Điện áp hoạt động: 3.3V đến 5V (DC).
- Dải nhiệt độ đo: 0°C ~ 50°C, sai số ± 2°C.
- Dải độ ẩm đo: 20% - 90% RH, sai số ± 5% RH.
- Tần số lấy mẫu: 1Hz, nghĩa là 1 giây DHT11 lấy mẫu một lần.
- Chuẩn giao tiếp: TTL, 1 – Wire.
- Dòng tối đa: 2.5mA
- Kích thước cảm biến: 15mm x 12mm x 5.5mm.
- Kích thước module: 28mm x 12mm x 10 mm.

Hình 2.3. Sơ đồ chân module DHT11

 Chức năng các chân của module DHT11:


- Chân VCC: cực dương.
- Chân GND: cực âm.
- Chân DATA: chân tín hiệu.
3.2.2. Nguyên lý hoạt động
Sơ đồ kết nối vi xử lý:

Hình 3.3. Sơ đồ kết với vi xử lý với DHT11

Để 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:
- Gửi tín hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
- Khi đã giao tiếp 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

Hình 2.5 Cách thức hoạt động

• 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. Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt độ và độ
ẩm.
• MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
• Sau khoảng thời gian là 20 - 40 µs, DHT11 sẽ kéo chân DATA xuống thấp.
Nếu > 40 µs mà chân DATA không được kéo xuống thấp nghĩa là không giao
tiếp được với DHT11.
• Chân DATA sẽ ở mức thấp 80 µs sau đó nó được DHT11 kéo lên cao trong
80 µs. 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 không. 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 DHT11.

Bước 2: Đọc giá trị trên DHT11


- 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 độ (°C).
• Byte 4: giá trị phần thập phân của nhiệt độ (°C).
• Byte 5: kiểm tra tổng.
 Nếu Byte 5 = (Byte 1 + Byte 2 + Byte 3 + Byte 4) 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.
 Ví dụ như ta nhận được 40 bit (5 Byte) dữ liệu như sau: 0011 0101
0000 0000 0001 1000 0000 0000 0100 1101
Tính toán:
8 Bit Checksum (Byte 5) = 0011 0101 + 0000 0000 + 0001 1000 + 0000
0000 = 0100 1101
Độ ẩm: 0011 0101 = 35H = 53% RH (ở đây phần thập phân có giá trị
0000 0000, nên ta bỏ qua không tính phần thập phân)
Nhiệt độ: 0001 1000 = 18H = 24°C (ở đây phần thập phân có giá trị
0000 0000, nên ta bỏ qua không tính phần thập phân)
- Đọ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:
Hình 2.6. Bit 0

• Bit 1:

Hình 2.7 Bit 1

- Sau khi tiến hiệu được đưa về 0, ta đợi chân DATA của DHT11 được MCU
kéo lên 1. Nếu chân DATA là 1 trong khoảng 26 – 28 µs thì là bit 0, còn nếu
tồn tại 70 µs là bit 1. Do đó trong lập trình ta bắt sườn của chân DATA, sau
đó delay 50 µs. 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 là bit 1. Cứ như thế ta đọc các Bit tiếp theo.
Hình 2.8 Cách truyền bit
3.3. Tổng quan về LCD
3.3.1. Giới thiệu về LCD
Thế kỷ 21 đã chứng kiến sự phát triển vượt bậc của các ngành công nghệ.
Một trong số các công nghệ đó chúng ta phải kể đến đó là công nghệ LCD. Nhà
vật lý người Áo Frinitzen Reinitzer đã phát hiện ra các tinh thể lỏng vào năm 1888.
Màn hình tinh thể lỏng đầu tiên đuợc sản xuất vào những năm 70 của thế ký 20 với
những ứng dụng ban đầu trong máy tính, đồng hồ và quan sát phần tử…. Công
nghệ màn hình tinh thể lỏng phát triển rất mạnh mẽ với giá thành ngày càng thấp,
tiêu hao ít năng luợng kiểu dáng gọn nhẹ với rất nhiều các ứng dụng trong thực tế
như: tivi, màn hình máy tính, màn hình điện thoại…

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ẽ …

LCD là tên viết tắt của (Liquid Crystal Display) hay còn được biết đến cái
tên dân dã hơn là màn hình tinh thể lỏng. Có rất nhiều loại màn hình LCD khác
nhau. Với những ứng dụng nhỏ thường sử dụng loại màn hình cỡ nhỏ đơn giản là
loại LCD16x2. Các ký tự được hiển thị trên màn hình với 2 hàng, mỗi hàng hiển
thị được 16 ký tự.

Hình 2.1. Màn hình LCD 16x2


Có thể chia các module LCD làm 2 loại chính:

+ Loại hiển thị ký tự (charater LCD) gồm có các các kích cỡ 16x1(16 kí tự
x1 dòng); 16x2(16 ký tự x2 dòng); 16x4 (16 ký tự x4 dòng); 20x1 (20 ký tự x1
dòng).

+ Loại hiển thị đồ họa (graphic LCD) đen trắng hoặc màu gồm các kích cỡ
1,47 inch (128x128 điểm ảnh); 1,8 inch (128x160 điểm ảnh); 2,4 inch (240x320
điểm ảnh).

Thông số kỹ thuật:

 Điện áp hoạt động là 5 V.


 Kích thước: 80 x 36 x 12.5 mm
 Chữ đen, nền xanh lá
 Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với
Breadboard.
 Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi
dây điện.
 Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử
dụng ít điện năng hơn.
 Có thể được điều khiển với 6 dây tín hiệu.
3.3.2. Sơ đồ, chức năng, liên kết các chân của LCD
Sơ đồ chân LCD:

Hình 2.2. Sơ đồ chân LCD 16x2


Mô tả các chân, loại 16 chân
Châ Ký Mô tả
n hiệu
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
1 VSS
GND của mạch điều khiển.

Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
2 VDD
VCC=5V của mạch điều khiển.

3 VEE Điều chỉnh độ tương phản của LCD.

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
4 RS (ở 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.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
5 R/W “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc.
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
6 E 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.
7- D0 - Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU.
14 D7 Có 2 chế độ 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.

15 A Nguồn cho LED nền LCD

16 K Mass cho LED nền LCD

Bảng 2.1. Kí hiệu và 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.
CHƯƠNG 4. THỰC HIỆN ĐỒ ÁN

4.1. Mô phỏng trên phần mềm Proteus


4.1.1. guhjuhujh
Mô hình thiết mạch
Danh sách thiết bị
ST Tên Chức năng
T
1 Arduino Uno R3 Bộ điêu khiển
2 LCD1602 LCD hiển thị thông số nhiệt độ, độ ẩm
3 Module DHT11 Cảm biến nhiệt độ độ ẩm
4 Module I2C Chuyển đổi chân cho LCD

Tổng quan hệ thống


#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 5, 0, 1, 2, 3);
byte degree_symbol[8] =
{
0b00111,
0b00101,
0b00111,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
int gate=11;
volatile unsigned long duration=0;
unsigned char i[5];
unsigned int j[40];
unsigned char value=0;
unsigned answer=0;
int z=0;
int b=1;
void setup()
{
lcd.begin(16, 2);
lcd.print("Nhiet do = ");
lcd.setCursor(0,1);
lcd.print("Do am = ");
lcd.createChar(1, degree_symbol);
lcd.setCursor(13,0);
lcd.write(1);
lcd.print("C");
lcd.setCursor(10,1);
lcd.print("%");
}

void loop()
{

delay(1000);
while(1)
{
delay(1000);
pinMode(gate,OUTPUT);
digitalWrite(gate,LOW);
delay(20);
digitalWrite(gate,HIGH);
pinMode(gate,INPUT_PULLUP);//by default it will become high
due to internal pull up
// delayMicroseconds(40);

duration=pulseIn(gate, LOW);
if(duration <= 84 && duration >= 72)
{
while(1)
{
duration=pulseIn(gate, HIGH);

if(duration <= 26 && duration >= 20){


value=0;}

else if(duration <= 74 && duration >= 65){


value=1;}

else if(z==40){
break;}

i[z/8]|=value<<(7- (z%8));
j[z]=value;
z++;
}
}
answer=i[0]+i[1]+i[2]+i[3];

if(answer==i[4] && answer!=0)


{
lcd.setCursor(11,0);
lcd.print(i[2]);
lcd.setCursor(8,1);
lcd.print(i[0]);
}

z=0;
i[0]=i[1]=i[2]=i[3]=i[4]=0;
}
}

You might also like