



















Preview text:
  lOMoAR cPSD| 58511332
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG  KHOA VIỄN THÔNG I   
BÁO CÁO THỰC HÀNH INTERNET VÀ CÁC GIAO THỨC 
“Nghiên cứu cách thưc hiển thị với LCD 16x2 và lập trình GPIO với Arduino 
trong trường hợp Output” 
Giảng viên hướng dẫn: Hoàng Thị Thu  Nhóm 87 – Tổ 2 
 Tên các thành viên: Đỗ Xuân Bình   Lê Ngọc Minh   Lê Văn Quang     Nguyễn Xuân Quyển   Nguyễn Văn Sơn   Thạch Minh Tuấn        lOMoAR cPSD| 58511332 LỜI MỞ ĐẦU 
Trong thời đại công nghệ số hiện nay, việc ứng dụng các thiết bị điện tử và công 
nghệ lập trình đã trở thành một phần quan trọng trong nhiều lĩnh vực của cuộc 
sống. Một trong những thiết bị điện tử phổ biến được sử dụng rộng rãi là màn hình 
tinh thể lỏng (LCD) và các bộ điều khiển như Arduino. 
Màn hình LCD 16x2 là một loại màn hình hiển thị thông dụng, được sử dụng rộng 
rãi trong các ứng dụng như hiển thị thông tin, điều khiển thiết bị, và giao tiếp giữa 
người và máy. Tuy nhiên, để hiển thị thông tin trên màn hình LCD này, cần phải có 
một bộ điều khiển phù hợp. 
Arduino là một nền tảng lập trình và thiết bị điện tử mã nguồn mở, được sử dụng 
rộng rãi trong các ứng dụng như điều khiển robot, thiết bị tự động hóa, và các dự 
án điện tử khác. Với khả năng lập trình và điều khiển linh hoạt, Arduino đã trở 
thành một lựa chọn phổ biến cho các dự án điện tử. 
Tuy nhiên, việc kết hợp màn hình LCD 16x2 và Arduino để hiển thị thông tin và 
điều khiển thiết bị vẫn còn là một thách thức đối với nhiều người. Vì vậy, mục tiêu 
của báo cáo này là nghiên cứu cách thức hiển thị với LCD 16x2 và lập trình GPIO 
với Arduino trong tương hợp Output, nhằm cung cấp một giải pháp hiệu quả và 
linh hoạt cho các ứng dụng điện tử.      lOMoAR cPSD| 58511332
Chương 1 Tổng quan về Arduino và LCD 16x2  1.1. Tổng quan Arduino 
1.1.1.Giới thiệu về Adruino 
Arduino là một nền tảng nguyên mẫu (mã nguồn mở) dựa trên nền phần mềm và 
phần cứng dễ sử dụng. Nó bao gồm một bo mạch - thứ mà có thể được lập trình 
(đang đề cập đến vi điều khiển) và một phần mềm hỗ trợ gọi là Arduino IDE (Môi 
trường phát triển tích hợp cho Arduino), được sử dụng để viết và nạp từ mã máy 
tính sang bo mạch vật lý. Những tính năng chính như: 
 Các bo mạch Arduino có khả năng đọc các tín hiệu tương tự (analog) hoặc 
tín hiệu số (digital) làm đầu vào từ các cảm biến khác nhau và chuyển nó 
thành đầu ra như kích hoạt mô-tơ quay, bật/tắt đèn LED, kế nối mạng 
Internet hoặc nhiều hoạt động khác nữa. 
 Bạn có thể điều khiển các chức năng của bo mạch của mình bằng cách nạp 
các tập lệnh đến vi điều khiển trên bo mạch. Thông qua phần mềm hỗ trợ là  Arduino IDE. 
 Không giống như bo mạch có khả năng lập trình trước kia, Arduino chỉ cần 
bạn sử dụng cáp USB để nạp mã vào trong bo mạch. 
 Hơn nữa, phần mềm Arduino IDE sử dụng phiên bản giản thể của C++, làm 
