搜索
bottom↓
回复: 26

74HC164驱动LED,怎样能让它闪呢

[复制链接]

出0入0汤圆

发表于 2013-12-16 21:52:41 | 显示全部楼层 |阅读模式
ATMEG8串行,时钟两线连接74HC164,74HC164连接一个个led。电路图如下:单独让灯亮或灭。都可以做到,怎样做能让它闪呢?哪位大虾讲讲思路啊!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-12-16 22:03:24 | 显示全部楼层
晕,一会亮一会灭不就是闪吗,这么简单的问题还问.

出0入0汤圆

发表于 2013-12-16 22:15:57 | 显示全部楼层
支持楼上…

出0入0汤圆

发表于 2013-12-16 22:19:34 | 显示全部楼层
感觉这个我有发言权,前段时间刚刚研究了164,能够做到2个164驱动8个数码管,同时还有8个按键  这个很简单的,164是移位寄存器,   想让他闪很简单的
//CLK  接 PD3
//DAT 接 PD4
void send(uchar byte)
        {
           uchar i = 0;
           for(i = 0;i<8;i++)
                           {
                        CLK = 0;   CLK = 0;  CLK = 0;  _nop_(); _nop_(); _nop_(); _nop_();         
                        if((byte&0X80)==0x80)        DAT = 1;  
                                else   DAT = 0;
                        CLK = 1;   CLK = 1;  CLK = 1;           
                        byte <<= 1;  _nop_(); _nop_(); _nop_(); _nop_();  
                        }
        }
void main()
{
send(0XFF);
delay(500); //延时500ms在发送
send(0);
delay(500);  //延时500ms在发送
延时500ms在发送
}

出0入0汤圆

发表于 2013-12-16 22:20:34 | 显示全部楼层
还得注意下电流的大小,别超过芯片的承受能力就行。

出0入224汤圆

发表于 2013-12-16 22:21:51 | 显示全部楼层
闪就是你让它亮一下灭一下亮一下灭一下.......

出0入0汤圆

 楼主| 发表于 2013-12-16 22:26:44 | 显示全部楼层
如果不用延时呢?让灯闪?

出0入0汤圆

 楼主| 发表于 2013-12-16 22:28:27 | 显示全部楼层
用延时的话,如果还有按键扫描,那按键就不灵了吧?

出0入0汤圆

发表于 2013-12-16 22:32:46 | 显示全部楼层
你的定时器拿来做什么用的?延时就只知道空循环在哪傻等吗?

出0入0汤圆

发表于 2013-12-16 22:34:04 来自手机 | 显示全部楼层
用定期刷新状态的方法就可以,状态机吧

出0入0汤圆

 楼主| 发表于 2013-12-16 22:38:03 来自手机 | 显示全部楼层
tenx 发表于 41&nbsp;秒前
用定期刷新状态的方法就可以,状态机吧

定期怎么实现呢?思路能否再详细一点?

出0入0汤圆

发表于 2013-12-16 22:45:30 | 显示全部楼层
是要你用定时中断加状态机。

出0入0汤圆

发表于 2013-12-16 22:51:47 | 显示全部楼层
定时的给OE引脚方波信号

出0入0汤圆

发表于 2013-12-17 00:15:48 来自手机 | 显示全部楼层
jhjkdz 发表于 2013-12-16 22:28
用延时的话,如果还有按键扫描,那按键就不灵了吧?

我的代码是给你讲解怎么用的,你可以放在中断里发送数据给164,164的反映速度很快

出0入0汤圆

 楼主| 发表于 2013-12-17 00:20:03 来自手机 | 显示全部楼层
四轴飞行器 发表于 2&nbsp;分钟前

我的代码是给你讲解怎么用的,你可以放在中断里发送数据给164,164的反映速度很快

谢谢!.....

出0入0汤圆

发表于 2013-12-17 08:09:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-12-17 08:37:04 | 显示全部楼层
开个定时器,设定为最小闪烁频率,然后设定个输出表数据,根据中断次数输出数据到164!
如设定10Ms定时,led的效果为亮40MS,灭10Ms!
lightlab[]=
{
        0x01,0x01,0x01,0x01,0x00,       
        0x01,0x01,0x01,0x01,0x00,                                                               
};
这种时可以调节频率的,修改相应的数据表就可以,如果是10MS亮,10MS灭就改为
lightlab[]=
{
        0x01,0x00,0x01,0x00,0x01,       
        0x00,0x01,0x00,0x01,0x00,                                                                       
};

出0入0汤圆

发表于 2013-12-17 09:05:13 | 显示全部楼层
呵呵,关键是要闪得多快?渐变的闪(频率比较高)可能比较难做.

出0入0汤圆

 楼主| 发表于 2013-12-17 11:27:49 | 显示全部楼层
xiaodao35 发表于 2013-12-17 08:37
开个定时器,设定为最小闪烁频率,然后设定个输出表数据,根据中断次数输出数据到164!
如设定10Ms定时,le ...

谢谢!看来实现的思路还是有不同的方法啊!

出0入0汤圆

 楼主| 发表于 2013-12-17 11:44:48 | 显示全部楼层
我要求的频率是500ms,假如74HC164连接是8个LED,现在要求其中一个亮,某位清零的方法发送数据。比如原来的数据是发送Dat5,那现在要求其中一个亮,不改变其它灯状态,于是我就发送Dat5 = Dat5 & 0x08(某位清零)。要让这个灯熄灭。我就发送数据Dat5 = Dat5 | 0xfd.(某位置1)现在要让它闪,怎么做。假如已经开500ms定时器。
if(Time_500ms_ok)
{
...这里怎么填?
}

出0入0汤圆

发表于 2013-12-17 12:08:10 | 显示全部楼层
if(Time_500ms_ok)
{
       num++;
       if(num&0x01)
       Dat5 = Dat5 & 0x08;
       else
       Dat5 = Dat5 | 0xfd;

}
其实查表最简单

出0入0汤圆

 楼主| 发表于 2013-12-17 12:15:53 | 显示全部楼层
xiaodao35 发表于 2013-12-17 12:08
if(Time_500ms_ok)
{
       num++;

多谢,晚上回去试试,可行的话,就是最佳答案了!

出0入0汤圆

 楼主| 发表于 2013-12-17 12:18:09 | 显示全部楼层
xiaodao35 发表于 2013-12-17 12:08
if(Time_500ms_ok)
{
       num++;

问一下大虾,num这个变量的作用?

出0入0汤圆

发表于 2013-12-16 21:52:42 | 显示全部楼层
你不是要定时闪烁吗,定义个全局变量num,然后每500ms+1,根据num的计数确定现在该亮或灭!

出0入0汤圆

 楼主| 发表于 2013-12-17 12:38:27 | 显示全部楼层
那假如现在要求就是亮500ms灭500ms(闪烁),那我要判断num是奇数或偶数吗?

出0入0汤圆

发表于 2013-12-17 14:20:22 | 显示全部楼层
不要用164了,换HC595吧 ! 164不带锁存信号,LED多了会闪,595带OE、锁存信号,效果要好多了!!!

出0入0汤圆

 楼主| 发表于 2013-12-17 16:12:56 | 显示全部楼层
dushanwu522 发表于 2013-12-17 14:20
不要用164了,换HC595吧 ! 164不带锁存信号,LED多了会闪,595带OE、锁存信号,效果要好多了!!! ...

学习了!。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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