收藏文章 楼主
版块:工业液晶屏   类型:普通   作者:工业液晶屏   查看:3762   回复:0   获赞:0   时间:2022-01-17 16:19:28


 
12864液晶显示屏串行通信表明
 
 
这一篇仅仅比较简单的讲解了 12864液晶显示屏 串行通信表明一些文本不可以表明照片,先看一下 12864 的管脚。
12864液晶引脚
 
     从以上的管脚表明我们可以看得出,假如要想串行通信表明只要将 4、5、6 管脚收到单片机设计就可以了,与此同时还必须将 1、15、20 管脚接地装置,17、19 管脚插线,留意 17 号管脚常说的低电频合理,并并不是将 17 号管脚接地装置校准作用就可以应用了,反而是必须手机软件置低,为了更好地节约 IO 口要将 17 号管脚置高,置高表明 17 号管脚校准作用不应用。 3 号管脚接一 10k可调式变阻以调整12864液晶显示屏 的 亮 度 。

具 体 接 法 可 参 考 下 图 :
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; //关掉看门狗1
 
/*  P1OUT &= ~BIT3;  PSB = 0; 串并行处理挑选,假如要应用并行处理方法,只需置高
 
就可以了,大家已经将PSB接地装置挑选了串行通信这一句可以不必*/
 
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 的 时 序 图 来
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; 先使片选数据信号为高,下面才可以逐渐传送数据,
 
sendbyte(0xf8);0xf8可以从12864的操作手册中查出他是告知12864下面传输的
 
是命令。随后把数据信息分2次传输以往。
 
 
Ps:本程序流程所应用单片机设计为 MSP430.
 
 
 


【申明】一部分信息内容来源于互联网技术,力争安全性立即、准确,目地取决于传送其他信息,并不意味着对其思想观点赞成或对其真实有效承担。如本网转截信息内容涉及到出版权等问题,请立即与本网联络删掉。


全站外链: TEC传感器 | 猫掌外链
 
回复列表
默认   热门   正序   倒序

回复:12864液晶显示屏串行通信怎样表明?

网站公告

近期本站被人为恶意注册及发布垃圾帖,每一个发帖都会经过审核,一经发现违法或垃圾帖的用户,帖子将被删除或封号,请大家共同维护互联网环境,共创美好互联网未来。

详细的发帖规则请阅读:

《小猪外链网发帖规则》

《小猪外链网最新金币规则》

注:本站严禁发布灰色违禁违法内容,如发现立刻永久封号,如开通会员的概不退款。

Powered by 小猪外链网 8.3.15

©2015 - 2025 小猪SEO外链平台

备案号:浙ICP备17015142号

免责申明:本网站内容由平台入驻会员撰写,除创始人账号外,其他观点仅代表作者本人,不代表小猪外链网立场。如果内容涉及侵犯其他公司、团体的利益、请联系小猪SEO外链网客服举证删除

您的IP:3.129.211.72,2025-05-05 19:37:24,Processed in 0.29056 second(s).

各位站长请准守小猪SEO外链网的发帖规则,文明理性发言

外链优化

用户名:

粉丝数:

签名:

资料 关注 好友 消息
分享
已有0次打赏