Mục lục:

3-Wire HD44780 LCD với giá dưới 1 đô la: 5 bước
3-Wire HD44780 LCD với giá dưới 1 đô la: 5 bước

Video: 3-Wire HD44780 LCD với giá dưới 1 đô la: 5 bước

Video: 3-Wire HD44780 LCD với giá dưới 1 đô la: 5 bước
Video: STM32F103C8T6 | Giao Tiếp LCD Và Bài Tập Vận Dụng 2024, Tháng mười một
Anonim
3 dây HD44780 LCD với giá chưa đến 1 đô la
3 dây HD44780 LCD với giá chưa đến 1 đô la

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách kết nối màn hình LCD dựa trên chipset HD44780 với bus SPI và điều khiển nó chỉ với 3 dây với giá chưa đến 1 đô la. Mặc dù tôi sẽ tập trung vào màn hình chữ và số HD44780 trong hướng dẫn này, nguyên tắc tương tự sẽ hoạt động khá giống với bất kỳ màn hình LCD nào khác sử dụng bus dữ liệu song song 8 bit và nó có thể rất dễ dàng điều chỉnh để phù hợp với màn hình có bus dữ liệu 16 bit. Màn hình chữ và số dựa trên HD44780 (và tương thích) thường có sẵn ở các cấu hình 16x2 (2 dòng gồm 16 ký tự) và 20x4, nhưng bạn có thể tìm thấy ở nhiều dạng khác. Màn hình 'phức tạp' nhất sẽ là màn hình 40x4, loại màn hình này đặc biệt vì nó có 2 bộ điều khiển HD44780, một cho hai hàng trên và một cho hai hàng dưới. Một số màn hình LCD đồ họa cũng có hai bộ điều khiển. HD44780 LCD rất tuyệt, chúng rất rẻ, dễ đọc và khá dễ làm việc. Nhưng chúng cũng có một số điểm hạn chế, các màn hình này chiếm rất nhiều chân I / O khi kết nối với Arduino. Trong các dự án đơn giản, điều này không phải là mối quan tâm, nhưng khi các dự án trở nên lớn, với nhiều IO hoặc cần một số chân nhất định cho những thứ như đọc Analog hoặc PWM, thực tế là những LCD này yêu cầu tối thiểu 6 chân có thể trở thành vấn đề. Nhưng chúng ta có thể giải quyết vấn đề này một cách rẻ và thú vị.

Bước 1: Lấy các thành phần

Tôi đã sử dụng TaydaElectronics cho hầu hết các thành phần mà tôi đã sử dụng trong dự án này. Bạn cũng có thể lấy những phần này trên ebay, nhưng để tiện sử dụng, tôi sẽ liên kết bạn với Tayda. Shopping List2 - 74HC595 gói DIP161 - Đầu cắm đực chung - 2 chân. Điều này là không bắt buộc, tôi đã sử dụng nó như một cách để vô hiệu hóa vĩnh viễn đèn nền. 3 - Tụ gốm - điện dung 0,1µF; hiệu điện thế 50V1 - Tụ điện - điện dung 10µF; điện áp 35V1 - Tụ gốm - điện dung 220pF; điện áp 50V1 - NPN-Transistor - part # PN2222A * 1 - 1k Ω Điện trở1 - Chiết áp tông đơ - điện trở tối đa 5kΩ1 - 470 Ω Điện trở * Với bóng bán dẫn NPN, đèn nền sẽ tắt cho đến khi được bật bằng phần mềm. Nếu bạn muốn bật đèn nền theo mặc định, hãy sử dụng bóng bán dẫn loại PNP. Tuy nhiên, các thay đổi trong mã của thư viện được cung cấp sẽ phải được thực hiện. Tổng phụ cho danh sách này là $ 0,744. Tiêu đề ghim cũng không bắt buộc, vì vậy bạn có thể tiết kiệm 15 xu ngay tại đó và tổng phụ sẽ là 0,6 đô la.

Bước 2: Biết phần cứng # 1 của bạn

Biết phần cứng # 1 của bạn
Biết phần cứng # 1 của bạn

