剖析PIC單片機(jī)的應(yīng)用方法

時間:2022-07-04 04:16:00

導(dǎo)語:剖析PIC單片機(jī)的應(yīng)用方法一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

剖析PIC單片機(jī)的應(yīng)用方法

20世紀(jì)90年代以來,隨著集成電路特征線寬的持續(xù)縮小以及芯片密度和工作頻率的相應(yīng)增加,降低功耗已經(jīng)成為亞微米和深亞微米超大規(guī)模集成電路設(shè)計中的一個主要考慮因素。功耗的增加會帶來一系列問題,例如電路參數(shù)漂移、可靠性下降、芯片封裝成本增加等。因此,系統(tǒng)的功耗在整個系統(tǒng)設(shè)計中,尤其是在采用電池供電的系統(tǒng)中顯得十分重要。

Microchip公司pic系列的單片機(jī)為設(shè)計高性能、低功耗的單片機(jī)系統(tǒng)提供了很好的解決方案。下面從低功耗設(shè)計方法及具體例子來介紹PIC單片機(jī)低功耗應(yīng)用。

1低功耗設(shè)計方法

為使系統(tǒng)工作在低功耗狀態(tài),必須正確設(shè)置單片機(jī)的配置及工作方式。下面結(jié)合最常用的PIC12、PIC16等單片機(jī)介紹低功耗系統(tǒng)的設(shè)計方法。

1.1基本設(shè)計方法

有許多技術(shù)可以降低系統(tǒng)的功耗,最常用的是Sleep模式。程序執(zhí)行一條SLEEP指令,便進(jìn)入了休眠(Sleep)模式。要Sleep模式下,晶振停止振蕩,而此時單片機(jī)在3V電源條件下,只有1μA的電流。系統(tǒng)工作時,單片機(jī)可以采用看門狗或外部事件周期性地喚醒單片機(jī),利用電子開關(guān)為系統(tǒng)提供電源,以減少系統(tǒng)待機(jī)功耗,延長電池使用時間。

單片機(jī)的工作頻率和功耗的關(guān)系也很大,頻率越高,功耗越大。在采用32kHz晶振、3V工作電壓時,PIC12、PIC16等系列單片機(jī)的典型工作電流只有15μA;而采用4MHz晶振、5V工作電壓時,單片機(jī)的典型工作電流達(dá)到幾mA。在許多低功耗的場合,采用低速晶振實現(xiàn)低功耗非常有效。如果單片機(jī)采用RC振蕩,還可以通過I/O口的操作改變振蕩電阻,從而改變單片機(jī)工作頻率,達(dá)到節(jié)能的目的。如圖1所示,1個I/O引腳可以在等待狀態(tài)下將并聯(lián)電阻R1去掉,降低單片機(jī)工作頻率。當(dāng)單片機(jī)需要工作時,可將I/O引腳設(shè)置為輸出并輸出高電平,從而提高振蕩頻率。

1.2振蕩電路設(shè)計

在單片機(jī)系統(tǒng)設(shè)計中,振蕩電路的設(shè)計是十分重要的一個環(huán)節(jié)。PIC系列單片機(jī)的典型振蕩電路如圖2所示。

一般情況下,設(shè)計人員按照廠家給出的參數(shù)表進(jìn)行選擇。如果系統(tǒng)能夠正常工作,也就不再進(jìn)行改進(jìn)了。其實,這是不合適的。因為Microchip的單片機(jī)根據(jù)型號和版本的不同,工作電壓在直流2.5~5.5V的范圍內(nèi),汽車級溫度可以在-40~-125℃范圍內(nèi),而參數(shù)表中只給出了有限的幾種情況,實際環(huán)境參數(shù)會對振蕩電路的性能產(chǎn)生很大的影響。如高溫、低電壓可減小振蕩環(huán)路增益,而從降低振蕩頻率或者難以啟動;低溫、高電壓可以使環(huán)路增益變大,從而使晶振過驅(qū)動,產(chǎn)生損壞的潛在危險或者振蕩電路工作的高次諧波頻率上升,加大系統(tǒng)功耗。因此,如何正確設(shè)計系統(tǒng)的振蕩電路十分必要。對于PIC系列單片機(jī),一般的設(shè)計步驟如下:

①選擇晶振。根據(jù)系統(tǒng)需要的振蕩頻率進(jìn)行晶振的選擇。此外,晶振的工作溫度和頻率穩(wěn)定度也是十分重要的指標(biāo)。

②選擇振蕩器類型。PIC系列單片機(jī)有RC、LP、XT、HS等振蕩模式。除RC模式外,振蕩模式的選擇實際上就是環(huán)路增益的選擇。低增益對應(yīng)低振蕩頻率,高增益對應(yīng)高振蕩頻率。一般根據(jù)實際需要的工作頻率可參考數(shù)據(jù)手冊來選擇。

