PIC18F4550 Giao tiếp màn hình NOKIA 5110

9
837

Giới thiệu

Màn hình LCD Nokia 5110 sử dụng IC điều khiển Philips PCD8544. Là loại LCD Graphic đơn sắc với số điểm ảnh 48×84 Pixel được sử dụng trong vô số các ứng dụng hiển thị hình ảnh, text,…, với ưu điểm giá thành rẻ, nhỏ gọn, tích hợp đèn nền, sử dụng giao tiếp SPI dễ dàng lập trình và kết nối với vô số code mẫu và bộ thư viện khác nhau (đặc biệt trên Arduino) và khả năng tiết kiệm năng lượng cao, LCD Graphic Nokia 5110 là sự lựa chọn hợp lý để thực hiện vô số các ứng dụng hiển thị hình ảnh khác nhau.

Màn hình Nokia 5110 rất thích hợp sử dụng cho các dự án Vi điều khiển vì kích thước nhỏ, có thể hiển thị được nhiều ký tự.

THÔNG SỐ KỸ THUẬT:

  • Loại màn hình: LCD Graphic đơn sắc.
  • Mã sản phẩm: Nokia 5110 LCD
  • Đèn nền: màu trắng.
  • Điện áp sử dụng: 3V3 – 5V.
  • Giao tiếp: SPI mức TTL.
  • Kích thước: 45x45mm.
Kết quả hình ảnh cho Mô-đun LCD Nokia 5110

Module màn hình LCD Nokia 5110

Sơ đồ chân:

  • RST: Reset. Chân thiết lập lại (Reset). Vi điều khiển sẽ được đặt lại và chân phải được nối để khởi tạo chip đúng cách. Chân được tích cực mức THẤP (Low).
  • CE (hay CS): Chip Enable (Chip Select). Chân ngõ vào cho phép. Chân cho phép truyền dữ liệu khi có xung clock. Chân được tích cực mức THẤP (Low). 
  • DC: Data / Command. Chân lựa chọn chế độ Lệnh hoặc Dữ liệu cho các định dạng dữ liệu .
  • DIN: Data In.
  • CLK: Clock.
  • VCC: Cấp nguồn 3V3 – 5 VDC
  • LIGHT: Chân điều khiển đèn nền.
  • GND: GND

Sơ đồ kết nối với PIC18F4550

  • Sơ đồ mạch sau hiển thị giao tiếp hoàn chỉnh của màn hình PIC18F4550 tới Nokia5110.

Màn hình LCD Nokia 5110 với PIC18F4550

Chi tiết kết nối

Chân Nokia5110Chân PIC18F4550Cổng PIC18F4550 / Chức năng
RST20RD1
CE7SS
DC19RD0
Din26SDO
CLK34SCK
BL và VCC11/32VCC
GND12/31GND

Lập trình Nokia5110

  • Thêm file header SPI_Header_File.h.
  • Trong tệp SPI_Header_File.h chứa các định nghĩa của SPI.

Đầu tiên ta chia ra làm 2 chế độ làm việc, chân DC có tác dụng lựa chọn chế độ làm việc cho LCD 
+ DC=0 : Chế độ gửi lệnh, tức là dữ liệu bạn gửi đến có nhiệm vụ điều khiển, cài đặt hoạt động của LCD chứ nó không in ra màn hình 
+ DC=1 : Chế độ gửi dữ liệu: Lúc này, tất cả mọi dữ liệu bàn gửi đến sẽ được hiển thị ra màn hình 

LCD sẽ bị reset khi có chân reset ở mức thấp 
LCD sẽ bị reset khi có chân reset ở mức thấp 
LCD chỉ hoạt động khi chân CE ở mức 0.

