74HC595

websmy 2010-03-16 05:00:05
void In_595() //将显示数据送入74HC595内部移位寄存器

{
uchar i;
for(i=0;i<8;i++)
{
temp <<= 1;
DS = CY;
SH_CP = 1;
_nop_();
_nop_();
SH_CP = 0;
}
}

void Out_595() //将移位寄存器内的数据所存到输出寄存器并显示

{
ST_CP = 0;
_nop_();
ST_CP = 1; //上升沿将数据送入输出锁存器
_nop_();
ST_CP = 0;
}
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbing7 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 websmy 的回复:]
引用 5 楼 kyzf 的回复:
上面的代码就是 一个普通IO模拟SPI功能接口,来控制74HC595。

首先74HC595是SPI接口,
而楼主所选取的单片机可能没有SPI功能接口,所以需要采用普通IO,进行模拟SPI接口,

故出现8此左移,每次移动一位;


楼主再找下IO模拟SPI的介绍看看,就会更明白啦,呵呵


为什么得用 上升沿啊?
[/Quote]

这个得问595的设计厂商了

要不你也可以用FPGA啥的写一下用下降沿的X595
websmy 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kyzf 的回复:]
上面的代码就是 一个普通IO模拟SPI功能接口,来控制74HC595。

首先74HC595是SPI接口,
而楼主所选取的单片机可能没有SPI功能接口,所以需要采用普通IO,进行模拟SPI接口,

故出现8此左移,每次移动一位;


楼主再找下IO模拟SPI的介绍看看,就会更明白啦,呵呵
[/Quote]

为什么得用 上升沿啊?
websmy 2010-03-17
  • 打赏
  • 举报
回复
SH_CP和ST_CP 的作用是什么?
kyzf 2010-03-16
  • 打赏
  • 举报
回复
上面的代码就是 一个普通IO模拟SPI功能接口,来控制74HC595。

首先74HC595是SPI接口,
而楼主所选取的单片机可能没有SPI功能接口,所以需要采用普通IO,进行模拟SPI接口,

故出现8此左移,每次移动一位;


楼主再找下IO模拟SPI的介绍看看,就会更明白啦,呵呵
kyzf 2010-03-16
  • 打赏
  • 举报
回复
temp <<= 1;

就是
temp = temp<<1;
就是每次循环时,都将temp左移一位。

hzbxq 2010-03-16
  • 打赏
  • 举报
回复

temp <<= 1; 是什么意思?

temp 是一个8位二进制的整数,在for(i=0;i<8;i++)这个循环内,i 加一操作,temp这个参数就

左移一位。i由0到8,temp 左移八次,每次移位都将最高位的值发送到对应管脚。

实现将temp的值存进595的寄存器。

websmy 2010-03-16
  • 打赏
  • 举报
回复
这两个函数帮忙讲解一下。
websmy 2010-03-16
  • 打赏
  • 举报
回复
temp <<= 1; 是什么意思?

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