Đây là chân cắm tiêu chuẩn của màn hình LCD HD44780, nó cũng rất giống với một số màn hình LCD đồ họa. HD44780 có thể hoạt động ở hai chế độ: 1. Chế độ 4 bit, trong đó mỗi byte được gửi đến màn hình LCD bao gồm 2 phần 4 bit. 2. Chế độ 8-bit, mà chúng tôi sẽ tập trung vào. Màn hình LCD có tổng cộng 16 chân, 3 chân điều khiển và 8 chân dữ liệu: RS - Điều khiển xem chúng ta có muốn gửi lệnh hoặc dữ liệu đến màn hình LCD hay không. Trong đó 'cao' có nghĩa là dữ liệu (một ký tự) và 'thấp' có nghĩa là một byte lệnh. R / W - Bộ điều khiển HD44780 cho phép bạn đọc từ RAM của nó. Khi chân này ở mức 'cao', chúng ta có thể đọc dữ liệu từ các chân dữ liệu của nó. Khi nó ở mức 'thấp', chúng ta có thể ghi dữ liệu vào màn hình LCD. Mặc dù tùy chọn đọc từ màn hình LCD có thể hữu ích trong một số trường hợp, nhưng chúng tôi sẽ không xem qua trong hướng dẫn này và chúng tôi sẽ chỉ nối đất chân này để đảm bảo rằng nó luôn ở chế độ Ghi. E - E là chân 'Bật', chân này được chuyển đổi 'cao' sau đó 'thấp' để ghi dữ liệu vào RAM của nó và cuối cùng hiển thị trên màn hình. DB0-7 - Đây là các chân dữ liệu. Ở chế độ 4 bit, chúng tôi chỉ sử dụng 4 bit cao DB4-DB7 và ở chế độ 8 bit, tất cả chúng đều được sử dụng., chúng ta có thể dễ dàng cấp nguồn cho nó từ chân + 5v của Arduino. - Đây là chân cho phép bạn đặt mức độ tương phản cho màn hình, nó yêu cầu một chiết áp, thông thường sử dụng nồi 5K Ohm. nguồn điện cho đèn nền. Một số màn hình LCD không có đèn nền và chỉ có 14 chân. Trong hầu hết các trường hợp, chân này cũng yêu cầu kết nối + 5v. LED- - Đây là điểm nối đất cho đèn nền. ** Điều quan trọng là phải kiểm tra biểu dữ liệu màn hình hoặc kiểm tra PCB của nó để kiểm tra điện trở đèn nền, hầu hết các màn hình LCD đều có sẵn chúng -trong, trong trường hợp đó, tất cả những gì bạn phải làm là cấp nguồn cho LED + và nối đất cho LED-. Nhưng trong trường hợp màn hình LCD của bạn không có điện trở tích hợp cho đèn nền, điều quan trọng là bạn phải thêm một điện trở vào, nếu không đèn nền sẽ tiêu tốn rất nhiều năng lượng và cuối cùng sẽ bị cháy. Trong hầu hết các trường hợp, cách kết nối màn hình LCD này với Arduino là sử dụng nó ở chế độ 4 bit và nối đất chân R / W. Bằng cách này, chúng tôi sử dụng các chân RS, E và DB4-DB7. Chạy ở chế độ 4-bit có một nhược điểm nhỏ khác là thời gian ghi dữ liệu lên màn hình lâu hơn gấp đôi so với cấu hình 8-bit. Màn hình LCD có thời gian 'giải quyết' là 37 micro giây, điều này có nghĩa là bạn phải đợi 37 micro giây trước khi gửi lệnh tiếp theo hoặc byte dữ liệu đến màn hình LCD. Vì ở chế độ 4-bit, chúng ta phải gửi dữ liệu hai lần cho mỗi byte, tổng thời gian cần để ghi một byte đơn lẻ lên đến 74microseconds. Điều này vẫn đủ nhanh, nhưng tôi muốn thiết kế của mình tạo ra kết quả tốt nhất có thể. Giải pháp cho vấn đề của chúng tôi với số lượng chân cắm được sử dụng nằm trong bộ chuyển đổi Nối tiếp sang song song…

Bước 3: Biết phần cứng # 2 của bạn

Biết phần cứng của bạn # 2
Biết phần cứng của bạn # 2

