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

        ?

        帶按鍵的旋轉(zhuǎn)編碼開關(guān)與C8051F020單片機(jī)的接口設(shè)計(jì)

        2015-11-02 06:27:03岳巍李杰文方哲馬讓奎
        關(guān)鍵詞:鍵值手柄電平

        岳巍,李杰,文方哲,馬讓奎

        (陜西寶成航空儀表有限責(zé)任公司,陜西 寶雞 721006)

        帶按鍵的旋轉(zhuǎn)編碼開關(guān)與C8051F020單片機(jī)的接口設(shè)計(jì)

        岳巍,李杰,文方哲,馬讓奎

        (陜西寶成航空儀表有限責(zé)任公司,陜西 寶雞 721006)

        介紹了一種帶按鍵的旋轉(zhuǎn)編碼開關(guān)的使用方法,給出了與C8051F020單片機(jī)的接口電路,以及旋鈕轉(zhuǎn)向判斷和按鍵處理程序。

        旋轉(zhuǎn)編碼開關(guān);單片機(jī);接口

        0 引言

        在單片機(jī)系統(tǒng)的人機(jī)接口設(shè)計(jì)中,我們常用按鍵式鍵盤作為人與設(shè)備進(jìn)行信息交流的主要工具。通過按壓不同的按鍵,進(jìn)行菜單的選擇和數(shù)字的輸入等功能。使用按鍵進(jìn)行信息輸入具有效率高、使用方便等優(yōu)點(diǎn),但也有不足之處。比如要方便地完成數(shù)字的輸入,需要0~9共10個(gè)數(shù)字按鍵和確認(rèn)鍵、刪除鍵等功能按鍵。在單片機(jī)系統(tǒng)中,這種按鍵信息處理電路通常設(shè)計(jì)為矩陣式電路,直接連接到單片機(jī)的I/O端口,以3×4鍵盤為例要占用7個(gè)I/O端口,單片機(jī)通過軟件每隔20ms~50ms對(duì)這些I/O端口進(jìn)行定時(shí)行列掃描,根據(jù)返回的掃描鍵值,判斷是哪一個(gè)按鍵按下。所以使用鍵盤方式具有占用的I/O端口較多,鍵盤掃描程序耗時(shí)較長(zhǎng),占用單片機(jī)資源多的缺點(diǎn)。

        在一些特殊的應(yīng)用場(chǎng)合,如飛機(jī)儀表的面板,因?yàn)槌叽缢?,通常沒有地方安排較多的按鍵,按鍵太小還不利于飛行員的操作,這時(shí)就迫切需要一種體積較小、使用方便的器件來替代按鍵鍵盤實(shí)現(xiàn)信息的輸入功能。帶按鍵的旋轉(zhuǎn)編碼開關(guān)就是這樣一種理想的器件。

        帶按鍵的旋轉(zhuǎn)編碼開關(guān)是將旋轉(zhuǎn)編碼開關(guān)和一個(gè)按鍵集成在一起,通過兩者的配合使用,再結(jié)合相應(yīng)的處理軟件,就可以完成信息的輸入,并且還具有使用快捷、靈活、占用單片機(jī)資源少的優(yōu)點(diǎn)。

        C8051F020單片機(jī)具有100個(gè)引腳,64個(gè)數(shù)字I/O端口,和2路獨(dú)立的12位D/A、4路獨(dú)立的電壓比較器端口。數(shù)字I/O端口可以根據(jù)需要,用軟件對(duì)內(nèi)部的3個(gè)交叉開關(guān)寄存器編程設(shè)置為讀/寫、定時(shí)器、串口、A/ D等多種功能端口,因此該單片機(jī)功能強(qiáng)大,很適合在功能復(fù)雜、需要較多單片機(jī)資源的場(chǎng)合應(yīng)用。

        1 接口電路設(shè)計(jì)

        1.1帶按鍵的旋轉(zhuǎn)編碼開關(guān)工作原理

        帶按鍵的旋轉(zhuǎn)編碼開關(guān)由旋轉(zhuǎn)編碼開關(guān)和按鍵兩部分組成,它包括5個(gè)信號(hào)引腳,分別是編碼開關(guān)輸出端A和B,編碼開關(guān)公共端C,按鍵輸入輸出端S1、S2,如圖1所示。轉(zhuǎn)動(dòng)編碼開關(guān)手柄,編碼開關(guān)輸出端A和 B反復(fù)與公共端C接通、斷開,通過后續(xù)電路分別輸出有一定相位差的脈沖信號(hào),如圖2所示。按下編碼開關(guān)手柄,按鍵輸入輸出端S1、S2接通,松開手柄,輸出端S1、S2斷開。

        圖1 引腳圖

        當(dāng)順時(shí)針轉(zhuǎn)動(dòng)編碼開關(guān)手柄時(shí),輸出端A和B輸出的波形為圖2(a),逆時(shí)針轉(zhuǎn)動(dòng)編碼開關(guān)手柄時(shí),輸出端A和B輸出的波形為圖2(b)。

        圖2 輸出波形圖

        1.2與單片機(jī)接口電路設(shè)計(jì)

        帶按鍵的旋轉(zhuǎn)編碼開關(guān)與單片機(jī)的接口電路如圖3所示。在帶按鍵的旋轉(zhuǎn)編碼開關(guān)的輸出端用3只10k電阻上拉,使得帶按鍵的旋轉(zhuǎn)編碼開關(guān)在旋轉(zhuǎn)、按壓、松開時(shí)能產(chǎn)生高低電平。為了消除開關(guān)信號(hào)波形的干擾和抖動(dòng),使用3只10k電阻和3只10nF電容組成RC濾波電路進(jìn)行濾波,再使用74HC14施密特觸發(fā)器進(jìn)一步改善信號(hào)波形為較為理想的矩形波,以使單片機(jī)能對(duì)信號(hào)可靠采樣。

        圖3 與單片機(jī)接口電路圖

        C8051F020單片機(jī)電源為+3.3V,但I(xiàn)/O端口可以直接和+5V電源電路相接。在本接口電路中,將旋轉(zhuǎn)編碼開關(guān)的輸出端A、B分別與單片機(jī)的P1.0和P1.1相連,按鍵S2端與P1.2相連。

        2 軟件編程

        2.1單片機(jī)端口設(shè)置

        單片機(jī)通過對(duì)交叉開關(guān)寄存器XBR0、XBR1和XBR2相應(yīng)位的設(shè)置來確定各端口的功能。在本接口設(shè)計(jì)中,將與旋轉(zhuǎn)編碼開關(guān)輸出端A相連的P1.0端口設(shè)計(jì)為中斷輸入端/INT0,端口P1.1和P1.2設(shè)置為通用I/O口。此時(shí),XBR1.2應(yīng)置1,XBR1寄存器其余位置0。考慮到已經(jīng)將UART1、UART 2和SDA、SCL總線等特殊功能端口配置到P0口,所以對(duì)交叉開關(guān)設(shè)置為XBR0=0xc1,XBR1=0x04,XBR2=0x04即可滿足要求。

        2.2旋轉(zhuǎn)編碼開關(guān)轉(zhuǎn)向判斷

        單片機(jī)是通過檢測(cè)旋轉(zhuǎn)編碼開關(guān)輸出信號(hào)的狀態(tài)來判斷旋轉(zhuǎn)方向,在程序設(shè)計(jì)中,采用下降沿邊沿觸發(fā)中斷方式,為此需置TCON.0=1。當(dāng)旋轉(zhuǎn)編碼開關(guān)信號(hào)觸發(fā)中斷,則進(jìn)入端口A中斷服務(wù)程序,如果此時(shí)輸出端B信號(hào)為高電平,則為順時(shí)針旋轉(zhuǎn),反之,為逆時(shí)針旋轉(zhuǎn),如圖2所示。中斷服務(wù)程序如下:

        #define TRUE1

        #define FALSE0

        unsigned char xdata Key_direct_R,Key_direct_L;

        unsigned int xdata Time1=0;;

        void INT0_ISR(void)interrupt 0 using 1//中斷服務(wù)程序

        EX0=0;//關(guān)中斷

        EX1=0;

        ET0=0;

        if(Port_B==1)//判斷端口B(P1.1)的電平

        Key_direct_R=TRUE;//順時(shí)針旋轉(zhuǎn)時(shí),Key_direct_R=1

        else

        Key_direct_L=TRUE;//逆時(shí)針旋轉(zhuǎn)時(shí),Key_direct_L=1

        Time1=0;//等待時(shí)間清零

        EX0=1;//開中斷

        EX1=1;

        ET0=1;

        2.3按鍵判斷

        旋轉(zhuǎn)編碼開關(guān)的按鍵的狀態(tài),采用定時(shí)查詢的方式檢測(cè),定時(shí)時(shí)間為35ms,程序采用兩次查詢的按鍵去抖方式。此處提供一經(jīng)過實(shí)際驗(yàn)證的程序如下:

        #define TRUE1

        #define FALSE0

        bit Key=FALSE;

        bit Key_ok=FALSE;

        unsigned char xdata Key_ok=0x00;

        unsigned char xdata KeyData=0x00;

        unsigned char xdata KeyDataSave=0x00;

        void TIMER0()interrupt 1 using 1

        unsigned char Te;

        TF0=0;

        ET0=0;

        EX0=0;

        EX1=0;

        KeyData=0x04;//先將沒有按鍵按下時(shí)KeyData的值存下

        P1=0xff;//向P1發(fā)送0xff測(cè)試電平

        KeyData=P1;//讀取P1的電平

        KeyData&=0x04;//將讀取的P1電平存入KeyData

        if(KeyData!=0x04)//如果有鍵按下KeyData!=0x04時(shí),說明有按鍵按下

        if(KeyDataSave==KeyData)//將按壓后的電平情況存到KeyDataSave

        {//循環(huán)判斷有無鍵按下,Te==1,表示有1個(gè)鍵

        for(Te=0;(Te<1)&&(KeyDataSave!= TabKey[Te]);Te++);

        if(Te==1)//如果查后沒有按鍵按下

        KeyDataSave=0xff;

        Key=FALSE;

        else//如果按鍵按下

        Key=TRUE;

        KeyBuf=Te+1;//存入鍵值

        else//如果鍵未按下,或第二次去抖判斷鍵值與去抖前鍵值不同

        {KeyDataSave=KeyData;//將此次鍵值存下Key=FALSE;//認(rèn)為沒有鍵按下

        else//如果沒有按鍵按下,或是按鍵按下后的松開動(dòng)作,即鍵松開

        if(Key==TRUE)//確認(rèn)是按鍵按下后的松開動(dòng)作

        {Key_ok=TRUE;//對(duì)按鍵結(jié)果做處理,此處僅對(duì)Key_ok置1,表示“確定”KeyDataSave=0xff;//一次按鍵動(dòng)作處理完畢,重置KeyDataSave的狀態(tài)Key=FALSE;//此次按鍵動(dòng)作處理完畢,將Key設(shè)置為FALSE,即無鍵按下

        TH0=0x00;

        TL0=0x00;

        ET0=1;

        EX0=1;

        EX1=1;

        2.4數(shù)據(jù)處理

        帶按鍵的旋轉(zhuǎn)編碼開關(guān)的旋轉(zhuǎn)方向和按鍵狀態(tài)確定后,即可在主程序main()中進(jìn)行相應(yīng)的處理。以0~9999m的飛機(jī)高度數(shù)值設(shè)定為例,用帶按鍵的旋轉(zhuǎn)編碼開關(guān)可對(duì)個(gè)位、十位、百位、千位上的數(shù)值分別設(shè)定。按壓旋鈕時(shí),按鍵起作用,循環(huán)選擇個(gè)位、十位、百位、千位;旋轉(zhuǎn)旋鈕時(shí),數(shù)值在0~9內(nèi)循環(huán)增加或減小。主程序的流程圖如圖4所示。

        圖4 主程序流程圖

        3 結(jié)束語

        本文對(duì)一種帶按鍵的旋轉(zhuǎn)編碼開關(guān)與C8051F020單片機(jī)的接口電路的軟硬件設(shè)計(jì)進(jìn)行了說明,給出了具體的接口電路以及單片機(jī)的端口設(shè)置、編碼器正反轉(zhuǎn)判斷、按鍵處理等程序代碼。帶按鍵的旋轉(zhuǎn)編碼器開關(guān)的應(yīng)用,為單片機(jī)系統(tǒng)的信息輸入提供了一種新的方法,減少了單片機(jī)的資源占用,另外接口程序編程簡(jiǎn)單、易用,降低了人機(jī)接口設(shè)計(jì)的復(fù)雜程度,有利于縮短設(shè)計(jì)的周期,降低設(shè)計(jì)和制造成本。經(jīng)實(shí)踐驗(yàn)證,該接口電路及程序工作穩(wěn)定、可靠,完全滿足實(shí)際使用要求,有一定的推廣價(jià)值。

        [1]何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京航空航天大學(xué)出版社,1990.

        Interface of Rotary Encoder Switch with a Button Based on C8051 MCU

        YUE Wei,LI Jie,WEN Fang-Zhe,MA Rang-Kui
        (Shaanxi Baocheng Aviation Instrument Co.,Ltd.,Baoji Shaanxi 721006,China)

        A rotary encode switch with a button is introduced.Interface based on C8051F020 and program code of the rotate direction and button press determine are given.Practical application shows that the interfacing circuit is stable,effective and reliable.

        rotary encode switch;MCU;inerface

        TB47

        A

        10.3969/j.issn.1002-6673.2015.02.043

        1002-6673(2015)02-113-03

        2015-03-14

        岳?。?966-),男,高級(jí)工程師。研究方向:現(xiàn)從事機(jī)載儀表技術(shù)方面的設(shè)計(jì)與研究工作;李杰(1981-),男,工程師。研究方向:現(xiàn)從事機(jī)載儀表技術(shù)方面的設(shè)計(jì)與研究工作。

        猜你喜歡
        鍵值手柄電平
        基于PLC控制的手柄座鉆孔攻絲一體機(jī)的研發(fā)
        非請(qǐng)勿進(jìn) 為注冊(cè)表的重要鍵值上把“鎖”
        一種多功能無線手柄的設(shè)計(jì)
        電子制作(2018年11期)2018-08-04 03:25:44
        一鍵直達(dá) Windows 10注冊(cè)表編輯高招
        電腦愛好者(2017年9期)2017-06-01 21:38:08
        NPC五電平Z源逆變器的設(shè)計(jì)研究
        基于三電平光伏并網(wǎng)逆變器控制系統(tǒng)的研究與實(shí)踐
        為什么廚具的手柄不是金屬的?
        銀行家
        基于NPC三電平變換器的STATCOM研究
        一種多電平逆變器及其并網(wǎng)策略
        天天摸日日摸狠狠添| 99久久婷婷国产一区| 伦伦影院午夜理论片| 少妇性荡欲视频| 无码一级视频在线| 国产av一区二区三区国产福利| 日韩av天堂一区二区| 亚洲精品色婷婷在线影院| 一本大道色婷婷在线| 囯产精品无码一区二区三区AV| 91久久大香伊蕉在人线国产| 亚洲a∨无码精品色午夜| 国产精品jizz视频| 亚洲公开免费在线视频| 久久av一区二区三区黑人| 永久天堂网av手机版| 免费观看又污又黄的网站| 国产丝袜免费精品一区二区| 日本一区二区三区丰满熟女| 国产精品无码一区二区三区电影 | 亚洲午夜久久久精品影院| 人妻av中文字幕无码专区| 亚洲AV无码久久精品成人| 亚洲国产综合精品一区| 特级做a爰片毛片免费看| 玩弄人妻少妇500系列网址| 久久久久久人妻一区二区无码Av| 麻豆精品一区二区三区| 欧美人伦禁忌dvd放荡欲情| 亚洲三级黄色| 亚洲成人免费久久av| 夜夜高潮夜夜爽夜夜爱爱一区| 欧产日产国产精品精品| 国产激情一区二区三区成人免费| 国产激情一区二区三区成人| 国模吧无码一区二区三区| 国产一级农村无码| 亚洲av中文字字幕乱码| 强奸乱伦影音先锋| 亚洲精品无码久久久久sm| 一本色道久久综合狠狠躁中文|