Kết nối màn hình đồ họa nokia 5110

Có lẽ, tôi, giống như tất cả những người xây dựng Arduino, đã có một ý tưởng điên rồ nào đó trong đầu. Tôi đã đặt hàng tất cả các bộ phận cần thiết từ Trung Quốc. Chúng tôi đã phải đợi rất lâu nhưng rồi một bản sao của bo mạch Arduino Uno và màn hình LCD Nokia 5110 đã được giao trước thời hạn. Vì trước đây tôi không quen với điện tử và lập trình nên tôi quyết định không lãng phí thời gian và bắt đầu học cách hiển thị thông tin trên mô-đun này.

Điều đầu tiên tôi làm là Google và tìm thấy ấn phẩm “Arduino, mô-đun LCD Nokia 5110 và bảng chữ cái Cyrillic” của tác giả. Và rồi tôi nhận ra rằng mọi thứ mà tôi đã lên kế hoạch từ trước sẽ không dễ dàng thực hiện được như vậy.

Tôi đã tìm ra bảng chữ cái Cyrillic, mọi thứ đều đơn giản ở đó, tôi sẽ không sao chép-dán bài đăng cuối cùng, nhưng có một vấn đề thực sự với các bức ảnh. Nhiệm vụ là: bạn cần vẽ một bức tranh và tải nó lên màn hình. Tôi gặp phải vấn đề đầu tiên, tôi vào môi trường lập trình Arduino và thấy rằng không có thứ gì như “Chèn - Hình ảnh”, nhưng bạn cần viết một bức tranh với một mã nhất định trong hệ thống tính toán hex. Tôi đã tìm thấy một số biên tập viên, nhưng không phải vậy. Hình ảnh không được hiển thị đầy đủ. Tôi bắt đầu tìm kiếm những vấn đề có thể xảy ra.

Thông qua hàng loạt thử nghiệm và thử nghiệm, tôi đã nghĩ ra một thuật toán mà tôi sẽ chia sẻ với bạn:

1) Bạn cần có được hình ảnh đó, ở định dạng .bmp đen trắng với phần mở rộng 84 x 48 pixel.
Điều này có thể được thực hiện theo nhiều cách.Hầu hết mọi trình soạn thảo đồ họa đều có chức năng "Save As" để chúng tôi chỉ định các tham số cần thiết.
Mình làm bằng corelDRAW. Chúng tôi nhận được một cái gì đó tương tự. Cần phải làm rõ rằng tên của hình ảnh phải được lưu bằng bố cục bàn phím Latinh, vì chương trình tiếp theo sẽ không mở được.

2) Nếu cần, bạn có thể chỉnh sửa ảnh bằng Paint; thật kỳ lạ, có một số công cụ đơn giản và thú vị ở đó.

3) Sử dụng cái này chúng ta nhận được mã hex của hình ảnh.

4) Dán mã này vào mã chương trình Arduino và tải nó lên bảng:

// SCK - Chân 8 // MOSI - Chân 9 // DC - Chân 10 // RST - Chân 11 // CS - Chân 12 // #include LCD5110 myGLCD(8,9,10,11,12); bên ngoài uint8_t OKO; thả nổi y; uint8_t* bm; không gian int; void setup() ( myGLCD.InitLCD(); ) void loop() ( myGLCD.clrScr(); myGLCD.drawBitmap(0, 0, OKO, 84, 48); myGLCD.update(); delay(2000); )

#bao gồm const uint8_t OKO PROGMEM=( //Đã sao chép mã hex GLCD công cụ);

Bài viết mới

● Đề án 16: Chỉ báo đồ họa. Kết nối màn hình Nokia 5110

Trong thử nghiệm này, chúng ta sẽ xem xét Màn hình đồ họa Nokia 5110, màn hình này có thể được sử dụng trong các dự án Arduino để hiển thị thông tin đồ họa.

Các thành phần bắt buộc:

Màn hình tinh thể lỏng Nokia 5110 là màn hình đơn sắc có độ phân giải 84×48 trên bộ điều khiển PCD8544, được thiết kế để hiển thị thông tin đồ họa và văn bản. Nguồn điện của màn hình phải nằm trong khoảng 2,7-3,3 V (tối đa 3,3 V; nếu cấp 5 V cho chân VCC thì màn hình có thể bị hỏng). Nhưng các chân của bộ điều khiển có khả năng chịu +5V nên chúng có thể được kết nối trực tiếp với đầu vào Arduino. Một điểm quan trọng là mức tiêu thụ điện năng thấp, cho phép bạn cấp nguồn cho màn hình từ bo mạch Arduino mà không cần nguồn điện bên ngoài.
Sơ đồ kết nối của Nokia 5110 với Arduino được hiển thị trong Hình 2. 16.1.

