度了一些资料,发现74HC595只用3个IO口就可以控制流水灯,我想改为通过按键来使灯一个个亮,如图,按一次“+”,亮一个,按一次“-"灭一个。这个
芯片可以实现的吗?方法是怎么样的,可以大概说一下吗,跟普通IO口控制区别大吗?下面是网上找的流水灯程序。
- /*======================
- 测试74HC595
- =======================*/
- #include <REG51.H>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit st_cp= P0^2;
- sbit sh_cp= P0^0;
- sbit ds = P0^1;
- uchar led = 0xfe;
- void message_get(uchar led);
- void message_send();
- void delay(uchar time_delay);
- void main()
- {
- while(1)
- {
- message_get(led);
- message_send();
- delay(5000);
- led = _crol_(led, 1);
- }
- }
- //将数据放到移位寄存器中
- void message_get(uchar led)
- {
- uchar i = 0;
- for(; i < 8; i ++)
- {
- sh_cp = 0;
- ds = led & 0x80;
- led <<= 1;
- delay(5);
- sh_cp = 1;//上升沿
- }
- }
- //将数据从移位寄存器中放到存储寄存器中
- void message_send()
- {
- st_cp=0;
- delay(5);
- st_cp = 1;//数据从移位寄存器放到数据寄存器中
- }
- void delay(uchar time_delay)
- {
- uchar x,y;
- for(x = time_delay; x > 0; x--)
- for(y = time_delay; y > 0; y--)
- {}
- }
复制代码
-
一周热门 更多>