久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1281|回復: 1
打印 上一主題 下一主題
收起左側

ATmega16計算器

[復制鏈接]
跳轉到指定樓層
樓主
ID:559256 發表于 2019-6-11 22:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#define No_key     255
#define K1_1    1
#define K1_2    2
#define K1_3    3
#define K1_4    4
#define K2_1    5
#define K2_2    6
#define K2_3    7
#define K2_4    8
#define K3_1    9
#define K3_2    0
#define K3_3    10
#define K3_4    11
#define K4_1    12
#define K4_2    13
#define K4_3    14
#define K4_4    15
#define Key_mask    0b00001111

unsigned char read_keyboard()
{   
    static unsigned char key_state = 0, key_value, key_line;
    unsigned char key_return = No_key,i;
   
    switch (key_state)
    {
        case 0:
            key_line = 0b00001000;
            for (i=1; i<=4; i++)                    // 掃描鍵盤
            {   
                PORTD = ~key_line;                    // 輸出行線電平
                PORTD = ~key_line;                    // 必須送2次!!!
                key_value = Key_mask & PIND;        // 讀列電平
                if (key_value == Key_mask)
                    key_line <<= 1;                // 沒有按鍵,繼續掃描
                else
                {
                    key_state++;                    // 有按鍵,停止掃描
                    break;                        // 轉消抖確認狀態
                }
            }
            break;
        case 1:
            if (key_value == (Key_mask & PIND))        // 再次讀列電平,
            {
                switch (key_line | key_value)        // 與狀態0的相同,確認按鍵
                {                                // 鍵盤編碼,返回編碼值
                    case 0b00001110:
                        key_return = K1_1;
                        break;
                    case 0b00001101:
                        key_return = K1_2;
                        break;
                     case 0b00001011:
                        key_return = K1_3;
                        break;
                    case 0b00000111:
                        key_return = K1_4;
                        break;   
                     case 0b00011110:
                        key_return = K2_1;
                        break;
                     case 0b00011101:
                        key_return = K2_2;
                        break;
                    case 0b00011011:
                        key_return = K2_3;
                        break;
                    case 0b00010111:
                        key_return = K2_4;
                        break;
                     case 0b00101110:
                        key_return = K3_1;
                        break;
                     case 0b00101101:
                        key_return = K3_2;
                        break;
                    case 0b00101011:
                        key_return = K3_3;
                        break;
                    case 0b00100111:
                        key_return = K3_4;
                        break;
                    case 0b01001110:
                        key_return = K4_1;
                        break;
                    case 0b01001101:
                        key_return = K4_2;
                        break;
                    case 0b01001011:
                        key_return = K4_3;
                        break;
                     case 0b01000111:
                        key_return = K4_4;
                        break;
                }
                key_state++;                // 轉入等待按鍵釋放狀態
            }
            else
                key_state--;                // 兩次列電平不同返回狀態0,(消抖處理)
            break;                        
        case 2:                            // 等待按鍵釋放狀態
            PORTD = 0b00000111;            // 行線全部輸出低電平
            PORTD = 0b00000111;            // 重復送一次
            if ( (Key_mask & PIND) == Key_mask)
                key_state=0;                // 列線全部為高電平返回狀態0
            break;
    }
    return key_return;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-6-12 06:29 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产中文字幕在线观看 | 中文字幕视频免费 | 色吊丝2288sds中文字幕 | 久久亚洲一区二区 | 九九热在线视频 | 欧美一级黄色免费看 | 黑人巨大精品 | 一区二区三区国产 | 理论片午午伦夜理片影院 | 国产成人精品免高潮在线观看 | 久久久精品一区 | 欧美亚洲国产一区 | 亚洲一区 中文字幕 | 人人干在线| 日本精品久久久一区二区三区 | 国产午夜精品一区二区三区 | 91精品国产91久久久久久不卞 | 91视频免费黄 | 日韩免费中文字幕 | 激情久久网 | 亚洲资源在线 | 日日噜噜噜夜夜爽爽狠狠视频, | 九色在线视频 | 中文字幕亚洲一区二区三区 | 精一区二区 | 久在线 | 中国黄色在线视频 | 国产午夜av片 | 日韩第一区 | 亚洲成av人影片在线观看 | 国产精品毛片久久久久久 | 亚洲福利一区二区 | 91精品久久久久久久久久入口 | 欧美一级欧美三级在线观看 | 免费观看黄 | 亚洲美女视频 | www.久久影视 | 观看av| 国产在线精品一区二区三区 | 99视频网站 | 中文二区|