《鍵盤輸入與IO實(shí)驗(yàn)》由會員分享,可在線閱讀,更多相關(guān)《鍵盤輸入與IO實(shí)驗(yàn)(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、JXARM9-2410實(shí) 驗(yàn) 系 統(tǒng) 教 案5.12 鍵 盤 輸 入 與 IO實(shí) 驗(yàn)武 漢 創(chuàng) 維 特 信 息 技 術(shù) 有 限 公 司 2021-5-28 2 提 綱 基 礎(chǔ) 知 識實(shí) 驗(yàn) 目 的 實(shí) 驗(yàn) 內(nèi) 容預(yù) 備 知 識實(shí) 驗(yàn) 設(shè) 備 實(shí) 驗(yàn) 過 程實(shí) 驗(yàn) 報 告 要 求 3 一 實(shí) 驗(yàn) 目 的實(shí) 驗(yàn) 目 的q學(xué) 習(xí) 鍵 盤 驅(qū) 動 原 理q掌 握 通 過 CPU的 I/O擴(kuò) 展 鍵 盤 的 方 法 4 二 實(shí) 驗(yàn) 內(nèi) 容實(shí) 驗(yàn) 內(nèi) 容q編 寫 矩 陣 鍵 盤 掃 描 程 序 , 并 將 按 鍵 鍵 值 在 數(shù) 碼 管 中 顯 示 5 三 預(yù) 備 知 識預(yù) 備 知 識q了 解 ADT集
2、成 開 發(fā) 環(huán) 境 的 基 本 功 能 ;q了 解 鍵 盤 的 構(gòu) 成 以 及 原 理 6 四 實(shí) 驗(yàn) 設(shè) 備實(shí) 驗(yàn) 設(shè) 備qJXARM9-2410教 學(xué) 實(shí) 驗(yàn) 箱qADT1000仿 真 器 和 ADT IDE集 成 開 發(fā) 環(huán) 境 q串 口 連 接 線 7 五 基 礎(chǔ) 知 識鍵 盤 實(shí) 現(xiàn) 方 案 q鍵 盤 實(shí) 現(xiàn) 方 案 采 用 專 門 的 芯 片 實(shí) 現(xiàn) 鍵 盤 掃 描 采 用 軟 件 實(shí) 現(xiàn) 鍵 盤 掃 描q軟 鍵 盤 實(shí) 現(xiàn) 方 案 當(dāng) 開 關(guān) 打 開 時 , 通 過 處 理 器 的 I/O 口 的 一 個 上 拉 電 阻 提 供 邏 輯 1;當(dāng) 開 關(guān) 閉 合 時 , 處 理 器
3、 的 I/O 口 的 輸 入 將 被 拉 低 到 邏 輯 0。 8 五 基 礎(chǔ) 知 識矩 陣 鍵 盤 電 路 q一 個 瞬 時 接 觸 開 關(guān) ( 按 鈕 ) 放 置 在 每 一 行 與 每 一 列 的 交叉 點(diǎn) 。 每 一 行 由 一 個 輸 出 端 口 的 一 位 驅(qū) 動 , 每 一 列 由 一個 電 阻 器 上 拉 且 供 給 輸 入 端 口 一 位 。 9 五 基 礎(chǔ) 知 識按 鍵 抖 動 q開 關(guān) 并 不 完 善 , 因 為 當(dāng) 它 們 被 按 下 或 者 被 釋 放 時 , 并 不能 夠 產(chǎn) 生 一 個 明 確 的 1或 者 0。 盡 管 觸 點(diǎn) 可 能 看 起 來 穩(wěn) 定而 且
4、很 快 地 閉 合 , 但 與 微 處 理 器 快 速 的 運(yùn) 行 速 度 相 比 ,這 種 動 作 是 比 較 慢 的 。 當(dāng) 觸 點(diǎn) 閉 合 時 , 其 彈 起 就 像 一 個球 。 彈 起 效 果 將 產(chǎn) 生 如 下 圖 所 示 的 好 幾 個 脈 沖 。 彈 起 的持 續(xù) 時 間 通 常 將 維 持 在 5ms 30ms 之 間 。 10 五 基 礎(chǔ) 知 識鍵 盤 掃 描 q鍵 盤 掃 描 過 程 就 是 讓 微 處 理 器 按 有 規(guī) 律 的 時 間 間 隔 查 看鍵 盤 矩 陣 , 以 確 定 是 否 有 鍵 被 按 下q一 旦 處 理 器 判 定 有 一 個 鍵 按 下 , 鍵
5、盤 掃 描 軟 件 將 過 濾 掉抖 動 并 且 判 定 哪 個 鍵 被 按 下q每 個 鍵 被 分 配 一 個 稱 為 掃 描 碼 的 唯 一 標(biāo) 識 符 。 應(yīng) 用 程 序利 用 該 掃 描 碼 , 根 據(jù) 按 下 的 鍵 來 判 定 應(yīng) 該 采 取 什 么 行 動 ,換 句 話 說 , 掃 描 碼 將 告 訴 應(yīng) 用 程 序 按 下 哪 個 鍵 11 五 基 礎(chǔ) 知 識鍵 盤 掃 描 算 法 q初 始 化 : 所 有 的 行 ( 輸 出 端 口 ) 被 強(qiáng) 行 設(shè) 置 為 低 電 平q在 沒 有 任 何 鍵 按 下 時 , 所 有 的 列 ( 輸 入 端 口 ) 將 讀 到 高電 平 。
6、q任 何 鍵 的 閉 合 將 造 成 其 中 的 一 列 變 為 低 電 平 。q一 旦 檢 測 到 有 鍵 被 按 下 , 就 需 要 找 出 是 哪 一 個 鍵 。 過 程很 簡 單 , 微 處 理 器 只 需 在 其 中 一 列 上 輸 出 一 個 低 電 平 。如 果 它 在 輸 入 端 口 上 發(fā) 現(xiàn) 一 個 0值 , 微 處 理 器 就 知 道 在 所選 擇 行 上 產(chǎn) 生 了 鍵 的 閉 合 12 五 基 礎(chǔ) 知 識JXARM9-2410的 鍵 盤 模 塊qJXARM9-2410具 有 4 4的 軟 鍵 盤 。 原 理 圖 如 下 : 13 五 基 礎(chǔ) 知 識實(shí) 驗(yàn) 說 明q鍵
7、盤 處 理 流 程 圖 開 始 將 鍵 盤 的 第 row行 置 為 低 電 平row = 0延 時第 一 次 掃 描 鍵 值 input_keykey_mask = 0 x0F 延 時第 二 次 掃 描 鍵 值 input_key1 獲 取 鍵 碼 ascii_key在 LED上 顯 示 按 鍵row+ row 4 NY 是 否 有 鍵 按 下input_key != key_mask input_key=input_key1YYN N 依 次 將 鍵 盤 的 每 一 行 輸 出 低 電 平 , 延 時 一 段 時 間 然 后 獲 取 該 行 中 各 列 的 輸 入 情 況 , 如 果 各
8、列 全 部為 1則 繼 續(xù) 查 詢 下 一 行 , 否 則 延 時 一 段 時 間 并 重 新掃 描 一 次 如 果 掃 描 結(jié) 果 與 上 次 掃 描 結(jié) 果 相 同 則 調(diào) 用key_get_char獲 取 鍵 碼 , 然 后 調(diào) 用display_num在 LED上 顯 示 相 應(yīng) 鍵 值 。 圖 中 通 過 如 下 程 序 將 鍵 盤 的 row行 輸 出 低 電 平 :unsigned char* keyboard_port = (unsigned char*)0 x1000000;*keyboard_port = (0 x00000001 row); 14 六 實(shí) 驗(yàn) 報 告 要 求實(shí) 驗(yàn) 報 告 要 求q鍵 盤 掃 描 有 哪 幾 種 方 式 , 分 別 說 明 其 基 本 原 理 ;q思 考 使 用 中 斷 方 式 如 何 處 理 鍵 盤 輸 入 , 試 畫 出 流 程 圖 。