Kết nối LCD với bo mạch Arduino. Kết nối và làm việc với màn hình WH1602 Lcd 1602 kích thước

Mỗi đài phát thanh nghiệp dư, sau một số dự án tự chế đơn giản nhất định, đều đạt được mục tiêu tạo ra một thứ gì đó hoành tráng bằng cách sử dụng các cảm biến và nút bấm. Rốt cuộc, việc hiển thị dữ liệu trên màn hình sẽ thú vị hơn nhiều so với trên màn hình cổng. Nhưng sau đó câu hỏi được đặt ra: nên chọn màn hình nào? Và nói chung là kết nối như thế nào, kết nối cần những gì? Câu trả lời cho những câu hỏi này sẽ được thảo luận trong bài viết này.

LCD 1602

Trong số rất nhiều tùy chọn hiển thị, tôi muốn đề cập cụ thể đến màn hình LCD1602 dựa trên bộ điều khiển HD4478. Màn hình này có hai màu: chữ trắng trên nền xanh, chữ đen trên nền vàng. Việc kết nối LCD 1602 với Arduino cũng sẽ không gây ra vấn đề gì vì đã có thư viện tích hợp sẵn và không cần phải tải thêm bất cứ thứ gì. Màn hình khác nhau không chỉ về giá cả mà còn về kích thước. Thông thường, những người nghiệp dư trên đài sử dụng 16 x 2, tức là 2 dòng 16 ký tự. Nhưng cũng có 20 x 4, trong đó có 4 dòng 20 ký tự. Kích thước và màu sắc không đóng vai trò gì trong việc kết nối màn hình LCD 1602 với Arduno; chúng được kết nối theo cùng một cách. Góc nhìn là 35 độ, thời gian phản hồi hiển thị là 250 ms. Nó có thể hoạt động ở nhiệt độ từ -20 đến 70 độ C. Trong quá trình hoạt động, nó sử dụng 4 mA cho màn hình và 120 mA cho đèn nền.

Nó được sử dụng ở đâu?

Màn hình này không chỉ phổ biến đối với những người nghiệp dư về đài mà còn cả các nhà sản xuất lớn. Ví dụ, máy in và máy pha cà phê cũng sử dụng LCD1602. Điều này là do giá thấp, màn hình này có giá 200-300 rúp trên các trang web của Trung Quốc. Rất đáng để mua ở đó vì tại các cửa hàng của chúng tôi, mức chiết khấu cho màn hình này rất cao.

Kết nối với Arduino

Việc kết nối LCD 1602 với Arduino Nano và Uno cũng không khác. Bạn có thể làm việc với màn hình ở hai chế độ: 4 bit và 8. Khi làm việc với 8 bit, cả bit cấp thấp và cấp cao đều được sử dụng và với 4 bit, chỉ các bit cấp thấp. Không có điểm đặc biệt nào khi làm việc với 8-bit, vì nó sẽ thêm 4 liên hệ nữa để kết nối, điều này là không nên vì tốc độ sẽ không cao hơn, giới hạn cập nhật màn hình là 10 lần mỗi giây. Nhìn chung, để kết nối màn hình LCD 1602 với Arduino, người ta sử dụng rất nhiều dây dẫn, điều này gây ra một số bất tiện, nhưng cũng có những tấm chắn đặc biệt, nhưng sau này sẽ nói nhiều hơn về điều đó. Ảnh hiển thị kết nối của màn hình với Arduino Uno:

Mã mẫu:

#bao gồm // Thêm thư viện LiquidCrystal cần thiết lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Đặt kích thước màn hình lcd.setCursor(0, 0); // Đặt con trỏ về đầu dòng 1 lcd.print("Hello, world!"); // Xuất văn bản lcd.setCursor(0, 1); // Đặt con trỏ về đầu dòng 2 lcd.print("site") ; // Xuất văn bản ) void loop ()( )

Mã này làm gì? Bước đầu tiên là kết nối thư viện để làm việc với màn hình. Như đã đề cập ở trên, thư viện này đã được tích hợp sẵn trong Arduino IDE và không cần phải tải xuống và cài đặt thêm. Tiếp theo, các tiếp điểm được kết nối với các chân được xác định lần lượt là: RS, E, DB4, DB5, DB6, DB7. Sau đó kích thước màn hình được thiết lập. Vì chúng tôi đang làm việc với một phiên bản có 16 ký tự và 2 dòng nên chúng tôi viết các giá trị sau. Chúng tôi đặt con trỏ ở đầu dòng đầu tiên và hiển thị văn bản đầu tiên Hello World. Tiếp theo, đặt con trỏ trên dòng thứ hai và hiển thị tên của trang web. Đó là tất cả! Việc kết nối LCD 1602 với Arduino Uno đã được xem xét.

