51单片机和3个74HC245和6个独立按键控制24个3组LED移动亮灭
51单片机和3个74HC245和6个独立按键控制24个3组LED移动亮灭
- 先上proteus仿真图:

- 74HC245:八路数据缓冲器
📝程序代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| /\* 6个独立式按键控制LED移动 \*/ #include <reg51.h> typedef unsigned char uint8; typedef unsigned int uint16;
void delay(uint16 x) //按键的延时函数,用于消抖 { uint16 i,j; for(i = x; i > 0; i --)
for(j = 114; j > 0; j --); }
uint8 i = 0,k = 0,j = 0;
void Move\_LED() { if ((P1 & 0x01) == 0x00) i = (i - 1) & 0x07;//P1.0端口触发上移灯亮 else if((P1 & 0x02) == 0x00) i = (i + 1) & 0x07;//P1.1端口触发下移亮 else if((P1 & 0x04) == 0x00) j = (j - 1) & 0x07;//P1.2端口触发 else if((P1 & 0x08) == 0x00) j = (j + 1) & 0x07;//P1.3端口触发 else if((P1 & 0x10) == 0x00) k = (k - 1) & 0x07;//P1.4端口触发 else if((P1 & 0x20) == 0x00) k = (k + 1) & 0x07; //P1.5端口触发 P0 = ~(1 << i); P2 = ~(1 << k); P3 = ~(1 << j);
}
void main() { uint8 Key = 0x00; P0 = 0xFF; P2 = 0xFF; P3 = 0xFF; while(1) { if(P1 != Key) { Key = P1; Move\_LED(); delay(10); } } }
|
📚程序源码和仿真资源
1 2 3 4
| 链接: https://pan.baidu.com/s/1werfbZY2YlEgRx8h1HSNTw 提取码: wvpc
|
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!