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

單片機(jī)控制鍵盤電路優(yōu)化設(shè)計與實現(xiàn)

2022-04-28 08:53:14郭弘澤陳麗霞楊建利
黑龍江科學(xué) 2022年8期
關(guān)鍵詞:單片機(jī)

郭弘澤,李 敏,b,陳麗霞,b,楊建利,c,王 虹,b

(河北大學(xué) a.電子信息工程學(xué)院; b.光伏技術(shù)虛擬仿真實驗教學(xué)中心; c.河北省數(shù)字醫(yī)療工程重點實驗室,河北 保定 071002)

0 引言

單片機(jī)應(yīng)用系統(tǒng)中,鍵盤是人機(jī)交互必不可少的部分。通常實現(xiàn)單片機(jī)鍵盤的方法主要有獨立式鍵盤結(jié)構(gòu)和矩陣式鍵盤結(jié)構(gòu)。在按鍵數(shù)量較多時,為了減少I/O口的需求,通常采用矩陣式鍵盤結(jié)構(gòu)[1-3]。現(xiàn)有的矩陣式鍵盤在使用過程中,使用的是x+y條線布局,可以監(jiān)控的按鍵數(shù)量為x×y個,若x和y均為4,那么在原有的8條線的基礎(chǔ)上加一條線,就可以實現(xiàn)最多4×5=20個按鍵的監(jiān)控。但是,單片機(jī)的內(nèi)部資源不管是ROM、RAM還是I/O口都是非常有限的資源,諸如這種x+y條線控制x×y個按鍵的情形,某種程度上來說對單片機(jī)的資源占用是非常大的。目前,對于矩陣式鍵盤主要采用掃描式進(jìn)行識別,有些按鍵需要掃描多次才能最終確認(rèn)是否被按下,這就造成了很大的延遲。針對這種8個I/O口可以實現(xiàn)對4×4=16個按鍵的識別與監(jiān)控的鍵盤結(jié)構(gòu)之后又出現(xiàn)了一種改進(jìn)型的按鍵陣列設(shè)計,可以使用8+2個I/O口來監(jiān)控8×8=64個按鍵[4],這種按鍵陣列設(shè)計雖然使得監(jiān)控按鍵的數(shù)量有所增加,但按鍵拓展性不強(qiáng),且仍采用掃描式識別,依然存在較大的時間延遲問題。基于此,介紹了一種基于51單片機(jī)的鍵盤電路優(yōu)化設(shè)計,以解決現(xiàn)有的按鍵陣列設(shè)計拓展性不強(qiáng)、掃描式識別所帶來的時間延遲較大的問題。

1 硬件電路設(shè)計

如圖1所示,鍵盤電路以15個按鍵為例進(jìn)行說明。本例中鍵盤電路選用AT89C51型號單片機(jī),在單片機(jī)的最小系統(tǒng)上搭建了鍵盤電路和顯示電路。

圖1 鍵盤電路仿真圖Fig.1 Keyboard circuit simulation diagram

1.1 鍵盤電路

AT89C51型單片機(jī)上具有P0、P1、P2和P3四組端口,每組端口又包括8位I/O口。其中,P0組端口的8個引腳經(jīng)反向截止器與鍵盤電路中相應(yīng)的按鍵連接構(gòu)成鍵盤電路,因為51單片機(jī)P0口內(nèi)部沒有上拉電阻,為高阻狀態(tài),所以不能正常輸出高/低電平,為此在連接按鍵時外接了8只10kΩ大小的上拉電阻;P2組端口的8個引腳與單只數(shù)碼管的段碼相連,數(shù)碼管的公共端為電源,由此構(gòu)成顯示電路[5]。