Cơm. 16.1. Sơ đồ kết nối Nokia 5110 với Arduino

Để làm việc với màn hình Nokia 5110, chúng tôi sẽ sử dụng thư viện Adafruit_GFX, thư viện này có nhiều khả năng hiển thị đồ họa và văn bản. Trong thử nghiệm của chúng tôi, chúng tôi sẽ nhận được dữ liệu chiếu sáng từ một điện trở quang được kết nối với đầu vào tương tự của Arduino A0 và xuất ra dữ liệu chiếu sáng dưới dạng biểu diễn số và đồ họa. Sơ đồ kết nối được hiển thị trong Hình. 16.2.

Cơm. 16.2. Sơ đồ kết nối Nokia 5110 và quang điện trở với Arduino

Mã cho bản phác thảo thử nghiệm của chúng tôi được hiển thị trong Liệt kê 16.1. Chúng tôi đọc dữ liệu từ điện trở quang và hiển thị giá trị số, cũng như bằng đồ họa (thanh tiến trình), giá trị độ sáng dưới dạng phần trăm của giá trị tối đa. Chúng tôi lấy giá trị độ chiếu sáng tối thiểu và tối đa từ thí nghiệm 13.

// Kết nối thư viện #bao gồm #bao gồm // PIN 7 - Chân RST 1 trên LCD // PIN 6 - Chân CE 2 trên LCD // PIN 5 - Chân DC 3 trên LCD // PIN 4 - Chân DIN 4 trên LCD // PIN 3 - Chân CLK 5 trên LCD Hiển thị Adafruit_PCD8544 = Adafruit_PCD8544(3, 4, 5, 6, 7); const int LIGHT=A0; // Chân A0 cho đầu vào điện trở quang const int MIN_LIGHT=200 ; // Ngưỡng chiếu sáng thấp hơn const int MAX_LIGHT=900 ; // Ngưỡng chiếu sáng trên // Biến lưu trữ dữ liệu quang điện trở int val1,val2 = 0 ; thiết lập trống()( display.begin(); // thiết lập độ tương phản nền màn hình // tham số rất quan trọng! display.setContrast(60); display.clearDisplay(); // xóa màn hìnhđộ trễ (2000); ) vòng lặp trống()( val1 = analogRead(LIGHT); // Đọc số đo điện trở quang drawText(val1,1); // hiển thị văn bản // chia tỷ lệ giá trị chiết áp thành 0-75 val2= bản đồ (val1, MIN_LIGHT, MAX_LIGHT, 0 , 75 ); // xuất hình chữ nhật màu đen theo % display.fillRect(5, 25, val2, 10, 1); // xuất phần màu trắng của hình chữ nhật display.fillRect(5 +val2,25 , 75 -val2, 10 , 0 ); display.display(); độ trễ (1000); // tạm dừng trước phép đo mới drawText(val1,2); // xóa văn bản) //thủ tục xuất văn bản void drawText( số dài không dấu, màu int)( display.setTextSize(2); // cỡ chữ display.setCursor(20,5); // vị trí con trỏ if (color==1 ) display.setTextColor(BLACK); // in giá trị khác display.setTextColor(TRẮNG); // xóa (trắng trên trắng) display.print(num); )
Thứ tự kết nối:

1. Kết nối cảm biến hiển thị Nokia 5110 và điện trở quang theo sơ đồ trong Hình. 16.2.
2. Tải bản phác thảo từ Danh sách 16.1 lên bo mạch Arduino.
3. Dùng tay chặn luồng ánh sáng, quan sát sự thay đổi chỉ số độ sáng trên màn hình hiển thị.

Danh sách chương trình

Đối với những người dùng thiếu kinh nghiệm muốn tạo độc lập các hệ thống điều khiển cho thiết bị robot hoặc công cụ tự động hóa, nhiều mô-đun phần cứng khác nhau và các sửa đổi của chúng được cung cấp trên thị trường dịch vụ CNTT. Theo quy định, các thiết bị như vậy có kiến ​​trúc đơn giản với bản quyền và phần mềm đi kèm dưới dạng các tiện ích đơn giản. Những sản phẩm như vậy có thể được sử dụng độc lập hoặc kết nối với các hệ thống máy tính khác thông qua giao diện có dây hoặc không dây.

Lợi ích của việc làm việc với màn hình đồ họa

Trước đây, màn hình đồ họa đơn sắc được sử dụng rất rộng rãi trong sản xuất điện thoại di động.

