一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5029|回复: 11

[其他综合] 这个74HC164驱数码管 怎么写软件?

[复制链接]
发表于 2011-6-15 08:37 | 显示全部楼层 |阅读模式
本帖最后由 gw168sh 于 2011-6-15 09:05 编辑

C--Documents and Settings-Administrator-桌面-Exercise 12 - FLASH&LED.PNG
164.jpg
最后一段,说每次刷新时,程序将发送两个字节的数据到第一片的数据入口。由于数据超过一个字节,数据会自动移位到第二片,所以第一个字节为com,第二个字节为seg数据。
我想知道是不是每次送数据的时候,送的都是两个8位数?16进制?如后通过时钟上升沿控制数据右移输出。
还是每次送1位,通过时钟控制,一位一位的右移输出?
发表于 2011-6-15 08:59 | 显示全部楼层
参考 595 的例程
回复

使用道具 举报

发表于 2011-6-15 10:18 | 显示全部楼层
对单片机来说,通过时钟控制,一位一位的右移输出给164。
对第一片164来说,接收的信号是用于驱动位的。对第二片164来说,接收的信号是用于驱动段的。

跟这个硬件设计有关,8位8段。
回复

使用道具 举报

发表于 2011-6-15 10:22 | 显示全部楼层
每次发送的信号,都是两个字节,16bit,驱动段的信号要迅速通过驱动位的第一片164,肉眼基本不可见。
而后暂停,显示就被164暂存驱动数码管。
回复

使用道具 举报

 楼主| 发表于 2011-6-15 10:23 | 显示全部楼层
对单片机来说,通过时钟控制,一位一位的右移输出给164。
对第一片164来说,接收的信号是用于驱动位的。对 ...
chillmax 发表于 2011-6-15 10:18 [url=https://www.yleee.com.cn/images/common/back.gif]https://www.yleee.com.cn/images/common/back.gif[/url]



    比如说。我要送段为 1101 1011   位为 1110 000  
是不是先把这些数字放到一起,然后一个一个的送出去,在延时一会。
回复

使用道具 举报

 楼主| 发表于 2011-6-15 10:27 | 显示全部楼层
每次发送的信号,都是两个字节,16bit,驱动段的信号要迅速通过驱动位的第一片164,肉眼基本不可见。
而后 ...
chillmax 发表于 2011-6-15 10:22 [url=https://www.yleee.com.cn/images/common/back.gif]https://www.yleee.com.cn/images/common/back.gif[/url]



    还是有点迷糊。。每次发两个字节,(是不是时钟上升沿时,一下子把8位全部装到164里面了,如果下次时钟上升沿来时,在装8位进去)
我现在迷糊的地方就是上升沿时 一次送几个数?
回复

使用道具 举报

发表于 2011-6-15 11:00 | 显示全部楼层
有多少送多少,先送后面的,再送前面的,前面的把后面的顶出去
回复

使用道具 举报

发表于 2011-6-15 15:19 | 显示全部楼层
"我要送段为 1101 1011   位为 1110 000"七位?那就补一个
发送为“1110 0000 1101 1011”根据硬件接法,可能需要做按位取反或者按字节左右颠倒。

每发送一bit(0或1),时钟高低电平变化一次。
164在时钟的上升沿将数据读入串行移位寄存器。时钟不变,164不关心输入口电平变化。
回复

使用道具 举报

 楼主| 发表于 2011-6-15 16:49 | 显示全部楼层
本帖最后由 gw168sh 于 2011-6-15 16:52 编辑
"我要送段为 1101 1011   位为 1110 000"七位?那就补一个
发送为“1110 0000 1101 1011”根据硬件接法,可 ...
chillmax 发表于 2011-6-15 15:19 [url=https://www.yleee.com.cn/images/common/back.gif]https://www.yleee.com.cn/images/common/back.gif[/url]



    非常感谢您的指点。
dat=1010
送数这样写对吧
clk=0;
dat=0;
clk=1;

clk=0;
dat=1;
clk=1;

clk=0;
dat=0;
clk=1;

clk=0;
dat=1;
clk=1;
送完数,延时一会。
当然这样显示不出来,只要流程对就行了。


也就是说,我的两个164,就要CLK陪着电平送16次,完事了,就暂停一下,显示出来。
明白了,谢谢哈
回复

使用道具 举报

发表于 2011-6-15 19:28 | 显示全部楼层
建议用
TM1639
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-5 06:02 , Processed in 0.035791 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表