鍵盤電路中的15個按鍵命名為K1~K15,每一個按鍵都有各自對應(yīng)的編號,每個編號采用二進(jìn)制表示,如按鍵1的編號是0001,按鍵2的編號是0010,以此類推,按鍵15的編號是1111。本例中通過P0組端口的4個引腳來監(jiān)控按鍵K1~K15按鍵,但是需要注意的是,按鍵與單片機(jī)上的引腳之間并非是直接的導(dǎo)線連接,兩者之間還需要設(shè)置一個反向截止器。該按鍵電路中的反向截止器選用二極管,由二極管的正極連接按鍵,二極管的負(fù)極連接單片機(jī)的引腳。每一個按鍵的左側(cè)至少連接一個二極管,按鍵通過二極管與單片機(jī)上P0組端口的其中4個引腳P0.0、P0.1、P0.2和P0.3相連接。各按鍵對應(yīng)的編號用四位二進(jìn)制來表示,因此,根據(jù)各按鍵的二進(jìn)制編號并結(jié)合四位二進(jìn)制的位次,將各按鍵與對應(yīng)二進(jìn)制位次的引腳進(jìn)行連接,即引腳P0.0對應(yīng)四位二進(jìn)制中的第一位(最低位),P0.1對應(yīng)四位二進(jìn)制中的第二位,P0.2對應(yīng)四位二進(jìn)制中的第三位,P0.3對應(yīng)四位二進(jìn)制中的第四位(最高位)。連接時,依據(jù)按鍵的二進(jìn)制編號中所存在的所有“1”對應(yīng)的二進(jìn)制位次進(jìn)行按鍵與引腳之間的連接。例如:對于按鍵K7,其二進(jìn)制編號為0111,在該二進(jìn)制編號0111中,存在三個“1”,且這三個“1”所對應(yīng)的二進(jìn)制位次分別是四位二進(jìn)制的低三位,因此,按鍵K7需要和單片機(jī)中三個引腳進(jìn)行連接,即按鍵K7連接單片機(jī)的引腳P0.0(網(wǎng)絡(luò)標(biāo)號:00)、P0.1(網(wǎng)絡(luò)標(biāo)號:01)和P0.2(網(wǎng)絡(luò)標(biāo)號:02)。

本例中按鍵的排序是采用二進(jìn)制進(jìn)行的布局,按鍵K1對應(yīng)的二進(jìn)制編號為0001,因此,按鍵K1左端通過導(dǎo)線接一個二極管后接到單片機(jī)的引腳P0.0(網(wǎng)絡(luò)標(biāo)號:00)上,其二進(jìn)制轉(zhuǎn)成十進(jìn)制后數(shù)為1;依次類推,按鍵15對應(yīng)的二進(jìn)制編號為1111,因此,按鍵K15左端通過導(dǎo)線分別連接四個二極管后分別接到單片機(jī)的引腳P0.0(網(wǎng)絡(luò)標(biāo)號:00)、P0.1(網(wǎng)絡(luò)標(biāo)號:01)、P0.2(網(wǎng)絡(luò)標(biāo)號:02)和P0.3(網(wǎng)絡(luò)標(biāo)號:03)上,即:按鍵K15對應(yīng)四個高電平,其二進(jìn)制轉(zhuǎn)成十進(jìn)制后數(shù)為15(仿真結(jié)果如圖1所示)。因此,采用四個I/O口,能檢測的按鍵最多是15個,通過將單片機(jī)n個引腳連接按鍵的拓展后,鍵盤電路中包括2n-1個按鍵(1≤n≤8),每個按鍵具有唯一的二進(jìn)制編號;這n個引腳分別對應(yīng)n位二進(jìn)制的位,依據(jù)各按鍵n位二進(jìn)制編號中所有1所在n位二進(jìn)制的位次,將按鍵與單片機(jī)上的相應(yīng)引腳相連接;或者對于某一按鍵來說,該按鍵n位二進(jìn)制編號中所有1所在n位二進(jìn)制的位次,在單片機(jī)中存在相對應(yīng)的引腳,將該按鍵與單片機(jī)中相對應(yīng)的引腳之間通過導(dǎo)線連接,即實現(xiàn)了按鍵與單片機(jī)的連接;按鍵被按下后,與其相連接的導(dǎo)線導(dǎo)通,對應(yīng)引腳呈現(xiàn)高電平,顯示單元在單片機(jī)的作用下,可將按鍵的二進(jìn)制編號所對應(yīng)的十進(jìn)制數(shù)按十六進(jìn)制顯示出來。依照本例中鍵盤電路的設(shè)計方式,二進(jìn)制數(shù)00000000無法檢測,且8位二進(jìn)制數(shù)最多可以表示十進(jìn)制的256,因此,此類型鍵盤電路可以利用單片機(jī)的8個I/O口,實現(xiàn)255個單只按鍵的檢測。

1.2 二極管的應(yīng)用

