stm32f103zet6串行驱动12864分析和总结.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

精心整理

12864

12864串行stm32f103zet6战舰V3学习版

在资料最下面有工程文件,直接烧录就可以使用。希望大家尊重我的劳动成果,下载下来。每个语句注释,在工程文件中都有。

在资料最下面有工程文件,直接烧录就可以使用。希望大家尊重我的劳动成果,下

载下来。

每个语句注释,在工程文件中都有。12864相关驱动在key.c和Key.h中

经我验证,可以用stm32引脚控制12864

如上图为12864串口时序图

串行数据传送共分三个字节完成:

第一字节:串口控制—格式11111ABC

A为数据传送方向控制:H表示数据从LCD到MCU,L表示数LCD

据从MCU到

B为数据类型选择:H表示数据是显示数据,L表示数据是控制指

C固定为0

第二字节:(并行)8位数据的高4位—格式DDDD0000第三字节:(并行)8位数据的低4位—格式0000DDDD以上是说明书给的出的,

个人理解

从图上可以看出串行传输时需要用到CS,SCLK,SID三根信号线,但是由于CS是高电平有效,所以也可以把CS长接高电平,那样就只需要两根线就OK了,当然当使用12864串行模式时,PSB引脚必须接低电平,复位RST引脚可以悬空不接,因为12864内部有上电复位电路。

精心整理

精心整理

所以电路图如下图所示

一定要查资料,看下PSB引脚是否和

一定要查资料,看下PSB引脚是否和VCC连接在一起,我在育松上买的

QC12864B,液晶屏幕,太垃圾了,资料上都没有说明串行该怎么修改,结果调试时

候发现,PSB引脚电平不对,后来一查,PSB引脚和VCC连接在一起了,所以一定

要确保引脚电平正确。

串行数据传送共分三个字节完成:——理解就是传输一个字节需要三个字节来确定。

第一个字节:11111ABC单片机写控制指令给LCD单片机写数据给LCD

第三个字节由于数据是传输是以一个字节8bits为单位,所以下面贴出传输一个字节的函数实现

voidWrite_Bits(u8bits)

{

u8i,Temp_Data;for(i=0;i8;i++)

{

Temp_Data=bitsi;if((Temp_Data0x80)==0)

{

Reset_SID;Reset_SCLK;Set_SCLK;

精心整理

精心整理

}

else

{

Set_SID;Reset_SCLK;Set_SCLK;

}

}

}

Temp_Data?=?W_bitsi?;

//把数据依次左移?对于这个语句有点迷茫,知道是左移,有点疑惑,赶紧去百度,木有找到我心中的疑问,就去翻C语言书(一本好的C语言书是多重要,我用的是CPrimerPlus),第500页,有这样一句话,该操作产生一个新的位置,但是不改变其运算对象。例如,假设stonk为1,那么stonk2为4,但是stonk本身不变,仍为1。就是a=stonk2;(a=4,stonk=1)

在絮叨一句,传入形参数值bits不变,每次左移i位,新值付给Temp_Data,用一个if-else语句判断SID上的高低电平,然后再把数据传输出。

第一个字节:11111ABC单片机写控制指令给LCD单片机写数据给LCD

因为第一个字节不是固定的,RS和RW不一样,意义不同,故用形参。

voidLCD_Write_Byte(u8RW,u8RS,u8byta)

{

u8H_data,L_data;

精心整理

精心整理u8SID_data=0xf8;/if(1==RW)

{

SID_data|=0x04;

}

else

{

SID_data=~0x04;

}if(1==RS)

{

SID_data|=0x02;

}

else

{

SID_data=~0x02;

}

H_data=byta;H_data=0xf0;L_data=byta;L_data=0x0f;L_data=4;Write_Bits(SID_data);

delay_us(250);Write_Bits(H_data);

delay_us(250);Write_Bits(L_data);

delay_us(250);

}

用逻辑串口查看引脚SID,CKK时序主函数中用LCD_Write_Byte(0,1,0X89);//写命令字LCD_Write_Byte(0,0,0X31);//写命令字时序图如图,

经对比,和串行时序图一直

在这里出现

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体 阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档