74HC164驱动LED,怎样能让它闪呢
ATMEG8串行,时钟两线连接74HC164,74HC164连接一个个led。电路图如下:单独让灯亮或灭。都可以做到,怎样做能让它闪呢?哪位大虾讲讲思路啊! 晕,一会亮一会灭不就是闪吗,这么简单的问题还问. 支持楼上… 感觉这个我有发言权,前段时间刚刚研究了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在发送
}
还得注意下电流的大小,别超过芯片的承受能力就行。 闪就是你让它亮一下灭一下亮一下灭一下....... 如果不用延时呢?让灯闪? 用延时的话,如果还有按键扫描,那按键就不灵了吧?
你的定时器拿来做什么用的?延时就只知道空循环在哪傻等吗? 用定期刷新状态的方法就可以,状态机吧 tenx 发表于 41 秒前 static/image/common/back.gif
用定期刷新状态的方法就可以,状态机吧
定期怎么实现呢?思路能否再详细一点? 是要你用定时中断加状态机。 定时的给OE引脚方波信号 jhjkdz 发表于 2013-12-16 22:28
用延时的话,如果还有按键扫描,那按键就不灵了吧?
我的代码是给你讲解怎么用的,你可以放在中断里发送数据给164,164的反映速度很快 四轴飞行器 发表于 2 分钟前 static/image/common/back.gif
我的代码是给你讲解怎么用的,你可以放在中断里发送数据给164,164的反映速度很快
谢谢!..... mark
{:smile:} 开个定时器,设定为最小闪烁频率,然后设定个输出表数据,根据中断次数输出数据到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,
};
呵呵,关键是要闪得多快?渐变的闪(频率比较高)可能比较难做. xiaodao35 发表于 2013-12-17 08:37
开个定时器,设定为最小闪烁频率,然后设定个输出表数据,根据中断次数输出数据到164!
如设定10Ms定时,le ...
谢谢!看来实现的思路还是有不同的方法啊! 我要求的频率是500ms,假如74HC164连接是8个LED,现在要求其中一个亮,某位清零的方法发送数据。比如原来的数据是发送Dat5,那现在要求其中一个亮,不改变其它灯状态,于是我就发送Dat5 = Dat5 & 0x08(某位清零)。要让这个灯熄灭。我就发送数据Dat5 = Dat5 | 0xfd.(某位置1)现在要让它闪,怎么做。假如已经开500ms定时器。
if(Time_500ms_ok)
{
...这里怎么填?
}
if(Time_500ms_ok)
{
num++;
if(num&0x01)
Dat5 = Dat5 & 0x08;
else
Dat5 = Dat5 | 0xfd;
}
其实查表最简单
xiaodao35 发表于 2013-12-17 12:08
if(Time_500ms_ok)
{
num++;
多谢,晚上回去试试,可行的话,就是最佳答案了! xiaodao35 发表于 2013-12-17 12:08
if(Time_500ms_ok)
{
num++;
问一下大虾,num这个变量的作用? 你不是要定时闪烁吗,定义个全局变量num,然后每500ms+1,根据num的计数确定现在该亮或灭! 那假如现在要求就是亮500ms灭500ms(闪烁),那我要判断num是奇数或偶数吗? 不要用164了,换HC595吧 ! 164不带锁存信号,LED多了会闪,595带OE、锁存信号,效果要好多了!!! dushanwu522 发表于 2013-12-17 14:20
不要用164了,换HC595吧 ! 164不带锁存信号,LED多了会闪,595带OE、锁存信号,效果要好多了!!! ...
学习了!。。。
页:
[1]