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

        ?

        脈寬編碼式按鍵接口的設(shè)計

        2004-03-14 21:32:10郝麗宏
        電子世界 2004年2期
        關(guān)鍵詞:單片機

        郝麗宏 林 凌 李 剛

        傳統(tǒng)的鍵盤接口方式,鍵盤編碼控制芯片都要占用單片機兩根以上的I/O口線,且專用鍵盤編碼控制芯片的價格不菲。本文提出了脈寬編碼式按鍵的設(shè)計思想,并給出了已經(jīng)調(diào)試通過的一種脈寬編碼式按鍵的具體設(shè)計方案。

        1.設(shè)計思想及幾種典型的硬件電路

        脈寬編碼式按鍵的設(shè)計靈感源于兩方面:一是單片機具備測量脈沖寬度的能力。具體地說,單片機的定時器/計數(shù)器在方式寄存器TMOD的GATE位為1時可測定外部中斷引腳上高電平的持續(xù)時間;二是從電路實現(xiàn)角度講,可以方便地產(chǎn)生具有不同脈沖寬度的脈沖。這兩個方面是實現(xiàn)脈寬編碼式按鍵設(shè)計的理論基礎(chǔ)。下面給出幾種實用的產(chǎn)生脈沖的硬件電路:

        圖1是采用六施密特觸發(fā)反相器74HC14構(gòu)成的振蕩器,只需要一只電阻和一只電容就可以構(gòu)成一個最簡單的多諧振蕩器。如果系統(tǒng)中不需要74HC14片上的其它5個反相器,可以采用只有一個施密特觸發(fā)反相器的芯片。

        圖2 所示為采用運放實現(xiàn)的低成本電路,采用線性積分電路構(gòu)成多諧振蕩器, 工藝簡單,易于實現(xiàn)。

        只要把上述電路中的電阻RK以圖3中所示的電路取代,就可作為脈寬編碼式按鍵的接口電路,脈寬大小取決于電阻值。

        圖4所示為采用片內(nèi)帶振蕩器的14位二進制串行計數(shù)器74HC4060實現(xiàn)的脈寬編碼式鍵盤接口電路原理圖。由于采用外接石英晶體振蕩器,所以分頻器的輸出脈寬是十分準確的,不需要任何調(diào)試就能夠工作。但由于74HC4060輸出端口有限,因而該電路適合于需要按鍵數(shù)量較少的場合,當然,只要在編程上稍下功夫,采用軟按鍵技術(shù)(即將菜單和按鍵組合在一起的用戶界面技術(shù))就可以實現(xiàn)多個按鍵的功能。

        需要說明的是:與單片機的時鐘電路相似,也可以不用內(nèi)部振蕩器,而在11腳接入外部時鐘,10腳懸空。這時可以把74HC4060換成74HC4020或者74HC4040,如圖5為采用外部時鐘由74HC4040實現(xiàn)的脈寬編碼式鍵盤接口電路。

        為了進一步降低成本,并提高測量脈寬的精度和穩(wěn)定性,可以將單片機的系統(tǒng)時鐘分頻后提供給脈寬編碼式鍵盤接口電路作輸入脈沖,還可以采用外部時鐘振蕩器同時作為單片機的系統(tǒng)時鐘和脈寬編碼式鍵盤接口電路的時鐘源。需要注意的是,單片機能夠測量的最高頻率不能超過其系統(tǒng)時鐘的十二分之一。所以后者(采用外部時鐘振蕩器同時作為單片機的系統(tǒng)時鐘和脈寬編碼式鍵盤接口電路的時鐘源)在實際使用時只能放棄幾個按鍵不用,如圖5中的K1~K4。

        2.程序設(shè)計

        根據(jù)脈寬編碼式按鍵的設(shè)計思想,各脈寬編碼式按鍵接口電路圖中的引出端(TO)要與單片機INT0/INT1引腳相連。在保證單片機可分辨各按鍵脈寬的情況下,其它工作就留給程序設(shè)計了。

        基于模塊化編程思想,按鍵程序應(yīng)當獨立于程序中其它功能模塊,負責查詢按鍵狀態(tài)(有效按下、已釋放或未按下)并根據(jù)按鍵特征對按鍵編碼(賦予不同按鍵不同的鍵值),以便于主程序區(qū)分各個按鍵而轉(zhuǎn)入相應(yīng)鍵處理子程序中。下面以用51單片機定時器T0測INT0腳輸入脈沖寬度為例,介紹具體的編程思路。

        首先,主程序中要先進行初始化:設(shè)置定時器/計數(shù)器T0工作在16位定時器模式,打開選通門以使INT0引腳電平和TR0一起參與對T0/T1的控制,設(shè)置外部中斷INT0為邊沿觸發(fā)方式等等,具體程序見本刊網(wǎng)站。

        然后編制外部中斷服務(wù)程序。下降沿觸發(fā)中斷,進入中斷服務(wù)程序后:(1)保護現(xiàn)場;(2)關(guān)閉定時器和外部中斷以免低電平時間太短時未出中斷又繼續(xù)計數(shù)或者再次觸發(fā)中斷;(3)然后讀取定時器時間。由于T0在GATE=1時是啟動定時器有效(TR0=1)并且INT0引腳為高電平時才工作,所以中斷觸發(fā)時定時器時間(TH0、TL0)恰好就是之前INT0腳脈沖的寬度;(4)根據(jù)TH0、TL0判斷出哪個按鍵被按下,賦鍵值;(5)把定時器TH0、TL0清零;(5)判斷此時INT0引腳是不是低電平,是則啟動定時器、使能中斷,不是則等待。這樣做是為了避免出現(xiàn)因為此時INT0引腳已經(jīng)是高電平而一旦啟動了定時器(TR0=1)它就開始計時以至于下次中斷得到的定時器時間(TH0、TL0)不真實;(6)恢復(fù)現(xiàn)場,中斷返回。

        步驟4中對按鍵的區(qū)別取決于具體電路,如圖1、圖2結(jié)合圖3所示的電路輸出的脈寬是等差的,而圖4、5、6是等比的。前者在單片機所直接測量的范圍內(nèi)可以有較多的按鍵,但脈寬的精度較低,而后者的鍵值有限,少于16位鍵,但脈寬(鍵值)測量精度較高,特別是與單片機采用同一時鐘源時,可以認為沒有誤差。因而這兩類的鍵值處理程序略有不同:雖然都需要允許脈寬有一定的范圍,但前者的程序要復(fù)雜一些,去判定是否落在一個給定的誤差范圍內(nèi);后者由于誤差較小,而鍵值間距較大,可以簡單地按“位”判斷即可。下面舉例說明這兩種典型情況下的編程:

        假定有255個鍵,通過適當?shù)膮?shù)設(shè)置使K255按下時脈寬等于51單片機的256個指令周期(系統(tǒng)時鐘頻率為12MHz時一個指令周期等于1ms),K254按下時脈寬等于512個指令周期……,K1按下時脈寬等于65280個指令周期,相鄰兩鍵脈寬的差值為256個指令周期。按照上述的設(shè)計,脈寬比較時只需比較定時器高位字節(jié)即可。由于脈寬最小為256μs,和鍵盤電路的輸出脈沖基本上為50%的占空比,所以,在鍵盤電路的輸出低電平期間完全可以完成鍵值(脈寬)處理程序的執(zhí)行,因而可以把鍵值(脈寬)處理程序放在中斷服務(wù)子程序中執(zhí)行而不會影響脈寬的測量。鍵值有效時設(shè)置標志位KF0=1。假定等比鍵值的鍵盤接口電路有8個按鍵,并使得脈寬最小值為256個指令周期,相鄰分布。等差鍵值(脈寬)及等比鍵值(脈寬)的處理程序見本刊網(wǎng)站。

        以上介紹的6個步驟是最基本的操作,還不足以保證按鍵信息的有效性。由于按鍵是利用機械觸點的合、斷作用,因此,鍵的按下與抬起都會有10~20ms的抖動毛刺存在。為了獲取穩(wěn)定的按鍵信息,必須去除抖動影響,這也是按鍵處理的重要環(huán)節(jié)。去抖動的方法有硬件、軟件兩種。傳統(tǒng)按鍵接口電路通常用判斷口線電平來確定按鍵被按下與否,所以最常用的去抖動方法是一旦檢測到按鍵可能被按下就先延時10~20ms然后再讀口線狀態(tài)確定按下與否以及哪個鍵被按下。類似地,按鍵釋放與否也是在執(zhí)行完相應(yīng)鍵功能子程序后讀取口線狀態(tài)來確定。

        在脈寬編碼式按鍵電路中抖動表現(xiàn)為脈沖寬度的不一致,因而去抖動的方法是在中斷服務(wù)程序中判斷此次測得的定時器時間(TH0、TL0)是否與上一次相等,相等則有效,不等則認為是干擾或者原按鍵已經(jīng)釋放而新的按鍵被按下,更新定時器時間暫存單元。為了提高測量精度,設(shè)定計數(shù)器N,若連續(xù)n次測得的定時器時間(TH0、TL0)都相等,則認為按鍵有效,計數(shù)器N清零、賦鍵值、按鍵有效標志置1;若不足n次就發(fā)生變化,則認為按鍵無效,清空按鍵有效標志。需要注意的是,要允許一定的測量誤差存在,只要不影響按鍵的識別即可。

        3.一個已經(jīng)調(diào)試通過的應(yīng)用實例

        筆者設(shè)計了圖6所示的應(yīng)用實例電路,其中MSC1210是TI公司生產(chǎn)的51兼容的單片機,具有增強型51內(nèi)核,其ALE信號作為分頻器74HC4060(用4040或者4020除引腳序號不一樣外無區(qū)別)的輸入時鐘源信號,出于實際需要只用了5個按鍵。測試程序用單片機C語言編寫,在Keil_C7.01上調(diào)試通過,并由MSC1210的串口下載工具下載到單片機里,圖7為其主程序流程圖、圖8為中斷子程序流程圖,在本刊的網(wǎng)站上給出了源程序,供讀者參考。

        該程序的執(zhí)行結(jié)果是:按圖6中的K1~K5鍵則輸出小寫字母e~a,按一次鍵輸出一次。如果用戶想把某個按鍵作為連續(xù)觸發(fā)鍵(即按鍵按下較長時間后才抬起,雖然鍵閉合一次,但CPU卻進行多次鍵輸入處理)使用,只要稍微改變主程序中鍵處理子程序即可。例如:***行{}中加入下列語句:do{fun();}while(KF0==0);則只要按住K1鍵不放就反復(fù)執(zhí)行fun()函數(shù)。要做成軟按鍵也只要進行嵌套即可。

        猜你喜歡
        單片機
        基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機的多功能智能插排
        電子制作(2019年11期)2019-07-04 00:34:48
        基于單片機的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        小議PLC與單片機之間的串行通信及應(yīng)用
        電子制作(2018年12期)2018-08-01 00:48:04
        MSP430單片機在仿真中要注意的幾點問題
        電子制作(2017年9期)2017-04-17 03:00:53
        基于單片機的平衡控制系統(tǒng)設(shè)計
        電子制作(2017年19期)2017-02-02 07:08:27
        基于單片機的三維LED點陣設(shè)計
        電子制作(2016年21期)2016-05-17 03:52:51
        Microchip推出兩個全新PIC單片機系列
        基于Proteus的單片機控制系統(tǒng)的仿真設(shè)計
        蜜芽亚洲av无码精品色午夜| 91免费国产| 日本高清二区视频久二区| 99在线视频这里只有精品伊人| 狠狠噜狠狠狠狠丁香五月| 男人和女人高潮免费网站| 国产精品乱子伦一区二区三区 | 精品无码中文字幕在线| 男人j进女人p免费视频| 亚洲黄色大片在线观看| 日本不卡高字幕在线2019| 少妇性荡欲视频| 中文字幕在线久热精品| 伊人狼人激情综合影院| 精品无码人妻夜人多侵犯18| 国产成人综合色在线观看网站| 手机看片福利日韩国产| 亚洲一区二区三区精品久久av| 国产成人亚洲综合| 国产成人综合久久精品免费| 国产AV高清精品久久| 成人一区二区三区国产| 女局长白白嫩嫩大屁股| 色丁香久久| 亚洲一本之道高清在线观看| 人妻av有码中文字幕| 男男性恋免费视频网站| 久久99精品中文字幕在| 中文字幕乱码一区在线观看| 奇米影视7777久久精品| 男女男在线精品网站免费观看| 亚洲av影片一区二区三区| 国产极品裸体av在线激情网| 一本色综合久久| 亚洲乱码少妇中文字幕| 国产一区二区三区十八区| 成人免费a级毛片| 亚洲一级毛片免费在线观看| 熟女人妻一区二区中文字幕| 免费人成在线观看视频高潮| 精品国产精品久久一区免费式|