欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20127|回復: 0
收起左側

51單片機獨立按鍵源程序與電路圖

[復制鏈接]
ID:312830 發表于 2018-4-30 08:20 | 顯示全部樓層 |閱讀模式
截圖格式 雙擊可以打.png

三個獨立按鍵S2/S3/S4手動設置報警距離,S4是設置鍵,S2是加鍵,S3是減鍵;按一下S4可以進行報警距離設置,按一次S2報警距離就會增加1cm,按一次S3報警距離就會減小1cm。下面是有關按鍵的程序,沒有看懂,希望指教

/********************獨立按鍵程序*****************/
uchar key_scan;         //按鍵值

void key()         //獨立按鍵程序
{
        static uchar key_new;
        key_can = 20;                   //按鍵值還原
        P2 |= 0x07;
        if((P2 & 0x07) != 0x06)                //按鍵按下
        {
                delay_1ms(1);                     //按鍵消抖動
                if(((P2 & 0x07) != 0x07) && (key_new == 1))
                {                                                //確認是按鍵按下
                        key_new = 0;
                        switch(P2 & 0x07)
                        {
                                case 0x05: key_can = 1; break;           //得到k2鍵值
                                case 0x04: key_can = 2; break;           //得到k3鍵值
                                case 0x02: key_can = 3; break;           //得到k4鍵值
                        }
                }                        
        }
        else
                key_new = 1;        
}

/****************按鍵處理顯示函數***************/
void key_with()
{
        if(key_can == 1)                //設置鍵
        {
                menu_1 ++;
                if(menu_1 >= 2)
                {
                        menu_1 = 0;
                        smg_i = 3;                //只顯示3位數碼管
                }
                if(menu_1 == 1)
                {
                        smg_i = 4;            //只顯示4位數碼管
                }
        }
        if(menu_1 == 1)                        //設置報警
        {
                if(key_can == 2)
                {
                        set_d ++ ;                //加1
                        if(set_d > 400)
                                set_d = 400;
                }
                if(key_can == 3)
                {
                        set_d -- ;                //減1
                        if(set_d <= 1)
                                set_d = 1;
                }
                dis_smg[0] = smg_du[set_d % 10];                   //取小數顯示
                dis_smg[1] = smg_du[set_d / 10 % 10] ;         //取個位顯示
                dis_smg[2] = smg_du[set_d / 100 % 10] & 0xdf ; //取十位顯示
                dis_smg[3] = smg_du[10];                //a
        }        
}  

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表