日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机--矩阵键盘实验

發布時間:2024/1/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机--矩阵键盘实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 實驗目的和任務
  • 目的:利用“模塊化單片機教學實驗平臺”,加深對單片機與矩陣鍵盤的接口電路設計以及程序設計的理解。

    任務:1、學習獨立式按鍵的查詢識別方法。

    2、非編碼矩陣鍵盤的行反轉法識別方法。

    3、掌握鍵盤接口的基本特點,了解獨立鍵盤和矩陣鍵盤的應用方法。

    4、掌握鍵盤接口的硬件設計方法,軟件程序設計和貼士排錯能力。

    5、掌握利用Keil51軟件對程序進行編譯。

    6、會根據實際功能,正確選擇單片機功能接線,編制正確程序。對實驗結果

  • 實驗原理
  • 1、MCS51系列單片機的P0~P3口作為輸入端口使用時必須先向端口寫入“1”。

    2、用查詢方式檢測按鍵時,要加入延時(通常采用軟件延時10~20mS)以消除抖動。

    3、識別鍵的閉合,通常采用行掃描法和行反轉法。行掃描法是使鍵盤上某一行線為低電平,而其余行接高電平,然后讀取列值,如讀列值中某位為低電平,表明有鍵按下,否則掃描下一行,直到掃完所有行。

    行反轉法識別閉合鍵時,要將行線接一并行口,先讓它工作在輸出方式,將列線也接到一個并行口,先讓它工作于輸入方式,程序使CPU通過輸出端口在各行線上全部送低電平,然后讀入列線值,如此時有某鍵被按下,則必定會使某一列線值為0。然后,程序對兩個并行端口進行方式設置,使行線工作于輸入方式,列線工作于輸出方式,并將剛才讀得的列線值從列線所接的并行端口輸出,再讀取行線上輸入值,那么,在閉合鍵所在行線上的值必定為0。這樣,當一個鍵被接下時,必定可以讀得一對唯一的行線值和列線值。由于51單片機的并口能夠動態地改變輸入輸出方式,因此,矩陣鍵盤采用行反轉法識別最為簡便。

    行反轉法識別按鍵的過程是:首先,將4個行線作為輸出,將其全部置0,4個列線作為輸入,將其全部置1,也就是向P1口寫入0xF0;假如此時沒有人按鍵,從P1口讀出的值應仍為0xF0;假如此時1、4、7、0四個鍵中有一個鍵被按下,則P1.6被拉低,從P1口讀出的值為0xB0;為了確定是這四個鍵中哪一個被按下,可將剛才從P1口讀出的數的低四位置1后再寫入P1口,即將0xBF寫入P1口,使P1.6為低,其余均為高,若此時被按下的鍵是“4”,則P1.1被拉低,從P1口讀出的值為0xBE;這樣,當只有一個鍵被按下時,每一個鍵只有唯一的反轉碼,事先為12個鍵的反轉碼建一個表,通過查表就可知道是哪個鍵被按下了。

  • 實驗內容
  • 使用掃描法通過矩陣鍵盤(2行4列,一共八個按鍵)控制8個LED燈的點亮。按下第一行第一列的按鍵使LED1點亮,其他LED熄滅;按下第一行第二列的按鍵使LED2點亮,其他LED熄滅;按下第一行第三列的按鍵使LED3點亮,其他LED熄滅;按下第一行第四列的按鍵使LED4點亮,其他LED熄滅;按下第二行第一列的按鍵使LED5點亮,其他LED熄滅;按下第二行第二列的按鍵使LED6點亮,其他LED熄滅;按下第二行第三列的按鍵使LED7點亮,其他LED熄滅;按下第二行第四列的按鍵使LED8點亮,其他LED熄滅。

    圖1 LED電路圖

    圖2 按鍵電路圖

    注:把撥碼開關(DIP)撥到斷開的一側。該矩陣鍵盤只用到前兩行,即2*4的矩陣鍵盤。

    表1 硬件連線表

    CPU_CORE_51

    MAIN_BOARD

    P2:P1.0-P1.7

    J14:LINE0-COLUM3

    P3:P2.0-P2.7

    J48:LED1-LED8

    注意:實驗箱的AT89S52單片機的晶振頻率為11.0592MHz!

  • 實驗過程和結果
  • ①關掉實驗電源。將CPU 板插接在JK1、JK2 上,注意CPU 板的插接方向。按照前面連接關系表將硬件連接好。

    ②將AT89S52 芯片插在CPU 板的CPU 插座上(注意不要插反)。母板上電。

    ③運行Keil 開發環境,按照“模塊化單片機教學實驗平臺配套的實驗指導書1.2.3 節”介紹的方法建立工程exp11.uV2,CPU 為AT89S52,不包含啟動文件STARTUP.A51。

    ④編寫匯編語言源程序exp11.asm 完成基本實驗的功能。把源程序exp11.asm加入到工程exp11.uV2,并設置工程exp11.uV2 屬性,將其晶振頻率設置為11.0592MHz,選擇輸出可執行文件。

    ⑤構造(Build)工程exp11.uV2。

    ⑥通過PROGISP 燒寫軟件,利用ISP 下載線(見“模塊化單片機教學實驗平臺配套的實驗指導書1.3 節”)把HEX 文件下載到單片機中。

    ⑦下載成功后,通過按下不同按鍵,觀察LED1~7 的亮滅。

    圖3 實驗結果圖

  • 實驗心得
  • 本次實驗需要先判別整個鍵盤有無按鍵按下,從第0列開始逐列檢測檢測,可以檢測出哪個按鍵被按下。然后用到去除按鍵的抖動。該實驗難度較高,相比以往實驗更考驗綜合能力。如何使用掃線法判斷所在行是實驗的難點所在。實驗中因為對掃線法的理解不深入,在實驗中沒能完成實驗。試驗后仔細閱讀書上的解釋和題本提供的案例程序,我知道了自己實驗失敗的原因所在,并重新設計了程序和實驗。通過學習后,對掃描鍵盤的程序更加了解,將理論上的結果和自己實驗做的結果相印證,對書本上知識掌握的更加牢固,對代碼程序有更加深刻的理解。在實驗中,對模板的使用更加熟練,對電路的連接更加熟練。我對于矩陣鍵盤的工作方式有了更進一步的認識,也對掃描法查詢矩陣鍵號的方法編寫有了更進一步的掌握。單片機提高重在實踐,想要學好單片機,軟件編程必不可少。

  • 附錄(代碼)
  • (1)基本實驗

    ORG 0000H

    LJMP MAIN

    MAIN:MOV P1,#11110000B;給p1口送數11110000

    MOV A,P1?????? ;獲取P1口的電平

    XRL A,#11110000B

    ;將P1口電平與11110000異或運算

    ;若有按鍵按下,A不為0

    JZ MAIN??????? ;無按鍵按鍵則返回

    LCALL TIME_??? ;跳轉到延時程序

    MOV P1,#11110000B

    MOV A,P1

    XRL A,#11110000B?? ;該部分操作與上述操作相同

    MOV R3,A?????? ;保存此時A的值

    JZ MAIN???? ???? ;確認有按鍵按下

    MOV R0,#11110111B;掃描法判斷

    MOV R1,#0????? ;R1存儲列的權值

    I: ???MOV P1,R0????? ;將R0值傳遞給P1

    MOV A,P1?????? ;讀取P1的值

    AAA0:JNB ACC.4,AAA1

    ;如果ACC的第四位(即第一列)不為零

    MOV R1,#0????? ;r1存0

    LJMP OK???? ;跳轉到計算環節

    AAA1: JNB ACC.5,AAA2 ;同上,判斷第二列

    MOV R1,#01

    LJMP OK

    AAA2:JNB ACC.6,AAA3? ;同上,判斷第三列

    MOV R1,#02

    LJMP OK

    AAA3: JNB ACC.7,AAA4 ;同上,判斷第四列

    MOV R1,#03

    LJMP OK

    AAA4:MOV A,R0

    JNB ACC.2,MAIN ;判斷是否結束

    RR A??????? ;環移

    MOV R0,A

    MOV A,R1

    MOV R1,A???

    LJMP I

    TIME_:MOV R0,#05

    TT: ??MOV R1,#250

    DJNZ R1,$

    DJNZ R0,TT

    RET

    OK:???? ;判斷所在行并送數

    MOV A,R1

    ADD A,R0

    MOV R0,A

    MOV A,#1

    INC R0

    AAA:CJNE R0,#0,BBB

    RL A

    INC A

    LJMP AAA

    BBB:MOV P2,A

    LJMP MAIN

    END

    (2)擴展實驗

    ORG 0000H

    LJMP MAIN

    MAIN:MOV P1,#11110000B;送數11110000

    MOV A,P1??? ;取當前P1的值

    XRL A,#11110000B;與11110000與或運算

    JZ MAIN???? ;如果為0則跳轉回

    LCALL TIME_ ;延遲子系統

    MOV P1,#11110000B

    MOV A,P1

    XRL A,#11110000B

    JZ MAIN???? ;再次判斷確定非誤觸

    MOV R3,A??? ;存儲當前A信息

    MOV P1,#00001111B? ;判斷所在列

    MOV A,P1

    XRL A,#00001111B

    MOV R4,A??? ;存至R4

    MOV A,R3

    JNB ACC.1,NEXT1

    MOV R3,#4;若為第二行則若R3存4,否則存0

    LJMP NEXT2

    NEXT1: MOV R3,#0;判斷行,依次為0,1,2,3

    NEXT2:MOV A,R4

    JNB ACC.4,NEXT3

    MOV R4,#0

    LJMP NEXT7

    NEXT3:JNB ACC.5,NEXT4

    MOV R4,#1

    LJMP NEXT7

    NEXT4:JNB ACC.6,NEXT5

    MOV R4,#2

    LJMP NEXT7

    NEXT5:MOV R4,#3

    NEXT7:MOV A,R3

    ADD A,R4????? ;將兩個權值相加

    MOV P2,A????? ;送至P2

    LJMP MAIN

    TIME_:MOV R0,#05

    TT:?? MOV R1,#250

    DJNZ R1,$

    DJNZ R0,TT

    RET

    END

    總結

    以上是生活随笔為你收集整理的单片机--矩阵键盘实验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩精品在线电影 | 午夜视频免费观看 | 天天草综合 | aaa大片十八岁禁止 中文字幕亚洲在线观看 | 日日夜夜2017| 亚洲人成7777 | 亚洲 欧美 激情 小说 另类 | 国产乱淫视频 | 欧美韩日一区二区 | 日本精品一区二区三区视频 | 不卡av一区 | 久久久久人妻一道无码AV | 影音先锋一区 | 国产片淫乱18一级毛片动态图 | 美女色网站 | ww久久| 动漫精品一区 | 黄色小网站在线观看 | 日韩在线视频观看免费 | 美女隐私免费观看 | 国产高潮视频 | 亚洲免费观看视频 | 成人夜晚视频 | 欧美日韩另类一区 | 久久久精| 亚洲精品久久久久久久蜜桃 | 国产精品人人做人人爽 | 992av| 美女裸片 | 好看的av在线 | 日韩成人免费在线 | 国产九九九九九 | 三级av网 | 精品人妻一区二区三区四区在线 | 亚日韩 | 欧美8888| 午夜无遮挡| 色婷婷狠 | 欧美三p | 亚洲av熟女高潮一区二区 | 国产乱国产 | 青青一区二区 | 中出亚洲 | www.香蕉视频在线观看 | www精品国产 | 操网站| 国产三级国产精品国产国在线观看 | av网站黄色 | 特级西西444www高清大胆 | 黑人巨大精品人妻一区二区 | 国产一区视频在线观看免费 | 久久精品这里只有精品 | 精品二区在线 | 成人免费网站在线观看 | 中文字幕人妻色偷偷久久 | 嫩草精品| 在线一区av | 1024视频在线 | xxxx在线视频 | 老熟妇一区二区三区 | 国产一区二区免费 | 性xxxx搡xxxxx搡欧美 | 美女草逼视频 | 国产99久久久国产精品 | 日本美女久久 | 国产婷婷色综合av蜜臀av | 男女ss视频 | 久久99久久99 | 日本亲近相奷中文字幕 | 波多野吉衣一区二区三区 | 爱情岛亚洲首页论坛 | 成人av网址在线 | 天天综合网久久综合网 | 全黄性性激高免费视频 | 动漫女生光屁股 | 亚洲91网| 爱操av| 华人永久免费视频 | 99日精品| 最新最近中文字幕 | 资源av| 日日碰狠狠添天天爽无码 | 亲子乱一区二区三区 | avwww| 秋霞7777鲁丝伊人久久影院 | 中文字幕第十一页 | 三级影片在线免费观看 | 国产精成人品免费观看 | 久久精品亚洲天堂 | 亚洲国产黄色av | 日韩综合在线观看 | 日韩成人免费观看 | 岛国裸体写真hd在线 | 狠狠摸狠狠操 | 欧美精品乱码视频一二专区 | a极毛片 | 精品午夜一区二区 | 日韩精品欧美激情 | 91香蕉视频在线观看免费 |