剖析PIC單片機的應用方法

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

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

剖析PIC單片機的應用方法

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

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

1低功耗設計方法

為使系統工作在低功耗狀態,必須正確設置單片機的配置及工作方式。下面結合最常用的PIC12、PIC16等單片機介紹低功耗系統的設計方法。

1.1基本設計方法

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

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

1.2振蕩電路設計

在單片機系統設計中,振蕩電路的設計是十分重要的一個環節。PIC系列單片機的典型振蕩電路如圖2所示。

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

①選擇晶振。根據系統需要的振蕩頻率進行晶振的選擇。此外,晶振的工作溫度和頻率穩定度也是十分重要的指標。

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

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

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

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

2具體應用例子

2.1系統組成及框圖

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

2.2控制器工作方式

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

*當控制器接收到振鈴信號時,CD40106的4腳輸出電平變化,輸入CPU的RB6端口產生中斷信號,喚醒CPU進入工作狀態,并對振鈴信號進行計數;達到設定鈴聲數后,使控制器進入電話接收狀態,開始接收遠程傳輸DTMF信號,經MT8880解調得到的信號通過IRQ向單片機發出中斷信號,將數據存入寄存器,經CPU運行,對控制器的各種功能進行控制。

*當控制器作為報警器,并處于警備狀態時,報警探頭時刻檢測防范區域的情況;當探頭向控制器發出警情信息,輸入CPU的RB5中斷產生信號,控制器進入工作狀態,從EEPROM芯片讀出預先設置的報警電話號碼,經MT8880轉換為DTMF信號,自動撥號,以語音形式將信息傳送給用戶或直接報警。

2.3應用電路

(1)電話接口電路

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

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

②極性轉換電路。由于在電話線上傳輸的是交流信號,為了使信號的極性固定,在電路中加入電橋,進行全波整流。

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

(2)語音電路

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

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

MT8880是Mitel公司的DTMF收發器,具有功能強、功耗低、工作穩定、可靠等性高優點,因此在DTMF信號調制的場合得到了廣泛的應用。MT8880與PIC單片機的接口電路如圖6所示。

①MT8880與單片機的接口電路。D0~D3為4根數據線,MT8880對經過前置處理的DTMF信號進行解調,將解調得的信號存入片內寄存器中,并通過IRQ向單片機發出中斷信號。單片機相應中斷請求后,在R、W、RS0、RD的控制下,通過D0~D3讀出解調出的數據。

②DTMF信號放大電路。當微處理器將要發送的DTMF數據寫入MT8880相應的寄存器時,MT8880從TONE引腳發出DTMF信號,信號經過放大電路放大后,送往變壓器進行電壓變化。

3程序設計

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

;初始化寄存器

F0EQU0H

RTCCEQU01H

PCEQU02H

STATUSEQU03H

FSREQU04H

RAEQU05H

RBEQU06H

RCEQU07H

RDEQU08H

REEQU09H

TRISAEQU85H

TRISBEQU86H

TRISCEQU87H

TRISDEQU88H

TRISEEQU89H

DAIFSEQU0X50;待發送的數據放在50開始的區域

RECEEQU0X21

SENDEQU0X22

DAIJSEQU0X40;數據暫存在從40H開始的區域

;MT8880設置子程序

;置MT8880為DTMF接收狀態

R8880:MOVLW0X0D

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

MOVLW0X00

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

REIURN

;置MT8880為DTMF接收狀態

T8880:MOVLW0X0F

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

MOVLW0X00

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

RETURN

;DTMF發送子程序

TELEPHON:CALLT8880;設置為發送模式

LOOP:MOVFDAIFS,0;拔號

MOVLWSEND

INCFDAIFS,1;檢查是否發送結束

LL1:BTFSSSEND,1

GOTOLL1;已經發送完畢

CALLDELAY200;延時200ms

DECFDATALENGTH

GOTOLOOP;發送完畢

RETURN

;DTMF接收子程序

RECEIVE:CALLR8880;設置為接收模式

RWT:MOVFDJIJS,0

MOVLWREVE

BTFSSREVE,2

GOTORWT;查詢是否收到數據

MOVLWREVE

ANDLW0XOF

MOVFREVE

INCFDAIJS,1

DECEDATALENGTH

RETURN

結語

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