việc học lập trình nó trở nên dễ dàng hơn rất nhiều. 
1.1.2.Phần cứng của Adruino Uno R3 
Phần này nói về phần cứng của Arduino Uno R3, một bo mạch thông dụng hiện 
nay. Tài liệu hướng dẫn này chỉ đưa ra những kiến thức cơ bản cần thiết cho việc 
sử dụng board mạch này. Nếu người học cần những kiến thức chuyên sâu hơn thì 
có thể tham khảo tại website chính thức của Arduino: “arduino.cc”.      lOMoAR cPSD| 58511332  
 1. Cáp USB: Đây là dây cáp thường được bán kèm theo bo, dây cáp dùng để 
cắm vào máy tính để nạp chương trình cho bo và dây đồng thời cũng lấy 
nguồn từ nguồn usb của máy tính để cho bo hoạt động. Ngoài ra cáp USB 
còn được dùng để truyền dữ liệu từ bo Arduino lên máy tính. Dây cáp có 2 
đầu, đầu 1a được dùng để cắm vào cổng USB trên bo Arduino, đầu 1b dùng 
để cắm vào cổng USB trên máy tính. 
 2. IC Atmega 16U2: IC này được lập trình như một bộ chuyển đổi USB - 
toSerial dùng để giao tiếp với máy tính thông qua giao thức Serial (dùng  cổng COM). 
 3. Cổng nguồn ngoài: 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. 
Nguồn điện cấp vào cổng này là nguồn DC có hiệu điện thế từ 6V đến 20V, 
tuy nhiên hiệu điện thế tốt nhất mà nhà sản xuất khuyên dùng là từ 7 đến  12V. 
 4. Cổng USB: Cổng USB trên bo Arduino dùng để kết nối với cáp USB. 
 5. Nút reset: 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. 6. 
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. 
 7. Chân xuất tín hiệu ra: 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. 
 8. 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,...      lOMoAR cPSD| 58511332
 9. Chân 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. 
 10. Chân lấy tín hiệu Analog: 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. 
 11. 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. 1.1.3. Các thông số kỹ thuật   
Các chân vào ra của Arduino Uno      lOMoAR cPSD| 58511332 Vi điều khiển  ATmega328P  Điện áp hoạt động  5V  Điện áp đầu vào  7-12V  (khuyến nghị) 
Điện áp đầu vào (giới 6-20V  hạn)  Chân I/O kỹ thuật số 
14 (trong đó 6 cung cấp đầu ra PWM)  Chân I/O kỹ thuật số 6  PWM  Chân đầu vào tương  6  tự  Dòng điện DC trên  20mA  mỗi chân I/O  Dòng điện DC cho  50mA  chân 3.3V  Bộ nhớ Flash 
32 KB (ATmega328P) trong đó 0,5 KB được sử 
dụng bởi bộ nạp khởi động  SRAM  2KB (ATmega328P)  Bộ nhớ EEPROM  1KB (ATmega328P)  Tốc độ đồng hồ  16MHz  LED_TÍCH HỢP  13  Chiều dài  68,6mm  Chiều rộng  53,4mm  Cân nặng  25g 
Thông số của Arduino Uno R3 
1.1.4. Ưu nhược điểm của Arduino  Ưu điểm:      lOMoAR cPSD| 58511332
 Dễ dàng sử dụng: Arduino có môi trường lập trình trực quan, ngôn ngữ lập 
trình đơn giản (dựa trên C/C++), rất phù hợp cho người mới bắt đầu, kể cả 
những người không có nhiều kiến thức về điện tử và lập trình. 
 Cộng đồng lớn mạnh: Có một cộng đồng người dùng Arduino rất đông đảo 
và nhiệt tình trên toàn thế giới. Điều này giúp bạn dễ dàng tìm thấy tài liệu, 
hướng dẫn, thư viện và giải đáp mọi thắc mắc khi gặp khó khăn. 
 Phần cứng linh hoạt: Arduino có nhiều loại bo mạch khác nhau với các tính 
năng và mức giá đa dạng, đáp ứng được nhiều nhu cầu của người dùng. 
Ngoài ra, bạn có thể dễ dàng kết nối Arduino với các cảm biến, module và 
thiết bị ngoại vi khác. 
 Giá thành hợp lý: So với các nền tảng tương tự, Arduino có giá thành khá 
