我用的launchpad控制OLED屏
//管教定义;
#define byte unsigned char
#define word unsigned int
#define dword unsigned long
#define DC_CLR P1OUT &=~BIT0
#define DC_SET P1OUT |=BIT0
#define RST_CLR P1OUT &=~BIT1
#define RST_SET P1OUT |=BIT1
#define SDA_CLR P1OUT &=~BIT2
#define SDA_SET P1OUT |=BIT2
#define SCL_CLR P1OUT &=~BIT3
#define SCL_SET P1OUT |=BIT3
#define X_WIDTH 128
#define Y_WIDTH 64
//向LCD写入地址
void LCD_WrDat(unsigned char dat)
{
unsigned char i=8;
DC_SET;//数据位有效
SCL_CLR; //时钟低电平时可以数据可以变化
while(i--)
{
if(dat&0x80)
{SDA_SET;}
else
{SDA_CLR;}
SCL_SET ;
SCL_CLR;
dat<<=1;
}
}
//向LCD屏中写入命令
void LCD_WrCmd(unsigned char cmd)
{
unsigned char i=8;
DC_CLR;//指令位有效
SCL_CLR;
while(i--)
{
if(cmd&0x80)
{SDA_SET;}
else{SDA_CLR;}
SCL_SET;
SCL_CLR;
cmd<<=1;
}
}
这是其中几个程序,我感觉像是模拟SPI,因为模拟I2C要定义起始条件,结束条件,ACK啥的,这个完全没定义。
但是如果是SPI的话为啥有SDA和SCL……只是名字问题么??我刚开始学SPI不太懂想问问大家。
此帖出自
小平头技术问答
也可以在下载中心搜索相关资料进行熟悉相关概念性的东西。
ACK是应答
这应该也不是硬件I2C啊,所以应该就是软件SPI,只不过口表述的是I2C的 SDA.SCL吧…………不知道我理解的对不对
{SDA_SET;}
else
{SDA_CLR;} 先在sda上写数据,再给时钟信号。 你应该看看具体执行动作的完整的语句,这才能看到完整的时序过程。不是但看函数。
一周热门 更多>