本帖最后由 oner 于 2014-5-2 12:52 编辑
大虾们,小弟不才。在看5110的相关函数时,有一个问题不解,请大家帮我解惑。
下面这个函数是网上找的IO口仿SPI的函数。
为什么if(dt&0x80)这里为什么要用数据&0x80?我在5110datasheet里面看了相关寄存器设置也没看出个所以,小弟不才,请大家帮忙。
void LCD_write_byte(unsigned char dt, unsigned char command)
{
unsigned char i;
sce=0; //芯片使能
dc=command; //数据或命令
for(i=0;i<8;i++)
{
if(dt&0x80)
sdin=1;
else
sdin=0;
dt=dt<<1;
sclk=0;
sclk=1;
}
dc=1; //拉高:数据
sce=1;//不使能
sdin=1;//数据线拉高
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我自己突然明白了。自己C语言基础不扎实啊。
&0x80就是和0x80(和10000000)取数据最高位,如果是真,那就是1,发送数据,如果是假,那就是0,发送数据,继续左移,把已发送数据去掉。
整个函数功能就是从高位一位一位地发送一个字节的指令或数据过去。
这么简单的东西我竟然还要上来问大家
一周热门 更多>