1、Signal generator Single-chip microcomputer keilc511 绪论1.1 选题背景及意义函数发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。在通信、广播、电视系统,在工业、农业、生物医学等领域内,函数信号发生器在实验和设备检测中具有十分广泛的用途。1.1.1 本课题的研究现状函数发生器既可以构成独立的信号源,也可以是高性能网络分析仪、频谱仪及其它自动测试设备的组成部分。函数发生器的关键技术是多种高性能仪器的支
2、撑技术,因为它能够提供高质量的精密信号源及扫频源,可使相应系统的检测过程大大简化,降低检测费用并极大地提高检测精度。美国安捷伦生产的33250A型函数任意波形发生器可以产生稳定、精确和低失真的任意波形,其输出频率范围为1Hz80MHz,而输出幅度为10mVpp10Vpp;该公司生产的8648D射频信号发生器的频率覆盖范围更可高达9kHz4GHz。国产SG1060数字合成信号发生器能双通道同时输出高分辨率、高精度、高可靠性的各种波形,频率覆盖范围为1Hz60MHz;国产S1000型数字合成扫频信号发生器通过采用新技术、新器件实现高精度、宽频带的扫频源,同时应用DDS和锁相技术,使频率范围从1MH
3、z1024MHz能精确地分辨到100Hz,它既是一台高精度的扫频源,同时也是一台高精度的标准信号发生器。还有很多其它类型的信号发生器,他们各有各的优点,但是函数发生器总的趋势将向着宽频率覆盖、高频率精度、多功能、多用途、自动化和智能化方向发展。目前,市场上的信号发生器多种多样,一般按频带分为以下几种:超高频:频率范围1MHz以上,可达几十兆赫兹。高频:几百KHZ到几MHZ。低频:频率范围为几十HZ到几百KHZ。超低频:频率范围为零点几赫兹到几百赫兹。超高频信号发生器,产生波形一般用LC振荡电路。高频、低频和超低频信号发生器,大多使用文氏桥振荡电路,即RC振荡电路,通过改变电容和电阻值,改变频率
4、。用以上原理设计的信号发生器,其输出波形一般只有两种,即正弦波和脉冲波,其零点不可调,而且价格也比较贵,一般在几百元左右。在实际应用中,超低频波和高频波一般是不用的,一般用中高频,即几十HZ到几MHZ。用单片机AT89C51,加上一片DAC0832,就可以做成一个简单的信号发生器,其频率受单片机运行的程序的控制。我们可以把产生各种波形的程序,写在ROM中,装入本机,按用户的选择,运行不同的程序,产生不同的波形。再在DAC0808输出端加上一些电压变换电路,就完成了一个频率、幅值、零点均可调的多功能信号发生器的设计。这样的机器体积小,价格便宜,耗电少,频率适中。1.1.2 选题目的及意义函数发生
5、器是一种经常使用的设备,由纯粹物理器件构成的传统的设计方法存在许多弊端,如:体积较大、重量较沉、移动不够方便、信号失真较大、波形种类过于单一、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等的要求,研究设计出一种具有频率稳定、准确、波形质量好、输出频率范围宽、便携性好等特点的波形发生器具有较好的市场前景,以满足军事和民用领域对信号源的要求。本次设计的主要目标是学习和运用单片机的C语言和汇编语言,利用单片机AT89C51和8位D/A转换芯片DAC0832共同实现正弦波,方波,三角波,锯齿波这四种常见波形的发生,并且可以接收外接键盘输入而在一定范围内改变频率。 在无标准函数发生仪器时,本
6、设计可以作为简单的函数发生器使用。本次设计准备在成本较低廉的前提下完成,主要是用AT89C51单片机,DAC0832,性能指数都不是很高,所以对此信号源的基本要求是能发生几种常见的波形,正弦波,方波,三角波,锯齿波,并且能够在一定的范围内改变频率。通过该课题的设计掌握以AT89C51为核心的单片机系统的软硬件开发过程和基本信号的产生原理、测量及误差分析方法,同时掌握函数发生器系统的设计流程;培养我们综合运用所学的基本知识、基本理论和基本技能的能力,学习解决一般工程技术和有关专业问题的能力,学习工程设计和科学研究的基本方法,完成对所学知识的综合训练。1.2 设计任务及要求本设计采用AT89C51
7、及其外围扩展系统,软件方面主要是应用C语言设计程序。系统以AT89C51单片机为核心,配置相应的外设及接口电路,用C语言开发,组成一个多功能信号发生系统。该系统的软件可运行于Windows XP环境下,硬件电路设计具有典型性。同时,本系统中任何一部分电路模块均可移植于实用开发系统的设计中,电路设计具有实用性。1.2.1 设计的基本要求(1)功能要求1.能产生正弦波、方波、三角波、锯齿波等4种周期性波形,并且可通调节变形成其它相关波形。2.用键盘输入可生成正弦波的基波及各次谐波单独的波形,也可生成基波和各次谐波线形组合的波形。3.输出波形的频率范围为1MHz1Hz;可以通过键盘输入粗调频率。4.
8、输出波形幅度范围为05V(峰-峰值),可调整。5.具有显示输出波形类型、及其粗调频率和幅度的功能。1.2.2 本文结构安排 全文共分为6章,第1章绪论(介绍设计的研究现状、选题意义及设计的任务与要求);第2章系统总体的设计原理;第3章系统的硬件设计;第4章系统的软件设计;第5章系统的调试与测试;第6章总结与展望2 函数发生器系统设计2.1 设计方案的比较 函数发生器的设计方案可用多种方案来完成。在设计前对各种方案进行了比较:方案一:用差分放大电路实现三角波到正弦波以及集成运放组成的电路实现函数发生器。波形变换的原理是利用差分放大器的传输特性曲线的非线性,传输特性曲线越对称,线性区域越窄越好;三
9、角波的幅度应正好使晶体接近饱和区域或者截至区域。方案二:用二极管折线近似电路以及集成运放组成的电路实现函数发生器。根据二极管折线近似电路实现三角波正弦波的变换频率调节部分设计时,可先按三个频率段给定三个电容值:1000pF、0.01mf、0.1F然后再计算R的大小。手控与压控部分线路要求更换方便。为满足对方波前后沿时间的要求,以及正弦波最高工作频率(1MHz)的要求,在积分器、比较器、正弦波转换器和输出级中应选用Sr值较大的运放(如LF353)。为保证正弦波有较小的失真度,应正确计算二极管网络的电阻参数,并注意调节输出三角波的幅度和对称度。输入波形中不能含有直流成分。方案三 :利用单片机AT8
10、9C51和8位D/A转换芯片DAC0832共同实现正弦波,方波,三角波,锯齿波这四种常见波形的发生,并且可以接收外接键盘输入而在一定范围内改变频率。可行性分析:上面三种方案中,方案一与方案二中三角波正弦波部分原理虽然不一样,但是他们有共通的地方就是都要认为地搭建波形变换的电路图。而方案三利用单片机构成的应用系统有较大的可靠性。系统扩展、系统配置灵活。容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。综上所述我们选择了第三种设计方案2.2 系统模块设计该函数发生器有以下几部分组成:(1)控制模块
11、(2)按键及其显示模块(3)D/A转换模块。2.2.1 控制模块:用单片AT89C51作为系统的主控核心。具有体积小,使用灵活的,易于人机对话和良好的数据处理,单指令周期和35M高速运算功能等优点。且单片机功耗低,价格低廉的优点。具有价格低廉的优点,但处理速度较慢(1/12M),AT89C51是它的35倍。方案三:用FPGA等可编程器件作为控制模块。FPGA可以实现各种复杂的逻辑功能,密度高,速度快,稳定性好等许多有点。FPGA在掉电后会丢失数据上电后须进行一次配置,因此FPGA在应用中需要配置电路和一定的程序。并且FPGA作为数字逻辑器件,竞争、冒险是数字逻辑器件较为突出的问题,因此在使用时
12、必须注意毛刺的产生、消除及抗干扰性。在次系统中,采用单片机作为控制比采用FPGA实现更简便。基于综合性价比,确定选择方案一.2.2.2 按键及其显示模块:采用传统的独立式按键;用传统的LED段选位选的方式进行波形的切换及显示。这种方式占用系统资源较多,并且效率低,程系编写大量而复杂。为了提高单片机的资源利用率和运行的效率,按键显示部分我们直接使用zlg7289扩展键盘,键盘与单片机连接。zlg7289芯片与单片机之间通信方便,而且由zlg7289对键盘进行自动扫描,可以去抖动,充分的提高了单片机的工作效率。在次系统中,我们直接采用zlg7289扩展键盘实现更简便,确定选择方案二。2.2.3 波
13、形产生模块使用锁相环通过分频运算实现频率的步进,这种方案频率稳定度高,但程控比较困难,而且步进范围过大,鉴于锁相环技术比较复杂,没有采用这种方案。使用专用函数发生电路,如ICL8038 或MAX038,通过D/A转换调整函数发生器控制电压实现频率的控制,这种方案可以使频率连续可调,省却了波形转换电路,但控制电压与频率的变化不是严格的线性关系,如果不加频率负反馈则频率无法稳定准确,加上频率负反馈将使电路大大复杂,稳定度也会下降,而且如果要实现比较大的带宽,就需要不断更换振荡电容,电路复杂程度进一步增加。为避免调试困难,没有采用这种方案。使用单片机的定时器设置定时时间,每半个周期对I/O 口取反一
14、次,从而实现频率输出。这种方案虽然在高频频段误差比较大,但是编程简单控制容易,权衡以上利弊,我们选择了方案三。2.2.4 D/A转换单片输出的是数字信号,必须通过D/A转换后才能模拟信号。采用D/A转换器AD7543。AD7543是一种串行的D/A转换器,与单片机之间的连线少,布线方便,而且又是12位的D/A转换器,精度高。但串行数据传输速度慢,当频率较高时,必须减少每周期输出的点数,这将会导致阶梯现象更加明显,因此,此方案不宜使用。采用DAC0832。这是8位的并行D/A转换器,转换速度快。采用2片DAC0832。由其中一芯片的输出电压作为另一芯片的参考电压,这样就可以方便的控制最大输出电压
15、。若采用方案二,在输出电压较低的情况下,比如为1V时,输出的最大电压只有参考电压的1/5,这将会使精度降低,而方案三刚好可以解决这个问题,因此,本系统选择了方案三。DAC0832芯片介绍DAC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用DAC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。DAC0832 具有以下特点: 8位分辨率; 双通道A/D转换; 输入输出电平与TTL/CMOS相兼容; 5V电源供电时输入电压在0到5V之间; 电流建立
16、时间1S; 一般功耗仅为15mW; 8P、14PDIP(双列直插)、PICC 多种封装; 商用级芯片温宽为0C 到 +70C,工业级芯片温宽为40C 到 +85C;芯片接口说明: CS 片选使能,低电平芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输入通道1,或作为IN+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)。DAC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入
17、与参考电压的复用,使得芯片的模拟电压输入在0到5V之间。据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。单片机对DAC0832 的控制原理:正常情况下DAC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当DAC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时
18、,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能 当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入
19、端IN+进行输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。作为单通道模拟信号输入时DAC0832的输入电压是0到5V且8位分辨率时的电压
20、精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。2.3 系统总体框图本系统是以单片机AT89C51和8位D/A转换芯片DAC0832以及zlg7289键盘及显示共同实现正弦波,方波,三角波,锯齿波这四种常见波形的产生及显示相互切换的功能。系统原理框图如图2-1图2-1 系统框图2.4 理论分析2.4.1 电路的理论计算由图3-6可知到U5的输出将作为DAC0832(2)的基准电压。假设运放U6的输入为;DAC0832
21、(2)的内部的电阻为。设U5的输入电压为下面进行讨论计算:(1) U6为一个反相比例器:(2) U5也为一个反相比例器:这是U4的输入为,记为V由于,这是U4实际上为为一个反响跟随器,即:所以:2本设计中的运放的连接的第二部分如图3-6如图3-6中的U2输入中的为图3-7中U4的输出。对于本运放组成的电路分析采用叠加法:设U2的输出为当电源全部接地时,有如下:此时的运放实际为一个反相比例器: (2-1)2当-12V和接地时: (2-2)3当12V和 (2-3)所以综上所述:为,三者之和。即:下面对的结果作一些辅助说明:特例:时 (2-4)以下进行代入数据的具体的分析:于是对于将图3-6与图3-
22、7及连在一起时,波形输出与调节部分的理论计算。当单片机分别向DAC0832(1)和DAC0832(2)输入数据和 (2-5) (2-6)其中,代入以上各式,得 (2-7)或者 (2-8)由(2-7)式可知,当在 0255 之间变化时,可在之间变化,即输出信号的峰峰值可由控制。 该电路由102电位器串接2个1电阻实现调节直流偏移,电位器触头在最右端和最左端时,电位器输出的电压分别为-5v和+5v,电位器的电压与通过一个加法器后,实现直流偏移的调节。2.4.2 波形产生相关理论DAC0832是8位的D/A转换器件,其工作电压是05V,当输入00数字量的时候,输出为0V电压;当输入80数字量的时候,
23、输出为2.5V电压;当输入FF数字量的时候,输出为5V电压。单片机的I/O输出均为+5 V的TTL电平,因此产生的正弦波幅值为+2.5 V。将一个周期内的正弦波形等分为256份,那么第1点的角度为0,对应的正弦值为2.5sin0第2点的角度为360/256,对应的正弦值为2.5sin (360/256 ) ,如此计算下去,将这些模拟量正弦值都转换为单极性方式下的数字量,得到一张按照点号顺序排列的正弦波波形数据表。而每次送到74LS373的八位数字量是根据查正弦波形数据表格而得到。其实在计算正弦波形数据的时候,并不需要算出整个02区间的每一个值,而只需计算出0中的值就行,其他区间的值都可以通过对
24、0中的值取不同的变换。比如的值可以和0值一一对应,而2的值可以对0区间的值取反得到。计算值可以用C语言编程得到。幅度公式为Y=2.51+sin() (N=0,1,264)相应的Y值数字化后的递增量=0.0196那么每一个点相对于起一个点的递增率为A= (Y2当前的点,Y1为前一个点)所以每一个点的数字量与递增率A成一一对应关系。2.5 单片机软件开发系统Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提
25、供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1