STC89C52单片机开发板芯片74HC595的SCK、RCK以及SI之间的关系是什么?怎么用?(做一个8位电子钟)
输送位选和段选时这三个脚位的电平应该怎样设置?它们的含义是什么?刚开始学习单片机,希望学长们能帮帮忙~~~谢谢^^~~~~...
输送位选和段选时这三个脚位的电平应该怎样设置?它们的含义是什么?
刚开始学习单片机,希望学长们能帮帮忙~~~谢谢^ ^~~~~ 展开
刚开始学习单片机,希望学长们能帮帮忙~~~谢谢^ ^~~~~ 展开
展开全部
SI是数据输入端口,SCK是移位脉冲输入端口,RCK是锁存端口,DH是数据输出端口,可以多个芯片级联。按照你这个图纸,假设U7的DA-DH接数码管的段选端,U8的DA-DH接数码管的位选端,需要在某个位显示一个数据,设需要显示的段码的数据为dat,显示位码的数据为w,则程序如下:
char i;
for(i = 0;i < 8;i ++)
{
SI = w & 0x80; //先送出段码,高位在前
SCK = 0;
w <<= 1;
SCK = 1;
}
for(i = 0;i < 8;i ++)
{
SI = dat & 0x80;
SCK = 0;
dat <<= 1;
SCK = 1;
}
RCK = 0;
RCK = 1;
char i;
for(i = 0;i < 8;i ++)
{
SI = w & 0x80; //先送出段码,高位在前
SCK = 0;
w <<= 1;
SCK = 1;
}
for(i = 0;i < 8;i ++)
{
SI = dat & 0x80;
SCK = 0;
dat <<= 1;
SCK = 1;
}
RCK = 0;
RCK = 1;
更多追问追答
追问
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的数据移位和锁存都是在上升沿发生的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询