I2C là gì và tại sao cần thiết?

Như đã nói ở trên, việc kết nối màn hình chiếm rất nhiều địa chỉ liên lạc. Ví dụ: khi làm việc với nhiều cảm biến và màn hình LCD, 1602 chân có thể không đủ. Thông thường, những người phát thanh nghiệp dư sử dụng phiên bản Uno hoặc Nano, không có nhiều liên hệ. Sau đó người ta nghĩ ra những tấm khiên đặc biệt. Ví dụ: I2C. Nó cho phép bạn kết nối một màn hình chỉ với 4 chân. Số tiền này gấp đôi. Mô-đun I2C được bán riêng, trong đó bạn cần tự hàn nó và đã được hàn vào màn hình LCD 1602.

Kết nối bằng mô-đun I2C

Kết nối LCD 1602 với Arduino Nano bằng I2C chiếm ít không gian, chỉ có 4 chân: nối đất, nguồn và 2 đầu ra dữ liệu. Chúng tôi kết nối nguồn và nối đất tương ứng với 5V và GND trên Arduino. Chúng tôi kết nối hai tiếp điểm còn lại: SCL và SDA với bất kỳ chân analog nào. Trong ảnh, bạn có thể thấy ví dụ về cách kết nối màn hình LCD 1602 với arduino bằng mô-đun I2C:

Mã chương trình

Nếu để làm việc với màn hình không có mô-đun thì chỉ cần sử dụng một thư viện, thì để làm việc với mô-đun, bạn cần có hai thư viện. Một trong số chúng đã được đưa vào Arduino IDE - Wire. Một thư viện khác, LiquidCrystal I2C, phải được tải xuống và cài đặt riêng. Để cài đặt thư viện trong Arduino, nội dung của kho lưu trữ đã tải xuống phải được tải vào thư mục Thư viện gốc. Mã chương trình ví dụ sử dụng I2C:

#bao gồm #bao gồm LCD LiquidCrystal_I2C (0x27,16,2); // Thiết lập void setup() ( lcd.init(); lcd.backlight(); // Bật đèn nền màn hình lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // Đặt con trỏ ở dòng thứ hai và ký tự 0. lcd.setCursor(0, 1); // Hiển thị số giây kể từ khi Arduino khởi động lcd.print(millis()/1000); )

Như bạn có thể thấy, mã gần như giống nhau.

Làm thế nào để thêm biểu tượng của riêng bạn?

Vấn đề với những màn hình này là không hỗ trợ bảng chữ cái và ký hiệu Cyrillic. Ví dụ: bạn cần tải một số ký hiệu vào màn hình để nó có thể phản ánh nó. Để làm điều này, màn hình cho phép bạn tạo tối đa 7 biểu tượng của riêng mình. Hãy tưởng tượng bảng:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

Nếu 0 - không có gì ở đó, nếu 1 - đây là vùng được sơn. Trong ví dụ trên, bạn có thể thấy việc tạo ra biểu tượng "mặt cười". Sử dụng một chương trình ví dụ trong Arduino, nó sẽ trông như thế này:

#bao gồm #bao gồm // Thêm thư viện cần thiết // Mặt nạ bit của biểu tượng nụ cười byte Smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LCD LiquidCrystal(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Đặt kích thước màn hình lcd.createChar(1, Smile); // Tạo số ký tự 1 lcd.setCursor(0, 0); // Đặt con trỏ về đầu dòng 1 lcd.print("\1"); // Hiển thị mặt cười (ký tự số 1) - "\1" ) void loop ())( )

Như bạn có thể thấy, một bitmask được tạo giống như bảng. Sau khi được tạo, nó có thể được hiển thị dưới dạng một biến trên màn hình. Hãy nhớ rằng bạn chỉ có thể lưu trữ 7 ký tự trong bộ nhớ. Về nguyên tắc, điều này là đủ. Ví dụ: nếu bạn cần hiển thị biểu tượng độ.

Các vấn đề trong đó màn hình có thể không hoạt động

