




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
獨立式按鍵矩陣按鍵例10:按鍵1、程序key1:實驗目的:通過按鍵key1、key2、key3、key4分別控制前四盞LED的亮滅。實驗思路:
P0口各位的電位高低可以控制LED的亮滅,P0口的低四位對應控制前四盞小燈。根據實驗要求,可讓key1-key4控制P0的低四位,進而可以控制前四盞LED的亮滅。又key1-key4控制直接keyin1-keyin4,也即控制P2口的高四位,故可以讓key1-key4控制P2口的高四位(按鍵按下去,相應P2口為0),然后將P2口高四位對應賦值給P0口低四位。設計步驟:1)使能三八譯碼器,讓LED具備可以亮的條件;2)獨立式按鍵初始化,讓keyout1=0,接地,使得key1-key4組成一組獨立按鍵;3)將P2口高四位對應賦值給P0口低四位,P0=P2>>44)為確保P0口高四位為1,P0=(P2>>4)|0XF0,這樣后四盞小燈就不會亮了。#include<reg52.h>sbitA0=P1^0;sbitA1=P1^1;sbitA2=P1^2;sbitE3=P1^3;sbitENLED=P1^4;sbitkeyout1=P2^3;main(){keyout1=0;ENLED=0;E3=1;A2=1;A1=1;A0=0; while(1){P0=(P2>>4)|0xF0;}}補充知識點:編寫頭文件1)頭文件建立方法:*.h,例如此處key.h2)將頭文件寫入程序中:#include“key.h”3)頭文件與所寫程序應該在相同文件夾下,如其他程序需要可直接復制粘貼頭文件即可。4)頭文件的具體編寫方法如下:編寫頭文件:#ifndef_KEY_H_#define_KEY_H_typedefunsignedintuint16;typedefunsignedcharuint8;sbitkeyin1=P2^4;//特殊功能位聲明sbitkeyin2=P2^5;sbitkeyin3=P2^6;sbitkeyin4=P2^7;sbitkeyout1=P2^3;sbitkeyout2=P2^2;sbitkeyout3=P2^1;sbitkeyout4=P2^0;sbitA2=P1^2;//特殊功能位聲明,以便使能三八譯碼器sbitA1=P1^1;sbitA0=P1^0;sbitENLED=P1^4;sbitE3=P1^3;#endif#include<reg52.h>#include"key.h"main(){ keyout1=0; ENLED=0; E3=1; A2=1; A1=1; A0=0; while(1) P0=(P2>>4)|0XF0; }使用自編頭文件后程序簡化如下:例10:按鍵2、程序key2:設計內容:通過按鍵key1、key2控制第一個數碼管顯示的數字加1或減1。設計思路:定義數組,數組內容從0-9、空。key1每次按下,數碼管顯示數字加1,key2每次按下,數碼管顯示數字減1。設計步驟:1)定義數組,該數組中元素從0-9、空顯示;2)使能三八譯碼器,讓LED具備可以亮的條件;3)初始化按鍵,使得key1、key2組成一組獨立式按鍵;4)編寫程序,使得key1每次按下,數碼管顯示數字加1,key2每次按下,數碼管顯示數字減1。#include<reg52.h>#include"key.h"codeuint8number[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xFF};uint8n=0;main(){ keyout1=0;//初始化按鍵
A2=0;//讓第一個數碼管亮
A1=0; A0=0;
E3=1;//使能三八譯碼器
ENLED=0; P0=number[0];//給P0賦初值
while(1){ if(!keyin1)//將keyin1取反,結果只有兩種,1或0,!keyin1的結果是按鍵1按下去結果為1,也即要執行以下操作,彈上來結果為0,不進行以下操作。
{
if(n>=9)//按鍵1按下去的時候數字從0增至9,當到9時,又從新從0開始顯示
n=0; else n++; P0=number[n];
while(!keyin1);
//等待按鍵彈起來,防止按鍵由于手動操作,按下去時間過長,導致計數變化過多,加入這條語句,只要按鍵還沒彈上來,則會一直執行while空語句
}
if(!keyin2) { if(n<=0) n=9; else n--; P0=number[n]; while(!keyin2); } }}例10:
3、程序key3:
按鍵抖動(課本P109)硬件去抖軟件去抖:檢測出鍵閉合后執行一個延時程序,產生5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認為真正有鍵按下。
設計思路:在上一個程序的基礎上加一個延時程序,延時程序后再次判斷按鍵是否按下,如果按下執行以后程序。
在程序2的基礎上稍作修改,實現軟件按鍵防抖1)編寫延時程序:voiddelay(){ uint16i=1000; while(i--);}2)將延時程序寫入main中
if(!keyin1){ delay();//如果按鍵按下,延時,再確認按鍵是否按下
if(!keyin1) { if(n>=9) n=0; else n++; P0=number[n]; while(!keyin1); }}例10:按鍵4、程序key4:設計內容:通過按鍵key1-key15控制LED按二進制方式顯示數字0-16。設計思路:使用矩陣按鍵,讓k1-k4、k5-k8、k9-k12、k13-k16依次構成四組獨立式按鍵,每次只能構成使用一組。然后讓k1-k16按下時,LED以二進制方式顯示。設計步驟:1)使能三八譯碼器,讓LE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國汽車維修行業戰略規劃及營銷模式發展趨勢報告
- 2025至2030中國氟三唑行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國橢圓交叉訓練機行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國桌面電話行業發展趨勢分析與未來投資戰略咨詢研究報告
- GB/T 16263.4-2025信息技術ASN.1編碼規則第4部分:XML編碼規則(XER)
- 數字孿生在城市老舊小區改造中的應用策略及2025年發展趨勢報告001
- 市場督察部管理制度
- 幼兒棋藝室管理制度
- 窗簾布藝業務管理制度
- 社區公共財物管理制度
- 通信線路工程(第二版)第8章通信線路工程施工安全
- 國家開放大學電大專科《計算機平面設計(2)》網絡課形考任務1及2答案
- 商業綜合體能源效率提升實踐
- 水產品市場的營銷策略與市場推廣
- 超市經營方案
- 工程施工竣工報告
- PythonWeb開發技術與應用(Flask版)PPT完整全套教學課件
- 10kV~500kV輸變電及配電工程質量驗收與評定標準:01輸電線路工程
- 子宮內膜癌內分泌治療課件
- 第三章葡萄酒釀造2
- 每天100道語法填空題過高考英語高頻詞匯12
評論
0/150
提交評論