基于PIC16F877A的方波信號發生器電路設計
在數字電路系統中,方波是經常使用的信號源,具有非常廣泛的應用范圍。在普通的電路設計中,經常利用555定時器構成多諧振蕩器產生方波信號,雖然比較簡單,但頻率準確精度不高,若要產生不同頻率的方波信號,更換電阻和電容又比較麻煩。基于這個出發點,本文采用單片機進行電路設計,利用軟件編程控制代替硬件的更換,可靈活簡單地產生不同頻率的方波信號,而且電路更為簡單、頻率更準確、性能更穩定。
1 軟件平臺及芯片介紹
目前的單片機有很多種型號,有Intel公司的8051系列、Motorola公司的M68系列、ATMEL公司的AT系列、Microchip公司的PIC系列等等。本文主要介紹Microchip公司開發的基于MPLAB-IDE 6.62集成開發環境的PIC單片機的電路設計。MPLAB-IDE集成開發軟件是專門設計對PIC系列單片機進行文本編輯,在線調方式及編譯的開發工具。PIC芯片采用PIC16F877A,40腳封裝、具有5個輸入/輸出端口,每個端口中的每條引腳由用戶按需要單獨編程,設定為輸出引腳或輸入引腳。
2 方波信號發生器電路設計
2.1 硬件電路分析
利用PIC16F877A中的定時器/計數器TMR0模塊作為硬件定時器控制端口引腳RC0上產生不同頻率的方波。由于TMR0為8位寬,有一個可選的預分頻器,故可產生8種方波信號;同時通過設置不同的初始值,可產生不同的頻率。本設計初始值設為131,計數125個指令周期產生溢出,即TMR0從計數到開始溢出需要125us。通過改變分頻比,來達到產生不同頻率的目的。TMR0溢出一次就使端口引腳RC0的輸出電平反轉一次,每反轉兩次引腳電平就形成方波信號的一個周期。當分頻比為1:256時,TMRO的延時為125 us×256=32000 us,方波信號周期為32000 us×2=64000 us=64 ms,對應的方波信號頻率為最低檔的15.625 Hz;當分頻比為1:2時,TMR0的延時為125 us×2=250 us,方波信號周期為250 us×2=500 us=0.5 ms,對應的方波信號頻率為最高檔的2000 Hz。改變TMR0的初始值,可分別產生15.625 Hz,32.25 Hz,62.5 Hz,125 Hz,250 Hz,500 Hz,1000 Hz,2000 Hz 8種方波信號。其工作原理如圖1所示,接在端口引腳RB0上的按鈕開關SW1作為循環切換控制開關;按在MCLR引腳上的按鈕開關SW2用作單片機復位開關;端口RC0作為方波信號輸出,并接上一個發光二極管和蜂嗚器作為輸出指示;R3和C1構成RC振蕩方式,接在OSC1作為單片機系統時鐘的輸入,其優點是經濟、節省成本。
圖1 硬件電路工作原理示意圖
2.2 軟件設計
在PIC16F877A單片機中,與定時器/計數器TMR0相關的特殊功能寄存器有4個,累加計數寄存器TMR0、中斷控制寄存器INTCON、選項寄存器OPTION_REG和端口RA方向控制寄存器TRISA,其中選項寄存器OPTION_REG的各位含義為:
當其第5位(TOCS)置1時,TMR0模塊被設置為計數器模式,其分頻比由OPTION_REG的D2:DO(PS2~PS0)決定,分別為1:2,1:4,1:8,1:16,1:32,1:64,1:128,1:256,由此可產生8種分頻信號,即8種方波信號。其源程序采用匯編編語言編寫,如下:
程序清單fbxh.asm
LIST P=16F877A
INCLUDE "P16F877A.INC"
TMR0 EQU 01H
;定時器/計數器0寄存器地址
STATUS EQU 3H
OPTION_REG EQU 81H
OPTION_B EQU 22H
INTCON EQU 0BH
PORTB EQU 6H ;端口B的地址
TRISB EQU 86H
PORTC EQU 7H ;端口C的地址
TRISC EQU 87H
TMR0B EQU D'256'-D'125'
;定義TMR0初值
RP0 EQU 5H
電路相關文章:電路分析基礎
負離子發生器相關文章:負離子發生器原理 分頻器相關文章:分頻器原理 塵埃粒子計數器相關文章:塵埃粒子計數器原理 離子色譜儀相關文章:離子色譜儀原理
評論