Khởi tạo Nokia5110

  • Bước đầu tiên là Reset màn hình bằng cách gửi xung từ thấp đến cao cho chân Reset. Độ rộng xung của tín hiệu thấp không được <100 ms.  
  • Gửi lệnh 0x21 để đặt màn hình ở chế độ lệnh mở rộng (H = 1).
  • Thiết lập hệ thống thiên vị điện áp bằng cách sử dụng lệnh 0x13, nó được khuyến nghị cho n = 4 và 1:48 tốc độ mux.
  • Đặt hệ số temp. Ví dụ: Đặt hệ số nhiệt độ 3 bằng cách gửi 0x07H.
  • Sau đó thiết lập VOP = 5 V bằng cách gửi lệnh 0xC0H.
  • Gửi lệnh 0x20 để cấu hình màn hình cho chế độ lệnh cơ bản (H = 0).
  • Và sau đó gửi 0x0C để cho màn hình hoạt động ở chế độ bình thường.
void Nokia_Init()
{
    /*apply 100 ms reset(low to high) pulse */
    RES = 0;  /* enable reset */
    MSdelay(100);
    RES = 1;  /* disable reset */
    Nokia_SendCommand(0x21);  /* use extended instruction set */
    Nokia_SendCommand(0x13);  /* select Bias voltage */
    Nokia_SendCommand(0x07);  /* set temperature coefficient */
    Nokia_SendCommand(0xC0);  /* set LCD Vop for contrast */    
    Nokia_SendCommand(0x20);  /* use basic instruction set */    
    Nokia_SendCommand(0x0C);  /* set normal mode */   
}

Chức năng ghi lệnh:

  • Làm cho chân DC ở mức thấp để LCD ở chế độ hoạt động lệnh.
  • Cho phép chọn Slave.
  • Gửi / ghi lệnh vào thanh ghi dữ liệu SPI (SSPBUF).
  • Vô hiệu hóa chân Slave (đưa chân CS lên mức cao).
void Nokia_SendCommand(char cmd)
{
    DC = 0;  /* Data/Command pin, D/C=1 - Data, D/C = 0 - Command*/
    CS = 0;  /* enable chip */
    SPI_Write (cmd);  /* write command to the Nokia 5110 */
    CS = 1;  /* disable chip */
}

Chức năng ghi dữ liệu:

  • Đối với dữ liệu, đưa chân DC lên mức cao cho chế độ dữ liệu.
  • Cho phép chân chọn Slave.
  • Gửi / ghi dữ liệu vào thanh ghi dữ liệu SPI (SSPBUF).
  • Đưa chân CS lên mức cao sau khi gửi dữ liệu.
void Nokia_SendData(char dat)
{   
    char i;
    DC = 1;  /* Data/Command pin, D/C=1 - Data, D/C = 0 - Command*/
    CS = 0;  /* enable chip */
    for(i=0;i<5;i++)
        SPI_Write(font[(dat) - (0x20)][i]);  /* write data to the Nokia 5110 */ 
    CS = 1;  /* disable chip */
}

Ví dụ

Hiển thị “ElectronicWings” trên màn hình Nokia5110 sử dụng PIC18F4550

/*
 * Nokia 5110 display interface with PIC18F4550
 * 
 */


#include <pic18f4550.h>
#include "Configuration_Header_File.h"
#include "SPI_Header_File.h"
#include “Nokia_Font.h”

void Nokia_Init();
void Nokia_SendCommand(char);
void Nokia_SendData(char);
void Nokia_SendString(char *);
void MSdelay(unsigned int);
void Nokia_Clear();
void Nokia_PositionXY(char, char);

#define DC LATD0      
#define RES LATD1  /* connected to reset */