③選擇C1、C2。理想的情況是,保證系統(tǒng)在高溫和最低工作電壓下能夠正常工作,使得電容在數(shù)據(jù)手冊推薦的范圍內(nèi)最小。同時選擇C2比C1大一些以加大相移,使其有利于振蕩電路的上電啟動。

④選擇Rs。在以上參數(shù)都已經(jīng)選定后需要決定Rs的大小。簡單的辦法是讓系統(tǒng)工作在最低溫度和最大電壓情況下,此時得到的應(yīng)該是時鐘電路最大輸出幅度。用示波器觀察引腳OSC2的輸出波形(注意,示波器的探頭將給電路引入一個電容,一般為幾pF),如果發(fā)現(xiàn)正弦波的峰(接收Vdd處)和谷(接收Vss處)被削平或壓扁,說明驅(qū)動過載,需要在OSC2和C2間加入1個電阻Rs,一般1kΩ左右或小于1kΩ。Rs不宜過大,過大將使得輸入和輸出產(chǎn)生隔離,從而產(chǎn)生較大的噪聲。當(dāng)發(fā)現(xiàn)需要一個較大的Rs才能消除過驅(qū)動時,可以增加負(fù)載電容C2來補(bǔ)償。C2一般選擇在15~33pF之間。

系統(tǒng)振蕩電路的設(shè)計對系統(tǒng)的穩(wěn)定性、功耗等影響很大。一般情況下,系統(tǒng)從Sleep狀態(tài)下喚醒時,振蕩電路最難啟動(尤其系統(tǒng)工作在高溫、低壓、低頻的情況下)。此時,電阻Rs有利于振蕩電路的啟動,因為廉價的碳膜電阻容易產(chǎn)生白噪聲,從而幫助電路起振。此外,選擇C2稍大于C1以增大相移,也有利于電路起振。

2具體應(yīng)用例子

2.1系統(tǒng)組成及框圖

系統(tǒng)主要由PIC單片機(jī)、雙音頻解碼拔號電路、語音集成電路、接口電路、Vcc電源控制電路、射頻發(fā)射電路和EEPROM組成,可完成對家用電器的控制和對報警求援語音信息的自動傳送,如圖3所示。

2.2控制器工作方式

*當(dāng)與控制器相串聞的電話機(jī)(以下稱為本地機(jī))處于摘機(jī)時,電話線輸入電壓發(fā)生變化,引起CD40106的2腳輸出電平變化,輸入到CPU的RB0端口產(chǎn)生中斷信號,喚醒CPU,控制器進(jìn)入工作狀態(tài)。通過本地機(jī)的拔號盤對控制器的各種功能進(jìn)行控制。如控制電視、音響、照明燈等電器電源的開關(guān)。

*當(dāng)控制器接收到振鈴信號時,CD40106的4腳輸出電平變化,輸入CPU的RB6端口產(chǎn)生中斷信號,喚醒CPU進(jìn)入工作狀態(tài),并對振鈴信號進(jìn)行計數(shù);達(dá)到設(shè)定鈴聲數(shù)后,使控制器進(jìn)入電話接收狀態(tài),開始接收遠(yuǎn)程傳輸DTMF信號,經(jīng)MT8880解調(diào)得到的信號通過IRQ向單片機(jī)發(fā)出中斷信號,將數(shù)據(jù)存入寄存器,經(jīng)CPU運行,對控制器的各種功能進(jìn)行控制。

*當(dāng)控制器作為報警器,并處于警備狀態(tài)時,報警探頭時刻檢測防范區(qū)域的情況;當(dāng)探頭向控制器發(fā)出警情信息,輸入CPU的RB5中斷產(chǎn)生信號,控制器進(jìn)入工作狀態(tài),從EEPROM芯片讀出預(yù)先設(shè)置的報警電話號碼,經(jīng)MT8880轉(zhuǎn)換為DTMF信號,自動撥號,以語音形式將信息傳送給用戶或直接報警。

2.3應(yīng)用電路

(1)電話接口電路

電話機(jī)與控制器采用控制器在前,電話機(jī)在后的串聯(lián)方式,可實現(xiàn)電話機(jī)對控制器各種功能的控制。接口電路由過壓保護(hù)電路、極性轉(zhuǎn)換電路和中斷請求電路組成,如圖4所示。

①過壓保護(hù)電路。在電話線回路上加入了一個壓敏電阻R,它的作用是當(dāng)它兩端的電壓大于其工作電壓時呈短路狀態(tài),從而保護(hù)后級電路免受高壓危害。當(dāng)加到它的兩端的電壓小于其工作電壓,壓敏電阻呈開路狀態(tài),對后級電路的工作沒有任何影響。在本設(shè)計中,壓敏電阻的工作電壓為220V

②極性轉(zhuǎn)換電路。由于在電話線上傳輸?shù)氖墙涣餍盘枺瑸榱耸剐盘柕臉O性固定,在電路中加入電橋,進(jìn)行全波整流。

