你当前位置: 首页 >> 产品应用
产品应用

基于PIC16F877A的方波信号发生器电路设计

2013/2/25 |  2121次阅读 

在数字电路系统中,方波是经常使用的信号源,具有非常广泛的应用范围。在普通的电路设计中,经常利用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
主程序
ORG 000H
MAIN NOP
BSF STATUS,RP0
MOVLW 0FEH
MOVWF TRISC
CLRF PORTC
MOVLW 0FFH
MOVWF TRISB
MOVLW 07H 分频比设定为1:256
MOVWF OPTION_REG
BCF STATUS,RP0
KEYIN BTFSC PORTB,0 测试SW1是否按下?
GOTO LOOP
CALL DELAY
BTFSC PORTB,0
GOTO LOOP
CHECK BTFSS PORTB,0 测试SW1是否断开?
GOTO  CHECK
CALL DELAY
调开延时子程序。消除断开抖动的影响
BTFSS PORTB,O
GOTO CHECK
BSF STATUS,RP0
DECF OPTION_REG,1
MOVF 07H
ANDWF OPTION_REG
MOVF OPTION_REG,1
BCF STATUS,2
GOTO MAIN
LOOP MOV LW01H
XORWF PORTC
BCF INTCON,2
MOVLW TMR0B
MOVWF TMR0
重新启动定时器开始计数
TEST BTFSS INTCON,2
检测TMR0溢出标志位
GOTO TEST
GOTO KEYIN
TMR0延时子程序8 ms
DELAY
BSF STATUS,RP0
MOVF OPTION_REG,0
MOVWF OPTION_B
MOVLW 04H
MOVWF OPTION_REG
BCF STATUS,RP0
BCF INTC0N,2
MOVLW 06H
MOVWF TMR0
LOOP1 BTFSS INTCON,2
GOTO LOOP1
BSF STATUS,RP0
MOVF OPTION_B,0
MOVWF OPTION_REG
BCF STATUS,RP0
RETURN

END 源程序结束

2.3 基于MPLAB-IDE6.62软件平台的编译与编程
(1)启动MPLAB-IDE6.62,创建工程项目FBXH,并创建源文件fbxh.asm,编译生成目标程序HEX文件。
(2)选择器件为PIC16F877A,选择通信接口(USB口),建立通信连接,设置MPLAB ICD2作为调试工具。设置调试选项,载入调试代码,调试代码会自动编程到程序存储器的顶层空间,用于MPLAB ICD2的调试,进行模拟仿真。
(3)仿真正确之后,选择器件配置电源和接口,并设置编程选项,进行编程下载程序,完成芯片程序的写入。

2.4 电路板的设计、安装与调试
     利用PROTEL99SE制作电路PCB板进行安装焊接,SW1,SW2选用按纽开关,SW1为循环切换控制开关,SW2为复位开关,POWER接5V电源,U1在安装时要采用IC座,便于更新或更换IC,LS1可连接到压电蜂鸣器,D0为发光二极管,有输出时D0点亮,OUT为输出端,用可示波器进行观察。调试完成之后,方波信号发生器的设计就全部完成了。

uC/OS II是一个完整的、可移植、可裁减、源码公开的抢占式实时多任务操作系统。因此程序开发人员可以在嵌入式系统的开发过程中.灵活地改写其源代码.以满足用户特定的需求。PIC18F452是Microchip公司生产的单片机PICmicro家族中的中档微处理器产品.是一款含有丰富片上资源的8位MCU.广泛应用在家用电器、医疗设备、工业控制等领域。因此uC/OS II在该处理器上的成功移植.将大大提高复杂应用系统的开发效率.增强系统的可靠性,降低开发成本,提高经济效益。
a

返回 | 顶部