Có những lúc màn hình không hoạt động. Ví dụ: nó bật nhưng không hiển thị ký tự. Hoặc nó không bật chút nào. Đầu tiên, hãy kiểm tra xem bạn đã kết nối các chân đúng chưa. Nếu bạn sử dụng kết nối LCD 1202 với Arduino mà không có I2C thì rất dễ bị vướng dây dẫn đến màn hình không hoạt động chính xác. Bạn cũng nên đảm bảo rằng độ tương phản của màn hình được tăng lên, vì với độ tương phản tối thiểu, bạn thậm chí không thể nhìn thấy LCD 1602 có được bật hay không. Nếu điều này không giúp ích được thì có lẽ vấn đề có thể nằm ở việc hàn các điểm tiếp xúc, đây là khi sử dụng mô-đun I2C. Một lý do phổ biến khác khiến màn hình có thể không hoạt động là do cài đặt địa chỉ I2C không chính xác. Thực tế là có nhiều nhà sản xuất và họ có thể đặt địa chỉ khác, bạn cần sửa lại ở đây:

LCD LiquidCrystal_I2C (0x27,16,2);

Trong ngoặc đơn, bạn có thể thấy hai giá trị, 0x27 và 16.2 (16.2 là kích thước hiển thị và 0x27 là địa chỉ I2C). Thay vì những giá trị này, bạn có thể thử đặt 0x37 hoặc 0x3F. Chà, một lý do khác chỉ đơn giản là LCD 1602 bị lỗi. Xét rằng hầu hết mọi thứ dành cho Arduino đều được sản xuất tại Trung Quốc, bạn không thể chắc chắn 100% rằng sản phẩm đã mua không bị lỗi.

Ưu và nhược điểm của LCD 1602

Hãy cùng điểm qua những ưu và nhược điểm của màn hình LCD 1602.

  • Giá. Mô-đun này có thể được mua với giá rất phải chăng ở các cửa hàng Trung Quốc. Giá là 200-300 rúp. Đôi khi nó thậm chí còn được bán cùng với mô-đun I2C.
  • Dễ dàng kết nối. Có lẽ ngày nay không ai kết nối LCD 1602 mà không có I2C. Và với mô-đun này, việc kết nối chỉ cần 4 địa chỉ liên lạc, sẽ không có “mạng” dây nào cả.
  • Lập trình. Nhờ các thư viện được tạo sẵn nên làm việc với mô-đun này thật dễ dàng; tất cả các chức năng đều đã được viết sẵn. Và nếu bạn cần thêm biểu tượng của riêng mình, chỉ mất vài phút.
  • Trong quá trình sử dụng bởi hàng nghìn đài nghiệp dư, không có nhược điểm lớn nào được xác định, chỉ có trường hợp mua hàng bị lỗi vì phiên bản màn hình Trung Quốc chủ yếu được sử dụng.

Bài viết này xem xét việc kết nối 1602 với Arduino và cũng cung cấp các ví dụ về các chương trình để làm việc với màn hình này. Nó thực sự là một trong những sản phẩm hay nhất trong danh mục của nó; không phải vô cớ mà hàng nghìn đài phát thanh nghiệp dư chọn nó cho dự án của họ!

Đôi khi chúng ta phải đối mặt với vấn đề xuất nhiều thông tin khác nhau từ Arduino ra thế giới bên ngoài. Thông thường, việc sử dụng cổng nối tiếp là không thể, bất tiện và không có lợi.

Hiển thị ký tự là một trong những phương tiện hiển thị thông tin đơn giản và rẻ nhất vì nó có bộ vi điều khiển riêng lưu trữ các ký tự được mã hóa. Hệ thống này đơn giản hóa việc sử dụng các màn hình này, nhưng đồng thời hạn chế việc sử dụng chúng ở mức chỉ hiển thị thông tin văn bản, không giống như màn hình đồ họa.

Trong ví dụ, chúng ta sẽ xem xét màn hình Winstar wh1602l1, một trong những màn hình phổ biến nhất trên bộ điều khiển hd44780. Ngoài ra, bạn có thể kết nối LCD 2004 và các loại tương tự khác.
Hai chữ số đầu tiên cho biết số ký tự trên mỗi dòng và số thứ hai cho biết số dòng, do đó màn hình được chọn có 2 dòng gồm 16 ký tự.
Phương thức kết nối này liên quan đến việc chiếm ít nhất 6 cổng của vi điều khiển Arduino. Nếu cần, bạn có thể kết nối màn hình văn bản 1602 qua giao diện I2C (2 cổng).

Trong số các phần tử bổ sung, chúng ta cần một điện trở thay đổi để kiểm soát độ tương phản. Mặt khác, mọi thứ được kết nối theo sơ đồ, theo bảng dữ liệu và đầu ra Arduino đã chọn trong chương trình.