本例鍵盤電路中的所有按鍵均通過二極管與單片機(jī)的引腳相連接,該二極管的加入使得在某個按鍵按下時,能夠保證與該按鍵相接的I/O口呈現(xiàn)高電平,而其他與該按鍵不相接的I/O口依然是低電平,可以避免一個按鍵被按下,所有I/O口全部接收到1進(jìn)而呈現(xiàn)高電平的情況的發(fā)生。本例在Proteus仿真中采用了二極管實現(xiàn)反向截止,實際運(yùn)用中可以采用其他的元器件,只要在一定電壓內(nèi)的具有反向截止特性即可滿足條件。

1.3 顯示電路

顯示電路以單只數(shù)碼管為核心,采用共陽極連接方式,由單片機(jī)的P2端口的8個引腳完成段碼控制,以十六進(jìn)制形式實現(xiàn)按鍵K1~K15的序號顯示。顯示電路的主要作用是顯示按鍵號,以此測試按鍵排序[6]。如圖1所示,按鍵K15被按下后,數(shù)碼管顯示為F。

2 鍵盤電路軟件設(shè)計

按鍵的檢測通過單片機(jī)引腳的電平變化來確定。需要特別說明的是:在本例中,無按鍵按下時單片機(jī)的P0端口的四個引腳(P0.0、P0.1、P0.2和P0.3)的值為0000,依照本例的按鍵排序方法,按鍵0對應(yīng)的二進(jìn)制編號為0000,對于此種情況,按鍵K0按下前后就無法產(chǎn)生電平變化,故不能用此方法來進(jìn)行按鍵K0的監(jiān)控,同理,八位二進(jìn)制數(shù)中也存在一個無法檢測的二進(jìn)制數(shù)00000000。為此,本例中按鍵排序由K1開始,啟動程序后,顯示電路顯示“0”時代表無鍵按下。以下為判別K1-K15按鍵的C語言部分源程序[7-9]。

void main()

{

P0 = 0x00; //P0口初始化

P1 = 0xff; //P1初始化

num =0;

P2 = shuzi[num];//無按鍵時顯示為0

while(1)

{

if(P0!=0x00&&P0!=0xff)

{

DelayMs(5);

if(P0!=0x00&&P0!=0xff)//延時判斷是否有按鍵按下

{

temp = P0; //P0口狀態(tài)讀取

if(temp%10>=0&&temp%10<=9)

{

num = temp%10; //讀取鍵號0-9

}

switch(temp) //讀取鍵號10-15(顯示為16進(jìn)制A-F)

{

case 0x0a:

num = 10;

break;

case 0x0b:

num = 11;

break;

case 0x0c:

num = 12;

break;

case 0x0d:

num = 13;

break;

case 0x0e:

num = 14;

break;

case 0x0f:

num = 15;

break;

default:;

}

P2 = shuzi[num];// 鍵值顯示

}

}

}

}

根據(jù)上述程序可知在軟件設(shè)計上只需要兩行代碼temp=P0,P2=shuzi[temp],即可實現(xiàn)對15個按鍵的識別與顯示。如果需要增多按鍵,只需要改變對應(yīng)的顯示代碼,但是獲取按鍵的編號仍然只需要一行代碼temp = P0。相比于傳統(tǒng)的方案,大大加快了按鍵的識別及響應(yīng)速度,極大地縮短了所需的代碼,最低只需一行代碼就可以獲得被按下按鍵的具體編號,與掃描式識別相比,效率大大提升。

3 實驗測試

為了檢測優(yōu)化后的鍵盤電路的可靠性、按鍵響應(yīng)速度及延遲時間[10],完成了4×4矩陣鍵盤和優(yōu)化鍵盤電路實物對比測試。在保證按鍵確定按下的情況下對兩種鍵盤電路的按鍵進(jìn)行多次隨機(jī)檢測,以STC89C52單片機(jī)為控制器,在晶振頻率為11.059 2 MHZ的單片機(jī)最小系統(tǒng)下測試[11-12],此時該系統(tǒng)的機(jī)器周期Tcy≈1.085 μs。在單片機(jī)內(nèi)部的定時/計數(shù)器T0工作于方式1的情況下,記錄兩種按鍵在去除軟件消抖時間后的按鍵識別時間所需的定時器計數(shù)個數(shù)。測試結(jié)果表明,優(yōu)化后的鍵盤的多個按鍵識別時間較為穩(wěn)定且約為傳統(tǒng)鍵盤識別時間的1/3,矩陣鍵盤中按鍵識別時間在同一行內(nèi)相同,不同行內(nèi)有一定差別。某次測試結(jié)果如表1所示,需說明表1內(nèi)鍵值K0僅適用于4×4矩陣鍵盤,優(yōu)化鍵盤不存在K0按鍵。

