目录
介绍
诺基亚5110显示器
- 诺基亚5110是一款可以显示文字,图像和各种图案的图形显示屏。
- 它的分辨率为48×84,并配有背光。
- 它使用SPI通信与微控制器通信。
- 数据和命令可以通过微控制器发送到显示器以控制显示输出。
- 它有8个引脚。
电路连接图
将Nokia5110模块与MSP-EXP430G2 TI Launchpad连接
诺基亚5110显示器编程
诺基亚5110初始化
- 在Nokia5110的初始化中,第一步是通过发送低至高脉冲来复位引脚来复位显示。
- 发送命令0x21H以在附加模式下设置命令(H = 1)。
- 然后通过发送命令0xC0H设置VOP = 5V。
- 通过发送0x07H将温度系数设置为3。
- 使用0x13命令设置电压偏置系统,建议n = 4和1:48 mux速率。
- 发送命令0x20进行基本模式操作(H = 0)。
- 然后发送0x0C进行正常模式操作。
void N5110_init(void)
{
N5110_Reset(); /* reset the display */
N5110_Cmnd(0x21); /* command set in addition mode */
N5110_Cmnd(0xC0); /* set the voltage by sending C0 means VOP = 5V */
N5110_Cmnd(0x07); /* set the temp. coefficient to 3 */
N5110_Cmnd(0x13); /* set value of Voltage Bias System */
N5110_Cmnd(0x20); /* command set in basic mode */
N5110_Cmnd(0x0C); /* display result in normal mode */
}
命令写入功能
- 对于命令操作,使DC引脚为低电平。
- 使能(使低电平)从选择引脚。
- 在SPI数据寄存器上发送命令。
- 启用(高电平)DC引脚以进行数据操作。
- 禁用(使高电平)从选择引脚。
void N5110_Cmnd(char DATA)
{
digitalWrite(DC, LOW);
digitalWrite(chipSelectPin, LOW);
SPI.transfer(DATA);
digitalWrite(chipSelectPin, HIGH);
digitalWrite(DC, HIGH);
}
数据写入功能
- 对于数据操作,使DC引脚为高电平。
- 使能(使低电平)从选择引脚。
- 在SPI数据寄存器上发送数据。
- 启用(降低)DC引脚以进行命令操作。
- 发送数据后禁用(使高电平)从选择引脚。
void N5110_Data(char *DATA)
{
digitalWrite(DC, HIGH);
digitalWrite(chipSelectPin, LOW);
int len = strlen(DATA);
for (int g=0; gfor (int index=0; index<5; index++)
{
SPI.transfer(ASCII[DATA[g] - 0x20][index]);
}
SPI.transfer(0x00);
}
digitalWrite(chipSelectPin, HIGH);
digitalWrite(DC, LOW);
}
图像显示功能
void N5110_image(const unsigned char *image_data) /* clear the Display */
{
digitalWrite(DC, HIGH);
digitalWrite(chipSelectPin, LOW); for (int k=0; k<504; k++)
{
SPI.transfer(image_data[k]);
}
digitalWrite(chipSelectPin, HIGH);
digitalWrite(DC, LOW);
}
例
在诺基亚5110显示屏上显示文字和图像。
在这里,我们将在诺基亚5110显示器上显示简单文本,然后显示一些将在循环中显示的图像。
诺基亚5110显示的程序
#include
#include "Font.h"
#include
#include "images.h"
const int chipSelectPin = 17; /* Chip Select Pin */
const int DC = 16; /* Data/Command Pin */
const int RST = 18; /* Reset Pin */
void N5110_Cmnd(char DATA) /* Function for sending command to Nokia5110 display */
{
digitalWrite(DC, LOW); /* DC = 0, display in command mode */
digitalWrite(chipSelectPin, LOW); /* Make chip select pin low to enable SPI commuincation */
SPI.transfer(DATA); /* Send data(command) */
digitalWrite(chipSelectPin, HIGH); /* Make chip select pin high to disable SPI commuincation */
digitalWrite(DC, HIGH); /* DC = 1, display in data mode */
}
void N5110_Data(char *DATA) /* Function for sending data to Nokia5110 display */
{
digitalWrite(DC, HIGH); /* DC = 1, display in data mode */
digitalWrite(chipSelectPin, LOW); /* Make chip select pin low to enable SPI commuincation */int len = strlen(DATA);
for (int g=0; gfor (int index=0; index<5; index++)
{
SPI.transfer(ASCII[DATA[g] - 0x20][index]); /* Send data */
}
SPI.transfer(0x00);
}
digitalWrite(chipSelectPin, HIGH); /* Make chip select pin high to disable SPI commuincation */
digitalWrite(DC, LOW); /* DC = 0, display in command mode */
}
void N5110_Reset(void) /* Function for resetting Nokia5110 display */
{
digitalWrite(RST, LOW); /* Make reset pin low for resetting the Nokia5110 display */
delay(100); /* Reset pin needs to be low for at least 100nsec, we are keeping it low for 100msec */
digitalWrite(RST, HIGH); /* Make reset pin high to bring Nokia5110 display out of reset */
}
void N5110_init(void) /* Function for initializing Nokia5110 display */
{
N5110_Reset(); /* reset the display */
N5110_Cmnd(0x21); /* command set in addition mode */
N5110_Cmnd(0xC0); /* set the voltage by sending C0 means VOP = 5V */
N5110_Cmnd(0x07); /* set the temp. coefficient to 3 */
N5110_Cmnd(0x13); /* set value of Voltage Bias System */
N5110_Cmnd(0x20); /* command set in basic mode */
N5110_Cmnd(0x0C); /* display result in normal mode */
}
void lcd_setXY(char x, char y) /* Function for setting cursor to (x,y) co-ordinates */
{
N5110_Cmnd(x); /* x co-ordinate can be 0x80-0xD3 for position 0-83 */
N5110_Cmnd(y); /* y co-ordinate can be 0x40-0x45 for position 0-5 */
}
余下程序:
结果演示
德飞莱的屏我驱动不了,有库吗
上github找找 ,可能有