产物动态
- G270QAN01.4 友达27寸 400 cd/m? 分辨率25
- G190ETT01.1 友达19寸 分辨率1280*1024 常白
- 18.5寸G185HAT01.1 友达 对比度1000:1 分辨
- 友达G101EAT02.6 10.1寸 分辨率1280*800 对比
- G156HAN02.303 友达15.6寸 对比度1000:1 雾面
- G057QAN01.1 友达5.7寸 常黑显示 1000:1 分
- G238HAN04.0 友达23.8寸 常黑显示 分辨率
- 友达8.4寸 G084SAN01.0 常黑显示 分辨率
- G057QAN01.0 友达 5.7寸 500 cd/m? 常黑显示
- G057QAN01.0 友达 5.7寸 500 cd/m? 常黑显示

全国统一服务热线:
15382323032
客服蚕蚕:3234659108
手机:15382323032
地址:浙江省杭州市余杭区五常街道西溪软件园金牛座叠2座4层4118-4119
12864液晶串行如何显示?
文章出处:原创 人气:发表时间:2017-09-19
液晶串行显示
这一篇只是简单的介绍了 12864液晶 串行显示一些文字不能显示图片,先看一下 12864 的引脚。

从上面的引脚说明我们可以看出,如果要想串行显示只需要将 4、5、6 引脚接到单片机就行了,同时还需要将 1、15、20 引脚接地,17、19 引脚接电源,注意 17 号引脚所说的低电平有效,并不是将 17 号引脚接地复位功能就可以使用了,而是需要软件置低,为了节省 IO 口要将 17 号引脚置高,置高说明 17 号引脚复位功能不使用。 3 号引脚接一 10k可调变阻以调节12864液晶 的 亮 度 。
具 体 接 法 可 参 考 下 图 :

以下是程序:
/***
串行12864液晶显示
*引脚说明:
CS P1.0
SID P1.1
SCLK P1.2
PSB P1.3
RST P1.4
Ps:因为PSB和RST我们已经在电路中连接好了,所以这两个引脚没有使用 * /
#include <msp430g2553.h>
#define uchar unsigned char
#define uint unsigned int
/***
*&苍产蝉辫;名称&苍产蝉辫;: delay()
* 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。
*&苍产蝉辫;输入&苍产蝉辫;: t
* 输出 : 无
*
/
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0; i<t; i++)
for(j=0; j<10; j++);
}
/***
*&苍产蝉辫;名称&苍产蝉辫;: sendbyte()
* 功能 : 按照液晶的串口通信协议,发送数据
*&苍产蝉辫;输入&苍产蝉辫;: zdata
* 输出 : 无
*
/
void sendbyte(unsigned char zdata)
{
unsigned int i; for(i=0; i<8; i++)
{
if((zdata << i) & 0x80)
{
P1OUT |= BIT1; //SID = 1;
}
else
{
P1OUT &= ~BIT1;//SID = 0;
}
P1OUT &= ~BIT2;//SCLK = 0; P1OUT |= BIT2;//SCLK = 1;
}
}
/***
*&苍产蝉辫;名称&苍产蝉辫;: write_com()
* 功能 : 写串口指令
*&苍产蝉辫;输入&苍产蝉辫;: cmdcode
* 输出 : 无
/
void write_com(unsigned char cmdcode)
{
P1OUT |= BIT0;//CS = 1;
sendbyte(0xf8); //告诉12864接下来传送指令 sendbyte(cmdcode & 0xf0); sendbyte((cmdcode << 4) & 0xf0);
delay(2);
}
/***
*&苍产蝉辫;名称&苍产蝉辫;: write_data()
* 功能 : 写串口指令
*&苍产蝉辫;输入&苍产蝉辫;: cmdcode
* 输出 : 无
*
/
void write_data(unsigned char Dispdata)
{
P1OUT |= BIT0;//CS = 1;
sendbyte(0xfa); //告诉12864接下来传送数据 sendbyte(Dispdata & 0xf0); sendbyte((Dispdata << 4) & 0xf0); delay(2);
}
/***
*&苍产蝉辫;名称&苍产蝉辫;: lcdinit()
* 功能 : 初始化函数
*&苍产蝉辫;输入&苍产蝉辫;: cmdcode
* 输出 : 无
*
/
void lcdinit()
{
/* P1OUT &= ~BIT4;//RST = 0; delay(100);
P1OUT |= BIT4;//RST = 1; 这一部分是LCD复位功能,我们已经将复位引脚置高,所以复位功能不能使用了,如果要使用复位功能就将其接到单片机IO口再加上这段函数就行*/
delay(20000);
write_com(0x30); //基本指令操作
delay(50);
write_com(0x0c); //显示开 关闭光标
delay(50);
}
/***
*&苍产蝉辫;名称&苍产蝉辫;: hzkdis()
* 功能 : 显示字符串
*&苍产蝉辫;输入&苍产蝉辫;: *s
* 输出 : 无
*
/
void hzkdis( char *s)
{
while(*s > 0)
{
write_data(*s);
s++;
delay(50);
}
}
/***
*&苍产蝉辫;名称&苍产蝉辫;: Test()
* 功能 : 显示子函数
*&苍产蝉辫;输入&苍产蝉辫;: 无
* 输出 : 无
*
/
void Test()
{
write_com(0x03); //地址归为 delay(50);
write_com(0x81); //显示第一行hzkdis("二院科协");
write_com(0x91); //显示第二行hzkdis("刘渠");
}
/***
*&苍产蝉辫;名称&苍产蝉辫;: Main()
* 功能 : 主函数
*&苍产蝉辫;输入&苍产蝉辫;: 无
* 输出 : 无
*
/
void main()
{
P1DIR |= BIT0 + BIT1 + BIT2 +BIT3 + BIT4; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
/* P1OUT &= ~BIT3; PSB = 0; 串并行选择,如果要使用并行方式,只要置高
就行,我们已将笔厂叠接地选择了串行这句可以不要*/
delay(1);
lcdinit();
delay(10);
while(1)
{
Test();
delay(5000);
}
}
12864 程序的详细分析:
void sendbyte(unsigned char zdata)
{
unsigned int i;
for(i=0; i<8; i++)
{
if((zdata << i) & 0x80)
{
P1OUT |= BIT1; //SID = 1;
}
else
{
P1OUT &= ~BIT1;//SID = 0;
}
P1OUT &= ~BIT2;//SCLK = 0;
P1OUT |= BIT2;//SCLK = 1;
}
}
这个函数的功能就是按照12864传送数据的时序图将数据一位一位的传送给12864,这
部 分 程 序 需 要 参 照 12864 的 时 序 图 来

