李蔭瓏 丘珊珊
(珠海格力電器股份有限公司 珠海 519070)
隨著消費(fèi)者的審美觀的提高,產(chǎn)品設(shè)計(jì)的美觀感、人性化設(shè)計(jì)要求也越來(lái)越高,目前,在空調(diào)控制器設(shè)計(jì)中,需要很多引腳來(lái)實(shí)現(xiàn)各種輸入檢測(cè)和輸出控制。因?yàn)槌杀驹颍32荒苓x擇更多引腳的芯片,而需要合理利用低成本芯片,將芯片原本有的資源利用到極致[1]。在使用過(guò)程中,許多用戶也發(fā)現(xiàn)了單片機(jī)的部分缺點(diǎn),最典型的缺點(diǎn)是:輸入輸出(IO)端口有限。因此如何增加和有效利用單片機(jī)的端口成為應(yīng)用系統(tǒng)設(shè)計(jì)中的重要環(huán)節(jié)[2]。如需要實(shí)現(xiàn)更多功能,需要更多的IO口必不可免,可根據(jù)功能需要設(shè)計(jì)IO口復(fù)用電路,根據(jù)設(shè)計(jì)方案,選擇相應(yīng)的復(fù)用電路,有效解決主芯片IO口的緊缺問(wèn)題,在芯片選型上,便可選擇低成本的主芯片,在IO口的復(fù)用方案上,主要有以下幾種方案,選擇口電路與顯示電路復(fù)用、撥碼開(kāi)關(guān)電路與顯示電路復(fù)用、選擇口電路與2003芯片驅(qū)動(dòng)電路復(fù)用、按鍵電路與顯示電路的復(fù)用,開(kāi)發(fā)產(chǎn)品時(shí),根據(jù)產(chǎn)品功能,設(shè)計(jì)不同的方案。
當(dāng)選擇口較多,且主芯片IO口資源有限時(shí),可設(shè)計(jì)選擇口與2003芯片復(fù)用,芯片口上電設(shè)置為輸入口,檢測(cè)選擇口狀態(tài),確定選擇口狀態(tài)后,將芯片口設(shè)置為輸出口,用于驅(qū)動(dòng)2003芯片。此處選擇口主要為上電時(shí)需要確定的某一種狀態(tài),例如:機(jī)型選擇口、快測(cè)口等;2003芯片,主要用于負(fù)載的驅(qū)動(dòng),例如:步進(jìn)電機(jī)、電子膨脹閥等負(fù)載,以步進(jìn)電機(jī)的復(fù)用為例,其電路原理圖可按如圖1 所示。圖中2003芯片用于驅(qū)動(dòng)掃風(fēng)電機(jī),R1、R2、R3、R4為復(fù)用選擇口時(shí)所用的上拉電阻。以其中一路為例,做為選擇口時(shí),通過(guò)上拉電阻R1可確定高電平狀態(tài),如果不裝上拉電阻時(shí),通過(guò)限流電阻R5以及2003內(nèi)部電阻下拉到低,確定低電平狀態(tài),此可實(shí)現(xiàn)選擇功能,確定選擇功能后,正常作為2003的驅(qū)動(dòng)口使用。
使用該復(fù)用電路,可節(jié)省4 個(gè)IO口,如果2003芯片管腳全使用的情況下,最多可節(jié)省7 個(gè)IO口。對(duì)于該電路設(shè)計(jì),需要使用2003芯片內(nèi)部固定的電阻,在外圍電路的上拉電阻、芯片口限流電阻,需要根據(jù)實(shí)際情況進(jìn)行選定,確保高低電平的可靠性。以其中一路為例,R1以及R5的選型需要滿足芯片口的拉電流、灌電流、高低電平輸入電壓等要求。當(dāng)選擇口需要低電平時(shí),即不安裝上拉電阻R1時(shí),具體的計(jì)算如下:拉電流I1=(5-0.7-0.7)/(R5+R內(nèi)),此驅(qū)動(dòng)電流不得大于主芯片IO口的驅(qū)動(dòng)電流(拉電流)。當(dāng)選擇口需要高電平時(shí),即安裝上拉電阻R1時(shí),具體的計(jì)算方法如下:拉電流I2=(5-0.7-0.7)/(5-0.7-0.7)/(R5+R 內(nèi)),灌電流I3=5/R1,輸入電壓V=(5-0.7-0.7)*((R5+R內(nèi))/(R5+R內(nèi)+R1))+1.4。(注:R內(nèi)為2003芯片內(nèi)部限流電阻,一般為2.7 K,此外需要考慮R1、R5、R內(nèi)等電阻的極限電阻值,例如部分電阻有1 % 或5 % 的阻值偏差)。拉電流、灌電流、輸入電壓均需要滿足主芯片的規(guī)格要求,根據(jù)以上的計(jì)算公式,便可確定上拉電阻以及限流電阻的阻值,確保主芯片IO口的輸入輸出均可滿足芯片要求。避免造成芯片損壞或功能缺失。實(shí)現(xiàn)選擇口與2003芯片的復(fù)用,實(shí)現(xiàn)IO口復(fù)用的可行性,從而較少IO口芯片的使用。
顯示的使用應(yīng)用于各個(gè)領(lǐng)域,例如空調(diào)的溫度、模式顯示,小家電產(chǎn)品的功能指示燈等,顯示模塊主要涉及數(shù)碼管、LED指示燈等,其一般以共陰極或共陽(yáng)極進(jìn)行電路設(shè)計(jì),常用的顯示驅(qū)動(dòng)方式有陰極掃描、陽(yáng)極掃描,其占用芯片管腳最少需要9 個(gè)IO口,如在設(shè)計(jì)開(kāi)發(fā)中,主芯片資源較少時(shí),可設(shè)計(jì)與顯示電路復(fù)用的方案,具體電路原理圖如圖2所示,圖中涵蓋了撥碼開(kāi)關(guān)與顯示電路的復(fù)用、快測(cè)口與顯示電路的復(fù)用、選擇口與顯示電路的復(fù)用、開(kāi)關(guān)按鍵與顯示電路的復(fù)用。
顯示掃描與復(fù)用功能(撥碼檢測(cè)、快測(cè)口、按鍵檢測(cè)、選擇口檢測(cè)等)使用分時(shí)復(fù)用的方式進(jìn)行檢測(cè)和顯示驅(qū)動(dòng)(注:圖2中,陰極A~G,使用低電平掃描),可配置0.625 ms的定時(shí)中斷,顯示掃描及復(fù)用檢測(cè)功能放至中斷中處理,0.625 ms分時(shí)處理顯示驅(qū)動(dòng)和復(fù)用功能的檢測(cè),為減少中斷的處理時(shí)間,中斷中僅處理驅(qū)動(dòng)的掃描以及復(fù)用功能的掃描檢測(cè),具體的顯示內(nèi)容以及復(fù)用功能的處理放至主循環(huán)中,此可提高中斷的執(zhí)行效率。需要注意的是,在處理顯示過(guò)程中,需要合理操作位碼、段碼開(kāi)通和關(guān)閉時(shí)序,可解決顯示漏光的問(wèn)題。例如:共陽(yáng)極數(shù)碼管結(jié)構(gòu),進(jìn)行陰極掃描,關(guān)斷順序?yàn)殛P(guān)陽(yáng)極,再關(guān)陰極;開(kāi)通順序?yàn)橄乳_(kāi)陰極,再開(kāi)陽(yáng)極;共陰極數(shù)碼管結(jié)構(gòu),陰極掃描方式,關(guān)斷、開(kāi)通順序則反之。
電路圖中二極管,其在電路中的作用主要為多路復(fù)用功能同時(shí)起作用時(shí)(例如兩個(gè)按鍵同時(shí)按下),防止相互影響,防止檢測(cè)錯(cuò)誤。圖2中數(shù)碼管A~G口掃描低電平,二極管方向不可更改,如果端口A~G掃描輸出為高電平,則需要更改二極管方向,上拉電阻更改為下拉。如果復(fù)用電路中無(wú)二極管,則兩個(gè)按鍵按下或多個(gè)復(fù)用功能起作用時(shí),復(fù)用功能檢測(cè)不正確,且會(huì)影響顯示,故此處的二極管不可少,二極管的選型需要根據(jù)具體主芯片電氣特性決定,如主芯片檢測(cè)的低電平要求的電壓較高,可選擇導(dǎo)通壓降較高的二極管,反之,則需要選擇導(dǎo)通壓降較低的二極管,避免主芯片無(wú)法準(zhǔn)確檢測(cè)到可靠的低電平信號(hào)。也可在公共端使用三極管,利用三級(jí)管的開(kāi)關(guān)確定輸出狀態(tài),如此便可不考慮二極管的導(dǎo)通壓降,選擇較低成本的二極管便可。
根據(jù)此電路設(shè)計(jì)方案,使用分時(shí)復(fù)用的方式,可有效減少IO口的數(shù)量,適用于IO口資源少的主芯片設(shè)計(jì)中,根據(jù)此電路的設(shè)計(jì),增加一個(gè)IO口,便可設(shè)計(jì)8 個(gè)(8 段位選)按鍵(或者選擇口、撥碼開(kāi)關(guān)、快測(cè)口等)。相對(duì)于單獨(dú)顯示、單獨(dú)按鍵驅(qū)動(dòng)、單獨(dú)撥碼開(kāi)關(guān)或是單獨(dú)的選擇口配置電路,此方案有效節(jié)省IO口,功能靈活可靠。
在軟件設(shè)計(jì)中,上電初始化將復(fù)用的IO口設(shè)置成輸入口,在主函數(shù)循環(huán)處理之前,讀取完成選擇口的狀態(tài)(高低電平),此需要注意的是,讀取選擇口時(shí),注意防抖操作,此方案可選擇連續(xù)時(shí)間讀取相同狀態(tài),如果在此連續(xù)時(shí)間內(nèi),讀取狀態(tài)一致,則確定選擇口功能。待完成讀取選擇口功能后,將復(fù)用的IO口設(shè)置成輸出狀態(tài),進(jìn)行輸出驅(qū)動(dòng)相應(yīng)的負(fù)載操作。
配置一個(gè)定時(shí)中斷,每間隔0.625 ms進(jìn)入中斷處理,顯示驅(qū)動(dòng)以及復(fù)用電路的檢測(cè),通過(guò)分時(shí)復(fù)用的方式進(jìn)行處理。
上電初始化時(shí),將顯示模塊的段選、位選端口設(shè)置成輸出狀態(tài),默認(rèn)高電平或是低電平(根據(jù)具體電路確定,原則是上電數(shù)碼管或是LED指示燈不點(diǎn)亮),復(fù)用端口的檢測(cè)口設(shè)置成輸入狀態(tài)。
進(jìn)入顯示驅(qū)動(dòng)處理時(shí),每次進(jìn)入顯示處理,輪流對(duì)位選端口輸出低電平,當(dāng)需要點(diǎn)亮某一路的LED段時(shí),通過(guò)公共端口輸出高電平(根據(jù)實(shí)際電路設(shè)計(jì)確定,共陰極,公共端需要高電平,位選端需要低電平),便可點(diǎn)亮對(duì)應(yīng)的LED。
進(jìn)入復(fù)用電路檢測(cè)時(shí),根據(jù)對(duì)應(yīng)顯示位選依次輸出的控制(低電平),當(dāng)有按鍵按下時(shí),復(fù)用端口便可檢測(cè)到低電平狀態(tài)(如無(wú)按鍵按下,則為高電平),便可檢測(cè)是否有按鍵按下,同理,撥碼開(kāi)關(guān)檢測(cè)、選擇口檢測(cè)、快測(cè)口檢測(cè),如果檢掃描到該位選時(shí),檢測(cè)到對(duì)應(yīng)的低電平狀態(tài),便可確定撥碼開(kāi)關(guān)、選擇口、快測(cè)口的狀態(tài)。在檢測(cè)復(fù)用功能時(shí),需要做防抖處理,一般情況,為了不增加硬件成本,首選軟件防抖的形式,可使用芯片底層輸入防抖配置或軟件功能進(jìn)行檢測(cè)延時(shí)處理,即通過(guò)連續(xù)時(shí)間采樣到相同的高電平或是低電平信息,才確定有效輸入狀態(tài)。
程序設(shè)計(jì)時(shí),需要注意該輸出端口是否為漏極開(kāi)路口,如果是,確定該芯片是否可進(jìn)行軟件設(shè)置(設(shè)置成普通輸出口),如果不能進(jìn)行軟件設(shè)置,需要在該端口配置上拉電阻,確??奢敵龈唠娖綘顟B(tài),也避免開(kāi)發(fā)工作來(lái)回修改。
根據(jù)復(fù)用電路及軟件設(shè)計(jì),在產(chǎn)品使用中,測(cè)試控制器電路板上相關(guān)波形,如下圖3為測(cè)試與顯示電路復(fù)用方案中,芯片口測(cè)試波形。綠色為復(fù)用口均導(dǎo)通(安裝電阻或按鍵按下或撥碼開(kāi)關(guān)撥至ON位置)時(shí)芯片口波形,當(dāng)陰極輸出掃描低電平時(shí),芯片檢測(cè)均為低電平,測(cè)試波形符合設(shè)計(jì)要求。黃色線為復(fù)用電路中其中6 路導(dǎo)通,2 路不導(dǎo)通的情況,當(dāng)陰極輸出掃描低電平時(shí),其中2 路檢測(cè)為高電平外,其余均為低電平,測(cè)試波形符合設(shè)計(jì)。根據(jù)測(cè)試情況,高點(diǎn)平4.63 V,低電平0 V,滿足主芯片檢測(cè)高低電平電壓要求。
圖4為單按鍵按下時(shí),按鍵檢測(cè)口測(cè)試波形圖,測(cè)試高電平時(shí)長(zhǎng)1.25 ms,占總時(shí)長(zhǎng)的1/8,測(cè)試數(shù)據(jù)滿足設(shè)計(jì)要求。
圖5為上電時(shí)刻,與顯示電路復(fù)用芯片口檢測(cè)波形,軟件設(shè)計(jì)對(duì)選擇口、撥碼開(kāi)關(guān)、快測(cè)口等需要掉電配置有效檢測(cè)的功能進(jìn)行檢測(cè)。檢測(cè)完成后,釋放相應(yīng)的端口。根據(jù)實(shí)際測(cè)試波形所示,上電后,先進(jìn)行復(fù)用口檢測(cè),使用16 次防抖檢測(cè)(16 次連續(xù)檢測(cè)狀態(tài)有效),檢測(cè)有效后,程序運(yùn)行其他功能,滿足設(shè)計(jì)要求。
圖6為2003驅(qū)動(dòng)步進(jìn)電機(jī)時(shí)的復(fù)位電路上電時(shí)芯片輸出波形,上電后先進(jìn)行選擇口判斷,上電時(shí)IO口為輸入口,理論計(jì)算檢測(cè)高電平為4.48 V,實(shí)際測(cè)試4.52 V,待確認(rèn)后,芯片口做輸出驅(qū)動(dòng)2003,根據(jù)實(shí)際測(cè)試波形,滿足設(shè)計(jì)需求。
如上IO口復(fù)用的硬件軟件方案,經(jīng)過(guò)實(shí)際測(cè)試、分析、運(yùn)用到產(chǎn)品中,方案可行??烧_驅(qū)動(dòng)2003的同時(shí),可正確檢測(cè)選擇口狀態(tài);在顯示正常情況,按鍵檢測(cè)無(wú)異常,選擇口、撥碼開(kāi)關(guān)、快測(cè)口檢測(cè)正確。且多按鍵、按鍵與撥碼開(kāi)關(guān)、快測(cè)口與選擇口等多復(fù)用電路之間相互無(wú)影響、不干涉;軟硬件設(shè)計(jì)方案穩(wěn)定可靠,可大范圍推廣使用。
通過(guò)以上兩種方案,在日常電子控制器產(chǎn)品開(kāi)發(fā)時(shí),可有效解決主芯片IO口短缺的問(wèn)題,目前,家電產(chǎn)品、工業(yè)產(chǎn)品等各行各業(yè)均在降低開(kāi)發(fā)成本,主芯片有從60引腳(或是更多引腳數(shù)量)降低到32引腳,按以往的設(shè)計(jì)思路,儼然不能滿足目前的產(chǎn)品開(kāi)發(fā)需求,需要尋求降低IO口的設(shè)計(jì)方案,顯然,以上兩種方案設(shè)計(jì)滿足目前低成本芯片的開(kāi)發(fā)需求,且軟硬件開(kāi)發(fā)難度不大,可推廣性強(qiáng)。
此方案可推廣使用的場(chǎng)所范圍較廣,需要使用到2003驅(qū)動(dòng),具有顯示(數(shù)碼管或者LED指示燈)功能的控制器均可使用,例如家電產(chǎn)品、工業(yè)自動(dòng)化設(shè)備以及智能產(chǎn)品等,均可運(yùn)用此設(shè)計(jì)方案,以解決引腳欠缺的問(wèn)題。