Nokia đã cho ra đời một số lượng lớn các mẫu máy khác nhau được trang bị màn hình như vậy. Thời của những chiếc điện thoại đó đã qua nhưng màn hình vẫn không biến mất khỏi thị trường và vẫn tiếp tục được sử dụng tích cực cho đến ngày nay. Chúng hóa ra là không thể thiếu, ngoài ra, các thiết bị xuất văn bản và hiển thị giá rẻ hoạt động bằng cách tạo ra các ma trận điểm trên màn hình để làm nổi bật hình ảnh. Chúng tiết kiệm tài nguyên và thời gian, đồng thời hiển thị một lượng lớn thông tin và tiêu thụ một lượng nhỏ năng lượng. Có rất nhiều lĩnh vực khác nhau mà thiết bị Nokia 5110 có thể được sử dụng: ảnh, video, thiết bị truyền hình, y học và trong nhiều ngành công nghiệp khác.

Trước khi mô tả cách kết nối màn hình Nokia với mô-đun phần cứng Arduino, cần giới thiệu ngắn gọn về các thiết bị này.

Lợi ích của việc sử dụng Arduino Uno

Nhiều nền tảng và bộ vi điều khiển đã được tạo ra tương tự như nền tảng Arduino được trình bày trong bài viết này. Một số sản phẩm tương tự như BX-24 của Netmedia, Parallax Basic Stamp và nhiều sản phẩm khác. Tuy nhiên, chúng ta sẽ tập trung vào Arduino Uno, vì nhà thiết kế này có một số ưu điểm so với các bộ điều khiển khác. Bạn nên chú ý đến chúng khi chọn nền tảng cho Đầu tiên, điều quan trọng nhất là giá thành của các thiết bị này thấp.Các mẫu có phần mềm này có giá dưới 45 USD và nếu muốn, có thể được lắp ráp thủ công vì chúng có thiết kế khá đơn giản.Điểm thứ hai cần lưu ý là nền tảng Arduino có thể hoạt động với tất cả các hệ điều hành: Windows, Linux , cũng như Macintosh OSX, trong khi những hệ điều hành khác bị giới hạn chỉ hoạt động với Windows.

Mô tả của Arduino Uno

Arduino Uno là nền tảng để phát triển và lập trình các thiết bị khác nhau, có 14 đầu vào và đầu ra kỹ thuật số, 6 đầu vào analog, một số đầu nối (USB, ICSP, nguồn) và một nút có chức năng đặt lại thiết bị. Nền tảng này có cầu chì tích hợp giúp ngăn ngừa đoản mạch và đảm bảo hoạt động an toàn với cáp USB. Nó được kích hoạt khi dòng điện lớn hơn 500 mA chạy qua cổng USB. So với các máy tính lớn, Arduino Uno tương tác chặt chẽ hơn nhiều với môi trường vật lý xung quanh nó. Nền tảng này được xây dựng trên bảng mạch in và được thiết kế để hoạt động với nguồn mở. Nó có thể được sử dụng bởi cả sinh viên và người nghiệp dư, cũng như các chuyên gia, những người có thể mở rộng và bổ sung các mô hình theo ý mình và làm việc tự do với nguồn mở. Nền tảng này được thiết kế sao cho các thành phần mới có thể dễ dàng được thêm vào nó. Thiết kế yêu cầu nhà phát triển chọn sử dụng thiết bị một cách độc lập, do đó, nó không được đặt trong vỏ và không bị ràng buộc chặt chẽ với việc lắp đặt.

Mô tả màn hình Nokia 5110

Màn hình đồ họa Nokia 5110 là màn hình đơn sắc bình dân với đường chéo 1,6", cho phép bạn hiển thị không chỉ thông tin văn bản mà còn cả hình ảnh. Độ phân giải của nó là 48x84 px và điện áp mà nó có thể hoạt động là 2,7-5 V . Thông tin trên màn hình được hiển thị theo khối dọc. Chiều cao của chúng là 8 pixel, kích thước màn hình rộng 6 dòng. Mỗi liên hệ được đánh dấu ở mặt sau, điều này sẽ không cho phép người dùng mắc sai lầm ở vị trí của họ.

Trước đó trong blog này, một số màn hình/chỉ báo LCD và cách sử dụng chúng từ Arduino đã được đề cập. Hạn chế đáng kể của chúng là kích thước và trọng lượng khá lớn. Thường thì đây không phải là một vấn đề. Ví dụ: nếu bạn đang lắp ráp một trạm hàn DIY trong một hộp tự chế, thì bằng cách nào đó, kích thước màn hình không quan trọng. Mặt khác, nếu bạn cần một màn hình trên một chiếc máy bay bốn cánh, thì trọng lượng và kích thước trở nên quan trọng. Vì vậy, hôm nay chúng ta sẽ học cách làm việc với màn hình rất nhỏ và nhẹ của điện thoại Nokia 5110.