void main()
{
    OSCCON = 0X72;  /* set internal oscillator frequency, 8 MHz*/
    TRISD = 0;  /* set PORT as output port*/
    SPI_Init_Master();  /* initialize SPI master*/
    Nokia_Init();  /* initialize Nokia 5110 display */
    Nokia_Clear();  /* clear Nokia display */
    Nokia_PositionXY(0,0);  /* set X and Y position for printing */
    Nokia_SendString("ElectronicWings");
    while(1);
}
void Nokia_SendCommand(char cmd)
{
    DC = 0;  /* Data/Command pin, D/C=1 - Data, D/C = 0 - Command*/
    CS = 0;  /* enable chip */
    SPI_Write(cmd);  /* write command to the Nokia 5110 */
    CS = 1;  /* disable chip */
}
void Nokia_SendData(char dat)
{   
    char i;
    DC = 1;  /* Data/Command pin, D/C=1 - Data, D/C = 0 - Command*/
    CS = 0;  /* enable chip */
    for(i=0;i<5;i++)
        SPI_Write(font[(dat) - (0x20)][i]);  /* write data to the Nokia 5110 */ 
    CS = 1;  /* disable chip */
}

void Nokia_SendString(char *data)
{
    char i;
    while((*data)!=0)
    {   
        Nokia_SendData(*data);
        data++;
    }    
}
void Nokia_PositionXY(char X, char Y)
{
    Nokia_SendCommand(0x80 | X);  /* set X position */
    Nokia_SendCommand(0x40 | Y);  /* set Y position */  
}

void Nokia_Init()
{
    /*apply 100 ms reset(low to high) pulse */
    RES = 0;  /* enable reset */
    MSdelay(100);
    RES = 1;  /* disable reset */
    Nokia_SendCommand(0x21);  /* display extended commands*/
    Nokia_SendCommand(0x13);  /* select Bias voltage*/
    Nokia_SendCommand(0x07);  /* set temperature coefficient*/
    Nokia_SendCommand(0xC0);  /* set LCD Vop for contrast */   
    Nokia_SendCommand(0x20);  /* display basic commands */    
    Nokia_SendCommand(0x0C);  /* set normal mode */
}

void Nokia_Clear()
{
    char i,j;
    CS = 0;
    DC = 1;
    for(i=0;i<6;i++)
    {   
        for(j=0;j<84;j++)
            SPI_Write(0);  /*write 0 to clear display */
    }      
    CS = 1;    
}
void MSdelay(unsigned int val)
{
     unsigned int i,j;
        for(i=0;i<=val;i++)
            for(j=0;j<81;j++);  /*This count Provide delay of 1 ms for 8MHz Frequency */
 }

Chức năng hiển thị hình ảnh

void Nokia_DisplayImage (const unsigned char *image)
{
    int i;
    CS = 0;
    DC = 1;
    for(i=0;i<504;i++)
    {
        SPI_Write(image[i]);        
    }    
    CS = 1;
}

Code và file: https://drive.google.com/drive/folders/1WW0gg4clzmf3C4Rs5eZ_h3By6PKCzg8F?usp=sharing

9 COMMENTS

  1. Thanks for reading and commenting! I really recommend the book, I turn to Sophie most often for my Australian garden. Her depth of experience and knowledge is vast. I was looking into wicking beds, she has some handy tips on how to build your own. Deeann Howey Gausman

  2. Thank you a lot for giving everyone an exceptionally memorable possiblity to discover important secrets from here. It is usually so useful and also jam-packed with fun for me and my office fellow workers to visit your website at the very least 3 times in one week to see the fresh things you have got. And definitely, we are always contented with all the very good tricks served by you. Certain 3 points on this page are certainly the most efficient we have had. Koral Boote Aiello

  3. I got this web site from my buddy who shared with me about this site and at the moment this time I am visiting this website and reading very informative articles at this place. Audry Benjamen Sherwin

  4. I loved as much as you will receive carried out
    right here. The sketch is attractive, your authored subject matter stylish.

    nonetheless, you command get got an shakiness over that
    you wish be delivering the following. unwell unquestionably come more formerly
    again as exactly the same nearly a lot often inside case you shield this
    increase.

LEAVE A REPLY

Please enter your comment!
Please enter your name here