Tìm kiếm mã

Mã Arduino cho màn hình LCD Nokia 5110

Mã Arduino cho màn hình LCD Nokia 5110


Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng màn hình LCD Nokia 5110 với Arduino để hiển thị nhiều loại đồ họa và văn bản. Dự án sẽ minh họa cách vẽ đường thẳng, hình tròn, hình chữ nhật và thậm chí hiển thị văn bản bên trong các hình dạng đó. Đến cuối bài, bạn sẽ hiểu rõ hơn về cách tương tác với màn hình LCD này bằng mã Arduino.

Nokia 5110_LCD

Để có hướng dẫn rõ ràng hơn, tôi khuyến khích bạn xem video liên quan để có hình ảnh trực quan về cách đấu dây và triển khai mã (trong video tại 00:00).

Phần cứng được giải thích

Màn hình LCD Nokia 5110 là một màn hình đồ họa nhỏ gọn hoạt động trên giao thức SPI, cho phép giao tiếp hiệu quả với Arduino. Nó có độ phân giải 84x48 pixel, đủ để hiển thị đồ họa và văn bản cơ bản. Màn hình chỉ cần một vài chân để hoạt động, khiến nó trở thành lựa chọn tuyệt vời cho các dự án có ít tùy chọn I/O.

Ngoài màn hình LCD, bạn sẽ cần một bo mạch Arduino, thường là Arduino Uno hoặc tương tự, một breadboard và một số dây jumper. Việc đấu dây khá đơn giản và màn hình LCD được cấp nguồn bằng cách kết nối chân VCC của nó với đầu ra 5V của Arduino.

Chi tiết từ bảng dữ liệu

Nhà sản xuấtPhilips
Số linh kiệnPCD8544
Điện áp logic/I/O3,3 V
Điện áp cấp nguồn3,3 – 5,0 V
Dòng điện tối đa200 µA
Độ phân giải màn hình84 x 48 pixel
Giao diệnNối tiếp (SPI)
Kiểu đóng góiModule

  • Sử dụng điện trở giới hạn dòng cho chân LED để tránh hư hỏng.
  • Đảm bảo các kết nối với VCC và GND chắc chắn để tránh sự cố hiển thị.
  • Kiểm tra kỹ các kết nối chân SPI: SCE, RST, D/C, DN và SCLK.
  • Giữ cài đặt độ tương phản trong phạm vi khuyến nghị (40-60).
  • Cập nhật màn hình sau khi vẽ đồ họa để thấy các thay đổi.

Hướng dẫn đấu dây

Arduino wiring for Nokia 5110 LCD
Arduino wiring for Nokia 5110 LCD

Để đấu dây màn hình LCD Nokia 5110 với Arduino của bạn, hãy làm theo các kết nối sau:

  • Kết nối chân VCC của màn hình LCD với chân 5V trên Arduino.
  • Kết nối chân GND trên màn hình LCD với một trong các chân GND của Arduino.
  • Kết nối chân SCE trên màn hình LCD với chân 7 trên Arduino.
  • Kết nối chân RST với chân 6.
  • Kết nối chân D/C với chân 5.
  • Kết nối chân DN (MOSI) với chân 11.
  • Kết nối chân SCLK với chân 13.
  • Cuối cùng, kết nối chân LED với chân 9 thông qua một điện trở 330 ohm.

Các kết nối này sẽ cho phép Arduino giao tiếp hiệu quả với màn hình LCD. Nếu bạn cần điều chỉnh cách đấu dây cho thiết lập cụ thể của mình, hãy đảm bảo các chân SPI vẫn nhất quán.

Ví dụ mã và hướng dẫn chi tiết

Đoạn mã sau khởi tạo màn hình LCD và đặt độ tương phản:


void setup() {
  Serial.begin(9600);
  lcdBegin(); // Khởi tạo màn hình LCD
  setContrast(40); // Đặt mức độ tương phản
  delay(2000);
  clearDisplay(BLACK); // Xóa màn hình
  updateDisplay(); // Cập nhật màn hình
}

Trong đoạn mã này, hàm lcdBegin() thiết lập các chân cần thiết cho màn hình LCD, trong khi setContrast(40) điều chỉnh độ tương phản của màn hình. Sau một khoảng trễ ngắn, màn hình được xóa để chuẩn bị cho nội dung mới.

Nokia 5110_LCD back view

Tiếp theo, chúng ta có thể vẽ một đường thẳng trên màn hình:


setLine(1, 4, 70, 4, BLACK); // Vẽ một đường thẳng ngang
updateDisplay(); // Làm cho đường thẳng hiển thị

Dòng mã này sử dụng hàm setLine(), nhận tọa độ điểm bắt đầu và điểm kết thúc cùng với tham số màu. Sau khi vẽ, điều quan trọng là gọi updateDisplay() để phản ánh các thay đổi trên màn hình.

Cuối cùng, chúng ta có thể hiển thị văn bản bên trong một hình chữ nhật:


setRect(10, 10, 70, 40, 1, BLACK); // Vẽ một hình chữ nhật đặc
setStr("Robojax ", 15, 20, WHITE); // Hiển thị văn bản bên trong
updateDisplay(); // Cập nhật để hiển thị các thay đổi

Ở đây, setRect() tạo một hình chữ nhật, trong khi setStr() đặt văn bản bên trong nó. Các tham số màu xác định cách hình chữ nhật và văn bản xuất hiện trên màn hình.

Trình diễn / Điều gì sẽ xảy ra