Ghi chú: Các bài đăng khác về chủ đề màn hình - Học cách hiển thị văn bản trên chỉ báo LCD từ Arduino, Về cách sử dụng 1602 màn hình với bộ chuyển đổi I2C, Làm việc với LCD dựa trên HD44780 không có thư viện và Nhiệt kế kỹ thuật số từ ma trận LCD, TMP36 và Arduino.

Đừng lo lắng, bạn sẽ không phải mua Nokia 5110, loại máy thực tế không còn tồn tại cho đến ngày nay, hãy lấy màn hình ra khỏi nó và vứt bỏ tất cả các bộ phận khác. Màn hình Nokia 5110 là một mô-đun độc lập rất phổ biến dành cho những người nghiệp dư về radio và có giá từ 2 USD đến 5 USD, tùy thuộc vào cửa hàng. Ở Nga, mô-đun này có thể được mua, ví dụ: trên tpai.ru, arduino-kit.ru, amperkot.ru, compacttool.ru, chipster.ru hoặc electromicro.ru. Và tất nhiên, màn hình được bán với giá thấp nhất trên AliExpress, nhưng bạn sẽ phải đợi một hoặc hai tháng cho đến khi chúng từ Trung Quốc đến.

Như thường lệ trong thế giới Arduino, đã có sẵn các thư viện dành cho mô-đun và nhiều hơn một thư viện. Tôi thích thư viện LCD5110 được đăng trên trang web rinkydinkelectronics.com. Thư viện này có hai phiên bản. Cái đầu tiên được gọi là LCD5110_Basic. Nó đơn giản hơn và chỉ có thể hiển thị văn bản ở các phông chữ có kích thước khác nhau. Có thể tạo phông chữ của riêng bạn. Phiên bản thứ hai được gọi là LCD5110_Graph. Nó có tất cả các khả năng của thư viện đầu tiên và ngoài chúng ra, nó còn có thể vẽ các đoạn, hình chữ nhật, hình tròn, v.v.

Với mục đích của bài đăng này, LCD5110_Basic sẽ được sử dụng. Cả hai thư viện đều được ghi chép đầy đủ và có nhiều ví dụ về cách sử dụng, vì vậy nếu cần LCD5110_Graph, bạn có thể dễ dàng tự mình tìm ra. Tuy nhiên, điều đáng lưu ý là để LCD5110_Basic biên dịch mà không có cảnh báo, tôi đã phải thực hiện một vài chỉnh sửa nhỏ đối với mã của nó.

Vì vậy, một ví dụ về việc sử dụng thư viện:

#bao gồm

bên ngoài uint8_t BigNumbers ;
bên ngoài uint8_t MediumNumbers ;
bên ngoài uint8_t SmallFont ;

/* SCK / CLK, MOSI / DIN, DC, RST, CS */
LCD5110 LCD(2, 3, 4, 6, 5);

thiết lập trống()
{
lcd.InitLCD();
}

int ctr = 0;
vòng lặp trống()
{
lcd.clrScr();

Lcd.setFont(BigNumbers);
lcd.printNumI(ctr, RIGHT, 0);

Lcd.setFont(MediumNumbers) ;
lcd.printNumF(12.34, 2, RIGHT, 24);

Lcd.setFont(SmallFont) ;
lcd.print ("Dòng 1", 0, 8 * 0);
lcd.print("Dòng 2", 0, 8 * 1);
lcd.print ("Dòng 3", 0, 8 * 2);
lcd.print ("L 4", 0, 8 * 3 );
lcd.print ("L 5", 0, 8 * 4 );
lcd.print ("0123456789ABCD", 0, 8 * 5);

Ctrl + = 5 ;
nếu (ctr >= 1000 )
ctr = 0;

Độ trễ (500);
}

Nó trông như thế nào trong hành động:

Tôi hy vọng không cần phải nhai mã. Xin lưu ý rằng mô-đun này được cấp nguồn 3,3 V, nhưng nó hiểu các lệnh từ Arduino một cách bình thường mà không cần bất kỳ bộ chuyển đổi mức logic nào. Theo đó, chúng tôi kết nối các chân VCC (nguồn) và BL (đèn nền) với 3,3 V, kết nối GND với đất và kết nối năm chân còn lại với các chân kỹ thuật số Arduino. Chúng tôi chuyển số pin cho hàm tạo lớp LCD5110 theo các nhận xét trong mã đã cho.

