输送位选和段选时这三个脚位的电平应该怎样设置?它们的含义是什么?
刚开始学习单片机,希望学长们能帮帮忙~~~谢谢^ ^~~~~
uchar i;
for(i=0;i<8;i++)
{
if((dat<<i)&0x80) //这一句是什么意思?程序是怎么执行的?
si=1;
else si=0; //si=0是什么意思?
sck=0; //上升沿是发送数据吗?
sck=1;
}
if((dat<<i)&0x80) //这一句的意思是,dat左移i个位后,在和0x80做与运算,如果结果不为零,那么SI = 1
si=1;
else//否则SI = 0,
si=0; //si=0的意思就是把和SI相连的单片机IO清零。
简单来说,这一段的意思就是:把dat左移i个位之后的最高位赋给与SI相连的单片机IO口。因为595发送数据的时候是高位在前,当8位数据发送完毕之后,第一次发送出去的数据对应DH,最后一个数据对应DA。
595的数据移位和锁存都是在上升沿发生的。
U7的第9脚和U8的第14脚相连有什么含义呢?U7的SI的高低电平对U8的第14脚有什么影响呢?
追答14脚每移进1个位,就在9脚移出一个位。假设U7的DH - DA分别为1010 1011,U7的14脚为0,那么当SCK为上升沿时,U7的DH - DA就分别为0101 0110,U7的9脚为1,也就是说在每次SCK的上升沿时,把内部移位寄存器的最高位输出到9脚,