① 可显示四行字符,每行可显示8个汉字或者16个数字和字母;
②可串行通信和并行通信;
③ 串口接口管脚信号
管脚号 | 名称 | LEVEL | 说明 |
---|---|---|---|
1 | VSS | 0V | 电源地 |
2 | VDD | +5V | 电源正(3.0V——5.5V) |
3 | V0 | - | 对比度(亮度)调整 |
4 | CS | H/L | 模组片选端,高电平有效 |
5 | SID | H/L | 串行数据输入端 |
6 | CLK | H/L | 串行同步时钟:上升沿时读取 SID 数据 |
15 | PSB | L | L:串口方式 |
17 | /RESET | H/L | 复位端,低电平有效 |
19 | A | VDD | 背光源电压+5V |
20 | K | VSS | 背光源电压0V |
④ 并行接口
管脚号 | 名称 | LEVEL | 说明 |
---|---|---|---|
1 | VSS | 0V | 电源地 |
2 | Vcc | +5V | 电源正(3.0V——5.5V) |
3 | V0 | - | 对比度(亮度)调整 |
4 | RS(CS) | H/L | RS=“H”,表示 DB7——DB0 为显示数据;RS=“L”,表示 DB7——DB0 为显示指令数据 |
5 | R/W(SID) | H/L | R/W=“H”,E=“H”,数据被读到 DB7——DB0;R/W=“L”,E=“H→L”, DB7——DB0 的数据被写到 IR 或 DR |
6 | E(SCLK) | H/L | 使能信号 |
7 | SID | H/L | 三态数据线 |
8 | SID | H/L | 三态数据线 |
9 | SID | H/L | 三态数据线 |
10 | SID | H/L | 三态数据线 |
11 | SID | H/L | 三态数据线 |
12 | SID | H/L | 三态数据线 |
13 | SID | H/L | 三态数据线 |
14 | SID | H/L | 三态数据线 |
15 | PSB | H/L | H:8 位或 4 位并口方式,L:串口方式 |
16 | NC | - | 悬空 |
17 | /RESET | H/L | 复位端,低电平有效 |
18 | VOUT | H/L | LCD 驱动电压输出端 |
19 | A | VDD | 背光源电压+5V |
20 | K | VSS | 背光源电压0V |
①字符显示地址(每一个地址代表显示区域的一个8x16的点阵)
80H 81H 82H 83H 84H 85H 86H 87H
90H 91H 92H 93H 94H 95H 96H 97H
88H 89H 8AH 8BH 8CH 8DH 8EH 8FH
98H 99H 9AH 9BH 9CH 9DH 9EH 9FH
②符号表(比如显示“ ?” ,则发送字符码为 0X3F )
③汉字码址表
① lcd12864.c 文件
#include
void initinal(void) //初始化,12864有要求的要写上
{
delay(40);
PSB=1; //并口工作模式
delay(1);
RES=0; //复位
delay(1);
RES=1; //复位置高
delay(10);
TransferData(0x30,0);
delay(100);
TransferData(0x30,0);
delay(37);
TransferData(0x08,0);
delay(100);
TransferData(0x10,0);
delay(100);
TransferData(0x0C,0);
delay(100);
TransferData(0x01,0);
delay(10);
TransferData(0x06,0);
delay(100);
}
void lcd_mesg(unsigned char code *addr1) //显示汉字函数,8*4=32
{
unsigned char i;
TransferData(0x80,0);
delay(10);
for(i=0;i<16;i++)
{
TransferData(*addr1,1);
addr1++;
}
TransferData(0x90,0);
delay(10);
for(i=16;i<32;i++)
{
TransferData(*addr1,1);
addr1++;
}
TransferData(0x88,0);
delay(10);
for(i=32;i<48;i++)
{
TransferData(*addr1,1);
addr1++;
}
TransferData(0x98,0);
delay(10);
for(i=48;i<64;i++)
{
TransferData(*addr1,1);
addr1++;
}
}
/*******************************************************************************
* 函 数 名 : TransferData(data1,DI);
* 函数功能 : 向LCD发送数据
* 参数:data1 当发送的为数字、英文字母、符号时发送的为一个字节
当发送的为汉字时为两个字节
DI 0 发送的是命令
1 发送的是命令
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void TransferData(char data1,bit DI) //传送数据或是命令,当DI=0时,传送命令,当DI=1时,传送数据
{
WRD=0;
RS=DI;
delay(1);
P0=data1;
E=1;
delay(1);
E=0;
}
/*******************************************************************************
* 函 数 名 : delayms(); delay
* 函数功能 : 计算测得的距离数据
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void delayms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<2000;j++);
}
void delay(unsigned int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
/*********************************************************************
** 函数名称: display_Chinese();
** 入口参数:
** 出口参数:无
** 功能描述: 显示汉字
**********************************************************************/
/*因显示出错,搁置
void display_Chinese(unsigned char page,unsigned char column, unsigned char code *hzk)//显示自己生成的汉字
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
Send_Cmd(Page_Add+page+j);
Send_Cmd(LCDCol_Add+column);
for(i=0;i<16;i++)
Send_date(hzk[16*j+i]);
}
}
*/
②lcd12864.h 文件
#ifndef _LCD12864_H
#define _LCD12864_H
#include
#include
#include
#include
//sbit RS=P2^6; //定义LCD显示引脚
//sbit WRD=P2^5;
//sbit E=P2^7;
//sbit PSB=P3^2;
//sbit RES=P3^4;
sbit RS=P2^6; //定义LCD显示引脚
sbit WRD=P2^5;
sbit E=P2^7;
sbit PSB=P2^3;
sbit RES=P2^4;
#define Page_Add 0xb8//页地址
#define LCDCol_Add 0x40//列地址
#define Start_Line 0xC0//行地址
void initinal(void);
void TransferData(char data1,bit DI);
void delayms(unsigned int n);
void delay(unsigned int m);
void lcd_mesg(unsigned char code *addr1);
//void Send_Cmd(unsigned char date2) ;//写命令
//void Send_date(unsigned char date3);//写数据
//void display_Chinese(unsigned char page,unsigned char column, unsigned char code *hzk);//显示自己生成的汉字
#endif