Đơn giản phải không? Bạn có thể tìm thấy mã nguồn đầy đủ cho bài đăng này trong kho GitHub này. Những bổ sung và câu hỏi, như mọi khi, đều được chào đón theo mọi cách có thể.

Phép cộng: Tác giả của thư viện làm việc với màn hình Nokia 5110 cũng là tác giả của thư viện OLED_I2C, được thiết kế để hoạt động với các màn hình OLED phổ biến không kém với giao diện I2C. Bạn có thể tìm thấy ví dụ về cách sử dụng OLED_I2C trong bài viết Sử dụng cần điều khiển Sega Genesis trong các dự án Arduino. Như bạn có thể mong đợi, hai thư viện có giao diện tương tự nhau.

Philips PCD8544.
Để kết nối mô-đun với các thiết bị khác, bo mạch chứa một phích cắm đầu nối và các lỗ để hàn dây. Ngoài ra còn có 4 lỗ gắn nằm ở các góc của bo mạch.
Màn hình đơn sắc của Nokia 5110 LCD (màn hình xanh) có đèn nền LED xanh lam. Qua nhiều năm sản xuất, Nokia 5110 đã được sử dụng và sử dụng trong rất nhiều ứng dụng. Mô-đun hiển thị tạo điều kiện thuận lợi cho việc kết nối và cài đặt Nokia vào thiết bị. Nhờ mô-đun này, lần làm quen đầu tiên của một kỹ sư điện tử hoặc lập trình viên với màn hình LCD Nokia 5110 được đơn giản hóa. Ban đầu được sử dụng làm chỉ báo điện thoại di động, màn hình đã lan rộng sang các loại thiết bị khác. Nó rất thuận tiện để sử dụng trong các dụng cụ đo lường: vôn kế, ampe kế, ohmmeter và các dụng cụ khác. Màn hình này cũng hữu ích để hiển thị các kết quả đọc từ thiết bị di động y tế. Thật thú vị khi sử dụng nó cho thang đo của máy thu radio hoặc chỉ báo mức tín hiệu trong thiết bị tái tạo âm thanh. Màn hình có độ phân giải 84x48 pixel cho phép bạn hiển thị thông tin tượng trưng và đồ họa.
Nếu bạn đã có kinh nghiệm với Nokia 3310 LCD thì sẽ dễ dàng làm chủ được Nokia 5110 LCD vì các chỉ báo này được xây dựng trên cùng một bộ điều khiển PCD8544.

Thông số kỹ thuật mô-đun LCD Nokia 5110

Dinh dưỡng
điện áp 2,7…3,3 V
hiện hành
đèn nền tắt 5 mA
đèn nền trên 20 mA

Nhiệt độ không khí trong quá trình hoạt động 0…50
Nhiệt độ bảo quản -10…70

Chỉ báo LCD Nokia 5110

Các đặc điểm chính

Thành phần chính của mô-đun LCD Nokia 5110 là đèn báo LCD. Nó có bộ tạo điện áp cung cấp và độ lệch của các phần tử LCD tích hợp, đồng thời có đèn nền LED. Giao diện SPI để nhập thông tin. Nokia 5110 có thể hoạt động ở 4 chế độ: bình thường, đảo ảnh, màn hình trống và “tất cả dấu chấm trên”. Người dùng cũng có thể kiểm soát nhiệt độ, điện áp cung cấp và độ lệch.

Dinh dưỡng
điện áp 2,7…3,3 V
dòng điện lên tới 320 µA
Tần số đồng hồ lên tới 4 MHz
Đặt lại thời gian ít nhất 100 ns

Cấu trúc hiển thị

Màn hình hiển thị là một ma trận gồm các thành phần LCD và vi mạch PCD8544 để điều khiển chúng, nằm trong một vỏ gắn trên bảng. Nó cũng chứa bốn đèn LED màn hình. Thông tin về trạng thái của các điểm hiển thị được lưu trữ trong RAM của bộ điều khiển PCD8544, mỗi điểm tương ứng với một bit bộ nhớ. Ngoài ra còn có một bộ đếm địa chỉ tích hợp, bộ đếm này sẽ tự động tăng lên khi byte thông tin tiếp theo được ghi vào bộ nhớ.

Điều khiển hiển thị