Khi chạy mã, bạn sẽ thấy một loạt đồ họa được hiển thị trên màn hình LCD Nokia 5110, bao gồm các đường thẳng, hình tròn, hình chữ nhật và văn bản. Đảm bảo đấu dây của bạn chính xác để tránh các sự cố như đảo cực hoặc đầu vào trôi nổi, có thể ngăn màn hình hoạt động (trong video tại 02:30).

Mốc thời gian video

  • 00:00 - Giới thiệu về dự án
  • 01:30 - Hướng dẫn đấu dây
  • 03:00 - Thiết lập mã và giải thích
  • 05:00 - Hiển thị đồ họa và văn bản
  • 07:30 - Kết luận và các sửa đổi tiếp theo

Hình ảnh

Nokia 5110_LCD back view
Nokia 5110_LCD back view
Arduino wiring for Nokia 5110 LCD
Arduino wiring for Nokia 5110 LCD
Nokia 5110_LCD
Nokia 5110_LCD
82-Arduino code: Dual-axis joystick with Nokia 5110 screen to display dots.
Ngôn ngữ: C++
/* 
 * This is Arduino code to use a dual-axis XY joystick with a Nokia 5110 LCD.
 * It also reads a switch.
 * Other Arduino libraries and videos: https://robojax.com
 
 * Watch the video for this code to learn it fully.
  * Watch the video here: https://youtu.be/Pk5Wig5EO0s

 * 
 * Get this code and other Arduino codes from Robojax.com.
 Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
 all in one place. Purchase my course on Udemy.com: http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. You can support me on Patreon: http://robojax.com/L/?id=63

or make a donation using PayPal: http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. * 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

 
Nokia 5110 LCD Example Code
   Graphics driver and PCD8544 interface code for SparkFun's
   84x48 Graphic LCD.
   https://www.sparkfun.com/products/10168
   Original source code:
https://github.com/sparkfun/GraphicLCD_Nokia_5110

  This stuff could all be put into a library, but we wanted to
  leave it all in one sketch to keep it as transparent as possible.

  Hardware: (Note: most of these pins can be swapped)
    Graphic LCD Pin ---------- Arduino Pin
       1-VCC       ----------------  5V
       2-GND       ----------------  GND
       3-SCE       ----------------  7
       4-RST       ----------------  6
       5-D/C       ----------------  5
       6-DN(MOSI)  ----------------  11
       7-SCLK      ----------------  13
       8-LED       - 330 Ohm res --  9
   The SCLK, DN(MOSI), must remain where they are, but the other 
   pins can be swapped. The LED pin should remain a PWM-capable
   pin. Don't forget to stick a current-limiting resistor in line
   between the LCD's LED pin and Arduino pin 9!
   Modified by Ahmad S. for Robojax.com
   on Mar 11, 2018 at 20:49 in Ajax, Ontario, Canada
*/
#include <SPI.h>
#include "robojax-nokia5110.h"

void setup()
{
  Serial.begin(9600);

  lcdBegin(); // This will setup our pins, and initialize the LCD
  //updateDisplay(); // with displayMap untouched, SFE logo
  setContrast(40); // Good values range from 40-60
  delay(2000);

  clearDisplay(BLACK);
  updateDisplay();
}


void loop()
{
 
    // setPixel takes 2 to 3 parameters. The first two parameters
    // are x and y variables. The third optional parameter is
    // a "color" boolean. 1 for black, 0 for white.
    // setPixel() with two variables will set the pixel with
    // the color set to black.
    // clearPixel() will call setPixel with the color set to
    // white.
   // setPixel(random(0, LCD_WIDTH), random(0, LCD_HEIGHT));
    // After drawing something, we must call updateDisplay()
    // to actually make the display draw something new.

    //invertDisplay(); // This will swap all bits in our display

    // setLine(x0, y0, x1, y1, bw) takes five parameters. The
    // first four are coordinates for the start and end of the 
    // line. The last parameter is the color (1=black, 0=white).
    setLine(1, 4, 70, 4, BLACK);
    updateDisplay();
delay(2000);
    //analogWrite(blPin, i); // blPin is connected to BL LED

  /* setRect Example */
  clearDisplay(WHITE); // Start fresh

  // setCircle takes 5 parameters -- x0, y0, radius, bw, and
  // lineThickness. x0 and y0 are the center coordinates of the circle.
  // radius is the...radius. bw is the color (0=white, 1=black)
  // lineThickness is the line width of the circle, 1 = smallest
  // thickness moves in towards the center.
   setCircle(20, 30, 20, BLACK, 2);
  updateDisplay();
  delay(2000);
clearDisplay(WHITE);

  setStr("Welcome to ", 0, 0, BLACK);
      updateDisplay();
    delay(100);
  setLine(0, 9, 70, 9, BLACK);
    updateDisplay();
    delay(100);
   setStr("Robojax ", 20, 20, BLACK);
  updateDisplay();
  delay(2000);
  clearDisplay(WHITE);

  
  // setRect takes six parameters (x0, y0, x1, y0, fill, bw)
  // x0, y0, x1, and y0 are the two diagonal corner coordinates
  // fill is a boolean, which determines if the rectangle is
  // filled in. bw determines the color 0=white, 1=black.
    setRect(10, 10, 70, 40, 1, BLACK);
    setStr("Robojax ", 15, 20, WHITE);
    updateDisplay();
  delay(2000);

  /* setCircle Example */
  clearDisplay(WHITE);  
 
}

Nghĩ bạn có thể cần

Tài nguyên & tài liệu tham khảo

Chưa có tài nguyên nào.

Tập tin📁

Tệp Yêu Cầu (.h)

Tập tin Fritzing