Chân 15 và 16 trên màn hình chịu trách nhiệm tạo ra đèn nền, có thể tắt hoặc điều chỉnh độ sáng tự động khi kết nối điện trở quang với Arduino làm cảm biến độ sáng.

Trong ví dụ của chúng tôi, chúng tôi sẽ đọc dữ liệu từ cổng nối tiếp và hiển thị trên màn hình:

#bao gồm // Kết nối thư viện để làm việc với màn hình ký tự LiquidCrystal lcd(13, 11, 5, 4, 3, 2); // (RS, E, D4, D5, D6, D7) kết nối các đầu ra màn hình theo trình tự R/W – GND, vì chúng ta sẽ ghi dữ liệu lên màn hình chứ không đọc void setup() ( lcd.begin( 16, 2); // Khởi tạo LCD 1602 // lcd.begin(20, 4); // Khởi tạo LCD 2004 Serial.begin(9600); // Khởi động cổng nối tiếp ) void loop() ( if (Serial.available ()) // Nếu dữ liệu đến từ cổng, thì... ( delay(100); lcd.clear(); // Xóa hoàn toàn màn hình while (Serial.available() > 0) // Nếu dữ liệu đến từ cổng lớn hơn 0 thì ... ( lcd.write(Serial.read()); // Đọc các giá trị từ cổng nối tiếp và hiển thị chúng trên màn hình ) ) )

Bạn có thể làm phức tạp mã và xuất đồng hồ thời gian thực DS1307 trên Arduino sang LCD1602 của bạn.

Bây giờ chúng ta hãy xem xét kỹ hơn tất cả các chức năng trong thư viện Tinh thể lỏng:

Điều đầu tiên và quan trọng nhất là khi sử dụng thư viện này, bạn không thể hiển thị các chữ cái tiếng Nga, ngay cả khi màn hình có các ký tự này trong bộ nhớ. Vấn đề này có thể được giải quyết bằng các thư viện khác hoặc bằng cách viết các giá trị bằng mã thập lục phân.

lcd.print();- đơn giản nhất và được sử dụng thường xuyên nhất, được sử dụng để hiển thị thông tin.

màn hình LCD. thông thoáng(); - Dùng để lau màn hình.

lcd.setCthon(x, y); - đặt con trỏ tại một vị trí cụ thể.

X – thay đổi vị trí trong dòng

Y - thay đổi dòng

Ví dụ: lcd.setCursor(0, 0); đây là ô trên cùng bên trái.

lcd.home(); -đặt con trỏ ở vị trí 0, 0

lcd.home(); = lcd.setCursor(0, 0);

màn hình LCD. cuộnHiển thịTrái(); - Sang trái

màn hình LCD. cuộnHiển thịPhải(); - chuyển sang phải

Lcd.createChar(Tên, mảng); - tạo dấu hiệu của riêng bạn.

Ví dụ: dấu độ trông như thế này:

Celc = (B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000 );

Trong một thời gian, màn hình này không hoạt động.


Và bây giờ có mong muốn gắn nó vào một trong các dự án. Tất nhiên, bạn có thể cố gắng tìm một thư viện có các chức năng làm sẵn, nhưng trong trường hợp này, hình ảnh về cách màn hình hoạt động sẽ không đầy đủ và chúng tôi đang không hài lòng với điều đó. Khi bạn hiểu nguyên lý hoạt động của màn hình LCD, sẽ không khó để viết thư viện của riêng bạn cho màn hình mong muốn nếu nó bị thiếu hoặc không đạt yêu cầu về mặt nào đó.

Vì vậy, hãy bắt đầu.
Việc đầu tiên cần làm là tìm sơ đồ chân, tức là liên hệ nào chịu trách nhiệm về cái gì, việc thứ hai là tìm tên của bộ điều khiển điều khiển màn hình, để thực hiện việc này, hãy tải xuống bảng dữ liệu cho màn hình LCD này và mở nó lên. trang đầu tiên.


Số liên lạc được tính từ trái sang phải, số liên lạc đầu tiên được đánh dấu bằng mũi tên màu đỏ. Điện áp cung cấp là 5 volt, bộ điều khiển điều khiển S6A0069 hoặc tương tự, ví dụ, ks0066U.

Tại sao chúng tôi lại tìm kiếm tên của bộ điều khiển điều khiển? Thực tế là trong biểu dữ liệu trên màn hình có độ trễ thời gian (sơ đồ thời gian), hệ thống lệnh được mô tả, nhưng không có khởi tạo tầm thường và không có nó thì không có đâu.
Tiếp theo, mở trang thứ hai và xem bảng cho biết người liên hệ nào chịu trách nhiệm về việc gì.


