silas3082 发表于 2024-12-26 15:37:04

冲哥第十一集课后小练:洗衣机交作业啦

<p>第十一集 矩阵按键 课后作业</p>
<p><img src="data/attachment/forum/202412/26/153655jktoc7qfozkclvkf.png" alt="微信截图_20241226095715.png" title="微信截图_20241226095715.png" /></p>
<p>我这里使用12345分别对应5种模式,对应的工作时间分别为:5秒,10秒,15秒,20秒,25秒。</p>
<p>开始按键为0。</p>
<p>使用了四个函数加上之前的595数码管显示函数。</p>
<p>mod_task:模式的选择</p>
<pre><code>void mod_task(void){if(key_numb10&gt;0&amp;&amp;key_numb10&lt;6){
Key_vol3++;
if(Key_vol3==5){mod        = key_numb10;
          start        = 0;
                          finish=0;
              }

}
mod        = key_numb10;
          start        = 0;
                          finish=0;
              }

}
else if(key_numb10==0){
Key_vol3++;
if(Key_vol3==5){                                start        = 1;
                          finish=0;
                        if(mod==1){
                       CoutDown_time=5;
                               }
                       else if(mod==2){
                       CoutDown_time=10;
                       }
                       else if(mod==3){
                       CoutDown_time=15;
                       }
                       else if(mod==4){
                       CoutDown_time=20;
                       }
                       else if(mod==5){
                       CoutDown_time=25;
              }

       }
        }
       else{
                Key_vol3=0;
       }
                                start        = 1;
                          finish=0;
                        if(mod==1){
                       CoutDown_time=5;
                               }
                       else if(mod==2){
                       CoutDown_time=10;
                       }
                       else if(mod==3){
                       CoutDown_time=15;
                       }
                       else if(mod==4){
                       CoutDown_time=20;
                       }
                       else if(mod==5){
                       CoutDown_time=25;
              }

       }
        }
       else{
                Key_vol3=0;
       }
}
</code></pre>
<p>CountDown_Task:倒计时</p>
<pre><code>void CountDown_Task(void){        if(start==1){

          CoutDown_time--;

if( CoutDown_time==0){

        finish=1;
        start=0;
}
        if(start==1){

          CoutDown_time--;

if( CoutDown_time==0){

        finish=1;
        start=0;
}
}
}
</code></pre>
<p>数码管显示</p>
<pre><code>void Seg_Task2(void){switch(Seg_no){
        case 0: Display_Seg( SEG_NUMB, ~T_NUM); break;
        case 1: Display_Seg( SEG_NUMB, ~T_NUM); break;
        case 2: Display_Seg( SEG_NUMB, ~T_NUM); break;
case 3: Display_Seg( SEG_NUMB, ~T_NUM); break;
case 4: Display_Seg( SEG_NUMB, ~T_NUM); break;
case 5: Display_Seg( SEG_NUMB, ~T_NUM); break;
        case 6: if(start==0&amp;&amp;finish==0){Display_Seg(SEG_NUMB, ~T_NUM) ;}else if(start==1&amp;&amp;finish==0){Display_Seg( SEG_NUMB, ~T_NUM);}else if(finish==1){Display_Seg(SEG_NUMB, ~T_NUM) ;}break;
        case 7: if(start==0&amp;&amp;finish==0){ Display_Seg( SEG_NUMB, ~T_NUM) ;}else if(start==1&amp;&amp;finish==0){Display_Seg( SEG_NUMB, ~T_NUM);}else if(finish==1){Display_Seg(SEG_NUMB, ~T_NUM) ;}break;
}

Seg_no++;
if(Seg_no&gt;7){
Seg_no=0;
}

}
switch(Seg_no){
        case 0: Display_Seg( SEG_NUMB, ~T_NUM); break;
        case 1: Display_Seg( SEG_NUMB, ~T_NUM); break;
        case 2: Display_Seg( SEG_NUMB, ~T_NUM); break;
case 3: Display_Seg( SEG_NUMB, ~T_NUM); break;
case 4: Display_Seg( SEG_NUMB, ~T_NUM); break;
case 5: Display_Seg( SEG_NUMB, ~T_NUM); break;
        case 6: if(start==0&amp;&amp;finish==0){Display_Seg(SEG_NUMB, ~T_NUM) ;}else if(start==1&amp;&amp;finish==0){Display_Seg( SEG_NUMB, ~T_NUM);}else if(finish==1){Display_Seg(SEG_NUMB, ~T_NUM) ;}break;
        case 7: if(start==0&amp;&amp;finish==0){ Display_Seg( SEG_NUMB, ~T_NUM) ;}else if(start==1&amp;&amp;finish==0){Display_Seg( SEG_NUMB, ~T_NUM);}else if(finish==1){Display_Seg(SEG_NUMB, ~T_NUM) ;}break;
}

Seg_no++;
if(Seg_no&gt;7){
Seg_no=0;
}

}
</code></pre>
<p>juzhenjianpan:矩阵键盘显示</p>
<pre><code>void juzhenjianpan(){///第一步:将列设置为低电平Col1=0;
Col2=0;
Col3=0;
Col4=0;
Row1=1;
Row2=1;

if(Row1==0||Row2==0){
                if(Row1==0&amp;&amp;Row2==0){}//如果两行都有按键按下,不处理
                else {
                        if(Row1==0){key_numb10=0;}
                        else if(Row2==0){key_numb10=4;}
                                Col1=1;
                                Col2=1;
                                Col3=1;
                                Col4=1;
                                Row1=0;
                                Row2=0;

                                if(Col1==0){            //判断哪一列叠加按键的序号

                                }else if(Col2==0){
                                key_numb10=key_numb10+1;
                                }else if(Col3==0){
                                key_numb10=key_numb10+2;
                                }else if(Col4==0){
                                key_numb10=key_numb10+3;
                                }
                        }


Col1=0;
Col2=0;
Col3=0;
Col4=0;
Row1=1;
Row2=1;
        }
        else{key_numb10 =0xff;}
Col1=0;
Col2=0;
Col3=0;
Col4=0;
Row1=1;
Row2=1;

if(Row1==0||Row2==0){
                if(Row1==0&amp;&amp;Row2==0){}//如果两行都有按键按下,不处理
                else {
                        if(Row1==0){key_numb10=0;}
                        else if(Row2==0){key_numb10=4;}
                                Col1=1;
                                Col2=1;
                                Col3=1;
                                Col4=1;
                                Row1=0;
                                Row2=0;

                                if(Col1==0){            //判断哪一列叠加按键的序号

                                }else if(Col2==0){
                                key_numb10=key_numb10+1;
                                }else if(Col3==0){
                                key_numb10=key_numb10+2;
                                }else if(Col4==0){
                                key_numb10=key_numb10+3;
                                }
                        }


Col1=0;
Col2=0;
Col3=0;
Col4=0;
Row1=1;
Row2=1;
        }
        else{key_numb10 =0xff;}
}
</code></pre>
<video controls="controls" src="forum.php?mod=attachment&amp;aid=76876"></video>
<p><a href="forum.php?mod=attachment&amp;aid=76878" title="attachment"><img src="/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg" alt="upload" /> 附件:test.rar</a></p>

wangxiangtan 发表于 2024-12-27 10:25:00

厉害厉害,可以出师了

ZJM001 发表于 2024-12-27 12:58:25

优秀,做的很不错

国学芯用 发表于 2024-12-27 14:30:48

优秀课代表

香河英茂工作室 发表于 2025-1-10 16:18:21

感谢分享

香河英茂工作室 发表于 2025-1-11 14:14:53

感谢分享,AI_usb.h在哪里?

晨露 发表于 2025-1-11 14:28:32

支持,你是优秀的

silas3082 发表于 2025-1-12 08:55:21

香河英茂工作室 发表于 2025-1-11 14:14
感谢分享,AI_usb.h在哪里?

AI_usb.h是自带的库,点击后右键菜单能找到

silas3082 发表于 2025-1-12 08:57:00

国学芯用 发表于 2024-12-27 14:30
优秀课代表

得到官方大大的肯定,学习劲头更足了

香河英茂工作室 发表于 2025-1-12 13:13:08

silas3082 发表于 2025-1-12 08:55
AI_usb.h是自带的库,点击后右键菜单能找到

感谢回复,我用的是USB.h.
页: [1]
查看完整版本: 冲哥第十一集课后小练:洗衣机交作业啦