4 結(jié)語

優(yōu)化后的鍵盤電路在充分利用了二極管的單向?qū)ㄐ缘那闆r下,利用單片機(jī)的4個引腳實現(xiàn)了2n-1即15個按鍵(n=4)的控制,大大減少了控制按鍵的I/O的數(shù)量,避免了過多占用單片機(jī)I/O端口資源,硬件電路設(shè)計簡單。借助Proteus仿真軟件及KEIL編寫的C語言程序,以單只發(fā)光二極管顯示了觸發(fā)按鍵的按鍵序號,軟件代碼簡潔,對比傳統(tǒng)的掃描方式按鍵電路,優(yōu)化后的鍵盤電路對按鍵的識別更高效。證明本電路響應(yīng)速度快,擴(kuò)展性強(qiáng),能夠穩(wěn)定可靠地工作。本例方法可適用于按鍵數(shù)量較多且單個控制的工程應(yīng)用。

猜你喜歡
單片機(jī)
基于單片機(jī)的SPWM控制逆變器的設(shè)計與實現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機(jī)在仿真中要注意的幾點問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機(jī)的三維LED點陣設(shè)計
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個全新PIC單片機(jī)系列
基于Proteus的單片機(jī)控制系統(tǒng)的仿真設(shè)計
主站蜘蛛池模板: 一本色道久久88| 亚洲国产成人自拍| 天天色综网| 久久九九热视频| 一本大道视频精品人妻| 亚洲乱伦视频| 午夜福利网址| 国产草草影院18成年视频| 亚洲精品第五页| 日韩AV手机在线观看蜜芽| a毛片免费在线观看| 欧美国产在线精品17p| 国内精品视频在线| 综合亚洲色图| 国产欧美日韩另类| 在线另类稀缺国产呦| 日韩欧美高清视频| 国产欧美性爱网| 丝袜国产一区| 亚洲无卡视频| 久久情精品国产品免费| 热这里只有精品国产热门精品| 国产在线观看精品| 欧美区一区| 免费jjzz在在线播放国产| 亚洲人精品亚洲人成在线| 怡春院欧美一区二区三区免费| 激情亚洲天堂| 国产成人精品免费av| 一本大道无码高清| 成人在线不卡| 一区二区三区四区在线| 亚洲激情99| 一级毛片免费播放视频| 国产精品亚洲综合久久小说| 亚洲一级毛片在线播放| 97se亚洲综合在线天天| 亚洲国内精品自在自线官| 欧美va亚洲va香蕉在线| 在线看免费无码av天堂的| 99久久精品免费看国产电影| 青青草原国产精品啪啪视频| 高h视频在线| 成年人国产视频| 精品视频在线一区| 一级毛片网| 97色婷婷成人综合在线观看| 国产网站免费看| 亚洲国产精品日韩专区AV| 中文精品久久久久国产网址 | 亚洲精品中文字幕无乱码| 男人的天堂久久精品激情| 无码国内精品人妻少妇蜜桃视频| 男人的天堂久久精品激情| 久久精品视频一| 好紧好深好大乳无码中文字幕| 玖玖精品在线| 午夜在线不卡| 免费视频在线2021入口| 国产尤物在线播放| 亚洲青涩在线| 超清无码一区二区三区| 成年人久久黄色网站| 免费激情网址| 秘书高跟黑色丝袜国产91在线| 亚洲人人视频| 又粗又硬又大又爽免费视频播放| 婷婷色一二三区波多野衣| 99热最新在线| 波多野结衣在线一区二区| 亚洲中文字幕23页在线| 国产波多野结衣中文在线播放| 日本免费福利视频| 国产女人在线视频| 日韩在线1| 91精品免费高清在线| 国产在线一区视频| 国产a网站| 国产在线精品99一区不卡| 久久久亚洲国产美女国产盗摄| 欧美一级大片在线观看| 午夜高清国产拍精品|