DB7…DB0– bus dữ liệu/địa chỉ.

R/W- xác định những gì chúng ta sẽ làm, đọc (R/W=1) hoặc viết (R/W=0)

R/S– xác định liệu chúng ta sẽ gửi lệnh (RS=0) hay dữ liệu (RS=1)

E– đầu vào nhấp nháy, bằng cách thay đổi tín hiệu ở đầu vào này, chúng ta cho phép màn hình đọc/ghi dữ liệu.

LED±– điều khiển đèn nền.

Tôi phải nói rằng trên màn hình tôi nhận được, đèn nền sẽ không chỉ bật, để làm được điều này, bạn cần hàn một điện trở được đánh dấu trên bảng là R7. Nhưng bây giờ chúng tôi không cần nó.

Tải xuống bảng dữ liệu cho bộ điều khiển điều khiển và tìm hướng dẫn khởi tạo. Hình ảnh có thể được phóng to bằng cách nhấp vào chúng.



Hóa ra có hai hướng dẫn như vậy, dành cho chế độ 8 bit và 4 bit. Đây là những loại chế độ nào? Các chế độ này xác định số lượng dây dữ liệu sẽ được truyền: bốn hoặc tám. Chúng ta hãy nhìn vào sự truyền tải 4 dây, trong trường hợp này, màn hình sẽ hoạt động chậm hơn nhưng chúng ta sẽ tiết kiệm được 4 chân của vi điều khiển và việc thực hiện chế độ 8 bit không có nhiều khác biệt.

Sơ đồ kết nối thông tin như sau.


Độ tương phản có thể được điều chỉnh bằng cách kết nối một chiết áp giữa các chân nguồn.

Tôi muốn bạn chú ý đến thực tế là trong quá trình khởi tạo R/SR/W luôn bằng 0, nghĩa là chúng ta sẽ gửi đội.

Trong quá trình khởi tạo, bạn có thể cấu hình:

  • N - số dòng hiển thị
  • C - bật hoặc tắt con trỏ
  • B - làm con trỏ nhấp nháy
  • I/D - tăng hoặc giảm giá trị bộ đếm địa chỉ
  • SH - di chuyển cửa sổ hiển thị
Chúng ta hãy xem xét hai điểm cuối cùng chi tiết hơn.
Hình bên dưới thể hiện địa chỉ nào chúng ta cần ghi dữ liệu để nó hiển thị ở một vị trí nào đó, ví dụ muốn hiển thị ký hiệu trên vị trí đầu tiên của dòng thứ hai, thì chúng ta phải ghi vào địa chỉ 0x40.


Sau đó, giá trị của bộ đếm sẽ tự động thay đổi, tăng hoặc giảm và cùng với đó là vị trí của con trỏ sẽ thay đổi.

Nhân tiện, bộ nhớ mà chúng ta ghi vào được gọi là DDRAM, mọi thứ chúng ta ghi vào bộ nhớ này sẽ được hiển thị trên màn hình, vẫn còn CGROM, nơi lưu trữ bảng tạo ký tự.


Bảng này không thể thay đổi, nhưng có thể lấy các ký hiệu làm sẵn từ nó. Một loại bộ nhớ khác là CGRAM, nó cũng là bảng tạo ký tự nhưng chúng ta tự vẽ các ký tự trong bảng này.


Bây giờ nói một chút về chuyển động của màn hình, thực tế là thông thường trên màn hình, chúng ta không nhìn thấy tất cả DDRAM mà chỉ nhìn thấy một phần nhất định, như trong hình bên dưới.


Chúng ta cũng có thể viết ở phần vô hình, nhưng những gì chúng ta viết sẽ không hiển thị cho đến khi chúng ta di chuyển cửa sổ màn hình đến nơi này.

Chúng ta đã học xong lý thuyết, hãy chuyển sang thực hành.
Hình ảnh giao tiếp với màn hình LCD ở chế độ 4 bit trông như thế này.


Dữ liệu được gửi theo byte, nhưng vì chúng tôi có chế độ 4 bit nên để gửi một byte, bạn cần thực hiện 2 lần gửi, trước tiên là bit quan trọng nhất. Trong hình, bưu kiện đầu tiên được chỉ định là D7 (bộ tứ cao), D3 thứ hai (bộ tứ thấp). Trước lần gửi tiếp theo, chúng ta phải kiểm tra cờ bận và nếu nó chưa được đặt, chúng ta có thể gửi lại; nếu nó được đặt, chúng ta đợi cho đến khi bộ điều khiển điều khiển LCD kết thúc công việc của nó.