Được thực hiện thông qua giao diện SPI, màn hình là một thiết bị phụ. Tuy nhiên, thay vì bốn dòng điều khiển thông thường thì chỉ có ba dòng. Đây là đồng hồ CLK, lựa chọn chip SCE và các dòng dữ liệu đầu vào MOSI. Không có dòng đầu ra MISO. Điều này dẫn đến nhu cầu sử dụng các phương pháp quản lý đặc biệt, chi tiết hơn về điều này bên dưới. Giao diện hoạt động ở chế độ SPI-0 hoặc SPI-3. Nokia 5110 còn có thêm dòng điều khiển Thông tin/Lệnh - D/C̅. Mỗi byte được gửi tới màn hình có thể được hiểu là một lệnh hoặc một byte thông tin, tùy thuộc vào cấp độ trên dòng D/C̅.
Truyền thông tin là một chiều và dữ liệu không thể được đọc từ bộ nhớ và thanh ghi hiển thị. Vì vậy, chương trình phải cung cấp khả năng kiểm soát trạng thái hiển thị. Tuy nhiên, có một đặc điểm nữa khiến việc quản lý trở nên phức tạp. Tính năng này liên quan đến việc tổ chức bộ nhớ.

Bộ nhớ bao gồm sáu ngân hàng, mỗi ngân hàng chứa 84 ô có dung lượng 1 byte.

Đánh địa chỉ từng pixel chỉ báo. Tổng cộng chúng tôi có 84x48 pixel, được sắp xếp thành 6 dãy ngang (từ 0 đến 5) và 84 cột.

Mỗi dãy chứa 8 pixel được sắp xếp theo chiều dọc, tổng cộng sáu dãy sẽ tạo ra 48 dòng. Hình này cho thấy cách một pixel nhất định sẽ được hiển thị từ RAM trên màn hình; mỗi dòng trong hình đại diện cho một ngân hàng.
Thông tin được ghi vào bộ nhớ theo từng byte chứ không phải từng bit và không có cách nào để kiểm soát từng điểm mà chỉ có nhóm tám điểm. Điều này, kết hợp với thực tế là không thể đọc được thông tin từ bộ nhớ LCD Nokia 5110, có nghĩa là trước khi gửi, cần phải nhớ dữ liệu nào được lưu trong ô nào. Nếu không, thông tin có thể bị mất khi dữ liệu mới được gửi tới màn hình. Đặc điểm này được minh họa bằng hình ảnh thể hiện sự thay thế của một biểu tượng. Khi viết chương trình điều khiển cần cung cấp khả năng lưu trữ dữ liệu.

Thay ký hiệu L bằng ký hiệu A.

Màn hình có kích thước 84x48 pixel. Thông tin được xuất ra ở dạng khối dọc cao 8 pixel, các giá trị của khối này được xác định bởi các giá trị bit trong byte đầu ra. Bit ít quan trọng nhất mã hóa pixel trên cùng.
Giả sử nhìn về phía trước các mô tả của các lệnh. Các lệnh 1xxxxxxx và 01000yyy xác định tọa độ con trỏ - dòng và vị trí mà 8 bit dữ liệu tiếp theo sẽ được hiển thị. Sau khi byte được xuất ra, con trỏ sẽ tự động được di chuyển đến vị trí liền kề.
Nếu chế độ địa chỉ ngang V=0 được chọn bằng lệnh 00100PDVH, con trỏ sẽ di chuyển sang phải và byte dữ liệu tiếp theo sẽ được hiển thị ở vị trí liền kề bên phải. Khi đến cạnh phải của màn hình, con trỏ sẽ di chuyển về đầu dòng tiếp theo. Nếu chọn địa chỉ dọc V=1 thì con trỏ sẽ di chuyển xuống dòng tiếp theo và sau dòng cuối cùng, con trỏ sẽ di chuyển một vị trí nằm ngang sang phải và được đặt ở dòng trên cùng.
Là bộ nhớ trung gian, bạn có thể sử dụng bộ nhớ của bộ điều khiển điều khiển, bộ nhớ này sẽ lưu trữ bản sao dữ liệu trên màn hình. Trước khi gửi, cần điều chỉnh dữ liệu, tùy thuộc vào thông tin nào được lưu trong bộ nhớ trung gian.

Các lệnh điều khiển Nokia 5110

Màn hình được điều khiển bằng cách gửi một từ lệnh qua giao diện SPI. Kích thước từ là 1 byte. Các lệnh điều khiển được chia thành 3 loại.

Chức năng quản lý tối cao

