999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

四個矩陣按鍵開關單片機檢測程序及其應用特點的分析

2021-06-30 01:43:34長沙市電子工業學校劉國云
電子世界 2021年11期
關鍵詞:程序檢測

長沙市電子工業學校 劉國云

相對于獨立按鍵,矩陣按鍵開關具有占用單片機端口資源少的優點,也有其教學難的缺點。有多種方法實現矩陣按鍵開關檢測功能,作為經驗交流,筆者介紹了四個不同的矩陣按鍵開關檢測程序,并分析了它們的檢測方法和應用特點,與職教同行共同開拓編程思路、提高編程能力和教學能力。

按鍵是單片機控制的重要的指令開關,相對于獨立按鍵,矩陣按鍵開關具有占用單片機端口少的資源優勢,同時也給使用者帶來了難學、難記、難寫、檢測程序復雜的缺點。我在此介紹用四種不同方法編寫的4×4矩陣開關檢測程序,并對程序和它們優缺點進行分析,以加深大家對矩陣開關檢測原理和編程方法的理解,開拓編程思路,掌握多個可以在不同場合應用的矩陣開關檢測程序,以提高大家程序分析能力、編程能力和教學能力。

1 用switch-case語句編寫矩陣按鍵開關檢測程序

圖1所示程序用P3總線控制方式和switch-case語句,對4*4矩陣按鍵開關進行檢測,P3.4-P3.7和P3.3-P3.0分別為行線h0-h3和列線l0-l3的控制端口。其編程思路是用P3總線賦值方式,依次將4根行線電平拉低,每拉低一根行線電平,就依次對4根列線上的按鍵進行檢,如果哪根列線被檢測到低電平,就表示該行該列上的按鍵按下。現以拉低第一行電平、依次檢測4列電平為例,來講解該程序是如何使用switch-case語句捕捉到按鍵和獲得鍵值的。

圖1 switch-case語句矩陣按鍵開關檢測程序

首先讓P3=0xff,排除干擾電平,然后迅速讓P3=0xef,拉低接在P3.4上的第一條行線h0的電平,并讓局部變量i=P3=0xef,接著i與0xf0逐位與(i=0xe0&0xf0=0xe0!=0xf0),執行if(i!=0xf0)條件語句,程序指針指向由switch-case語句組成的4條列線檢測程序。

因為按鍵按下會改變P3值,條件語句中i=P3的i值也會改變,通過switch(i){case 0xe7:jianzhi=1;break;case 0xeb:jianzhi=2;break;case 0xe7:jianzhi=1;break;case 0xeb:jianzhi=2;break;}來檢測列線電平,捕獲按下的按鍵開關和獲取鍵值。

至于while(i!=0xf0){xianshi();xianshi();xianshi();xianshi();

xianshi();i=0xf0;}的作用是通過調用顯示子程序起到延時作用,給按鍵提供釋放時間,最后讓i=0xf0,退出while循環。

該矩陣開關檢測程序的特點是:端口8位總線控制,控制端口選用靈活性不強;程序代碼多。

2 用數組檢測碼編寫矩陣開關檢測程序(圖2)

圖2 用數組檢測碼編寫的矩陣按鍵開關檢測程序

該檢測程序的特點也是端口8位總線控制,檢測端口選用不靈活,但程序代碼少了很多。它的編程思路是:定義了拉低行線電平的數組hl3[4]、依次檢測4條列線電平的二維數組hl1[4][4]及保存鍵值的二維數組hl2[4][4]。然后用兩個嵌套的for循環語句實現按鍵檢測,4次外循環是依次拉低4根行線電平(P3=0xff;P3=hl3[i];)。內循環是依次檢測4根列線,如果檢測到P3值等于檢測碼,就捕獲按鍵,獲取鍵值(if(P3==hl1[i][j])jianzhi=hl2[i][j];)。

語句while(P3==hl1[i][j]);是用來等待按鍵釋放。

3 用循環移動功能函數編寫矩陣按鍵開關檢測程序(圖3)

圖3 用循環功能函數編寫的矩陣開關檢測程序

該檢測程序的最大優點是代碼少。它定義了一個鍵值二維數組ka[4][4],也用兩級嵌套的for循環分別拉低行線電平和依次檢測列線電平。這個程序比圖2中用數組檢測檢測碼編寫的矩陣開關檢測程序代碼更少的原因就是利用了功能循環函數_crol_()來拉低行線電平和檢測列線電平。

外循環的P3=_crol_(0xef,i),通過將0xef左移1、2、3、4位來實現拉低行線電平的。內循環的列線檢測和獲取鍵值是通過if((P3&__cror_(0x08,j))==0)jianzhi=ka[i][j]實現的。