Khi đã có bức tranh tổng thể về việc gửi, chúng ta hãy cùng tìm hiểu cách thực hiện thao tác gửi.


Để gửi bạn cần sử dụng bus 8 bit:
  • R/W được đặt thành 0
  • đưa ra mã lệnh/dữ liệu tới bus
  • trễ 2us
  • nhấp nháy thấp hơn E

Thao tác đọc được thực hiện tương tự:

  • đảm bảo rằng bộ điều khiển điều khiển còn trống
  • R/W được đặt thành 1
  • nâng đèn nhấp nháy E (lúc này màn hình LCD sẽ xuất dữ liệu ra bus)
  • trễ 2us
  • chúng tôi đọc những gì màn hình LCD cung cấp
  • nhấp nháy thấp hơn E
Độ trễ 2us đến từ đâu?

Phía trên thời gian có một bảng cho biết độ trễ hiển thị trên biểu đồ bằng bao nhiêu và do đó thời lượng của xung nhấp nháy - tw phải bằng 230nS hoặc 450nS tùy thuộc vào điện áp nguồn, chúng tôi đã lấy nó một chút với lề. Tại sao chúng tôi chỉ tính đến sự chậm trễ này? Bởi vì giá trị của độ trễ còn lại là rất nhỏ.

Để gửi qua bus 4 bit:

  • đảm bảo rằng bộ điều khiển điều khiển còn trống
  • đặt RS thành 0 (lệnh) hoặc 1 (dữ liệu), tùy thuộc vào nội dung chúng tôi sẽ gửi
  • R/W được đặt thành 0
  • tăng nhấp nháy E (đặt thành 1)
  • chúng tôi cấp sổ ghi chép cao nhất cho xe buýt
  • trễ 2us
  • nhấp nháy thấp hơn E
  • trì hoãn 1us
  • tăng nhấp nháy E (đặt thành 1)
  • chúng tôi phát hành tetrad thấp cho xe buýt
  • trễ 2us
  • nhấp nháy thấp hơn E

Để đọc trên bus 4-bit:

  • đảm bảo rằng bộ điều khiển điều khiển còn trống
  • cổng dữ liệu cho đầu vào với pull-up
  • đặt RS thành 0 (lệnh) hoặc 1 (dữ liệu), tùy thuộc vào nội dung chúng ta sẽ đọc
  • R/W được đặt thành 1
  • tăng nhấp nháy E (đặt thành 1)
  • trễ 2us
  • đọc sổ tay cao cấp
  • nhấp nháy thấp hơn E
  • trì hoãn 1us
  • tăng nhấp nháy E (đặt thành 1)
  • trễ 2us
  • chúng tôi đọc cuốn sổ phía dưới
  • nhấp nháy thấp hơn E

Có thể hoán đổi việc tăng mức nhấp nháy và xuất lệnh/dữ liệu tới bus. Bây giờ sẽ không khó để khởi tạo màn hình. Để đơn giản hóa việc khởi tạo, chúng tôi sẽ thay thế việc đọc cờ bận bằng độ trễ và chúng tôi sẽ xem xét làm việc với cờ này sau.
Cần lưu ý rằng trong quá trình khởi tạo ở chế độ 4 bit, các lệnh 4 bit được sử dụng và sau khi khởi tạo, hệ thống lệnh 8 bit được sử dụng, vì vậy để khởi tạo, chúng tôi thực hiện một chức năng riêng để gửi lệnh void Write_Init_Command(dữ liệu uint8_t).
// Mã khởi tạo cho Atmega16 #define F_CPU 8000000UL #define LCD_PORT PORTA #define LCD_DDR DDRA #define LCD_PIN PINA #define DATA_BUS 0XF0 #define RS 0 #define RW 1 #define E 2 #include #bao gồm void Write_Init_Command(uint8_t data) ( //chân mà các lệnh/dữ liệu được truyền đến đầu ra LCD_DDR |= DATA_BUS; //chúng tôi sẽ gửi lệnh LCD_PORT &= ~(1<Con trỏ nhấp nháy vui vẻ cho biết quá trình khởi tạo đã thành công. TRONG

Khi lắp ráp máy dò kim loại, tôi đã có được màn hình LCD 1602, được tích hợp trên bộ điều khiển HD44780. Tôi quyết định không bỏ lỡ cơ hội và kết nối nó với Arduino UNO tương tự tiếng Trung của tôi.

