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

        ?

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

        2015-11-02 06:27:03岳巍李杰文方哲馬讓奎
        關(guān)鍵詞:單片機(jī)設(shè)計(jì)

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

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

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

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

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

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

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

        0 引言

        在單片機(jī)系統(tǒng)的人機(jī)接口設(shè)計(jì)中,我們常用按鍵式鍵盤(pán)作為人與設(shè)備進(jìn)行信息交流的主要工具。通過(guò)按壓不同的按鍵,進(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鍵盤(pán)為例要占用7個(gè)I/O端口,單片機(jī)通過(guò)軟件每隔20ms~50ms對(duì)這些I/O端口進(jìn)行定時(shí)行列掃描,根據(jù)返回的掃描鍵值,判斷是哪一個(gè)按鍵按下。所以使用鍵盤(pán)方式具有占用的I/O端口較多,鍵盤(pán)掃描程序耗時(shí)較長(zhǎng),占用單片機(jī)資源多的缺點(diǎn)。

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

        帶按鍵的旋轉(zhuǎn)編碼開(kāi)關(guān)是將旋轉(zhuǎn)編碼開(kāi)關(guān)和一個(gè)按鍵集成在一起,通過(guò)兩者的配合使用,再結(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è)交叉開(kāi)關(guān)寄存器編程設(shè)置為讀/寫(xiě)、定時(shí)器、串口、A/ D等多種功能端口,因此該單片機(jī)功能強(qiáng)大,很適合在功能復(fù)雜、需要較多單片機(jī)資源的場(chǎng)合應(yīng)用。

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

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

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

        圖1 引腳圖

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

        圖2 輸出波形圖

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

        帶按鍵的旋轉(zhuǎn)編碼開(kāi)關(guān)與單片機(jī)的接口電路如圖3所示。在帶按鍵的旋轉(zhuǎn)編碼開(kāi)關(guān)的輸出端用3只10k電阻上拉,使得帶按鍵的旋轉(zhuǎn)編碼開(kāi)關(guān)在旋轉(zhuǎn)、按壓、松開(kāi)時(shí)能產(chǎn)生高低電平。為了消除開(kāi)關(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)編碼開(kāi)關(guān)的輸出端A、B分別與單片機(jī)的P1.0和P1.1相連,按鍵S2端與P1.2相連。

        2 軟件編程

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

        單片機(jī)通過(guò)對(duì)交叉開(kāi)關(guān)寄存器XBR0、XBR1和XBR2相應(yīng)位的設(shè)置來(lái)確定各端口的功能。在本接口設(shè)計(jì)中,將與旋轉(zhuǎn)編碼開(kāi)關(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總線(xiàn)等特殊功能端口配置到P0口,所以對(duì)交叉開(kāi)關(guān)設(shè)置為XBR0=0xc1,XBR1=0x04,XBR2=0x04即可滿(mǎn)足要求。

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

        單片機(jī)是通過(guò)檢測(cè)旋轉(zhuǎn)編碼開(kāi)關(guān)輸出信號(hào)的狀態(tài)來(lái)判斷旋轉(zhuǎn)方向,在程序設(shè)計(jì)中,采用下降沿邊沿觸發(fā)中斷方式,為此需置TCON.0=1。當(dāng)旋轉(zhuǎn)編碼開(kāi)關(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;//開(kāi)中斷

        EX1=1;

        ET0=1;

        2.3按鍵判斷

        旋轉(zhuǎn)編碼開(kāi)關(guān)的按鍵的狀態(tài),采用定時(shí)查詢(xún)的方式檢測(cè),定時(shí)時(shí)間為35ms,程序采用兩次查詢(xún)的按鍵去抖方式。此處提供一經(jīng)過(guò)實(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;//先將沒(méi)有按鍵按下時(shí)KeyData的值存下

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

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

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

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

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

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

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

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

        KeyDataSave=0xff;

        Key=FALSE;

        else//如果按鍵按下

        Key=TRUE;

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

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

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

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

        if(Key==TRUE)//確認(rèn)是按鍵按下后的松開(kāi)動(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,即無(wú)鍵按下

        TH0=0x00;

        TL0=0x00;

        ET0=1;

        EX0=1;

        EX1=1;

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

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

        圖4 主程序流程圖

        3 結(jié)束語(yǔ)

        本文對(duì)一種帶按鍵的旋轉(zhuǎn)編碼開(kāi)關(guān)與C8051F020單片機(jī)的接口電路的軟硬件設(shè)計(jì)進(jìn)行了說(shuō)明,給出了具體的接口電路以及單片機(jī)的端口設(shè)置、編碼器正反轉(zhuǎn)判斷、按鍵處理等程序代碼。帶按鍵的旋轉(zhuǎn)編碼器開(kāi)關(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)定、可靠,完全滿(mǎ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

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

        猜你喜歡
        單片機(jī)設(shè)計(jì)
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機(jī)的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機(jī)的便捷式LCF測(cè)量?jī)x
        電子制作(2019年9期)2019-05-30 09:42:02
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        小議PLC與單片機(jī)之間的串行通信及應(yīng)用
        電子制作(2018年12期)2018-08-01 00:48:04
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專(zhuān)
        Coco薇(2017年5期)2017-06-05 08:53:16
        基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
        電子制作(2017年19期)2017-02-02 07:08:27
        中国xxx农村性视频| 亚洲一区二区三区重口另类| 国产乱人伦偷精品视频免观看| 中文字幕人妻无码一夲道| 93精91精品国产综合久久香蕉| 久久AⅤ天堂Av无码AV| 丁香婷婷六月综合缴清| 国产三级精品三级| 女同久久精品国产99国产精品| 亚洲成aⅴ人片在线观看天堂无码| 久久精品国产一区老色匹| 久久精品中文字幕无码绿巨人| 亚洲日韩精品欧美一区二区| 国产成人一区二区三区视频免费蜜| 日产一区一区三区区别| 精品精品国产高清a毛片| 中文字幕无码av激情不卡| 午夜福利不卡无码视频| 久久一区二区av毛片国产| 亚洲人交乣女bbw| 中文字幕乱码日本亚洲一区二区| 丝袜美腿一区二区三区| 玩弄放荡人妻一区二区三区 | 国产人妖在线免费观看| 国产让女高潮的av毛片| 亚洲精品一区久久久久久| 无码国产精品第100页| 日本精品少妇一区二区| 久久久久亚洲av成人网人人软件| 人妻被黑人粗大的猛烈进出| 亚洲国产精品久久久久婷婷软件| 亚洲国产天堂久久综合网| 亚洲精品www久久久| 欧美成人在线A免费观看| 91精品蜜桃熟女一区二区| 中文字幕亚洲欧美在线不卡| 免费黄色电影在线观看| 激情亚洲综合熟女婷婷| 国产av一区二区三区性入口| 亚洲av之男人的天堂网站| 国产午夜激无码AV毛片不卡|