4 用位控制指令編寫矩陣按鍵開關檢測程序

上面3個矩陣按鍵開關檢測程序中的第三個程序最簡單,第一個程序最復雜,但它們都有一個共同特點:采用8位總線控制方式,所以單片機檢測端口選擇的靈活性不強。現在介紹一個程序代碼不是最少,但檢測方法最直觀、編程思路最清晰、端口選用最靈活,如圖4所示的用位控制指令編寫的矩陣按鍵開關檢測程序。

圖4 位控制指令矩陣按鍵開關檢測程序

該程序的編程思路是:先聲明4行和4列位控信號h0-h3和l0-l3(sbit h0=P3^4;sbit h1=P3^5;sbit h2=P3^6;sbit h3=P3^7;sbit l0=P3^0;sbit l1=P3^1;sbit l2=P3^2;sbit l3=P3^3;),然后在矩陣開按鍵關檢測程序jzjc()中,首先讓所有行列信號置1,去除干擾信號,再逐行拉低一行電平,用if-else if-else if-if語句逐列檢測,并取出所檢測到的鍵值k。

還有一個需要特別提醒的是:該矩陣按鍵開關檢測程序不是空函數,而是帶返回值k的子程序。

圖4所示的矩陣按鍵開關檢測程序由于是用位控指令來編寫的,相較前面3個總線控制的矩陣按鍵開關檢測程序,它的最大優點就是檢測端口的選用非常靈活,美中不足就是程序代碼比稍多點,有意使用該程序的話,可以用圖5的形式來簡化。

圖5 圖4程序的簡化程序

結語:作為中職教師,在講解同一個任務的控制程序時,應該具有多種解決方案,以方便學生在不同的應用場合使用,培養他們的開放思維能力和創新應用能力。筆者通過介紹四種不同矩陣按鍵開關檢測程序,希望能與同行分享不同的編程方法,開闊編程視野,共同提高編程能力和教學能力。

猜你喜歡
程序檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: av一区二区三区在线观看| 久久国产成人精品国产成人亚洲 | 亚洲VA中文字幕| 久久国产精品电影| 国产在线啪| 波多野结衣的av一区二区三区| 国产乱人免费视频| 亚洲国产精品无码AV| 国产福利小视频在线播放观看| 野花国产精品入口| 亚洲天堂久久| 91无码人妻精品一区二区蜜桃| 国产亚洲精品资源在线26u| 91福利国产成人精品导航| 一本无码在线观看| 都市激情亚洲综合久久| 亚洲天堂在线视频| 久久综合一个色综合网| 成人国产精品2021| 国产成人精品男人的天堂| 毛片免费视频| 91久久性奴调教国产免费| 国产在线自揄拍揄视频网站| 高清国产在线| 色播五月婷婷| 亚洲成年人片| 亚洲V日韩V无码一区二区| 亚洲欧洲日韩久久狠狠爱| 色综合手机在线| 国产成人亚洲精品色欲AV| 久久6免费视频| 国产人在线成免费视频| 欧美乱妇高清无乱码免费| 青青草原偷拍视频| 国产综合色在线视频播放线视| 欧美天堂久久| 午夜毛片免费观看视频 | 日本一区高清| A级毛片高清免费视频就| 国产亚洲视频在线观看| 色视频国产| 特级做a爰片毛片免费69| 在线国产三级| 欧美成人免费一区在线播放| 又黄又湿又爽的视频| 天堂av综合网| 99re经典视频在线| 99re热精品视频国产免费| 成人在线综合| 亚洲天堂视频在线观看免费| 亚洲乱伦视频| 91娇喘视频| 乱人伦中文视频在线观看免费| 亚洲精品无码av中文字幕| 欧美亚洲国产日韩电影在线| 国产白浆在线观看| 亚洲一级毛片在线观播放| 在线精品视频成人网| 中文国产成人精品久久| 亚洲成a人片| 国产毛片一区| 免费jizz在线播放| 亚洲精品波多野结衣| 亚洲人成网18禁| 欧美高清视频一区二区三区| 久久精品国产国语对白| 亚洲不卡无码av中文字幕| 欧美A级V片在线观看| 啪啪啪亚洲无码| 中文字幕伦视频| 91久久偷偷做嫩草影院| 国产又大又粗又猛又爽的视频| 亚洲国产一区在线观看| 国产无码性爱一区二区三区| 日本一区高清| 无码国内精品人妻少妇蜜桃视频 | 韩日午夜在线资源一区二区| 免费观看精品视频999| 国产AV毛片| 一本大道视频精品人妻| 伊人久久久久久久| 国产一区二区网站|