亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2022-04-28 08:53:14郭弘澤陳麗霞楊建利
        黑龍江科學(xué) 2022年8期
        關(guān)鍵詞:二進(jìn)制二極管按鍵

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

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

        0 引言

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

        1 硬件電路設(shè)計(jì)

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

        圖1 鍵盤(pán)電路仿真圖Fig.1 Keyboard circuit simulation diagram

        1.1 鍵盤(pán)電路

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

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

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

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

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

        1.3 顯示電路

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

        2 鍵盤(pán)電路軟件設(shè)計(jì)

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

        void main()

        {

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

        P1 = 0xff; //P1初始化

        num =0;

        P2 = shuzi[num];//無(wú)按鍵時(shí)顯示為0

        while(1)

        {

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

        {

        DelayMs(5);

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

        {

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

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

        {

        num = temp%10; //讀取鍵號(hào)0-9

        }

        switch(temp) //讀取鍵號(hào)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è)計(jì)上只需要兩行代碼temp=P0,P2=shuzi[temp],即可實(shí)現(xiàn)對(duì)15個(gè)按鍵的識(shí)別與顯示。如果需要增多按鍵,只需要改變對(duì)應(yīng)的顯示代碼,但是獲取按鍵的編號(hào)仍然只需要一行代碼temp = P0。相比于傳統(tǒng)的方案,大大加快了按鍵的識(shí)別及響應(yīng)速度,極大地縮短了所需的代碼,最低只需一行代碼就可以獲得被按下按鍵的具體編號(hào),與掃描式識(shí)別相比,效率大大提升。

        3 實(shí)驗(yàn)測(cè)試

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

        4 結(jié)語(yǔ)

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

        猜你喜歡
        二進(jìn)制二極管按鍵
        用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
        基于有限狀態(tài)機(jī)的按鍵檢測(cè)程序設(shè)計(jì)
        電子制作(2021年3期)2021-06-16 03:14:26
        有趣的進(jìn)度
        二進(jìn)制在競(jìng)賽題中的應(yīng)用
        一種多方向?qū)Ч獍存I結(jié)構(gòu)設(shè)計(jì)
        電子制作(2016年1期)2016-11-07 08:43:05
        二極管及其典型應(yīng)用電路仿真測(cè)試
        電子制作(2016年19期)2016-08-24 07:49:58
        Diodes超速開(kāi)關(guān)二極管提供超低漏電流
        PIN二極管限幅器的電磁脈沖損傷特性試驗(yàn)
        有機(jī)發(fā)光二極管中三重態(tài)激子的單重態(tài)轉(zhuǎn)換
        按鍵的多種狀態(tài)檢測(cè)及消抖處理方法
        家電科技(2013年4期)2013-07-09 10:55:08
        日本中文一区二区在线| 黄视频国产| 91精品啪在线观看国产色| 性色av手机在线观看| 人妖一区二区三区视频| 国产人妻大战黑人20p| 国产精品卡一卡二卡三| 99久久精品一区二区三区蜜臀| 国产精品一区又黄又粗又猛又爽| 亚洲天堂二区三区三州| 97在线观看视频| 国产中出视频| 中文字幕在线一区乱码| 极品美女调教喷水网站| 性按摩xxxx在线观看| 久久久久麻豆v国产精华液好用吗| 亚洲av成人在线网站| 深夜日韩在线观看视频| 性高朝久久久久久久3小时| 国产丝袜视频一区二区三区| 免费无码又爽又刺激高潮的视频网站| 狼人狠狠干首页综合网| 国产激情视频免费在线观看| 亚洲熟女乱色综合亚洲av| 日本一本久道| 亚洲性码不卡视频在线| 亚洲午夜狼人综合影院| 乌克兰粉嫩xxx极品hd| 国产免费人成视频在线播放播| 亚洲精品一区二区三区麻豆| 粉嫩av国产一区二区三区 | 久久亚洲aⅴ精品网站婷婷| 国产成人精品久久二区二区91 | 国产精品美女久久久久av福利| 国产精品高潮呻吟av久久无吗 | 精品亚洲在线一区二区| 亚洲国产美女精品久久久久∴| 无码aⅴ在线观看| 中文字幕五月久久婷热| 亚洲一区二区三区乱码在线中国 | 亚洲欧洲日产国码av系列天堂|