Đây là màn hình 1602 mà chúng ta sẽ kết nối với Arduino ngày hôm nay.

Các số “1602” cho biết màn hình bao gồm 2 dòng, mỗi dòng 16 ký tự. Đây là một màn hình khá phổ biến, được mọi người sử dụng để chế tạo đồng hồ, máy kiểm tra và các thiết bị khác. Màn hình có đèn nền màu xanh lá cây và xanh lam.

Tôi hàn một lược các điểm tiếp xúc vào màn hình để có thể dễ dàng nối dây.

Chúng tôi sẽ kết nối màn hình 1602 với Arduino thông qua giao diện song song 4 bit. Ngoài ra còn có một tùy chọn cho giao diện 8 bit, nhưng nó sử dụng nhiều dây hơn và chúng tôi sẽ không thấy bất kỳ lợi ích nào trong việc này.

Ngoài màn hình và Arduino, chúng ta sẽ cần dây dẫn và điện trở thay đổi 10 kOhm. Điện trở sẽ phù hợp với bất kỳ thương hiệu nào, miễn là nó có giá trị yêu cầu.

Nguồn điện của màn hình được cung cấp thông qua thứ nhất (VSS)thứ 2 (VDD) kết luận. Để kết luận 15 (A)16 (K)- Nguồn điện được cung cấp cho đèn nền màn hình. Vì cùng một điện áp +5V được sử dụng cho nguồn điện và ánh sáng nên chúng tôi sẽ cấp nguồn cho chúng từ các chân Arduino "5V""GND". Điều chính là không nhầm lẫn giữa các cực, nếu không bạn có thể đốt cháy các thiết bị điện tử trên màn hình.

lần thứ 3 Phần kết luận (V0) Chúng tôi kết nối một điện trở thay đổi với chân, chúng tôi sẽ sử dụng nó để kiểm soát độ tương phản của màn hình. Điện trở không thể được sử dụng, nhưng đầu ra "V0" kết nối với GND. Trong trường hợp này, độ tương phản sẽ ở mức tối đa và sẽ không có khả năng điều chỉnh mượt mà.

ngày 5 Phần kết luận (RW)được sử dụng để đọc hoặc ghi vào màn hình. Vì chúng ta sẽ chỉ ghi vào màn hình nên chúng ta sẽ kết nối chân này với mặt đất (GND).

Kết luận: thứ 4 (RS), thứ 6 (E), Ngày 11 (D4), Thứ 12 (D5), Ngày 13 (D6), Ngày 14 (D7) kết nối với các chân kỹ thuật số Arduino. Không cần thiết phải sử dụng các chân giống như của tôi, bạn có thể kết nối với bất kỳ chân kỹ thuật số nào, điều chính là sau đó đặt chúng chính xác trong bản phác thảo.

Arduino đã kết nối của tôi, tất cả những gì tôi phải làm là kết nối nó với máy tính qua USB và tải bản phác thảo lên.

Trong dấu hiệu, chúng tôi sẽ sử dụng một bản phác thảo từ bộ tiêu chuẩn.

Trong Arduino IDE chúng tôi chọn "Tài liệu" -"Mẫu" -"Tinh thể lỏng" - "Chào thế giới".

Chúng ta hãy nhìn vào mã phác thảo.

Trong dòng "Màn hình LCD tinh thể lỏng", trong ngoặc là các chân kỹ thuật số được sử dụng trên Arduino. Các chân được hiển thị theo trình tự sau: RS, E, DB4, DB5, DB6, DB7. Nếu bạn đã sử dụng các chân kỹ thuật số khác khi kết nối màn hình, hãy nhập chúng theo đúng trình tự trong ngoặc.

Trong dòng "lcd.print("xin chào thế giới!");" một lời chào được hiển thị trên màn hình, theo mặc định đây là dòng chữ "Chào thế giới!", bạn có thể thay đổi nó thành bất kỳ tên nào của riêng bạn, chúng tôi viết bằng tiếng Latinh.

Chúng tôi tải bản phác thảo lên Arduino và đây là kết quả. Thay vì “xin chào thế giới!” Tôi đã vào trang web của tôi. Dòng bên dưới, đồng hồ đếm ngược thời gian.

Hiển thị ký tự LCD1602 với đèn nền màu xanh - Màn hình tinh thể lỏng (Liquid Crystal Display) có khả năng hiển thị đồng thời tối đa 32 ký tự (16 cột, 02 hàng). Kết nối được thực hiện thông qua giao diện song song 8 bit đồng bộ. Ví dụ về cách làm việc với hiển thị ký tự được mô tả trong phần này.

