本發(fā)明涉及按鍵,尤其涉及一種多位按鍵的鍵盤電路及鍵值讀取方法。
背景技術(shù):
1、簡(jiǎn)單的按鍵一般直接采用i/o口進(jìn)行按鍵設(shè)計(jì),當(dāng)按鍵按下時(shí),使得i/o口的電平發(fā)生變化,例如,i/o口全部進(jìn)行上拉處理,按鍵的一端是接地處理,當(dāng)按下按鍵時(shí),就能把i/o口的電平由高電平拉為低電平,cpu掃描i/o口就能讀到相應(yīng)的i/o口電平,確認(rèn)是哪個(gè)按鍵被按下。
2、目前,電力產(chǎn)品上由于按鍵數(shù)量均比較少,一般有兩種方式來(lái)實(shí)現(xiàn),第一種方式是采用ad采樣來(lái)讀取按鍵值,鍵盤利用ad采樣的原理,每一個(gè)按鍵按下,ad采樣的電壓都會(huì)不一樣,從而區(qū)分按下的是哪一個(gè)按鍵,此種方式的特點(diǎn)是按鍵的數(shù)量由ad采樣的精度決定,也即cpu所攜帶的ad的位數(shù);第二種是采用i/o口直接按下按鍵,按鍵按下改變i/o口的電平,cpu讀取i/o口的值,此種方式簡(jiǎn)單直接,但占用的i/o口資源比較多,一個(gè)按鍵占用一個(gè)i/o口,如申請(qǐng)?zhí)枮?01721685645.9的專利文獻(xiàn)公開(kāi)一種電容式感應(yīng)按鍵電路?,F(xiàn)在大量使用的按鍵均為第二種方式,通過(guò)i/o口讀取鍵值,使用幾個(gè)按鍵就需要設(shè)計(jì)相同數(shù)量的i/o口,cpu定時(shí)對(duì)各個(gè)i/o口進(jìn)行掃描讀取鍵值,在使用的按鍵較多時(shí),如20位按鍵,則會(huì)占用大量的i/o口,也即會(huì)用到20個(gè)i/o口資源,這樣極大的浪費(fèi)了cpu的i/o口資源,同時(shí)采用掃描的方式,掃描時(shí)間長(zhǎng)且按鍵響應(yīng)時(shí)間長(zhǎng),也極大的浪費(fèi)了cpu的資源。因此,亟待提出一種多位按鍵的鍵盤電路及鍵值讀取方法,解決現(xiàn)有鍵盤電路cpu的i/o口資源占用高以及鍵值讀取響應(yīng)慢的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的主要目的是提出一種多位按鍵的鍵盤電路及鍵值讀取方法,旨在解決現(xiàn)有鍵盤電路cpu的i/o口資源占用高以及鍵值讀取響應(yīng)慢的技術(shù)問(wèn)題。
2、為實(shí)現(xiàn)上述目的,本發(fā)明提供一種多位按鍵的鍵盤電路,其中,所述多位按鍵的鍵盤電路包括:
3、i/o口擴(kuò)展電路、按鍵電路和對(duì)外接口電路;
4、所述i/o口擴(kuò)展電路分別與所述按鍵電路和對(duì)外接口電路連接;所述i/o口擴(kuò)展電路還與cpu的i/o口連接;
5、所述i/o口擴(kuò)展電路用于將cpu的i/o口進(jìn)行擴(kuò)展,以及用于獲取按鍵電路的按鍵信號(hào),并將所述按鍵信號(hào)通過(guò)i/o口傳輸至cpu;所述i/o口擴(kuò)展電路至少擴(kuò)展出兩組或兩組以上的并行輸入、輸出的i/o口;
6、所述按鍵電路用于采集按鍵信號(hào),并將按鍵信號(hào)傳輸至i/o口擴(kuò)展電路。
7、優(yōu)選方案之一,所述i/o口擴(kuò)展電路包括擴(kuò)展芯片d2;
8、所述擴(kuò)展芯片d2的1引腳與cpu的中斷接口連接;
9、所述擴(kuò)展芯片d2的2、3、12、21引腳接地;
10、所述擴(kuò)展芯片d2的4、5、6、7引腳與鍵盤電路的輸出端連接;
11、所述擴(kuò)展芯片d2的16、17、18、19、20引腳與鍵盤電路的輸入端連接;
12、所述擴(kuò)展芯片d2的22、23引腳均分別與第二上拉電路和對(duì)外接口電路連接;
13、所述擴(kuò)展芯片d2的24引腳與第一保護(hù)電路連接。
14、優(yōu)選方案之一,所述第一保護(hù)電路包括電容c1、tvs管v1、雙向防靜電管d1;
15、所述電容c1的一端分別與擴(kuò)展芯片d2的24引腳以及電源端連接,所述電容c1的另一端分別與雙向防靜電管d1、tvs管v1以及地端連接,所述雙向防靜電管d1以及tvs管v1的另一端與電源端連接。
16、優(yōu)選方案之一,所述第二上拉電路包括電阻r6和電阻r7;所述電阻r6的一端分別與電阻r7以及電源端連接,所述電阻r6的另一端與擴(kuò)展芯片d2的23引腳連接,所述電阻r7的另一端與擴(kuò)展芯片d2的22引腳連接。
17、優(yōu)選方案之一,所述按鍵電路包括第一上拉電路、多位按鍵電路和第三保護(hù)電路;所述第一上拉電路的一端與電源端連接,所述第一上拉電路的另一端與多位按鍵電路連接,所述多位按鍵電路分別與i/o口擴(kuò)展電路和第三保護(hù)電路連接,所述第三保護(hù)電路的另一端接地。
18、優(yōu)選方案之一,所述多位按鍵電路采用m×n的矩陣式多位按鍵電路;其中,m為按鍵電路中按鍵的行數(shù),1<m≤8,n為按鍵電路中按鍵的列數(shù),1<n≤8。
19、優(yōu)選方案之一,所述多位按鍵電路采用5×4的矩陣式多位按鍵電路;
20、所述5×4的矩陣式多位按鍵電路包括按鍵k1、按鍵k2、...、按鍵k20;
21、所述按鍵k1、按鍵k2、...、按鍵k20的1、3引腳均分別與第一上拉電路、第三保護(hù)電路和i/o口擴(kuò)展電路連接,所述按鍵k1、按鍵k2、...、按鍵k20的2、4引腳與i/o口擴(kuò)展電路連接。
22、優(yōu)選方案之一,所述第三保護(hù)電路包括電容c2;所述電容c2的一端分別與i/o口擴(kuò)展電路和多位按鍵電路連接,所述電容c2的另一端接地。
23、優(yōu)選方案之一,所述對(duì)外接口電路包括插頭xs29;
24、所述插頭xs29的1引腳與第二保護(hù)電路連接;所述第二保護(hù)電路包括包括電容c6、tvs管v2和雙向防靜電管d3;
25、所述電容c6的一端分別與插頭xs29的1引腳、電源端、雙向防靜電管d3以及tvs管v2連接,所述雙向防靜電管d3、電容c6以及tvs管v2的另一端接地;
26、所述插頭xs29的2、3、4引腳與i/o口擴(kuò)展電路連接;
27、所述插頭xs29的5引腳接地。
28、一種包括所述的一種多位按鍵的鍵盤電路的鍵值讀取方法,包括以下步驟:
29、s1、初始化i/o口擴(kuò)展電路的擴(kuò)展芯片d2;
30、s2、配置擴(kuò)展芯片d2的輸入口和輸出口,將按鍵電路的行信號(hào)row_0、row_1、...、row_m-1全部寫為0,定時(shí)讀取按鍵電路的列信號(hào)col_0、col_1、...、col_n-1,若存在某一按鍵被按下,則存在col_y=0,此時(shí)i/o口擴(kuò)展電路輸出中斷信號(hào),并記錄列信號(hào)中y的值;
31、其中,row_m-1為第m行按鍵的行信號(hào),m為按鍵電路中按鍵的行數(shù),1<m≤8,col_n-1為第n列按鍵的列信號(hào),n為按鍵電路中按鍵的列數(shù),1<n≤8,col_y為第y列按鍵的列信號(hào),1<y≤8;
32、s3、cpu進(jìn)入中斷服務(wù)程序,對(duì)擴(kuò)展芯片d2的進(jìn)行操作,具體為:將按鍵電路的行信號(hào)逐個(gè)賦值為1,同時(shí),讀取列信號(hào)col_y的值,若列信號(hào)col_y的值為1,則記錄此時(shí)按鍵的行數(shù)和列數(shù),記為被按下的按鍵的坐標(biāo)。
33、本發(fā)明的上述技術(shù)方案中,該多位按鍵的鍵盤電路包括:i/o口擴(kuò)展電路、按鍵電路和對(duì)外接口電路;所述i/o口擴(kuò)展電路分別與所述按鍵電路和對(duì)外接口電路連接;所述i/o口擴(kuò)展電路還與cpu的i/o口連接;所述i/o口擴(kuò)展電路用于將cpu的i/o口進(jìn)行擴(kuò)展,以及用于獲取按鍵電路的按鍵信號(hào),并將所述按鍵信號(hào)通過(guò)i/o口傳輸至cpu;所述i/o口擴(kuò)展電路至少擴(kuò)展出兩組或兩組以上的并行輸入、輸出的i/o口;所述按鍵電路用于采集按鍵信號(hào),并將按鍵信號(hào)傳輸至i/o口擴(kuò)展電路。本發(fā)明解決了現(xiàn)有鍵盤電路cpu的i/o口資源占用高以及鍵值讀取響應(yīng)慢的技術(shù)問(wèn)題。
34、在本發(fā)明中,通過(guò)i/o口擴(kuò)展電路直接對(duì)cpu上的i/o口直接進(jìn)行擴(kuò)展,可拓展出兩組i/o口,并通過(guò)兩組i/o口構(gòu)建按鍵電路,僅占用cpu的一個(gè)i/o口和一個(gè)中斷接口,大幅度降低了占用cpu的i/o口的數(shù)量,減小了cpu的資源消耗,縮短了按鍵的響應(yīng)時(shí)間;同時(shí),通過(guò)根據(jù)i/o口擴(kuò)展電路的中斷信號(hào)讀取按鍵電路的按鍵鍵值,從而實(shí)時(shí)獲取具體是哪一個(gè)按鍵被按下,降低了cpu的開(kāi)銷。