7607|17

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

G2553与12864的串行连接问题 [复制链接]

G2553与12864的串行连接 需要怎么接线啊,G2553的io口比较少,串行是不是可以节省资源啊??求几个串行的实用程序和引脚的接法

最新回复

我也正在学习。。点不亮!唉。。。  详情 回复 发表于 2013-1-14 17:25

点评

楼主,我发过2线的帖子,2线控制LCD12864,建议去看看,很节约IO口 地址: https://bbs.eeworld.com.cn/viewthread.php?tid=340972 [ 本帖最后由 574937246 于 2012-7-31 21:48 编辑 ]  详情 回复 发表于 2012-7-31 21:46
你可以看看论坛里面还有好几个帖子是关于LCD 12864串行控制方式的 有的还是2线控制地:)  详情 回复 发表于 2012-7-26 21:25
 
点赞 关注

回复
举报

18

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
串行的确可以节省端口资源,常用的是用三个口,CS(RS)片选信号、SID(R/W)数据传输、SCLK(EN)时钟,还要记得串并方式选择端PSB应当接低。
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
这个应该可以,你试一试吧

液晶12864.rar

22.92 KB, 下载次数: 631

 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(高级)

4
 

回复 楼主 zwldsd 的帖子

你可以看看论坛里面还有好几个帖子是关于LCD 12864串行控制方式的 有的还是2线控制地
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

5
 
同求啊 接线怎么接 我接的都没用
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

6
 
如果引脚少的串行当然更节省资源了,我在做的时候是用了7根线(12864的前6个引脚+PSB脚),G2553是成功了,但楼上说的2线控制没有试过,太神奇了
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

7
 
两线是不是cs直接接电平了。不连io

点评

对,2线的CS直接接高。。。。调试可用。  详情 回复 发表于 2012-7-31 21:45
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(高级)

8
 

回复 7楼 dong876233170 的帖子

对,2线的CS直接接高。。。。调试可用。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(高级)

9
 

回复 楼主 zwldsd 的帖子

楼主,我发过2线的帖子,2线控制LCD12864,建议去看看,很节约IO口
地址:
https://bbs.eeworld.com.cn/viewthread.php?tid=340972

[ 本帖最后由 574937246 于 2012-7-31 21:48 编辑 ]

点评

psb置底 是选择串行  详情 回复 发表于 2012-8-4 15:44
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

10
 

紧急求助9楼的

您好7楼,问一下你的2线控制的12864,那个PSB接什么?接地吗?我给LCD用的是外部5V电源(5V电源和MSP430g2553同地---负极),我试过你的程序,但LCD没任何显示,是什么原因?是接线问题吗?如果是接线问题麻烦你能把接线说的再具体一点可以不?
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

11
 

说错了,是求助九楼的

您好9楼,问一下你的2线控制的12864,那个PSB接什么?接地吗?我给LCD用的是外部5V电源(5V电源和MSP430g2553同地---负极),我试过你的程序,但LCD没任何显示,是什么原因?是接线问题吗?如果是接线问题麻烦你能把接线说的再具体一点可以不?
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

12
 
最近我试了2线控制12864,是没有问题的,只是有一点麻烦的是,不可以读数据,也就是每次写的时候都会要做一段延迟,不然的话,就有问题。至于连线的话,我采用的是SPI的通信,3线模式,但是主机的输入,即MISO那根是不用的,无论是采用UA,还是UB都是没问题的。数据线接P1.2,时钟接P1.4;也可以是P1.5和P1.7;试一下吧 我这便是没问题的

点评

2线的不能读取么?我不知道额。。。如果2线的不行,我建议你用3线的,一定可以读取数据的。 2线的其实就是将LCD的4脚CS直接接高。 3线的则是将LCD的4脚作为控制脚.  详情 回复 发表于 2012-8-7 01:57
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

13
 
是9楼提供的原程序吗?程序一点都没变动吗?我试过了,还是什么也不显示,郁闷 。。。。。

点评

不会吧?2线的程序我都用了好久了。。。。  详情 回复 发表于 2012-8-7 01:54
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

14
 

回复 9楼 574937246 的帖子

psb置底  是选择串行
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(高级)

15
 

回复 13楼 zhangjianqyh 的帖子

不会吧?2线的程序我都用了好久了。。。。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(高级)

16
 

回复 12楼 hao39439 的帖子

2线的不能读取么?我不知道额。。。如果2线的不行,我建议你用3线的,一定可以读取数据的。
2线的其实就是将LCD的4脚CS直接接高。
3线的则是将LCD的4脚作为控制脚.
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

17
 

我写的,就用了两个口

#include
#define uint unsigned int
#define uchar unsigned char
#define SDA_1  P2OUT |= BIT2
#define SDA_0  P2OUT &=~BIT2
#define SCLK_1 P2OUT |= BIT1
#define SCLK_0 P2OUT &= ~BIT1
/*#define CS_1   P2OUT |= BIT2            CS直接接电源
#define //CS_0   P2OUT &= ~BIT2*/
uchar a[]="11";

/***********************************************************
*名    称:LCD_Write_cmd()
*功    能:写一个命令/数据到LCD12864
*入口参数:cmd:待写入的命令,无符号字节形式
*出口参数:tepy:0指令,1数据
*说    明:
*格    式:11111 RW0 RS 0  D7D6D5D40000    xxxx0000
*          |最高的字节  |命令的bit7~4|命令的bit3~0|
***********************************************************/
void write_cmddat(uchar tepy,uchar cmd)
{
  
  uchar i;
  uchar i_data;
  if(tepy==1)
    i_data=0xfa;
  else
    i_data=0xf8;
  for(i=0;i<8;i++)
  {
    if(i_data&0x80) SDA_1;
    else SDA_0;
   
   
    SCLK_1;
    SCLK_0;
   
    i_data<<=1;
  }
  i_data=cmd;
  i_data&=0xf0;
  for(i=0;i<8;i++)
  {
    if(i_data&0x80) SDA_1;
    else SDA_0;
    SCLK_1;
    SCLK_0;
    i_data<<=1;
  }
  i_data=cmd<<4;
  for(i=0;i<8;i++)
  {
    if(i_data&0x80) SDA_1;
    else SDA_0;
   SCLK_1;
   SCLK_0;
   i_data<<=1;
  }
}

void lcd_pos(uchar x,uchar y)
{
  uchar pos;
  switch(x)
  {
  case 1:pos=0x80;break;
  case 2:pos=0x90;break;
  case 3:pos=0x88;break;
  case 4:pos=0x98;break;
  }
  pos=y+pos;
  write_cmddat(0,pos);
}

/****************************************************/
//LCD12864初始化
void LCD_init(void)
{
   __delay_cycles(1000);
   write_cmddat(0,0x30);
   __delay_cycles(1000);
   write_cmddat(0,0x01);
   __delay_cycles(1000);
   write_cmddat(0,0x06);
   write_cmddat(0,0x0f);
}

int main( void )
{
  uint i;
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P2DIR = BIT1 + BIT2 ;
  LCD_init();
  lcd_pos(1,0);
  for(i=0;i<6;i++)
    {
      write_cmddat(1,a);
    }
}
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

18
 
我也正在学习。。点不亮!唉。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表