Đặt loại chức năng - cho biết loại chức năng nào mô-đun sẽ hoạt động, cơ bản hoặc nâng cao.
Đặt chế độ nguồn - bật hoặc tắt nguồn.
Đặt chế độ địa chỉ - xác định loại địa chỉ bộ nhớ: dọc hoặc ngang. Trong trường hợp đầu tiên, sau khi ghi một byte dữ liệu, bộ đếm địa chỉ Y sẽ tăng lên, nghĩa là quá trình ghi sẽ tiến hành theo cột. Trong phần thứ hai - bộ đếm địa chỉ X, bản ghi sẽ đi theo từng dòng.
Các chức năng được chuyển sang Nokia 5110 LCD khi đường D/C̅ ở mức thấp. Chúng được xác định bởi một từ lệnh duy nhất. Từ này phải được gửi đến màn hình khi bắt đầu hoạt động. Định dạng:

0 0 1 0 0 PD V H

Bit PD xác định chế độ nguồn, được đặt thành PD có nghĩa là chế độ tắt nguồn.
Chế độ địa chỉ bit V: 1 - dọc, 0 - ngang.
Bit H là loại hàm sẽ được sử dụng cho công việc tiếp theo: 0 - bình thường, 1 - mở rộng.
Như bạn có thể thấy, cần phải nhớ trạng thái hiện tại của màn hình để khi thiết lập một giá trị tham số mới, bạn không bị mất thông tin về các giá trị của người khác. Lệnh 00100PDVH có trong cả hai bộ lệnh.

Chức năng chính

Đặt chế độ hiển thị thành 00001D0E. Xác định chế độ hiển thị: màn hình trống, bật tất cả các điểm, hiển thị bình thường, hiển thị nghịch đảo. E - dấu hiệu đảo ngược hình ảnh, D - đầu ra hình ảnh. Nếu D=0 thì màn hình hoàn toàn rõ ràng E=0 hoặc hoàn toàn đen E=1.
Đặt lệnh địa chỉ X 1xxxxxxx hoặc 0x80 + x lựa chọn vị trí nằm ngang trong dòng hiện tại nơi hình ảnh sẽ được hiển thị. Trong đó x=0 là vị trí ngoài cùng bên trái, 83 là vị trí ngoài cùng bên phải.
Lệnh địa chỉ SetY 01000yyy đặt địa chỉ Y của ô nơi byte tiếp theo sẽ được ghi. Lệnh hoặc 0x40+y chọn số dòng (trang) mà hình ảnh được hiển thị. Y=0 là dòng trên cùng, 5 là dòng dưới cùng. Đường này cao 8 điểm.

Các tính năng tiên tiến

Bộ lệnh mở rộng được chọn sau khi lệnh 00100PDV1 được gửi.
Cài đặt chế độ nhiệt độ. Lệnh 000001tt hoặc 0x04 + t chọn một trong bốn chế độ hiệu chỉnh nhiệt độ. Tùy thuộc vào chế độ, điện áp hiển thị sẽ thay đổi khác nhau khi nhiệt độ thay đổi.
Đặt điện áp phân cực của các thành phần hiển thị LCD. Lệnh 00010bbb hoặc 0x10 + b chọn một trong tám chế độ để tính toán độ lệch mức cho điều khiển LCD. Đối với màn hình Nokia thông thường, chế độ được khuyến nghị là 0001011 hoặc 0x13.
Đặt điện áp cung cấp cho các thành phần hiển thị LCD. Lệnh 1vvvvvvv, hoặc 0x80 + v chọn điện áp trên bộ tạo điện áp tăng áp cho LCD. Khi v=0 máy phát điện sẽ tắt. Điện áp đầu ra được tính theo công thức VLCD = 3,06 V + v * 0,06 V. Tùy thuộc vào việc lựa chọn phương pháp hiệu chỉnh điện áp, giá trị này thay đổi tùy theo nhiệt độ. Để tránh làm hỏng màn hình ở nhiệt độ thấp, giá trị này nên nhỏ hơn 8,5 V, tức là v<=90. Для обычных дисплеев Nokia это нормальное рабочее значение этого параметра примерно равно 56, т. е. команда принимает вид 10111000, или 0xB8.
Các hàm cơ bản và nâng cao dễ làm việc hơn vì mỗi hàm có từ lệnh riêng.
Cần phải nhớ rằng để hoạt động với một loại chức năng nhất định, bạn phải đặt màn hình hoạt động với các chức năng này. Nếu không, việc gửi một từ lệnh sẽ dẫn đến việc thực thi lệnh này không chính xác. Bạn có thể tìm thêm chi tiết về các lệnh điều khiển trong tài liệu ở trang 11.

Đang khởi tạo hiển thị