Những gì chúng ta sẽ làm là xây dựng một bộ điều hợp lấy kiểu giao tiếp nối tiếp ra khỏi Arduino và chuyển đổi dữ liệu thành một đầu ra song song có thể được cấp cho màn hình LCD của chúng ta. Đi kèm với chip 74HC595. Đây là một sổ đăng ký ca rất rẻ và đơn giản để vận hành. Về bản chất, những gì nó thực hiện là lấy tín hiệu đồng hồ và dữ liệu mà nó sử dụng để lấp đầy bộ đệm 8 bit bên trong với 8 bit cuối cùng đã được 'chấp nhận'. Khi chân 'Latch' (ST_CP) được đưa lên 'cao', nó sẽ di chuyển các bit này vào 8 đầu ra của nó. 595 có một tính năng rất hay, nó có một chân ra dữ liệu nối tiếp (Q7 '), chân này có thể được sử dụng để ghép chuỗi 2 hoặc nhiều hơn 595 với nhau để tạo thành bộ điều hợp Nối tiếp sang song song có chiều rộng từ 16 bit trở lên. Đối với dự án này, chúng tôi sẽ cần 2 trong số các chip này. Sơ đồ cũng có thể được sửa đổi để hoạt động với một 595 duy nhất ở chế độ 4 bit, nhưng điều này sẽ không được đề cập trong hướng dẫn này.

Bước 4: Kết nối tất cả

Kết nối tất cả
Kết nối tất cả

Bây giờ chúng tôi biết cách phần cứng của chúng tôi hoạt động, chúng tôi có thể kết nối tất cả. Trong giản đồ, chúng ta thấy 2 595 chip daisy được nối với nhau để tạo thành một đầu ra song song 16 bit. Con chip phía dưới thực sự là con chip chính, và con chip phía trên được kết nối với nó. Những gì chúng ta thấy ở đây là 595 phía dưới đang điều khiển các chân dữ liệu của màn hình LCD trong cấu hình 8 bit, chip trên cùng điều khiển tín hiệu RS và đèn nền bằng cách bật hoặc tắt bóng bán dẫn. Hãy nhớ * lưu ý về đèn nền LCD trên trang Biết phần cứng số 1 của bạn, trong trường hợp màn hình LCD của bạn không có điện trở đèn nền, đừng quên thêm một điện trở vào mạch của bạn. Trong trường hợp của tôi, các màn hình LCD, tôi đã có một điện trở tích hợp sẵn, vì vậy tôi đã bỏ qua bước này. Độ tương phản được áp dụng thông qua nồi 5K Ohm, một chân đi đến GND, chân thứ hai đi đến VCC và gạt nước đến chân Vo trên màn hình LCD. Các tụ điện được sử dụng trên các dòng VCC của LCD và 595 là tụ điện tách rời, chúng ở đó để loại bỏ nhiễu. Chúng không bắt buộc nếu bạn đang làm việc trên breadboard, nhưng nên được sử dụng trong trường hợp bạn xây dựng phiên bản mạch này của riêng mình để sử dụng bên ngoài "điều kiện phòng thí nghiệm". R5 và C9 theo thứ tự rất cụ thể đó tạo ra độ trễ RC, điều này đảm bảo rằng dữ liệu trong các đầu ra của 595 có thời gian ổn định trước khi chân Enable trên màn hình LCD được đặt 'cao' và đọc dữ liệu. Q7 'của 595 phía dưới đi vào đầu vào dữ liệu nối tiếp của 595 ở phía trên, điều này tạo ra một chuỗi daisy 595s và do đó có giao diện 16 bit. Kết nối với Arduino rất dễ dàng. Chúng tôi sử dụng cấu hình 3 dây, sử dụng các chân SPI của Arduino. Điều này cho phép truyền dữ liệu rất nhanh, gửi 2 byte đến màn hình LCD thường mất khoảng 8 micro giây. Tốc độ này rất nhanh và thực sự nhanh hơn nhiều so với thời gian màn hình LCD xử lý dữ liệu, do đó cần độ trễ 30 micro giây giữa mỗi lần ghi. Một lợi ích rất lớn của việc sử dụng SPI là các chân D11 và D13 được chia sẻ với các thiết bị SPI khác. Điều này có nghĩa là nếu bạn đã có một thành phần khác sử dụng SPI, chẳng hạn như gia tốc kế, giải pháp này sẽ chỉ sử dụng một chân phụ cho tín hiệu bật. Trên trang tiếp theo, chúng ta sẽ thấy kết quả. Tôi đã chế tạo một chiếc ba lô trên một tấm ván mỏng và nó đang hoạt động rất tốt đối với tôi cho đến nay.

Bước 5: Kết quả + Thư viện

Kết quả + Thư viện
Kết quả + Thư viện
Kết quả + Thư viện
Kết quả + Thư viện
Kết quả + Thư viện
Kết quả + Thư viện
Kết quả + Thư viện
Kết quả + Thư viện

"Một bức tranh có giá trị bằng một ngàn lời nói", tôi đồng ý với câu nói này, vì vậy đây là một số hình ảnh về kết quả cuối cùng cho dự án này. Đây là những hình ảnh của sản phẩm đã hoàn thành, Fritzing PCB view là kiểu bố trí perfboard mà tôi đã sử dụng để chế tạo chiếc ba lô của mình. Bạn có thể thấy nó hữu ích nếu bạn muốn xây dựng cho riêng mình. Tôi thích nó đến nỗi tôi đã thiết kế một PCB bằng DipTrace và đặt hàng một lô gồm 10 PCB. Tôi sẽ cần 2 hoặc 3 chiếc cho bản thân nhưng sẽ cung cấp phần còn lại với giá tượng trưng khi tôi nhận được chúng. Vì vậy, nếu bất cứ ai quan tâm xin vui lòng cho tôi biết. * Chỉnh sửa: PCB ở đây, và chúng hoạt động. Đây là bộ sưu tập hình ảnh đầy đủ cho dự án này, bao gồm cả PCB thực tế. https://imgur.com/a/mUkpw#0 Tất nhiên tôi không quên điều quan trọng nhất, một thư viện để sử dụng mạch này. Nó tương thích với thư viện LiquidCrystal đi kèm với Arduino IDE, vì vậy bạn có thể dễ dàng thay thế các khai báo ở đầu bản phác thảo của mình và không phải thay đổi bất kỳ điều gì khác trong bản phác thảo của mình. Ngoài ra còn có một bản phác thảo ví dụ minh họa cách hoạt động của từng chức năng trong thư viện, vì vậy hãy xem thử.

Đề xuất: