單片機(jī)EM78P156的I/O口復(fù)用技巧
0 引言
大多單片機(jī)設(shè)計中都需要很多的引腳來實現(xiàn)各種各樣的輸入檢測和輸出顯示或控制功能。這在引腳數(shù)不能再增加的前提下。常常會顯得引腳數(shù)不夠。所以能否把芯片的固有資源發(fā)揮到極致,往往是決定此系統(tǒng)性價比的關(guān)鍵。本文借鑒軟件操作系統(tǒng)的分時復(fù)用原理,來把任務(wù)分成多個時間片,在不同的時間片執(zhí)行不同的任務(wù)。從而實現(xiàn)了較少I/O口的多功能控制。
EM78P156N是臺灣義隆公司推出的8位單片機(jī),圖1所示是該芯片的引腳排列圖。該器件的主要功能如下:
◇工作電壓:2.5~5.5 V;
◇工作溫度范圍:-40℃~85℃;
◇工作頻率在晶振模式時的范圍為:DC~20MHz(5V)、DC~8MHz(3V)和DC~4MHz(2.5V);而在外部RC振蕩時的頻率范圍為:DC~4MHz (5V),DC~4 MHz(3V)和DC~4MHz(2.5V);
◇低功耗:工作在5V/4MHz時工作電流小于2mA,工作在3V/32kHz時的工作電流20μA,工作在休眠模式時的工作電流1μA;
◇帶有1K×13B程序空間;
◇具有雙向I/O口;
◇有5級堆棧深度;
◇有8個可編程上拉腳,7個可編程下拉腳,8個可編程橫漏極開路輸入腳,2個可編程R-op-tion腳。
2 硬件電路的總體設(shè)計
本設(shè)計中控制電路的MCU部分如圖2所示。圖2中的單片機(jī)采用外部RC振蕩,振蕩頻率為4MHz。其中LED1~LED6和按鍵K2、K3共用了P61~P65五個I/O口。在該電路設(shè)計時,要注意按鍵按下時不能影響LED的正常點亮,所以在I/O口與按鍵之間串了一個2kΩ的電阻,這樣即使按住按鍵不放。LED也能正常點亮。每一路LED燈的點亮須由兩個I/O口同時控制,一路置高、一路置低,使LED產(chǎn)生正向壓降才能點亮。而其余的I/O口則作為正常的輸入、輸出控制。
3 程序流程
本文以按鍵輸入、LED輸出為例,按鍵K2控制第一組LED1~3做跑馬燈變化,按鍵K3控制第二組LED4~6做跑馬燈變化,第一組與第二組燈中每次只能同時亮一個。這里的復(fù)用實際上是利用人眼的視覺暫留功能,實際LED是閃爍的,只是人眼分辨不出來而已。每組燈點亮的周期為20ms,按鍵檢測占用的時間為10μs左右,在這么短的時間內(nèi),人眼不可能察覺到LED的變化。所以在實際電路設(shè)計中,顯示和按鍵等人機(jī)接口部分的功能最容易實現(xiàn)分時復(fù)用。點亮LED1與LED4的I/O口的工作波形如圖3所示。將按鍵檢測的值送到keybuf中,并做20 ms的延時比較檢測,主要是為了增加按鍵檢測的可靠性。其程序邏輯如圖4所示。
這里需要注意的是,在作為按鍵檢測的時候,P6.2、P6.3、P6.4必須輸出高電平,或者作為輸入口打開內(nèi)部上拉(如圖3中的P6.2)。這樣可以避免LED在這時被點亮形成鬼影,而影響整個系統(tǒng)的顯示效果。當(dāng)然也可以將LED驅(qū)動換成帶三極管驅(qū)動的繼電器。但因為繼電器的吸合或斷開需要幾毫秒的響應(yīng)過程,而按鍵檢測所需的10μs時間絕對不足以讓繼電器發(fā)生狀態(tài)跳變。
晶振相關(guān)文章:晶振原理
評論