×
单片机 > 单片机程序设计 > 详情

2864串口接线方式与实例程序

发布时间:2020-06-17 发布时间:
|

百度了好长时间都没有找到带字库的12864使用串口如何接线,后来参阅了一下12864的产品说明,终于摸索出来了,本人是刚入门单片机,还有好多的不懂的,我把接线的方式还有实例程序分享出来,只要对大家有一丁点的帮助就满足了。首先看引脚定义
 
  RS=CS;   R/W=SID;  E=CLK; FSB高电平为并行接口,用并口时接高电平,FSB接低电平时为串口,高低电平可以直接接VCC或者GND也可以用软件去控制,实现并口和串口的切换。RET不接线也能使用,用串口时除了DB0--DB7就不再使用外,其他的接口按手册上说明使用。下面是测试代码,也是参阅从51黑电子论坛的不过有些错误无法显示,已经更改。


#include

#include

#define uchar unsigned char

#define uint  unsigned int

sbit CS=P3^5;     //片选信号

sbit SID=P3^6;  //数据信号

sbit SCLK=P3^4;  //时钟信号

sbit RST=P2^2;  //复位信号

sbit CH = P3^7;  //并行、串行选择信号

/********************************************************************

* 名称 : delay()

* 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。

* 输入 : t

* 输出 : 无

***********************************************************************/

void delay(unsigned int t)

{

unsigned int i,j;

for(i=0; 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)

  {

   SID = 1;

  }

  else

  {

   SID = 0;

  }

  SCLK = 0;

  SCLK = 1;

}

}

/********************************************************************

* 名称 : write_com()

* 功能 : 写串口指令

* 输入 : cmdcode

* 输出 : 无

***********************************************************************/

void write_com(unsigned char cmdcode)

{

CS = 1;

sendbyte(0xf8);

sendbyte(cmdcode & 0xf0);

sendbyte((cmdcode << 4) & 0xf0);

delay(2);

}

/********************************************************************

* 名称 : write_data()

* 功能 : 写串口指令

* 输入 : cmdcode

* 输出 : 无

***********************************************************************/

void write_data(unsigned char Dispdata)

{

CS = 1;

sendbyte(0xfa);

sendbyte(Dispdata & 0xf0);

sendbyte((Dispdata << 4) & 0xf0);

delay(2);

}

/********************************************************************

* 名称 : lcdinit()

* 功能 : 初始化函数

* 输入 : cmdcode

* 输出 : 无

***********************************************************************/

void lcdinit()

{  

RST = 0;

delay(100);

RST = 1;

delay(20000);

write_com(0x30);

delay(50);

write_com(0x0c);

delay(50);

}

/********************************************************************

* 名称 : hzkdis()

* 功能 : 显示字符串

* 输入 : *s

* 输出 : 无

***********************************************************************/

void hzkdis(unsigned char code *s)

{  

while(*s > 0)

    {

  write_data(*s);

  s++;

  delay(50);

    }

}


/********************************************************************

* 名称 : Test()

* 功能 : 显示子函数

* 输入 : 无

* 输出 : 无

***********************************************************************/

void Test()

{  

write_com(0x03);

delay(50);   


write_com(0x80);

hzkdis("铅酸电池放电仪");

write_com(0x90);

hzkdis("电压");

write_com(0x92);

hzkdis("16.8v 13.2v");

write_com(0x98);

hzkdis("  电子爱好者");

}


/********************************************************************

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

***********************************************************************/

void Main()

{

CH = 0;

delay(1);

lcdinit();

delay(10);

while(1)

{

  Test();  a++;

  delay(5000);

}

}



关键字:2864  串口  接线方式  单片机 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项