学习笔记之12864串行显示_第1页
学习笔记之12864串行显示_第2页
学习笔记之12864串行显示_第3页
学习笔记之12864串行显示_第4页
学习笔记之12864串行显示_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学信息与通信学院科协 12864128641286412864 串行显示串行显示串行显示串行显示 这只是简单介绍 12864 串行显示一些文字不能显示图片,先看一下 12864 的引脚。 由上面的引脚说明我们可以看出,要想串行显示只需要将 4、5、6 引脚接到单片机就可 以了,同时需要将 1、 、15、20 引脚接地,17、19 引脚接电源,注意 17 号引脚所说低 电平有效,并不是将 17 号引脚接地复位功能就可以使用了,而是需要软件置低,为了 节省 IO 口将 17 号引脚置高,置高说明 17 号引脚复位功能不使用。 3 号引脚接一 10k 可 调 变 阻 以 调 节12864的 亮 度 。 具 体 接 法 可 参 考 下 图 : 桂林电子科技大学信息与通信学院科协 以下是程序: /* 串行12864显示 *引脚说明: CSP1.0 SIDP1.1 SCLKP1.2 PSBP1.3 RSTP1.4 Ps:因为PSB和RST我们已经在电路中连接好了,所以这两个引脚没有使用 * / #include#include#include#include #define#define#define#define uchar unsignedunsignedunsignedunsigned charcharcharchar #define#define#define#define uintunsignedunsignedunsignedunsigned intintintint /* * 名称 : delay() * 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。 * 输入 : t * 输出 : 无 * / voidvoidvoidvoid delaydelaydelaydelay(unsignedunsignedunsignedunsigned intintintint t) unsignedunsignedunsignedunsigned intintintint i,j; 桂林电子科技大学信息与通信学院科协 forforforfor(i=0; it;i+) forforforfor(j=0; j10; j+); /* * 名称 : sendbyte() * 功能 : 按照液晶的串口通信协议,发送数据 * 输入 : zdata * 输出 : 无 * / voidvoidvoidvoid sendbytesendbytesendbytesendbyte(unsignedunsignedunsignedunsigned charcharcharchar zdata) unsignedunsignedunsignedunsigned intintintint i; forforforfor(i=0; i8; i+) ifififif(zdata i) /SID = 1; elseelseelseelse P1OUT /SID = 0; P1OUT /SCLK = 0; P1OUT |= BIT2;/SCLK = 1; /* * 名称 : write_com() * 功能 : 写串口指令 * 输入 : cmdcode * 输出 : 无 */ voidvoidvoidvoid write_comwrite_comwrite_comwrite_com(unsignedunsignedunsignedunsigned charcharcharchar cmdcode) P1OUT |= BIT0;/CS = 1; sendbyte(0 xf8);/告诉12864接下来传送指令 sendbyte(cmdcode sendbyte(cmdcode 4) delay(2); 桂林电子科技大学信息与通信学院科协 /* * 名称 : write_data() * 功能 : 写串口指令 * 输入 : cmdcode * 输出 : 无 * / voidvoidvoidvoid write_datawrite_datawrite_datawrite_data(unsignedunsignedunsignedunsigned charcharcharchar Dispdata) P1OUT |= BIT0;/CS = 1; sendbyte(0 xfa);/告诉12864接下来传送数据 sendbyte(Dispdata sendbyte(Dispdata 0) write_data(*s); s+; delay(50); /* * 名称 : Test() * 功能 : 显示子函数 * 输入 : 无 * 输出 : 无 * / voidvoidvoidvoid TestTestTestTest() write_com(0 x03);/地址归为 delay(50); write_com(0 x81);/显示第一行 hzkdis(二院科协); write_com(0 x91);/显示第二行 hzkdis(刘渠); /* * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 * / voidvoidvoidvoid mainmainmainmain() P1DIR |= BIT0 + BIT1 + BIT2 +BIT3 + BIT4; WDTCTL = WDTPW + WDTHOLD; /关闭看门狗 /*P1OUT PSB = 0; 串并行选择,如果要使用并行方式,只要置高 就行,我们已将PSB接地选择了串行这句可以不要*/ delay(1); lcdinit(); delay(10); 桂林电子科技大学信息与通信学院科协 whilewhilewhilewhile(1) Test(); delay(5000); 12864 程序的详细分析: voidvoidvoidvoid sendbytesendbytesendbytesendbyte(unsignedunsignedunsignedunsigned charcharcharchar zdata) unsignedunsignedunsignedunsigned intintintint i; forforforfor(i=0; i8; i+) ifififif(zdata i) /SID = 1; elseelseelseelse P1OUT /SID = 0; P1OUT /SCLK = 0; P1OUT |= BIT2;/SCLK = 1; 这个函数的功能就是按照12864传送数据的时序图将数据一位一位的传送给12864,这 部分程序需要参照12864的时序图来 桂林电子科技大学信息与通信学院科协 if(zdata i) /CS = 1; sendbyte(0 xf8);/告诉12864接下来传送指令 sendbyte(cmdcode sendbyte(cmdcode 4) delay(2); 传送指令的函数,P1OUT |= BIT0; 先使片选信号为高,接下来才能开始传送数据, sendbyte(0 xf8);0 xf8可以从12864的使用手册中查出来他是告诉12864接下来传送的 是指令。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论