if((zdata << i) & 0x80) 这是在判断传送过来的数据 zdata 的每一位数据是 0
还是 1, 假设 zadata 是 10101111 来分析一下, 那么就是 zdata 先左进 0 还是
10101111 不变,然后与 0x80 进行“与”运算,0x80 就是 10000000, 10101111
& 10000000
————
10000000
“与”完之后为 1000000,为非 0,所以 P1OUT 输出 1,然后 i++等于 1;zdata
左进 1 为 01011110;再与 0x80 进行“与”运算,结果为 00000000,所以 P1OUT 输
出为 0;与 0x80 进行“与”运算,因为 0x80 只有第一位是 1,其他都是 0,所以这样就
可以不改变 zdata 的第一位数据而使其他位为 0,如果 zdata 第一位为 1“与”后结果
就是非零,就输出 1,反之相反。
void write_com(unsigned char cmdcode)
{
P1OUT |= BIT0;//CS = 1;
sendbyte(0xf8); //告诉12864接下来传送指令 sendbyte(cmdcode & 0xf0); sendbyte((cmdcode << 4) & 0xf0); delay(2);
}
传送指令的函数,P1OUT |= BIT0; 先使片选信号为高,接下来才能开始传送数据,
蝉别苍诲产测迟别(0虫蹿8);0虫蹿8可以从12864的使用手册中查出来他是告诉12864接下来传送的
是指令。然后把数据分两次传送过去。
Ps:本程序所使用单片机为 MSP430.
最新资讯
- 2025-03-05 对于工业液晶屏宽温操作的介绍
- 2025-03-03 对于工业液晶屏触摸技术的分析
- 2025-02-27 工业液晶屏高分辨率的优势与应用
- 2025-02-25 高亮液晶屏在恶劣光照条件下的稳定
- 2025-02-21 工业液晶屏的定制化需求
- 2025-02-12 工业液晶屏的响应时间与动态显示性
- 2025-02-10 工业液晶屏的接口类型及其兼容性分
- 2025-02-08 如何从参数到性能读懂工业液晶屏的
- 2025-02-06 工业液晶屏的切割技术是探索屏幕制
- 2025-01-21 工业液晶屏之高分辨率尝颁顿屏的深度解