目 录
摘 要 …………………………………………………………………… 3
第一章 方案论证…………………………………………………………4
1.1 系统框图…………………………………………………………4
1.2 系统模块…………………………………………………………4
1.2.1 主控制器………………………………………………………4
1.2.2 正弦信号的产生………………………………………………7
1.2.3 电压放大…………………………………………………… 10
第二章 系统硬件设计………………………………………………… 10
2.1 硬件系统总体框图………………………………………………10
2.2 硬件模块设计……………………………………………………11
2.2.1 正弦信号产生模块……………………………………………11
2.2.2 带负载输出………………………………………………… 13
2.2.3 DDS技术的实现 …………………………………………… 14
2.2.4 键盘显示…………………………………………………… 15
第三章 系统软件设计……………………………………………… 16
3.1 初始化9850………………………………………………………17
3.2 初始化LCD……………………………………………………… 18
3.3 初始化PIC16F877程序…………………………………………19
3.4 AD9850控制字的写入…………………….……………………20
3.5 键盘扫描显示………………………………………………… 21
3.6 LCD显示……………………………………………………….24
总结 ………………………………………………………………… 26
参考文献………………………………………………………………… 27
致谢…………………………………………………………………………28
摘 要
本系统设计一个正弦信号发生器。,使用PIC16F877单片机作为中央控制器,PIC(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。它的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。
传统的频率合成器,通常从一排晶振荡器产生的各种频率通过开关进行频率混合。也有的采用众所周知的锁相环(PLL)技术实现频率合成。随着数字技术的飞速发展,用数字控制方法从一个参考频率源产生多种频率,即直接数字合成技术(DDS)异军突起。本设计使用世界流行的美国ADI公司生产的AD9850频率合成器正是应用这种DDS技术的典型热门产品之一,AD9850采用先地蝗CMOS工艺,其功耗在3.3V供电时仅为155mW,扩展工业级温度范围为-40~80℃,采用28脚SSOP表面封装形式,结合DDS芯片AD9850,产生0~15MHz频率可调的正弦信号;调制信号为1KHz的正弦波,调制信号的产生采用DDS技术;系统采用全中文菜单操作方式,操作简单,快捷,且系统的精度和稳定性高。
关键字:正弦信号 PIC16F877 AD9850 DDS技术
ABSTRACT
The system design a sine signal generator. Using PIC16F877 microchip as a central controller, PIC (Peripheral Interface Controller) is the method which used to control peripherals development of Integrated Circuits (IC). A CPU with scattered (multi-task) function . Its maximum operating frequency is 20MHz approximately about. The memory capacity of theprocedures used to write about 1K-4K bytes.
The traditional frequency synthesizers, usually form a row of crystal oscillator frequency by switching from a variety of frequency mixed. Some used the well-known PLL technology to achieve frequency synthetic. With the rapid development of digital technology, using digital control methods form a variety of sources in a frequency reference frequency, direct digital synthesis techniques (DDS) sudden appearance as a new way. The design use the popular American ADI cmopany’s production AD9850 frequency synthesizers. DDS technology is the application of this popular products typically . AD9850 used to control CMOS first, the power loss is only 155mW at 3.3V supply, the expansion of industrial grade temperature range for -40~80 degrees, 28 feet SSOP surface packaging used form of DDS chip AD9850, a 0~15MHz frequency communications signals to the neighboring letter; preparation of the sinusoidal wave 1KHz, a modem signals used DDS technology; Chinese menu system used throughout the operation, the operation simple, fast and high system accuracy and stability
Key words: Sine signal ;PIC16F877 ;AD9850;DDS technology
第一章 方案论证
1.1系统框图
根据题目要求,本系统主要由主控制器模块、正弦信号发生模块、输出电压放大模块、人机界面模块构成如图:
1.2系统模块
1.2.1主控制器
方案一:采用通用的51单片机AT89S52作为主控制器,完成数据处理,DDS的频率输出控制,键盘的扫描及液晶显示器的显示控制等。由于51单片机内部的RAM和ROM都比较小,考虑到实现本系统需要大量的数据处理及液晶显示需占用大量的ROM资源等,用51单片机实现本系统就需外扩RAM和ROM,实现起来比较麻烦。而且本系统需要用A/D转换器采样调制信号实现调频信号的输出,使用51单片机就需外扩一片A/D转换芯片,实现也比较麻烦。而且基于整个系统的速度要求,51单片机也不能满足要求。
方案二:PIC(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC).它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。总线是高性能局部总线,工作频率0~33MHz,可同时支持多组外围设备。PIC16F877是一款基于EPROM的8位高性能微控制器。与其它价格相当的微控制器相比,它在执行速度和代码压缩方面都有很大的改进。
PIC16F877微控制器所具有的优越性能主要归功于它的精简指令集(RISC)和所采用的哈佛(Harvard)结构,它具有分离的程序储器空间(12位宽指令)和数据存储器空间(8位宽数据)。同时可运用两级流水线指令进行取数和执行,除了跳转指令需要两个周期外,其余所有的指令都可在单周期内执行.其优势为:
1) PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。PIC系列从低到高有几十个型号,按照指令的位数可以分为3类:初级产品,中 极产品,高级产品。可以满足各种需要。PIC16F877有40个引脚,其内部资源为ROM共4K、192字节RAM、8路A/D、3个8位定时器、2个CCP模块、三个串行口、1个并行口、11个中断源、33个I/O脚。
2) 精简指令使其执行效率大为提高。PIC系列8位CMOS单片机具有独特的RISC结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。
3) 产品上市零等待(Zero time to market)。采用PIC的低价OTP型芯片,可使单片机在其应用程序开发完成后立刻使该产品上市。
4) PIC有优越开发环境。OTP单片机开发系统的实时性是一个重要的指标,象普通51单片机的开发系统大都采用高档型号仿真低档型号,其实时性不尽理想。PIC在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。就我个人的经验看,还没有出现过仿真结果与实际运行结果不同的情况。
5) 其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。
6) 彻底的保密性。PIC以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,PIC采用熔丝深埋工艺,恢复熔丝的可能性极小。
7) 自带看门狗定时器,可以用来提高程序运行的可靠性。
8) 睡眠和低功耗模式。虽然PIC在这方面已不能与新型的TI-MSP430相比,但在大多数应用场合还是能满足需要的。
Microchip公司生产的PIC16F877是一款基于EPROM的8位高性能微控制器。与其它价格相当的微控制器相比,它在执行速度和代码压缩方面都有很大的改进。由于随时可以买到需要的OPT(一次性编程)产品,因而缩短了利用PIC16F877进行产品设计开发的周期。PIC16F877微控制器所具有的优越性能主要归功于它的精简指令集(RISC)和所采用的哈佛(Harvard)结构,它具有分离的程序储器空间(12位宽指令)和数据存储器空间(8位宽数据)。同时可运用两级流水线指令进行取数和执行,除了跳转指令需要两个周期外,其余所有的指令都可在单周期内执行。
本设计采用方案二,作为主控制器。
1.2.2 正弦信号产生
方案一:采用反馈型LC振荡原理,选择合适的电容、电感就能产生相应的正弦信号。此方案器件比较简单,但是难以达到高精度的程控调节,而且稳定度不高,故不采用。
方案二:采用DDS技术的基本原理。DDS技术是基于 Nyquist 采样定理,将模拟信号进行采集,经量化后存入存储器中(查找表),通过CPLD或者FPGA进行寻址查表输出波形的数据,再经D/A 转换滤波即可恢复原波形。根据 Nyquist 采样定理知,要使信号能够恢复,必须满足采样频率大于被采样信号最高频率的2倍,否则将产生混叠,经D/A 不能恢复原信号。此方案产生的波形比较稳定,在高频输出时会产生失真,而且电路比较复杂,故不采用。
方案三:直接采用DDS集成芯片。AD9850是AD公司生产的DDS芯片,带并行和串行加载方式,AD9850 内含可编程DDS 系统和高速比较器,能实现全数字编程控制的频率合成。采用先进的DDS技术在内部集成了32位相位累加器,14位正/负余弦和高性性能的10位D/A转换器以及高速比较器。它通过并口和串口的频率控制字来设定相应的累加器的步长大小,相位累加器的输出数字相位通过查表得到所需的频率信号的采样值。然后通过转换,输出所需频率的正弦输出信号的频率。由于DDS集成芯片能达到要求,而且节省硬件电路,程控调节能够方便实现。AD9850的工作原理为:
串行输入方式如图4所示,在WCLK的上升沿,40位数据由低位到高位依次从引脚25(D7)
移入到输入寄存器,并在FQ_UD的脉冲作用下,一次性打入到数据寄存器,以更新的输出频率(或相位)。
AD9850主要工作性能
(1)单电源工作:+3.3V或+5V。
(2)接口简单,可用8位并行口或串行口直接装载频率和相位调制数据。
(3)片内有高性能D/A转换器和高速比较器,可输出正弦波和方波。
(4)最高工作时钟125MHz,32位频率控制字保证在125MHz的工作时钟下频率分辨率达0.0291Hz。
(5)5位调相控制字,可实现相位调制功能。
(6)频率转换速率极快,可达2.3×107次/秒。
(7)低功耗:在125MHz时钟频率、+5V电源工作时,功耗为380mW;110MHz时钟、+3.3v工作时,功耗为155mW。
(8)工作温度范围宽:-40℃~+85℃。
D0—D7: 8位数据输入口,可分次并行转载40位控制数据,D7(第250脚)也可以作为串行数据输入端使用;
DEND: 数字地;
DVDD: 数字电源;
WCIK: 数字写入脉冲;
FQ-UD: 频率刷新功能信号;
CLK IN: 外部参考时钟输入,可以是CMOS电子的脉冲序列;
AGND: 模拟电源;
REST: DA 输出电流的了控制电阻连接端,通常接一只3.9K欧的电阻到地;
QOUT: 内部比较器输出端;
QOUTB: 内部比较器互补输出端;
VINN: 内部比较器的负相输入端;
VINP: 内部比较器的正相输入端;
DACBL: 内部的旁路端,通常悬空;
IOUTB: DA 的互补输出端;
本设计采用方案三,作为0~10MHz正弦信号发生。
1.2.3 输出电压放大
方案一:采用高频
三极管做功率放大。选择恰当的电阻和电容来实现符合题目要求的放大倍数。但是使用三极管放大时,信号放大的稳定性不高,很难满足题目的要求。故不采用。
方案二:采用宽频运算放大器做前级电压放大,AD8056可以达到300M的带宽,而且频率稳定性好。
所以在本设计中采用了方案二。
第二章 硬件设计
2.1系统的总体框图如图
根据上面的论证,本系统以PIC16F877单片机为核心,配合DDS专用芯片AD9850,完成正弦信号的产生,并辅以各个功能模块完成题目的设计要求。
2.2 硬件模块设计
2.2.1正弦信号产生模块
正弦信号产生模块的主要部分是AD9850。
AD9850 采用先进的CMOS 工艺, 其功耗在3.3V 供电时仅为155mW,温度范围为-40~80℃, 采用28 脚SSOP 表面封装形式。图2.3为其组成框图。图中层虚线内是一个完整的可编程DDS系统,外层虚线内包含了AD9850的主要组成部分。AD9850内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器, 它由一个加法器和一个N位相位寄存器组成,N为32;每来一个外部参考时钟,相位寄存器便以步长M递加;相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上;正弦查询表包含一个正弦波周期的数字幅度信息, 每一个地址对应正弦波中 0°~360°范围的一个相位点;查询表把输入地址的相位信息映射成正弦波幅度信号, 然后驱动DAC 以输出模拟量。
相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次, 相应地正弦查询表每经过一个循环也回到初始位置, 从而使整个DDS系统输出一个正弦波。输出的正弦波周期TO = Tc2N/M,频率fout = Mfc/2N ,Tc、fc 分别为外部参考时钟的周期和频率。AD9850采用32位的相位累加器将信号截断成14位输入到正弦查询表,查询表的输出再被截断成10 位后输入到DAC, DAC输出两个互补的电流。DAC满量程输出电流通过一个外接电阻RSET调节, AD9850精密时钟源和写入频率相位控制字之后就可产生一个频率和相位都可
编程控制的模拟正弦波输出, 此正弦波可直接用作频率信号源或经内部的高速比较器转换为方波输出。在125MHz 的时钟下, 32位的频率控制字可使AD9850 的输出频率分辨率达0.0291Hz;并具有5位相位控制位,而且允许相位按增量180°、90, 45, 22.5,11.25或这些字的组合进行调整。
2.2.2 带负载输出
要达到6V±1V的带负载输出,我们先使用宽频运放AD8056做前级放大,为了达到合适的电压增益,我们使用了两级放大切换,改变放大的级数以便适应增益要求;经运放输出的电压电流较弱,带负载能力不强,所以输出端接上了50Ω电阻,输出幅度能达到设计的要求。
2.2.3 正弦调制信号的产生
1k正弦调制信号的产生采用DDS技术。 DDS技术采用全数字技术实现频率合成,和其它一般的频率合成技术相比,有一些突出的优点和独特的性能:DDS 在相对带宽、频率转换时间、频率分辨率、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平。DDS的实现原理如下图所示:
DDS 技术的实现依赖于高速、高性能的数字器件。可编程逻辑器件以其速度高、规模大、可编程,以及有强大EDA 软件支持等特性,十分适合实现频率的合成。由于本系统要求产生1KHz的正弦调制信号,失真度要求要小,而且稳定性要好,DDS 的失真度除受D/A 转换器本身的噪声影响外,还与存储深度M和D/A 字长有密切关系.系采用Altera 公司的CPLD 器件EPM7128,其最高工作频率为120MHz,典型可用门5000 门,
DDS 设计电路产生的波形存在高次谐波,须进行低通滤波使波形平滑,为使通带内的起伏最小,我们采用了巴特沃斯二阶低通滤波器,如下图,巴特沃思二阶低通滤波器的截止频率为f c = 1/ 2πRC 。由于只需产生1KHz的正弦信号,本系统设计的滤波器的截至频率为2KHz。
图2-9 二阶低通滤波
2.2.4 LCD液晶显示
在各种智能仪器和便携产品中,除了能显示字符,数字之外,通常还能显示各种突图形,曲线,和屏幕的上下滚动,动画,闪烁,即文本显示功能,数据显示模块的首选应该是液晶显示器,因为它能够方便、明了地证明传输数据的正确性。由于本系统重点在与无线传输,如果采用不含字库的液晶显示器,那么大部分时间会花在做字库上面。因此,数据显示模块采用带字库的液晶显示器。
采用了TG12864A 液晶显示器,该显示器是128×64点阵式液晶,其结构见下图.
2.2.5 键盘扫描输入
通常情况下,需要用键盘输入数据,或对程序进行管理,因此在单片机的应用和调试中,键盘是一个必不可少的部分,键盘的扩展可以通过一些具有特殊功能的特殊芯片,如各种移位寄存器实现,虽然接口复杂,但是用到的单片机的接口较少,可直接用单片机的引脚作为键盘的行和列,但对单片机有特殊的较高的要求,尽管扩展键盘数量受引脚数量的限制,但编程简单,而且容易扩展。
第三章 系统软件设计
软件部分主要包括了具有友好界面的操作菜单,各种信号的设置和控制。正弦波产生过程为:频率设置,数据处理,然后控制DDS芯片完成各种频率的正弦波产生;调频信号产生过程:通过A/D转换器采集调制信号,然后根据调制信号的幅度计算出频偏,把频偏数据下载到DDS即可实现调频信号的产生。
软件流程图:
3.1 初始化A/D9850
void init_9850(void)
{
RST_9850=0;dds_up=0; //清除9850复位信号和9850频率更新信号
WR_9850=0x00;WR_9850=dp0_d32;WR_9850=dp0_d24;WR_9850=dp0_d16;WR_9850=dp0_d08;
dds_up=1; //9850频率更新信号有效
}
void set_ad9850(void)
{
RST_9850=1;dds_up=1;
_Nop_();_Nop_();
RST_9850=0;dds_up=0;
WR_9850=0x00;WR_9850=tp1_d32;WR_9850=tp1_d24;WR_9850=tp1_d16;WR_9850=tp1_d08;
dds_up=1;
3.2 初始化LCD
MOVLW .40
CALL DELAY_2
MOVLW B'00110000' ;功能设定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B'00110000' ;功能设定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B'00001100' ;显示状态开/关
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B'00000001' ;清除显示
MOVWF DAT
CALL W_COMMOND
VLW .10
CALL DELAY_2
MOVLW B'00000110' ;进入点设定
MOVWF DAT
CALL W_COMMON
3.3 初始化PIC16F877程序
void INIT877()
{
PORTA=0;
PORTB=0;
PORTC=0;
PORTD=0;
PORTE=0;
TRISA=0xff;
TRISB=0xfd;
TRISC=0xd7; // SCK, SDO:输出,SDI:输入
TRISD=0;
TRISE=0x03; // 片选CS 信号输出
PORTA=0xff;
PORTB=0x03; // RST=1
PORTC=0;
PORTD=0xff;
PORTE=0x04;
return;
}
4.4 AD9850控制字写入
#define PORTCIT(adr,bit) ((unsigned)(&adr)*8+(bit));
static bit W_CLK @ PORTCIT(PORTA,0);
static bit fq_ud @ PORTCIT(PORTA,1);
main
{
int i;
for (i=0;i<32;i++);
{
w_clk=0;fq_ud=0;
PORTD=0;
w_clk=1; fq_ud=1;
PORTD=(x0/65535)/255;
w_clk=1; fq_ud=1;
PORTD=(x0/65535)/255;
w_clk=1; fq_ud=0;
PORTD=(x0/65535)/255;
w_clk=1; fq_ud=0;
PORTD=(x0/65535)/255;
w_clk=1, fq_ud=0;
}
fq_ud=1;
}
4.4 键盘扫描显示
CALL KEYSCAN ;调用键盘扫描子程序
COMF VALUE ;
BTFSC STATUS,Z ;测试有没有按下,有,跳过下条指令
GOTO CHECK ;无,则继续进行下一条指令
MOVLW DATA1
CALL DELAY ;产生时延
KEYSCAN CLRF PORTB ;b1和b2两条线置0
NOP;
NOP ;延时使引脚电平稳定
MOVF PORTB ,W
ANDLW 0X30; ;只检查B4和B5两位,屏蔽其他
SUBLW 0X30
BTFSC STATUS,Z
BCF FLAG,F0; ;清除标志F0,表示键没按下
NOP
BTFSS STATUS,Z
BSF FLAG ;表示键没按下
RETURN
4.6 LCD显示
#INCLULDE (P16F877)
RS EQU 01H ;定义PORTD的位地址
E EQU 05H ;定义PORTC的位地址
LCD—DATA1 EQU 70H ;定义数据暂存器
BYTE EQU 71H ;定义数据暂存器
ORG 00H
GOTO START
SEMDCMD ;命令送到LCD
MOVWF BYTE ;存WREG到BYTE寄存器
SWAPF BYTE,W ;写入高半字节
Movwf LCD_DATA1
Rlf LCD_DATA1,1
Rlf LCD_DATA1,1
Movlw 0x3c
ANDWF LCD_DATA1,1
MOVF LCD_DATA1,W
MOVWF PORTD
Bcf PORTD,RS ;设置为送命令模式
BSF PORTC ;E发送数据信号
BSF PORTC,E
MOVF BYTE
MOVWF LCD_DATA1
RLF LCD_DATA1,1
RLF LCD_DATA1,1
MOVLW 0X3C
ANDWF LCD_DATA1,1
MOVF LCD_DATA1,W
MOVWF PORTD
BCF PORTD,RS ;设置为送命令模式
BSF PORTC ;E发送数据信号
BCF PORTC,E
CALL YS ;调延时子程序,等待LCD忙碌过后
RETURN
YS MOVLW OFH ;延时子程序
MOVWF 21H
ZM2 MOVLW 0FFH
MOVWF 22H
ZM1 DECFSZ 22H
GOTO ZM1
DECF SZ 21H
GOTO ZM2
RETURN
总 结
本设计以信号发生源为研究对象,使用PIC16F877单片机作为主控制器,通过AD9850产生频率并且经过DDS技术对频率的合成以完成对信号发生源的研制。文中详细介绍了AD9850并行方式的工作原理,DDS的合成技术,PIC16F877芯片功能和对AD9850的程序控制。本设计其他的部分包括人机界面(键盘控制)技术的实现,LCD液晶显示等。
在完成本次设计的过程中,遇到了很多的困难。在老师和同学们的帮助下,这些困难被一一克服了。通过本次设计,我不仅学习到了AD9850和PIC系列单片机的知识,更拓展了自己的视野。
当然,由于涉及的时间较短,加之对新的单片机系列比较陌生,设计之中还有很多不足的地方需要改进,真诚希望老师,前辈指正!