WellLife942 2022-12-04 15:54 采纳率: 0%
浏览 26

用AT89C51设计一个流水灯,至少使用8的发光二极管,按下s1时,依次点亮d1-d8,直到全亮。按下s2,依次熄灭d8-d8,直到全灭

单片机两个按键的怎么弄的呀,加急,对于小白来说有点困难,求大佬指点

  • 写回答

1条回答 默认 最新

  • Ak混子464113225 2023-05-29 16:37
    关注
    #include <reg51.h>
    
    // 定义引脚连接的发光二极管
    sbit LED1 = P1^0;
    sbit LED2 = P1^1;
    sbit LED3 = P1^2;
    sbit LED4 = P1^3;
    sbit LED5 = P1^4;
    sbit LED6 = P1^5;
    sbit LED7 = P1^6;
    sbit LED8 = P1^7;
    
    // 定义按钮引脚
    sbit S1 = P3^0;
    sbit S2 = P3^1;
    
    // 延时函数,参数为毫秒
    void delay(unsigned int milliseconds) {
        unsigned int i, j;
        for (i = 0; i < milliseconds; i++) {
            for (j = 0; j < 5000; j++);
        }
    }
    
    void main() {
        while (1) {
            // 检测按钮 S1 是否按下
            if (S1 == 0) {
                // 按下 S1,点亮 LED
                for (int i = 0; i < 8; i++) {
                    // 依次点亮 LED1 到 LED8
                    switch (i) {
                        case 0: LED1 = 1; break;
                        case 1: LED2 = 1; break;
                        case 2: LED3 = 1; break;
                        case 3: LED4 = 1; break;
                        case 4: LED5 = 1; break;
                        case 5: LED6 = 1; break;
                        case 6: LED7 = 1; break;
                        case 7: LED8 = 1; break;
                    }
                    delay(500);
                }
            }
            
            // 检测按钮 S2 是否按下
            if (S2 == 0) {
                // 按下 S2,熄灭 LED
                for (int i = 7; i >= 0; i--) {
                    // 依次熄灭 LED8 到 LED1
                    switch (i) {
                        case 7: LED8 = 0; break;
                        case 6: LED7 = 0; break;
                        case 5: LED6 = 0; break;
                        case 4: LED5 = 0; break;
                        case 3: LED4 = 0; break;
                        case 2: LED3 = 0; break;
                        case 1: LED2 = 0; break;
                        case 0: LED1 = 0; break;
                    }
                    delay(500);
                }
            }
        }
    }
    

    以上代码,是否满足你的需求?

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月4日

悬赏问题

  • ¥15 List<Class>有参构造
  • ¥20 搭建三相栅极电路后高侧浮动地VS存在电容特性
  • ¥20 云卓h12pro 数传问题
  • ¥20 请问有人知道怎么用工艺库里面的sdb文件通过virtuoso导出来library里面每个cell的symbol吗?
  • ¥20 海思 nnie 编译 报错
  • ¥50 决策面并仿真,要求有仿真结果图
  • ¥15 springboot接入微信支付SDK
  • ¥50 大区域的遥感影像匹配 怎么做啊
  • ¥15 求解答:pytorch跑yolov8神经网络受挫
  • ¥20 Js代码报错问题不知道怎么解决