Đặc trưng

  • Loại thông tin đầu ra: tượng trưng.
  • Ngôn ngữ trong ROM hiển thị: Latin, Nhật.
  • Khả năng tải lên các biểu tượng của riêng bạn: có.
  • Định dạng thông tin đầu ra: 16×02 ký tự;
  • Loại màn hình: LCD.
  • Công nghệ hiển thị: STN.
  • Góc nhìn: 180°.
  • Loại đèn nền: LED.
  • Màu đèn nền: xanh.
  • Màu nhân vật: trắng.
  • Bộ điều khiển: HD44780.
  • Giao diện: đồng bộ, 8 bit, song song.
  • Điện áp cung cấp 5 V.
  • Nhiệt độ hoạt động: -20 ... +70 ° C.
  • Nhiệt độ bảo quản -30 ... +80 ° C.
  • Kích thước: 80x36 mm.

Sự liên quan

Việc kết nối màn hình LCD1602 qua giao diện song song phức tạp hơn một chút so với qua bus I2C và cũng cần có một thành phần bổ sung để điều chỉnh độ tương phản.

Bus dữ liệu hiển thị bao gồm 8 dòng (D0-D7), nhưng nếu bạn chỉ kết nối 4 dòng cao hơn (D4-D7), như trong hình, điều này không làm giảm tốc độ hiển thị. Để thuận tiện, chúng tôi kết nối các chân D4-D7 của màn hình với các chân cùng tên D4-D7 . Bạn có thể kết nối các chân D0-D7, E và RS của màn hình với bất kỳ chân nào bằng cách chỉ định chúng trong bản phác thảo khi khai báo đối tượng thư viện.

№: Trưng bày: Arduino: Mục đích:
16 K(DẪN ĐẾN-) GND Cực âm (âm) của đèn nền LED.
15 MỘT(Đèn LED+) 5V Anode (cộng) của đèn nền LED.
14...7 D7...D0(DB7...DB0) Bất kì Bus dữ liệu gồm 8 đường. Trong sơ đồ trên, chỉ có 4 dòng cao cấp được sử dụng, bởi vì điều này không ảnh hưởng đến tốc độ hiển thị.
6 E Bất kì Kích hoạt tín hiệu.
5 RW GND Chọn hướng (Đọc / Ghi) truyền dữ liệu: “1” - đọc từ màn hình / “0” - ghi vào màn hình. Chân được kết nối với GND vì Dữ liệu chỉ được ghi vào màn hình.
4 R.S. Bất kì Đăng ký Lựa chọn người nhận thông tin: “1” - thanh ghi dữ liệu / “0” - thanh ghi lệnh.
3 V0(VEE)
Cài đặt độ tương phản hiển thị: 0 ... +5 V DC.
2 VDD(VCC) 5V Hiển thị nguồn logic: +5 VDC.
1 VSS(GND) GND Nguồn điện chung (mặt đất).

Dinh dưỡng

Điện áp cung cấp logic hiển thị 5 VDC được cung cấp cho các chân VDD (VCC) và VSS (GND) của màn hình.

Điện áp nguồn đèn nền 5 VDC được cung cấp cho cực A (Anode) và K (Cathode) của màn hình.

Khả năng thiết lập độ tương phản 0 ... +5 V DC được áp dụng cho chân V0 của màn hình.

Thông tin thêm về màn hình

Hiển thị ký tự dựa trên màn hình LCD STN (Super Twisted Nematic) được điều khiển bởi bộ điều khiển HD44780 và có giao diện 8 bit song song đồng bộ. Màn hình được trang bị đèn nền LED màu xanh lam và có khả năng hiển thị đồng thời tối đa 32 ký tự (16 cột, 02 hàng), đó là tên gọi của màn hình: LCD1602. Bộ điều khiển HD44780 có ROM lưu trữ số, ký tự Latin và một số ký tự tiếng Nhật để hiển thị trên màn hình. Thiếu ký tự, bao gồm. và các ký tự Cyrillic có thể được tải vào bộ nhớ RAM của bộ điều khiển để hiển thị các dòng chữ bằng tiếng Nga hoặc các ký tự không chuẩn (ví dụ: “biểu tượng cảm xúc”).

Nếu bạn kết nối với các chân hiển thị, bạn có thể chuyển đổi giao diện song song 8 bit đồng bộ của nó sang bus I2C (biến màn hình từ LCD1602 thành