Phải được thực thi trong vòng 30 ms sau khi nguồn điện xuất hiện theo trình tự sau:
đặt lại bằng cách điều chỉnh mức đầu vào tương ứng ở mức thấp trong 100 ns trở lên,
bật màn hình và chọn một bộ lệnh mở rộng bằng cách gửi 0x21,
gửi lệnh bù điện áp 0x13,
cài đặt hiệu chỉnh nhiệt độ bằng lệnh 0x04,
bật máy phát điện áp cao lên mức 6,42 V bằng lệnh 0xB8,
quay lại bộ lệnh tiêu chuẩn bằng cách gửi 0x20,
bật chế độ đồ họa bằng lệnh 0x0C.
Sau các bước này, Nokia 5110 LCD đã sẵn sàng để sử dụng.

Kết nối mô-đun LCD Nokia 5110

Đầu ra tín hiệu đến các tiếp điểm của mô-đun được hiển thị trong hình ảnh ở đầu trang. Cũng có thể có sự sắp xếp khác nhau của các điểm tiếp xúc được thể hiện trong hình.

Một trong những lựa chọn cho vị trí của các liên hệ.

Tín hiệu mô-đun và đường dây

Nguồn điện VCC 3,3V
Dây chung GND
SCE Kích hoạt, hoạt động ở mức thấp
Đặt lại Đặt lại, hoạt động ở mức thấp
D/C̅ Dữ liệu/lệnh: 0 - dữ liệu, 1 - lệnh
Đầu vào giao diện SDIN
Tín hiệu đồng hồ SCLC
Đèn nền LED. Đối với các mô-đun trên bảng màu đỏ, kết nối với nguồn chung, đối với các mô-đun màu xanh, kết nối với nguồn điện. Sử dụng điện trở 330 Ohm trong mạch đèn nền. Một số sửa đổi đã được cài đặt điện trở, một số sửa đổi khác thì không. Để xác định sự hiện diện của điện trở và chọn chế độ đèn nền tối ưu, bạn nên theo dõi dòng điện của mô-đun và dòng điện của đèn nền. Nó không được vượt quá 20 mA.

Nếu không có thiết bị nào khác được kết nối với giao diện SPI của vi điều khiển, thì để lưu các tiếp điểm của mô-đun điều khiển chính của thiết bị và giảm số lượng đường truyền, chân chọn thiết bị hoạt động SCE phải được kết nối với chân GND trên mô-đun Cái bảng. Nhưng có một nhược điểm. Nếu bộ điều khiển Nokia bị mất đồng bộ với MK thì hiện tại không thể phát hiện được.
Một kết nối đáng tin cậy hơn nên được thực hiện theo cách này. Kéo đường này lên mức cao bằng điện trở 100-500 kOhm để tránh nhiễu ảnh hưởng đến bộ điều khiển khi MK ở trạng thái reset.
Khi làm việc với bộ vi điều khiển AVR, sẽ rất thuận tiện khi sử dụng giao diện USART ở chế độ chính SPI. Chế độ SPI-3 (CPHA=1, CPOL=1). Điều này có nghĩa là mặc dù không có trao đổi, đường SCLK ở mức cao và bộ điều khiển đọc dữ liệu từ đường SDIN trên cạnh lên trên đường SCLK trong 100 ns. Trong trường hợp này, chúng phải được đặt ít nhất 100 ns trước cạnh lên. Quá trình truyền được thực hiện theo 8 bit, quan trọng nhất là đầu tiên.
Mức trên dòng D/C̅ xác định cách diễn giải dữ liệu nhận được. Mức cao có nghĩa là dữ liệu được truyền sẽ được hiển thị, mức thấp có nghĩa là lệnh được truyền. Bộ điều khiển đọc giá trị trên dòng này cùng với bit cuối cùng (thấp nhất) của mỗi byte dữ liệu được truyền. Điều này có thể khó khăn khi sử dụng chuyển giao phần cứng không đồng bộ. Bạn phải đợi byte trước đó hoàn tất quá trình truyền trước khi đặt mức.

Kết nối mô-đun LCD Nokia 5110 và Arduino UNO.

Các tín hiệu đầu vào của mô-đun phải tương ứng với các mức logic của mạch được cấp nguồn bằng điện áp 3,3 V. Khi làm việc với bộ vi điều khiển có nguồn điện 5 V, phải sử dụng các mạch khớp mức.

Nghệ thuật đồ họa

Khi bắt đầu chuẩn bị hình ảnh đồ họa, bạn nên chuẩn bị hình ảnh đen trắng ở định dạng *.bmp với độ phân giải 84x48 pixel trong bất kỳ trình chỉnh sửa đồ họa nào. Chúng tôi đã chuẩn bị một bức tranh như vậy trong Paint, đây là:

Tên file ảnh phải được lưu bằng chữ cái Latin. Sử dụng chương trình