phải chăng, giúp bạn tiết kiệm chi phí khi bắt đầu làm quen với điện tử. 
 Mở rộng dễ dàng: Arduino có cấu trúc mô đun, giúp bạn dễ dàng mở rộng 
các tính năng của dự án bằng cách thêm các module và shield. 
 Ứng dụng đa dạng: Arduino có thể được ứng dụng trong rất nhiều lĩnh vực, 
từ tự động hóa gia đình, robot, IoT cho đến các dự án nghệ thuật sáng tạo.  Nhược điểm: 
 Hiệu năng: So với các vi điều khiển chuyên dụng, Arduino có tốc độ xử lý 
và khả năng tính toán không cao. Vì vậy, nó không phù hợp với các dự án 
đòi hỏi thời gian thực và tính toán phức tạp. 
 Kích thước: Một số loại bo mạch Arduino có kích thước khá lớn, không phù 
hợp với các dự án đòi hỏi kích thước nhỏ gọn. 
 Tiêu thụ điện năng: Arduino tiêu thụ một lượng điện năng nhất định, có thể 
không phù hợp với các dự án chạy bằng pin và cần tiết kiệm năng lượng. 
 Không phải lúc nào cũng là lựa chọn tốt nhất: Trong một số trường hợp, các 
nền tảng khác như Raspberry Pi hoặc các vi điều khiển chuyên dụng có thể 
phù hợp hơn với dự án của bạn. 
1.2.Giới thiệu về LCD 16x2 
1.2.1 Khái niệm về LCD 16x2 
Màn hình LCD 16x2 (Liquid Crystal Display) sử dụng công nghệ tinh thể lỏng để 
hiển thị các ký tự và số liệu. Màn hình này bao gồm các ô nhỏ gọi là pixel, mỗi 
pixel có thể thay đổi độ trong suốt để hiển thị các ký tự khác nhau. Với kích thước      lOMoAR cPSD| 58511332
16x2, màn hình có thể hiển thị 16 ký tự trên mỗi dòng và có 2 dòng hiển thị. Các 
màn hình LCD thường sử dụng giao thức song song để giao tiếp với vi điều khiển, 
tuy nhiên, với module I2C, việc kết nối trở nên đơn giản hơn rất nhiều.    Màn hình LCD 16x2  Sơ đồ các chân LCD 16x2  Mô tả  Chân  Ký hiệu 
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân  1  Vss 
này với 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  2  VDD 
này với 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 (ở 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  4  RS  DR bên trong LCD. 
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  5  R/W 
với logic “1” để LCD ở chế độ đọc.      lOMoAR cPSD| 58511332 6  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. 
Tám đường của bus dữ liệu dùng để trao đổi thông 
tin với MPU. 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ừ 
7 - 14 DB0 DB7 DB4 tới DB7, bit MSB là DB7 
Nguồn dương cho đèn nền  15  -      GND cho đèn nền    16  - 
1.2.3 Nguyên lý hoạt động 
Màn hình LCD 16x2 hoạt động dựa trên nguyên lý của tinh thể lỏng. Khi một điện 
trường được áp dụng lên tinh thể lỏng, các phân tử tinh thể lỏng sẽ bị sắp xếp lại 
để tạo thành một hình ảnh trên màn hình. 
Quá trình hoạt động của màn hình LCD 16x2 như sau: 
1. Bộ điều khiển nhận tín hiệu điện từ bộ nhớ hoặc từ một nguồn tín hiệu khác. 
2. Bộ điều khiển sẽ điều khiển các tín hiệu điện để tạo ra một điện trường trên màn  hình tinh thể lỏng. 
3. Điện trường này sẽ làm cho các phân tử tinh thể lỏng bị sắp xếp lại để tạo thành 
một hình ảnh trên màn hình. 
4. Hình ảnh này sẽ được hiển thị trên màn hình cho đến khi bộ điều khiển nhận 
được tín hiệu điện mới.      lOMoAR cPSD| 58511332
1.2.4. Ứng dụng của Màn hình LCD 16x2: 
Màn hình LCD 16x2 (16 cột x 2 hàng) là một loại màn hình tinh thể lỏng phổ biến 
trong các ứng dụng điện tử, đặc biệt là trong lĩnh vực lập trình vi điều khiển. Ứng 
dụng của nó phụ thuộc vào khả năng hiển thị thông tin văn bản một cách rõ ràng và 
dễ đọc. Dưới đây là một số ứng dụng chính: 
1. Trong các thiết bị điều khiển và giám sát: 
o Thiết bị đo lường: Hiển thị các thông số đo lường như nhiệt độ, áp suất, độ 
ẩm, vv. Ví dụ, trong các thiết bị đo lường trong phòng thí nghiệm, trong hệ 
thống kiểm soát môi trường. 
o Hệ thống báo động: Hiển thị trạng thái hoạt động, các cảnh báo hoặc lỗi. Có 
thể hiển thị thông tin về các sự kiện như cháy, trộm cắp, hoặc sự cố khác. o 
Thiết bị kiểm soát từ xa: Hiển thị các thông tin điều khiển, trạng thái thiết 
bị, hoặc các thông số hoạt động. 
o Thiết bị điều khiển máy móc: Hiển thị trạng thái hoạt động của máy, các 
thông số điều khiển, tình trạng vận hành, và các thông tin báo lỗi. 
2. Trong các thiết bị điện tử gia dụng: 
o Máy tính bỏ túi: Có thể hiển thị kết quả tính toán, các lệnh được nhập, và  các thông tin khác. 
o Thiết bị điều khiển đèn, điều hòa, vv: Hiển thị thông tin về trạng thái thiết 
bị, cài đặt nhiệt độ, giờ, và các chức năng khác. 
o Thiết bị giải trí nhỏ gọn: Hiển thị thông tin về bài hát, kênh, hoặc các thông  số khác. 
3. Trong các ứng dụng giáo dục và đào tạo: 
o Máy tính học tập: Hiển thị các bài học, ví dụ, các bảng tính, và các công  thức toán học. 
o Mô phỏng: Hiển thị các mô phỏng, ví dụ, mô phỏng các quá trình vật lý, hóa  học, hoặc sinh học. 
4. Trong các dự án lập trình vi điều khiển:      lOMoAR cPSD| 58511332
o Các dự án giáo dục: Dùng để hiển thị thông tin, dữ liệu, và kết quả của các 
chương trình được viết trên vi điều khiển. 
o Các dự án điều khiển tự động: Hiển thị thông tin về các hoạt động của hệ 
thống điều khiển được lập trình. 
o Các dự án điều khiển robot: Hiển thị thông tin về trạng thái của robot, vị trí, 
hoặc các thông số vận hành. 
1.2.5. Ưu nhược điểm của LCD 16x2 
Ưu điểm của màn hình LCD 16x2: 
 Dễ sử dụng: Giao diện đơn giản và có nhiều thư viện hỗ trợ cho các nền tảng 
như Arduino, làm cho nó dễ dàng tích hợp vào các dự án. 
 Tiêu thụ năng lượng thấp: LCD tiêu thụ rất ít điện năng so với các loại màn 
hình khác như LED hay OLED, rất phù hợp cho các thiết bị chạy pin. 
 Hiển thị rõ ràng: Với đèn nền (backlight), nội dung hiển thị có thể được đọc 
rõ ràng trong nhiều điều kiện ánh sáng khác nhau. 
 Giá thành rẻ: Màn hình LCD 16x2 có giá thành rất phải chăng, phù hợp với 
các dự án có ngân sách hạn chế. 
 Độ bền cao: Các màn hình LCD có tuổi thọ cao và ít bị hỏng hóc nếu được  sử dụng đúng cách. 
 Không phát sáng: Không tự phát sáng như LED, điều này có thể là một lợi 
thế trong một số ứng dụng nơi ánh sáng phát ra có thể gây phiền nhiễu. 
Nhược điểm của màn hình LCD 16x2 
 Kích thước hiển thị nhỏ: Chỉ có thể hiển thị 16 ký tự trên mỗi hàng và tổng 
cộng hàng, giới hạn lượng thông tin có thể hiển thị cùng một lúc. 
 Khả năng hiển thị màu sắc: Màn hình LCD 16x2 thường chỉ hiển thị một 
màu (thường là màu xanh lá cây hoặc xanh dương trên nền đen), không hỗ 
trợ hiển thị màu sắc phong phú. 
 Góc nhìn hạn chế: Góc nhìn của LCD không rộng như của các công nghệ 
màn hình hiện đại khác như TFT hay OLED, có thể khó đọc từ một số góc  độ.      lOMoAR cPSD| 58511332
 Độ phân giải thấp: Với mỗi ký tự được tạo từ một ma trận điểm nhỏ, độ 
phân giải và chi tiết của hình ảnh hoặc đồ họa rất hạn chế. 
 Yêu cầu nhiều chân kết nối: Để hoạt động ở chế độ 8-bit, nó yêu cầu ít nhất 
6 chân kỹ thuật số của vi điều khiển, và 4-bit cũng cần 4 chân, điều này có 
thể là một hạn chế trong các dự án yêu cầu nhiều chân I/O. 
 Tốc độ làm mới chậm: So với các màn hình hiện đại, LCD có tốc độ làm 
mới khá chậm, không phù hợp cho các ứng dụng yêu cầu hiển thị động  nhanh chóng. 
 Phức tạp trong điều khiển: Mặc dù có thư viện hỗ trợ, việc điều khiển chi 
tiết và tùy chỉnh sâu có thể đòi hỏi hiểu biết về các lệnh và thời gian của bộ  điều khiển LCD. 
Mặc dù có những hạn chế, màn hình LCD 16x2 vẫn là một lựa chọn phổ biến cho 
nhiều ứng dụng cần hiển thị thông tin đơn giản và không yêu cầu màu sắc hay độ  phân giải cao.        lOMoAR cPSD| 58511332
Chương 2: Cách thức hiển thị với LCD 16x2 và lập trình GPIO với Arduino 
2.1. Giới Thiệu Chung về Hệ Thống  * Mục Đích: 
Hệ thống kết hợp màn hình LCD 16x2 và Arduino được thiết kế nhằm đáp ứng các  nhu cầu sau: 
o Hiển Thị Thông Tin Đơn Giản và Rõ Ràng: Cung cấp một cách hiệu quả để 
hiển thị văn bản, số, và ký tự đặc biệt một cách rõ ràng và dễ đọc, phù hợp 
cho các ứng dụng cần truyền tải thông tin nhanh chóng và chính xác. 
o Tích Hợp Dễ Dàng: Cho phép người dùng dễ dàng kết nối và lập trình màn 
hình LCD 16x2 với Arduino, mà không cần kiến thức chuyên sâu về lập 
trình nhúng hoặc điện tử. 
o Ứng Dụng Đa Dạng: Hệ thống có thể được áp dụng trong nhiều lĩnh vực 
như hệ thống đo lường, điều khiển tự động, thiết bị y tế, hệ thống an ninh, và 
các dự án IoT, giúp cải thiện hiệu quả và tính năng của các thiết bị. 
o Giáo Dục và Học Tập: Cung cấp một nền tảng lý tưởng cho việc học tập và 
thực hành về điện tử và lập trình, giúp người dùng hiểu rõ hơn về cách hoạt 
động của màn hình LCD và cách sử dụng Arduino. 
o Tiết Kiệm Chi Phí: Sử dụng các thành phần phổ biến và có giá thành hợp lý, 
giúp giảm chi phí cho các dự án điện tử và tự động hóa. 
* Yêu Cầu của Hệ Thống  - Yêu Cầu Kỹ Thuật   Màn Hình LCD 16x2: 
o Kích thước: 16 ký tự trên mỗi dòng, 2 dòng. o Điện áp hoạt động: 5V. o 
Nhiệt độ hoạt động: -20°C đến 70°C. o Độ sáng: Điều chỉnh bằng điện trở  biến.   Arduino: 
o Board vi điều khiển với nhiều chân GPIO, USB, và các cổng kết nối khác. 
o Hỗ trợ lập trình qua Arduino IDE. 
- Các Thiết Bị Ngoại Vi (tùy chọn):      lOMoAR cPSD| 58511332
o Cảm biến (ví dụ: cảm biến nhiệt độ, cảm biến ánh sáng, cảm biến vận 
động). o LED. o Nút bấm. o Relay.  * Các thiết bị:  - Phần cứng   + Tên linh kiện  Arduino Uno R3    LCD 16x2    Mạch I2C      lOMoAR cPSD| 58511332   Dây cáp    Dây cắm    + Mạch điện cơ bản: 
 Một mạch điện cơ bản để kết nối Arduino với LCD 16x2 bao gồm:      lOMoAR cPSD| 58511332
 Arduino: Bo mạch vi điều khiển trung tâm, thực hiện các tính toán và điều  khiển. 
 LCD 16x2: Màn hình hiển thị 16 ký tự trên 2 dòng. 
 Mạch I2C: hiển thị thông tin trên màn hình một cách tiện lợi và tiết kiệm  chân kết nối 
 Dây nối: Để kết nối các thành phần với nhau. 
Các chân kết nối thường gặp:   GND: Dây nối đất 
 VCC: chân kết nối đến nguồn điện dương (thường là 5V hoặc 3.3V). 
 SDA: là đường truyền dữ liệu giữa các thiết bị trên bus I2C. 
 SCL: là đường xung đồng hồ (clock) giữa các thiết bị trên bus I2C.  - Phần mềm: Arduino IDE   
2.2. Sơ đồ kết nối      lOMoAR cPSD| 58511332  
• Kết nối chân GND trên I2C kết nối với chân GND trên Arduino Uno R3 
• Kết nối chân VCC trên I2C kết nối với chân 5v trên Arduino Uno R3 
• Kết nối chân SDA trên I2C kết nối với chân A4 trên Arduino Uno R3 
• Kết nối chân SCLtrên I2C kết nối với chân A5 trên Arduino Uno R3  2.3 Code hiển thị  #include  #include 
LiquidCrystal_I2C lcd(0x27, 16, 2);  void setup()  {  lcd.init();  lcd.backlight();  }  void loop()  {   lcd.setCursor(2,0);  lcd.print( “Hello word”);      lOMoAR cPSD| 58511332 lcd.setCursor(2,1);  lcd.print(“Xin chao”);  }  Giải thích code: 
LiquidCrystal_I2C lcd(0x27,16,2); 
• Đặt địa chỉ LCD là 0x27 cho màn hình LCD 16×2. 
• 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20. 
• 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.  lcd.init(); 
Khởi động màn hình LCD, bắt đầu cho phép Arduino sử dụng màn hình.  lcd.backlight();  Bật đèn nền LCD 16×2.  lcd.setCursor(2,0); 
Đưa con trỏ đến vị trí cột thứ 2 , dòng thứ 0 trên màn hình 
* Lưu ý: giá trị hàng và cột bắt đầu từ số 0 có nghĩa 0 là hàng(cột) 1.  lcd.print("Hello word "); 
Xuất ra dòng chữ Hello word tại vị trí con trỏ ở dòng 0, cột 2.  lcd.setCursor(2,1);  lcd.print("Xin chao"); 
Đoạn code này thì tương tự như trên, xuất ra dòng chữ “Xin chào” tại vị trí con trỏ  ở hàng 1, cột 2.      lOMoAR cPSD| 58511332 2.4 
Các bước thực hiện 
B1: Kết nối phần cứng: 
- Kết nối các chân của LCD với Arduino theo đúng sơ đồ.   
B2: Cài đặt thư viện.  - Khởi tạo thư viện: 
Khai báo thư viện LiquidCrystal và khởi tạo đối tượng LCD 
+ Trong “Sketch” chọn “Include Library” để gọi thư viện “LiquidCrystal_I2C.h” Bước 
3: Thực hiện nạp code vào Arduino Uno   
Trước khi, nạp code thực hiện cắm ardunio vào máy tính. Sau đó, kiểm tra cổng  bằng cách:      lOMoAR cPSD| 58511332
+) Trên giao diện phần mềm Ardunio Uno chọn Tools, sau đó chọn Port hiện thị 
cổng là đã kết nối cổng thành công. 
+) Tiếp theo vào Tool chọn Board chọn Arduino Uno. 
Thực hiện nạp code bằng cách ấn vào biểu tượng dấu check để check lại xem có lỗi 
code không, nếu không chọn dấu mũi tên để nạp code   
Bước 4: Th c hi n đ c k t qua hi n th trên LCDự ệ  ọ  ế  ể  ị    2.5  Phân tích đánh giá