③中斷請求電路。為延長電池工作時間,CPU在待機(jī)時處于休眠的省電狀態(tài),在實現(xiàn)遠(yuǎn)程電話機(jī)和本地機(jī)對控制器功能控制時,由中斷請求電路將CPU喚醒。

(2)語音電路

語音電路如圖5所示。它以ISD4000語音芯片為核心,主要是存儲報警語音,輸出經(jīng)功率放大后傳送到電話線上。

(3)MT8880與PIC單片機(jī)的接口電路

MT8880是Mitel公司的DTMF收發(fā)器,具有功能強(qiáng)、功耗低、工作穩(wěn)定、可靠等性高優(yōu)點,因此在DTMF信號調(diào)制的場合得到了廣泛的應(yīng)用。MT8880與PIC單片機(jī)的接口電路如圖6所示。

①MT8880與單片機(jī)的接口電路。D0~D3為4根數(shù)據(jù)線,MT8880對經(jīng)過前置處理的DTMF信號進(jìn)行解調(diào),將解調(diào)得的信號存入片內(nèi)寄存器中,并通過IRQ向單片機(jī)發(fā)出中斷信號。單片機(jī)相應(yīng)中斷請求后,在R、W、RS0、RD的控制下,通過D0~D3讀出解調(diào)出的數(shù)據(jù)。

②DTMF信號放大電路。當(dāng)微處理器將要發(fā)送的DTMF數(shù)據(jù)寫入MT8880相應(yīng)的寄存器時,MT8880從TONE引腳發(fā)出DTMF信號,信號經(jīng)過放大電路放大后,送往變壓器進(jìn)行電壓變化。

3程序設(shè)計

程序在運行時:①為電器控制器,若是遠(yuǎn)程電話機(jī)對控制器進(jìn)行操作,是根據(jù)電話的振鈴聲數(shù)來判斷;若本地電話機(jī)對控制器進(jìn)行操作,是根據(jù)本地電話機(jī)的摘機(jī)情況來判斷。②為報警器,報警探頭隨時檢測到警情并發(fā)出信號給控制器,而控制器則是根據(jù)用戶的設(shè)置情況,是處于警備與否來判斷是否拔出報警電話。圖7是程序流程圖。下面主要介紹初始化程序、MT8880設(shè)置子程序和DTMF信號發(fā)送以及接收子程序。

;初始化寄存器

F0EQU0H

RTCCEQU01H

PCEQU02H

STATUSEQU03H

FSREQU04H

RAEQU05H

RBEQU06H

RCEQU07H

RDEQU08H

REEQU09H

TRISAEQU85H

TRISBEQU86H

TRISCEQU87H

TRISDEQU88H

TRISEEQU89H

DAIFSEQU0X50;待發(fā)送的數(shù)據(jù)放在50開始的區(qū)域

RECEEQU0X21

SENDEQU0X22

DAIJSEQU0X40;數(shù)據(jù)暫存在從40H開始的區(qū)域

;MT8880設(shè)置子程序

;置MT8880為DTMF接收狀態(tài)

R8880:MOVLW0X0D

MOVWFREVE;寫控制寄存器A(接收模式)

MOVLW0X00

MOVWFREVE;寫控制寄存器B(突發(fā)模式)

REIURN

;置MT8880為DTMF接收狀態(tài)

T8880:MOVLW0X0F

MOVWFSEND;寫控制寄存器A(發(fā)送模式)

MOVLW0X00

MOVWFSEND;寫控制寄存器B(突發(fā)模式)

RETURN

;DTMF發(fā)送子程序

TELEPHON:CALLT8880;設(shè)置為發(fā)送模式

LOOP:MOVFDAIFS,0;拔號

MOVLWSEND

INCFDAIFS,1;檢查是否發(fā)送結(jié)束

LL1:BTFSSSEND,1

GOTOLL1;已經(jīng)發(fā)送完畢

CALLDELAY200;延時200ms

DECFDATALENGTH

GOTOLOOP;發(fā)送完畢

RETURN

;DTMF接收子程序

RECEIVE:CALLR8880;設(shè)置為接收模式

RWT:MOVFDJIJS,0

MOVLWREVE

BTFSSREVE,2

GOTORWT;查詢是否收到數(shù)據(jù)

MOVLWREVE

ANDLW0XOF

MOVFREVE

INCFDAIJS,1

DECEDATALENGTH

RETURN

結(jié)語

利用PIC單片機(jī)低功耗方式設(shè)計電話遠(yuǎn)程控制器,待機(jī)時由電池供電,工作時由電話網(wǎng)供電,系統(tǒng)用4節(jié)5號電池可供控制器工作一年,產(chǎn)品可實現(xiàn)對家用電器控制,又具有報警及緊急求助功能,可進(jìn)行遠(yuǎn)程控制和本地機(jī)的控制,且不影響電話正常使用。在電話遠(yuǎn)程控制器的原理基礎(chǔ)上,設(shè)計的有線防盜報警產(chǎn)品更具市場前景,成本更低,已批量投入市場,市場反映良好。