1、双相低频数字信号发生仪论文摘 要信号发生器是一种能产生模拟电压波形的设备,这些波形能够校验电子电路的设计。信号发生器广泛用于电子电路、自动控制系统和教学实验等领域。目前使用的信号发生器大部分是函数信号发生器,且特殊波形发生器的价格昂贵。所以本设计使用的是STM32单片机构成的发生器,可产生三角波、方波、正弦波、锯齿波,波形的频率可用程序控制改变。此系统使用STM32内部的DAC转换器,节约空间和成本。本设计具有线路简单、结构紧凑、价格低廉、性能优越等优点。两路信号频率范围从1000Hz到2000Hz可调,步进值1Hz,频率准确度不低于3%,且每路信号频率和步进值单独程控可调;产生两路频率相同的
2、正弦信号,程控设置其相位差,可以在0360度内变化,设置相位差的精度不大10度;产生的方波占空比在1%99%范围内可调,设置分辨率不低于1%。两路信号输出最大幅度不低于2.5V,每路幅度单独程控可调,设置分辨率不低于100mv;本信号发生器既可实现产生低频信号,也可实现产生高频信号,产生的信号为特定频率信号。关键词:信号发生器,STM32,DDS,波形目 录第 1 章 绪 论41.1 课题背景41.2 数字信号发生器简介4第2章 低频信号发生器的方案研究.5 2.1 方案的构思与选择52.2 方案的实现5第3章 硬件电路的设计.73.1 系统总体框图及其结构分析.73.1.1 系统框图展示.7
3、3.1.2 双向低频信号发生器的使用方法.73.2 硬件模块展示与分析.83.2.1 STM32单片机模块简介.83.2.2 显示及控制模块.93.2.3 电源模块.10第 4 章 波形产生及其软件设计.114.1软件总体设计.114.2波形产生.114.2.1 DDS数字法信号合成技术.114.2.2矩形波.114.2.3三角波.124.2.4 正弦波.134.2.5锯齿波.14结 论.16参考文献.17附录一 试验完整程序18附录二 实验成果展示38第 1 章 绪 论1.1 课题背景 随着电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。尤
4、其随着70年代微处理器的出现,更促使信号发生器向着自动化、智能化方向发展。现在,许多信号发生器带有微处理器,因而具备了自校、自检、自动故障诊断和自动波形形成和修正等功能,可以和控制计算机及其他测量仪器一起方便的构成自动测试系统。当前信号发生器总的趋势是向着宽频率覆盖、低功耗、高频率精度、多功能、自动化和智能化方向发展。在科学研究、工程教育及生产实践中,如工业过程控制、教学实验、机械振动试验、动态分析、材料试验、生物医学等领域,常常需要用到低频信号发生器。而在我们日常生活中,以及一些科学研究中,锯齿波和正弦波、矩形波信号是常用的基本测试信号。譬如在示波器、电视机等仪器中,为了使电子按照一定规律运
5、动,以利用荧光屏显示图像,常用到锯齿波产生器作为时基电路。信号发生器作为一种通用的电子仪器,在生产、科研、测控、通讯等领域都得到了广泛的应用。 但市面上能看到的仪器在频率精度、带宽、波形种类及程控方面都已不能满足许多方面实际应用的需求。加之各类功能的半导体集成芯片的快速生产,都使我们研制一种低功耗、宽频带,能产生多种波形并具有程控等低频的信号发生器成为可能。1.2 数字信号发生器简介 数字信号指幅度的取值是离散的,幅值表示被限制在有限个数值之内。二进制码就是一种数字信号。二进制码受噪声的影响小,易于有数字电路进行处理,所以得到了广泛的应用。凡是产生测试信号的仪器,统称信号源也称为信号发生器,它
6、用于产生被测电路所需特定参数的电测试信号。在测试、研究或调整电子电路及设备时,为测定电路的一些电参量,如测量频率响应、 噪声系数,为电压表定度等,都要求提供符合所定技术条件的电信号,以模拟在实际工作中使用的待测设备的激励信号。当要求进行系统的稳态特性测量时,需使用振幅、频率已知的正弦信号源。当测试系统的瞬态特性时,又需使用前沿时间、脉冲宽度和重复周期已知的矩形脉冲源。并且要求信号源输出信号的参数,如频率、波形、输出电压或功率等,能在一定范围内进行精确调整,有很好的稳定性,有输出指示。 第2章 低频双相信号发生器的方案研究2.1 总体方案构思与选择 波形发生器可以基于模拟技术,也可以基于数字技术
7、。模拟发生器利用模拟硬件来产生简单的函数,并在需要指定频率的静态正弦波或方波时经常使用。而数字函数发生器采用直接数字综合技术,DAC,数字信号处理。 。根据设计要求,为实现发生仪应有的功能,选择使用单片机、定时器、DA转换器作为信号发生部分,由真彩屏作为人机界面的设计思路。构思框图如下图所示。 图2-1-1 构思框图2.2 方案的实现根据双向低频信号发生器的功能需要,我们选用stm32单片机。使用STM32减少了外拓替他芯片,提高了一起的系统可靠性,其计算能力更强,计算速度更快,提高了波形实现的准确度。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-
8、M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基图2-2-1 STM32单片机 本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本 型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代 码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。 控制及显示界面选用的是TFT2.4寸的LCD液晶显示屏,及电子触摸屏。采用2.4寸彩色液晶
9、显示屏作为人机交互界面既美观,同时又能直接方便的调节对各通道各波形参数进行调节;在一种对外界完全隔离的环境下工作,不怕灰尘、水汽和油污,能适应各种恶劣环境;可以用任何物体来触摸,稳定性较好;四层结构造成其透光率较低;使用寿命相对较长;屏幕比较便宜;反应灵敏度也较好。 第3章 硬件电路的设计3.1 系统总体框图及其结构分析3.1.1 系统框图展示 双向低频信号发生器系统主要由CPU、定时器、两路12位DA转换器、控制及显示电路、供电电源等电路组成。系统总体框图如下图所示。图3-1-1-1 系统总体框图3.1.2 双向低频信号发生器的使用方法双向低频信号发生器通过320*240彩色触摸屏作为人机界
10、面调节两路波形,波形幅度,波形频率以及方波的占空比和正弦波的相位差。如图3-1-2-1的显示及控制界面图,触摸通道一下方的开(即打开通道一),点按通道区域波形处,即可改变波形(依次由三角波,正弦波,方波,锯齿波进行循环调节);在确定波 形以后,可点按通道一的频率区进行 图3-1-2-1 显示及控制界 1000Hz2000Hz的频率调节,其中每点按一次频率区依次对频率的千、百、十、个位进行上下调节(上下由调频处的上下按键改变);点按通道一的幅度区对幅度调节,每点按一次幅度值增加0.1V;特别的对于方波触摸通道一的占空比处可改变方波的占空比大小(由1%99%进行循环),每点按一次增加1%;同样的方
11、式对通道二各波形参数进行调节。另外在两路正弦波处于工作显示状态时,可点按相位差处对两路相位差进行调节(0360进行循环),每点按一次相位差增加1。在各通道,各参数都确定以后,触摸左上方“输出”按键,即可输出所要求的波形。、3.2 硬件模块展示与分析3.2.1 STM32单片机模块简介STM32F103内部主要配置: 内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。 存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。 时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。PO
12、R、PDR和课编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。调试模式:串行调试(SWD)和JTAG接口。图3-2-1-1 STM32最小系统 DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和USART。2个12位的us级的A/D转换器(16通道):A/D测量范围:0-3.6 V。双采样和保持能力。片上集成一个温度传感器。2通道12位D/A转换器:
13、STM32F103xC,STM32F103xD,STM32F103xE独有。最多高达112个的快速I/O端口:根据型号的不同,有26,37,51,80,和112的I/O端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。最多多达11个定时器:4个16位定时器,每个定时器有4个IC/OC/PWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。2个看门狗定时器(独立看门狗和窗口看门狗)。Systick定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。最多多达13个通信接口:2个IIC接口(SMBus/PMBus)。
14、5个USART接口(ISO7816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbit/s),两个和IIS复用。CAN接口(2.0B)。USB 2.0全速接口。SDIO接口。3.2.2 显示及控制模块液晶屏配置简介:1.模块名称2.4寸240x320全视角液晶显示模块3.显示模式: TFT4.分辨率: 240*3205.尺寸: 42.72*60.26*2.1mm6.可视面积37.72*49.96 mm7.点阵区36.72*48.96mm 8. 接口类型: 8080 8/16位并口模式 9. 9.连接类型:COG+FPC 图3-2-2-1 液晶屏引脚配置10.视角:全视角 电阻
15、式触摸屏是一种传感器,它 将矩形区域中的触摸点(X,Y)的物理位置转换为代表X坐标和y坐标的电压。很多LCD模块都采用了电阻式触摸屏,这种屏幕可以用四线,五线,七线或八线来产生屏幕偏置电压,同时读回触摸点的电压。 电阻式触摸屏基本上是薄膜加上玻璃的结构,当触摸时,薄膜下层的ITO会接触到玻璃上层的ITO,经由感应器传出一个讯息,再从控制器送到计算机端,藉由驱动程序转化到屏幕上的X、Y值,而完成点选的动作,并呈现在屏幕上。 采用2.4寸彩色液晶显示屏作为人机交互界面既美观,同时又能直接方便的调节对各通道各波形参数进行调节; 在一种对外界完全隔离的环境下工作,不怕灰尘、水汽和油污,能适应各种恶劣环
16、境;可以用任何物体来触摸,稳定性较好,;四层结构造成其透光率较低;使用寿命相对较长;屏幕比较便宜;反应灵敏度也较好。 3.2.3 电源模块 STM32的工作电压(VDD)为2.03.6V。通过内置的电压调节器提供所需的1.8V电源。 当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。 图3-2-3-1 图3-2-3-2第 4 章 波形产生及其软件设计4.1软件总体设计应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。系统的软件包括以下几个程序模块:初始化程序;键盘扫描程序与处理程序;定时器2服务程序;正弦波、三角波、方波、锯齿波发生程序及其
17、服务程序;中断处理程序等等。详细见附录1。4.2波形产生4.2.1 DDS数字法信号合成技术DDS技术是采用直接数字合成(Direct Digital Synthesis)的方法实现信号产生。该技术具有频率转换速度快、频率分辨率高、易于控制的突出特点。直接数字合成技术近年来发展得很快,而要产生任意波形就必须采用直接数字很成技术。数字函数发生器 图4-2-1-1 DDS原理图 采用直接数字综合DDS,DAC,数字信号处理,以及一个单周期存储缓冲器来产生信号。DDS技术依赖数字控制的方法,利用单基准时钟频率来实现一个模拟频率源。DDS能够实现高精度和高分辨率,高温度稳定度,高宽带,以及随机的和相位
18、连续的频率切换。4.2.2矩形波矩形波被广泛用于数字开关电路, 矩形波电压只有两种状态,不是高电平,就是低电平,所以电压比较器是它的重要组成部分;因为产生振荡,就是要求输出的两种状态自动地相互转换,所以电路中必须引入反馈;因为输出状态应按一定的时间间隔交替变化,即产生周期性变化,所以电路中要有延迟环节来确定每种状态维持的时间。 方波函数是一种常用的波形函数,其表达式为: 图4-2-2-1方波的波形图方波的函数如下:u32 ju_out(void) ha+;if(hazkb1)ak47=0;if(ha=4096)ha=0;return ak47;4.2.3三角波 .三角波与锯齿波很相似,,主要用
19、在CRT作显示器件的扫描电路中.如示波器,显像管, 显示器等.CRT是由许多点组成的.要形成光栅就要有电子束轰击这些发光点.扫描电路分水平和垂直扫描两种.可以一行或一帧的对CRT进行扫描.电子束从第一行或帧的一端开始扫到另一端,马上返回扫第二行或第二帧,锯齿波的特点是电压渐渐增大然后又逐渐降低,正好适合用于扫描电路中。图4-2-3-1 三角波的波形图三角波的函数如下:u32 san_out(void) if(debug=0) i=1; if(debug=4096) i=0; if(i=1) debug=debug+2; if(i=0) debug=debug-2; return debug;
20、4.2.4 正弦波 正弦波即是频率成分最为单一的一种信号,因这种信号的波形是数学上的正弦曲线而得名。正弦信号与余弦信号,两者只是在相位上相差2,可以统称为正弦信号。其一般形式为: f (t)=A sin(t+ ) 式中,A 为振幅, 是角频率, 为初相位。上述三量是正弦信号的三要素。它的波形见图1。正弦信号是周期信号,其周期T 与频率f 及角频率 之间的关系为: 正弦波函数如下:u32 zheng_out(void) u32 value;if(no4096) mvp=0;return mvp;结 论经过各组员的共同努力和老师的悉心指导,我们最终完成了我们的作品。作品性能总结如下:(1)两路信号
21、均可程控输出正弦波、方波、三角波和锯齿波;(2) 两路信号输出最大幅度不低于3.3V,每路幅度单独程控可调,设置分辨率不低于100mv;(3) 两路信号频率范围从1Hz到3000Hz可调,步进值1Hz,频率准确度不低于3%,且每路信号频率和步进值单独程控可调;(4)产生两路频率相同的正弦信号,程控设置其相位差,可以在0360度内变化,设置相位差的精度不大10度;(5)产生的方波占空比在1%99%范围内可调,设置分辨率不低于1%;在设计过程中,应用的知识有电路基础,模拟电子,数字电子,PROTEL99SE等,回顾一下,我们回顾了以前学过的知识,使自己的专业视野有所拓展,也是我们认识到学识有待提高
22、,在设计和实验过程中,与同学相互协作,讨论研究,也提升了我们的团队精神。参考文献1 谢自美电子线路设计实验测试(第三版)M武汉:华中科技大学出版社.2000年7月.2陈梓城实用电子电路设计与调试M北京:中国电力出版社.2006.63杨丽,李镇,孙厚军.基于FPGA的多波形信号发生器J.无线电工程,2OO5(7):46-484李志轶,赵晶,靳煌.DDS原理及在高速跳频系统中的应用J.船舶电子工程,2005,25(l):105陈嘉佳,潘志浩,王天麟一种基于DDS芯片AD9959的高精度信号发生器J.自动化仪表.2007(4):50-536徐爱钧,彭秀华.单片机高级语言C51应用程序设计M.电子工业
23、出版社,1998. 12-27张世仓,柴任,胡新梅.一种新型两路正弦波信号发生器的研究J.西安科技学院报,2002(4):459-468朱立锋.传统的和基于DDS的AWG之间的区别J.国外电子测量技术,1996,(1):1219田新广,张尔扬,邻书跃.DDS幅度量化杂散信号的频谱研究J.通信学报,Vol.24,No.7,79-85,200附录一实验完整程序:39#include stm32f10x.h#include DAC.h#include stm32f10x_it.h#include stm32f10x_tim.h#include stm32f10x_dac.h#include ili9
24、320.h#include Touch.h#include stdio.h#include math.h#define PI 3.1415926u16 x,y;/触摸屏位置float zkb1=0;/占空比1u32 zkx1=99;u8 zhan18;float zkb2=0;/占空比2u32 zkx2=99;u8 zhan28;float A1=0.76;/调整幅值float A2=0.76;u8 tj=0;/调频位选择u8 tj2=0;u8 fuzhi18;/幅值显示u32 fx1=25;u8 fuzhi28;u32 fx2=25;u32 ma=0;/选择波形u32 mb=0;u16 ap
25、p=0;/通道选择u16 ban=0;u32 date4096;/波形存储u32 date24096;u32 pl1=1000;/频率u8 pin18;u32 pl2=1000;u8 pin28;float xwc1=2048;/相位差u32 xwx1=180;u8 xiang18;u16 h,k;/随机使用变量u16 a,a2,b,b2,c,c2,da,da2;u32 no=0,no2;/*函数声明*/void GPIO_Configuration(void);u32 san_out(void);u32 zheng_out(void);u32 zheng2_out(void);u32 ju_
26、out(void);u32 ju2_out(void);u32 awm_out(void);void x_out(void);void y_out(void);void m_out(void);void n_out(void);void x2_out(void);void y2_out(void);void m2_out(void);void n2_out(void);/*主函数*/int main(void)DAC_RCC_Configuration();DAC_GPIO_Configuration();dac_config();TIM_Configuration();NVIC_Config
27、uration();TIM2_IRQHandler();SPI_Config();ili9320_Initializtion();ili9320_Clear(Red); GUI_Line(10,15,315,15,Black);GUI_Line(10,45,315,45,Black);GUI_Line(10,75,315,75,Black);GUI_Line(10,105,315,105,Black); GUI_Line(10,135,315,135,Black);GUI_Line(10,165,315,165,Black);GUI_Line(10,195,315,195,Black);GUI
28、_Line(10,225,315,225,Black);GUI_Line(10,15,10,225,Black);GUI_Line(110,15,110,225,Black);GUI_Line(215,15,215,165,Black);GUI_Line(215,195,215,225,Black);GUI_Line(315,15,315,225,Black);GUI_Line(180,165,180,195,Black);Putstr_color(36,48,幅度, 24, Black,Blue ,TRANSP );Putstr_color(36,78,波形, 24, Black,Blue
29、,TRANSP );Putstr_color(36,108,频率, 24, Black,Blue ,TRANSP );Putstr_color(24,138,占空比, 24, Black,Blue ,TRANSP );Putstr_color(24,168,相位差, 24, Black,Blue ,TRANSP );Putstr_color(11,198,调节, 24, Black,Blue ,TRANSP );Putstr_color(61,198,确定, 24, Black,Blue ,TRANSP );Putstr_color(120,198,开 关, 24, Black,Yellow
30、,TRANSP );Putstr_color(145,198, , 24, Black,Red ,TRANSP );Putstr_color(252,168,上, 24, Black,Blue ,TRANSP );Putstr_color(225,198,开 关, 24, Black,Yellow ,TRANSP );Putstr_color(250,198, , 24, Black,Red ,TRANSP );Putstr_color(282,168,下, 24, Black,Blue ,TRANSP );Putstr_color(124,18,通道一, 24, Black,Yellow ,
31、TRANSP );Putstr_color(224,18,通道二, 24, Black,Yellow ,TRANSP );Putstr_color(36,18,输出, 24, Black,Blue ,TRANSP );Putstr_color(182,168,调频:, 24, Black,Red ,TRANSP );pin10=0x31;pin11=0x30;pin12=0x30;pin13=0x30;pin14=H;pin15=Z;pin20=0x31;pin21=0x30;pin22=0x30;pin23=0x30;pin24=H;pin25=Z; while(1) x=TPReadX()
32、;/触摸检测y=TPReadY();Putstr_color(124,18,通道一, 24, Black,Yellow ,TRANSP );Putstr_color(224,18,通道二, 24, Black,Yellow ,TRANSP );/*通道1*/*通道1选择开关*/if(x120&x198&y175&x198&y225)app=0;for(b=0;b61&x198&y120&x75&y4) ma=1; switch(ma)case 1:/三角波Putstr_color(124,78,三角波,24,Blue,Red,NORMAL);Putstr_color(115,108,pin1,
33、24,Blue,Red, NORMAL);if(x120&x48&y33)fx1=1;A1=0.03; fuzhi10=(fx1)/10+0x30;fuzhi11=.;fuzhi12=(fx1)%10+0x30;fuzhi13=V;fuzhi14=0;Putstr_color(130,48,fuzhi1,24,Blue,Red, NORMAL);if(x115&x108&y252&x168&y0x39) pin10=0x30; if(x282&x168&y193) pin10=pin10-1; if(pin10252&x168&y0x39) pin11=0x30; if(x282&x168&y193) pin11=pin11-1; if(pin11252&x168&y0x39) pin12=0x30; if(x282&x168&y193) pin12=pin12-1; if(pin12252&x168&y0x39) pin13=0x30; if(x282&x168&y193) pin13=pin13-1; if(pin130