专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
G2553与12864的串行连接问题
2019-03-24 12:59
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
7667
17
1386
G2553与12864的串行连接 需要怎么接线啊,G2553的io口比较少,串行是不是可以节省资源啊??求几个串行的实用程序和引脚的接法 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
yidaoyizu
1楼-- · 2019-03-26 05:11
psb置底 是选择串行
加载中...
574937246
2楼-- · 2019-03-26 05:36
精彩回答 2 元偷偷看……
加载中...
574937246
3楼-- · 2019-03-26 10:56
2线的不能读取么?我不知道额。。。如果2线的不行,我建议你用3线的,一定可以读取数据的。
2线的其实就是将LCD的4脚CS直接接高。
3线的则是将LCD的4脚作为控制脚.
加载中...
waiting_0_
4楼-- · 2019-03-26 16:18
#include <msp430g2553.h>
#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
);
}
}
加载中...
xiangyuansu
5楼-- · 2019-03-26 18:24
精彩回答 2 元偷偷看……
加载中...
上一页
1
2
3
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
2线的其实就是将LCD的4脚CS直接接高。
3线的则是将LCD的4脚作为控制脚.
#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);
}
}
一周热门 更多>