EM78系列單片機(jī)在紅外遙控系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
EM78系列單片機(jī)是臺(tái)灣義隆電子股份有限公司采用CMOS工藝制造的8位高性價(jià)比單片機(jī)。該系列單片機(jī)一般都內(nèi)置看門狗計(jì)數(shù)器(WDT)、RAM、ROM、可編程定時(shí)/計(jì)數(shù)器、預(yù)分頻器以及5層堆棧。該系列器件的絕大部分指令只需兩個(gè)振蕩周期,同時(shí)具有內(nèi)外部中斷、低電壓檢測(cè)復(fù)位、可編程I/0、內(nèi)部上拉電阻和集電極開路輸出、SLEEP方式等功能。另外,EM78P447S單片機(jī)還具有編程簡(jiǎn)單、速度快、功耗小、成本低等優(yōu)點(diǎn),能廣泛應(yīng)用于玩具、家電、工業(yè)控制等方面。
EM78P447S的主要性能特點(diǎn)如下:
●工作電壓范圍:2.5-5.5V;
●允許溫度范圍:0-70°C;
●工作頻率范圍:
石英振蕩型:5V時(shí)的范圍為DC-20MHz,
3V時(shí)的范圍為DC-8MHz;
RC振蕩型:5V時(shí)的范圍為DC-4MHz;
3V時(shí)的范圍為DC-4MHz;
●一次可編程ROM達(dá)4K X 13bit;
●內(nèi)部RAM為148 X 8bit;
●具有5層堆棧;
●內(nèi)含一個(gè)可以自行規(guī)劃的看門狗計(jì)時(shí)器(WDT)和一個(gè)8位預(yù)分頻器;
●具有24個(gè)雙向三態(tài)I/O腳;
●睡眠狀態(tài)的I/O可做規(guī)劃;
●有十個(gè)具有提升電阻及叫醒CPU的I/O引腳;
●有兩個(gè)具有R-Option功能的I/O引腳,通過R-Option功能可在兩個(gè)或兩個(gè)以上應(yīng)用程序中放人同一單片機(jī)時(shí),用一個(gè)輸入腳來(lái)判斷選擇哪一個(gè)程序。也就是說,R-option功能就是在EM78P447S的某兩個(gè)I/0腳上設(shè)置可選擇的下拉電阻,從而通過用戶是否外接下拉電阻(一般為510kΩ)來(lái)判斷該腳的狀態(tài),進(jìn)而判斷運(yùn)行哪一個(gè)程序;
●有兩個(gè)可規(guī)劃為集電極開路的輸出腳;
●可通過一個(gè)8位定時(shí)/計(jì)數(shù)器(TCC)來(lái)選擇信號(hào)源和觸發(fā)源,并可進(jìn)行8位預(yù)分頻;
●具有溢出中斷功能;
●具有上電復(fù)位、低電平檢測(cè)復(fù)位、RESET引腳輸入低電平復(fù)位、WDT超時(shí)溢出復(fù)位等功能;
●絕大部分指令只需兩個(gè)振蕩周期;
●具有低電平睡眠模式;
●具有TCC溢出中斷、外部INT引腳輸入脈沖中斷和執(zhí)行INT指令軟件中斷功能;
●采用32腳DIP封裝。
2 EM78P447S的引腳功能和寄存器
2.1 EM78P447S的引腳排列
圖1為EM78P447S的引腳排列。其各引腳的功能如下:
TCC:外部計(jì)數(shù)輸入腳;
OSCO:振蕩輸出腳;
VDD:正電源輸入腳;
OSCI:晶振或RC振蕩輸入腳;
NC:空腳;
BESET:復(fù)位輸入端,低電平有效;
VSS:接地腳;
INT:外部中斷輸入腳,下降沿輸入有效;
P50-P57:雙向I/O引腳;
P60-P67:雙向I/O引腳,可通過軟件規(guī)劃成有內(nèi)部提升電阻;
P70-P77:雙向I/O引腳,其中P74、P75可以通過軟件規(guī)劃成有內(nèi)部提升電阻;P76、P77通過軟件可設(shè)定為集電極開路輸出腳;P70、P71可當(dāng)作R-Option的輸入腳。
2.2 EM78P447S中的寄存器
EM78P447S內(nèi)含9個(gè)操作用途寄存器。其中間接尋址寄存器R0(IAB)、定時(shí)/計(jì)數(shù)器R1(TCC)、程序計(jì)數(shù)器R2(PC)、狀態(tài)寄存器R3(STATUS)、RAM選擇寄存器R4(RSR)、I/O口寄存器R5(PORT5)、R6(PORT6)、R7(PORT7)等8個(gè)寄存器的地址按順序分別為00H-07H,而中斷狀態(tài)寄存器R3F(1SR)的地址為3FH。
在EM78P447S的148個(gè)通用寄存器(RAM)中,包括有地址為08H-1FH的寄存器和4個(gè)地址為20H-3EH的寄存器組(4個(gè)頁(yè)面地址由R4的位6、位7來(lái)決定)。
另外,EM78P447S中還有7個(gè)特殊功能寄存器。其中包括累加器A、控制寄存器CONT、輸入/輸出控制寄存器IOC5、IOC6、IOC7(分別控制port5,port6,port7的輸入/輸出模式)、WDT控制寄存器IOCE和中斷屏蔽寄存器IOCF。
2.3 EM78P447S的指令簡(jiǎn)介
EM78P447S單片機(jī)共有45個(gè)單字、58條指令。這58條指令包括19條邏輯指令、11條算術(shù)運(yùn)算指令、4條位元指令、4條轉(zhuǎn)移指令、10條控制指令和10條跳躍指令。表1給出了這些指令字按功能的分類。
EM78P447S單片機(jī)的指令主要有以下幾個(gè)特色:
●除改變程序計(jì)數(shù)器的指令需要兩個(gè)指令周期外,其余指令均為單指令周期;
●寄存器的每一個(gè)位元均可由位元型指令直接進(jìn)行設(shè)定、清除或測(cè)試;
●對(duì)應(yīng)于IO引腳的I/O寄存器也可以當(dāng)作一般寄存器進(jìn)行存取。也就是說,存取一般寄存器與I/O所使用的指令完全一樣。
3 在直流電機(jī)遙控系統(tǒng)中的應(yīng)用
采用EM78P447S為主控器設(shè)計(jì)的遙控系統(tǒng)可實(shí)現(xiàn)對(duì)直流電機(jī)正轉(zhuǎn)、反轉(zhuǎn)和停止的遙控控制。該遙控控制系統(tǒng)由發(fā)射模塊、接收輸入模塊和單片機(jī)處理輸出模塊三部分組成。
3.1發(fā)射模塊
筆者設(shè)計(jì)的該遙控控制系統(tǒng)中的發(fā)射模塊采用3V工作電壓,其電路板上有三個(gè)乒乓鍵KO、K1、K2,可分別用來(lái)控制電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)和停止操作。當(dāng)需要進(jìn)行發(fā)射時(shí),采用發(fā)射專用芯片PT2248及外圍放大電路把信號(hào)放大,即可進(jìn)行紅外發(fā)射。其硬件電路原理圖如圖2所示。
3.2接收輸入模塊
本遙控控制系統(tǒng)中的接收模塊采用5V工作電壓,且在該電路板上有一個(gè)接收器,可用以接收發(fā)射模塊傳送過來(lái)的信號(hào)。利用一個(gè)放大電路可將接收到的信號(hào)放大并傳送到接收專用芯片PT2249A,然后再通過74LS04處理后送給單片機(jī)??捎萌齻€(gè)發(fā)光二極管分別對(duì)應(yīng)于發(fā)射模塊的三個(gè)按鍵以顯示操作。當(dāng)按下某一個(gè)鍵時(shí),與之對(duì)應(yīng)的發(fā)光二極管發(fā)光。其硬件電路如圖3所示。
3.3單片機(jī)處理輸出模塊
單片機(jī)處理輸出模塊采用5V工作電壓,模塊上的三個(gè)乒乓鍵K3、K4、K5,分別對(duì)應(yīng)于發(fā)射模塊上的·KO、K1、K2三個(gè)鍵,可用來(lái)控制電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)和停止。這三個(gè)鍵可在遙控器出現(xiàn)問題或丟失時(shí)代替KO、K1和K2進(jìn)行操作,因此非常方便實(shí)用。
單片機(jī)上的P5.0-P5.2引腳分別作為電機(jī)正轉(zhuǎn)、反轉(zhuǎn)和停止的信號(hào)輸入端,P6.0、P6.1引腳分別作為電機(jī)正轉(zhuǎn)、反轉(zhuǎn)的信號(hào)輸出端。要使電機(jī)停止操作,只要將無(wú)效信號(hào)送人P6.0、P6.1即可。單片機(jī)的輸出信號(hào)經(jīng)74LS04反向并送人ULN2003A進(jìn)行放大后,即可驅(qū)動(dòng)繼電器以使直流電機(jī)作相應(yīng)操作。
另外,還可用兩個(gè)發(fā)光二極管來(lái)顯示操作。這樣,當(dāng)電機(jī)正轉(zhuǎn)或反轉(zhuǎn)時(shí),其中的一個(gè)二極管將點(diǎn)亮,而當(dāng)按下停止按鈕時(shí),兩個(gè)都不亮。其硬件電路如圖4所示。
4 系統(tǒng)的軟件設(shè)計(jì)
該設(shè)計(jì)以EM系列單片機(jī)配套的開發(fā)工具EMC為編程工具,由主程序不斷循環(huán)監(jiān)測(cè)乒乓鍵的狀態(tài)。當(dāng)某個(gè)按鍵被按下松開后,其對(duì)應(yīng)的電機(jī)被啟動(dòng),然后系統(tǒng)再返回檢測(cè)按鍵的狀態(tài),以確定是否保持該運(yùn)行狀態(tài)或轉(zhuǎn)入其它狀態(tài)。
應(yīng)當(dāng)注意:當(dāng)機(jī)械開關(guān)按下或放開的瞬間,按鍵會(huì)因機(jī)械彈性的緣故在接點(diǎn)上產(chǎn)生彈動(dòng)。這個(gè)快速跳動(dòng)CPU會(huì)完全檢測(cè)到,因而會(huì)出現(xiàn)使用者只按了一次開關(guān),而被CPU認(rèn)為是按下很多次的錯(cuò)誤情況。為了避免這種誤判現(xiàn)象,設(shè)計(jì)時(shí)可用延時(shí)來(lái)處理這種彈跳問題。當(dāng)軟件在檢測(cè)到開關(guān)被按下后,先延時(shí)一段時(shí)間再檢測(cè)一次,以避開彈跳的時(shí)間,這個(gè)彈跳的產(chǎn)生通常在開關(guān)被按下后開始的20ms-50ms之間發(fā)生,因此只要避開這段時(shí)間,而不要讀輸入腳的信號(hào)即可。其軟件流程如圖5所示。
參考文獻(xiàn)
1.鄧錦城.EM78447入門與實(shí)作
2.吳建生.EM78154/x56/x57系列8位單片機(jī)原理及應(yīng)用.福州新源電子技術(shù)研究所,1998,3