基于ARM(LPC2138)嵌入式系统的多功能数字信号发生器

更新时间:2023-07-19 00:03:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

二、文献综述

信号发生器是用来提供各种测量所需信号的仪器,它是一种常用的信号源,广泛应用于电子电路、自动控制和科学试验等领域。在分析电子线路时,常常需要了解输出信号与输入信号之间的关系,为此常信号发生器产生一个信号来激励系统,以便观察、分析它对激励信号的反映。自十九世纪六十年代以来,信号发生器有了迅速的发展出现了函数发生器、扫频信号发生器、合成信号发生器、程控信号发生器等新种类,各类信号发生器的主要性能指标也都有了大幅度的提高,同时在简化机械结构、小型化、多功能等各方面也有了显著的进展。

产生所需参数的电测试信号仪器。按其信号波形分为四大类:①正弦信号发生器。主要用于测量电路和系统的频率特性、非线性失真、增益及灵敏度等。按其不同性能和用途还可细分为低频(20赫至10兆赫)信号发生器、高频(100千赫至300兆赫)信号发生器、微波信号发生器、扫频和程控信号发生器、频率合成式信号发生器等。②函数(波形)信号发生器。能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫。除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域。③脉冲信号发生器。能产生宽度、幅度和重复频率可调的矩形脉冲的发生器,可用以测试线性系统的瞬态响应,或用作模拟信号来测试雷达、多路通信和其他脉冲数字系统的性能。④随机信号发生器。通常又分为噪声信号发生器和伪随机信号发生器两类。噪声信号发生器主要用途为:在待测系统中引入一个随机信号,以模拟实际工用随机信号代替正弦或脉冲信号,以测定系统动态特性等。当用噪声信号进行相关函数测量时,若平均测量时间不够长,会出现统计性误差,可用伪随机信号来解决。

各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。函数信号发生器的实现方法通常有以下几种:

(1)用分立元件组成的函数发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试。 (2)可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。 (3)利用单片集成芯片的函数发生器:能产生多种波形,达到较高的频率,且易于调试。鉴于此,美国美信公司开发了新一代函数信号发生器ICMAX038,它克服了(2)中密函数信号发生器IC。在锁相环、压控振荡器、频率合成器、脉宽调制器等电路的设计上,MAX038都是优选的器件。

(4)利用专用直接数字合成DDS芯片的函数发生器:能产生任意波形并达到很高的频率。但成本较高。

对信号发生器的基本要求是:

(1)输出的幅度稳定.其稳定度按其用途不同,可从百分之儿到万分之几,甚至更高;

(2)输出波形要好。如正弦波振荡器要求失真度小,—般在3%以下,有些情况下要求达到小于1%; (3)输出额率的稳定皮要高。一般希望每小时效率变化的相对值(指短期稳定度△f/f时)小于10-3 对作为精确频率测量用的信号频率输出,其稳定度要求就更高;

(4)要求有一定的输出功率。对于低频振荡器,常希望有1W以上的输出功率,而对高频振荡器的输出功率要求较低.

低频信号发生器的原理:系统包括主振级、主振输出调节电位器、电压放大器、输出衰减器、功率放大器、阻抗变换器(输出变压器)和指示电压表。主振级产生低频正弦振荡信号,经电压放大器放大,达到电压输出幅度的要求,经输出衰减器可直接输出电压,用主振输出调节电位器调节输出电压的大小。设计针对低频信号源进行设计,设计以LPC2138为控制芯片,探索研究了低频信号发生器的原理和应用,设计输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波、调幅波、调频波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点的多功能信号源。

在信号源中对它本身的抗干扰能力还是有很高的要求的。干扰的渠道主要有三条: 空间干扰(场干扰),电磁信号通过空间辐射进入系统;过程通道干扰,干扰通过与系统相连的前向通道、后向通道及与其它系统的相互通道进入;供电系统干扰,电磁信号通过供电线路进入系统。一般情况下空间干扰在强度上远小于其它两种,故系统中应重点防止过程通道与供电系统的干扰。抗干扰措施有硬件措施和软件措施。硬件措施如果得当,可将绝大部分干扰拒之门外,但仍然会有少数干扰进入系统,故软件措施作为第二道防线必不可少。由于软件抗干扰措施是以CPU为代价的,如果没有硬件消除绝大多数干扰,CPU将疲于奔命,无暇顾及正常工作,严重影响系统的工作效率和实时性。因此,一个成功的抗干扰系统是由硬件和软件相结合构成的。在输出信号时,外部干扰有可能使信号出错。在软件上,最有效的方法就是重复输出同一个信号,只要重复周期尽可能短,锁存器接收到一个被干扰的错误信号后还来不及作出有效的反应,一个正确的输出信号又来到,就可以及时防止错误动作的产生。CPU抗干扰措施前面几项抗干扰措施是针对I/O通道,干扰还未作用到系统本身,这时系统还能正确无误地执行各种抗干扰程序,当干扰作用到系统本身时),系统将不能按正常状态执行程序,从而引起混乱。如何发现系统受到干扰,如何拦截失去控制的程序流向,如何使系统的损失减小,如何恢复系统的正常运行,这些就是CPU抗干扰需要解决的问题。可以采用以下几种较常见方法:人工复位,对于失控的CPU,最简单的方法是使其复位;掉电保护,电网瞬间断电或电压突然下降将使微机系统陷入混乱状态,电网电压恢复正常后,微机系统难以恢复正常。对付这一类事故的有效方法就是掉电保护;睡眠抗干扰;指令冗余;软件陷阱。

在设计中,信号的输出为一个完整的周期信号不断的输出,使得信号源能够在输出时具备一定的抗干扰能力。然后在末级还串上了一由RC组成的低通滤波器,形成了软件与硬件相结合的抗干扰措施,同时提高了系统的带载能力。

在设计复合波形时,本来是要将频率分别为1W、2W、3W的三个正弦信号进行复合的,这就要求在信号数据输出时必须先输出一个3W的信号数据等下一个时输出3W、2W的,1W点间隔三个点输出,这样才能将三个不同频率的波形整合到一起。但是在不同的波形之间波形的叠加最好是在同频率的波形之间进行,就选择了三个同频率的正弦波、三角波和方波进行复合。设计中碰到它们复合时幅度的控制问题,

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

若幅度没控制好,示波器显示出来的将是一些杂波,并不是一个复合的波形,因此应该将复合波形的幅度系数除掉一个参数,以保证波形的完好输出。

设计的低频信号发生器的达到很高稳定性,可以将其用在电子线路与系统的设计、测试和维修中。

多功能信号源设计

基于ARM的多功能信号源设计

【摘要】

本设计主要研究和设计基于ARM(LPC2138)嵌入式系统的多功能数字信号发生器,采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点。

目 录

引言 ………………………………………………………………………………1 1 系统设计任务与要求………………………………………………………………1

1.1设计任务 ………………………………………………………………………1 1.2 设计要求………………………………………………………………………1 2 方案论证及选择………………………………………………………………1

2.1信号产生部分…………………………………………………………………1 2.2 幅度调制(AM)信号的产生……………………………………………………2

2.3 频率调制(FM)信号的产生…………………………………………………2 2.4 滤波电路………………………………………………………………………2

3 系统设计 ……………………………………………………………………3

3.1 系统框图………………………………………………………………………3 3.2 各功能模块………………………………………………………………………3 3.2.1波形产生电路……………………………………………………………3

3.2.2键盘模块…………………………………………………………………3

3.2.3滤波器设计………………………………………………………………3 3.2.4显示模块…………………………………………………………………3

3.3各个功能块的实现原理及分析 ………………………………………………3 3.3.1正弦波的产生……………………………………………………………3

3.3.2三角波的产生……………………………………………………………4

3.3.3方波的产生………………………………………………………………4 3.3.4复合波形的产生…………………………………………………………4 3.3.5幅度的控制………………………………………………………………4 3.3.6频率的控制………………………………………………………………4 3.3.7滤波器设计………………………………………………………………4 3.3.8键盘模块………………………………………………………………4

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

4 软件设计 ……………………………………………………………………5 5 系统测试与数据分析 …………………………………………………………7

5.1 测试工具…………………………………………………………………………7 5.2 测试数据及表格…………………………………………………………………7

5.2.1 频率与间隔点数的计算…………………………………………………7 5.2.2 不同波的幅度与频率的测试…………………………………………7 5.3 调试结果图………………………………………………………………………9

5.3.1 三角波………………………………………………………………9 5.3.2 正弦波…………………………………………………………………9 5.3.3 方波……………………………………………………………………10 5.3.4 合成波…………………………………………………………………10

6 结论 ……………………………………………………………………………11 致谢语 ……………………………………………………………………………11 参考文献……………………………………………………………………………11 附录 ……………………………………………………………………………13

引 言

信号发生器是用来提供各种测量所需信号的仪器,它是一种常用的信号源,广泛应用于电子电路、自动控制和科学试验等领域。在分析电子线路时,常常需要了解输出信号与输入信号之间的关系,为此常信号发生器产生一个信号来激励系统,以便观察、分析它对激励信号的反映。自十九世纪六十年代以来,信号发生器有了迅速的发展出现了函数发生器、扫频信号发生器、合成信号发生器、程控信号发生器等新种类,各类信号发生器的主要性能指标也都有了大幅度的提高,同时在简化机械结构、小型化、

[1]

多功能等各方面也有了显著的进展。

在实际应用中,低频信号发生器用来产生1HZ一1MHZ的低频信号,这种信号发主器在电子线路与系统的设计、测试和维修中的应用最为广泛。

本设计以LPC2138为控制芯片,探索研究了低频信号发生器的原理和应用,设计输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波、调幅波、调频波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点的多功能信号源。

1 系统设计任务与要求

1.1 任务

设计一个多功能信号发生器

1.2 要求

(1)能够产生正弦波、方波和三角波(频率范围1HZ~50KHZ) (2)能产生由以上波形整合成的复合波形 (3)实现波形间的切换

2 方案论证及选择

2.1 信号产生部分

方案一:

使用集成函数发生器芯片ICL8038。

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

芯片ICL8038能输出方波、三角波、正弦波和锯齿波四种不同的波形,将他作为信号发生器。它是电压控制频率的集成芯片,失真度很低。可输入不同的外部电压来实现不同的频率输出。为了达到数控的目的,可用高精度DAC来输出电压以控制正弦波的频率。 方案二:

[2]

锁相环频率合成器(PLL)

锁相环频率合成器(PLL)是常用的频率合成方法。锁相环由参考信号源、鉴相器、低通滤波器、压控振荡器几个部分组成。通过鉴相器获得输出的信号FO与输入信号Fi的相位差,经低通滤波器转换为相应的控制电压,控制VCO输出的信号频率,只有当输出信号与输入信号的频率于相位完全相等时,锁相环才达到稳定。

如果在环路中加上分频系数可程控的分频器,即可获得频率程控的信号。由于输出信号的频率稳

定度取决于参考振荡器信号fi ,参考信号fi 由晶振分频得到,晶振的稳定度相当高,因而该方案能获得频率稳定的信号。一般来说PLL的频率输出范围相当大,足以实现1kHz-10MHZ的正弦输出。如果fi=100Hz只要分频系数足够精细(能够以1步进),频率100Hz步进就可以实现。 方案三:

[3]

直接数字频率合成(DDS)

DDS是一种纯数字化方法。它现将所需正弦波一个周期的离散样点的幅值数字量存入ROM中,然后按一定的地址间隔(相位增量)读出,并经DA转换器形成模拟正弦信号,再经低通滤波器得到质量较好的信号。 方案四:

[4]

基于计算的数字频率合成

利用函数将波形的点数保存在芯片的RAM中,根据所要的波形的频率计算出它的周期,经计算得到在定时器定时时间固定的前提下产生一个完整的波形所需要的输出的点数,这样数据指针可以根据点数的数量来进行移动,得到频率准确、切换快速的信号。

方案一(VOC)不能实现稳定频率信号的输出并且难于数字控制。并且电容、电阻参数随温度等其他因素的影响,频率稳定度以及电路的稳定度都较低,实现也较复杂,不予采纳。虽然ICL8038可很好

[4]

的实现频率输出的控制,但查看ICL8038的设计资料可知其频率输出范围为0.01Hz~300kHz,不能达到题目的要求,故不予选用。PLL方案和DDS方案都能实现1kHz~10MHz的稳定的信号输出,且能达到100Hz频率步进,但是PLL的动态特性却很差,在频率改变时,环路从不稳定到稳定的过程有时间延迟。相比较而言,DDS的频率输出范围一般低于PLL,且杂散也大于PLL方案,但DDS信号源具有输出频率稳定度高、精度更高、分辨率更高且易于程控等优点,且频率改变不存在失调过程,尽管有杂散干扰,只需在输出级加滤波器仍可以得到质量很好的波形。而方案四集中了上述三个方案的各个优点,因此采用方案四来实现波形信号的产生。

2.2 对幅度进行调整

方案一:

用高速模拟乘法器实现

采用AD835高速模拟乘法器,来实现模拟调制。模拟乘法器AD835的-3dB截止频率为250MHz,能够满足题目的要求。但是AD835的差分输入范围仅为±1V,因此必须对输入信号进行预处理,这样在增加硬件的同时,又加大了设计的难度。 方案二:

采用高速的D/A转换器

[5]

在LPC2138中集成着一个高速的D/A转换器,我们可以直接在软件中设置一个幅度的参数来改变输出波形的幅度大小。

综上所述,采用方案(二)虽然增加了软件的难度,延迟了波形的输出时间,但是可以不用外加硬件拓展,节省了成本。

2.3 对频率进行调整

方案一:

通过在存储芯片ROM中保存不同频率信号的信号发生点数,在频率切换时调用ROM中所存储的不同点数模块来实现频率的切换。 方案二:

在存储芯片RAM中保存由软件实时产生的波形点数,通过所取的点数的不同来决定发生的波形的

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

频率。

由于设计中的信号要进行不断的改变,因此波形的数据不能存储在ROM中,应该存储RAM中,因此采用方案二的设计方法。

2.4 滤波电路

方案一:

[6]

利用运放芯片TL082构成的有源二阶巴尔沃基滤波器,它的频率范围可以达到1MHZ,远远高于我们所要的达到的最高频率,而且可以同时提高输出电压的稳定性即带载能力。 方案二:

采用硬件构建的模拟滤波器,通常这种滤波电路主要采用无源元件R,L和C组成的低通滤波电路[6]

。其优点是具有不用电感,体积小,重量轻等优点;缺点是其集成运放的带宽有限,电路的工作频率有限难以做得很高。

由于所设计的信号源的频率相对来说不是很高,采用RC滤波器已经可以很好的完成设计的要求。因此采用方案二。

3 系统设计

3.1 系统框图(如图3-1)

图3-1 系统方框图 3.2 各功能模块 3.2.1 波形产生电路

通过软件将波形数据存储到RAM当中去,再把这些数据输送到D/A转换器进行转换得到模拟波形。

3.2.2 键盘模块

用LPC2138开发板上自身带有的键盘得到键值,通过中断服务程序将键盘信息传给控制芯片。

3.2.3 滤波器设计

直接采用RC过程的简单的滤波电路,此方法设计简单,又完全满足设计要求。

3.2.4 显示模块

波形直接在示波器上显示,波形的中间调试参数在上位机EasyARM2131上显示,这样节省了外部显示模块的扩展,使得硬件电路更加的简便。

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

3.3 各个功能块的实现原理及分析 3.3.1 正弦波的产生

本设计中信号的产生直接用LPC2138芯片上集成的D/A转换器和软件的结合来生成。波形的信号数据采用了函数计算的方法来取得:

[7]

Y=sin(N) (3-1)

其中,N表示所要取得的点数的多少。在设计中我选择N=1024,即一个完整的基本的正弦信号有1024个数据信号点组成。

将数据存储到控制芯片LPC2138的RAM当中,根据所要的频率来取得信号数据的多少,点数多少的计算如下:

[7]

N=T/2t (3-2)

其中,N表示点数,T表示所要产生的波形信号的周期,t表示定时器的时间长短. 从RAM中 取得点数的间隔为:

M=1023/N[8] (3-3)

其中M表示在RAM中的表格取得点数的间隔.根据不同的间隔的大小决定产生一个完整的波形信号所要的数据多少不同.

设计中要求信号的最高产生的频率为50KHZ, 根据奈奎斯特定理,采样的频率最少要为所要信号的频率的两倍,但是为了更好的保证信号的完整输出,我们至少要让它采样10个点才能输出完整波形,就要求采样的频率为他的10倍即500KHZ,采样时间的大小为2us,这刚好满足了LPC2138控制芯片上的集成D/A转换器最高转换时间为1us的限制。

3.3.2 三角波的产生

在设计中,三角波的产生就直接利用定时器定时时间的长短来控制信号数据的输出,信号数据从

[9]

一个较低(或高)的位置开始按照一定的规律步进,当其达到一个高度时再按照相同的步进下降到原来的数据大小,如此反复的输出就构成了三角波模拟信号的输出。

3.3.3 方波的产生

在设计中,方波的产生由大小不同的两个信号数据交替输出形成,每个信号数据输出的时间长短根据所要点信号频率来决定。

3.3.4 复合波形的产生

复合波形由正弦波、方波和三角波合成。

V∑(wt)=A*Vsin(wt)+B*Vpul(wt)+C*Vtri(wt) (3-4)

其中:V∑(wt)为复合波形函数,Vsin(wt) 为正弦,Vpul(wt)为方波, Vtri(wt)三角波,A、B、C为他们在复合波形中所占的比率系数,只要改变三个比例系数就可以得到不同的复合波形。

根据波形合成的知识,要使多个波形合成必须保证子波形的频率是一致的,因此,设计时三种波形的组成信号数据的多少是一样的,这样在定时时间一样的情况下就保证了三个波形的频率是一样的。

[10]

3.3.5 幅度的控制

在设计中,为了能使波形在示波器中显示,这样就要设定好波形的幅度,在设计时我把波形的幅度控制在1024之内,才能很好的显示波形。同时为了改变幅度的大小,我设置了一个参数直接与所取得的信号数据相乘,这就改变了信号数据的大小,也就使得D/A转换时的数据大小产生变化,从而体现在输出的信号波形在幅度上发生改变。

3.3.6 频率的控制

在输出的信号数据的时间间隔一定时,当产生一个完整波形时所需要的点数发生变化时信号的周期就发生变化,这样它的频率就相应的变化。因此,在设计中, 通过固定定时器的定时长短,改变波形数据的点数多少就改变了信号的频率。

3.3.7 滤波器设计

由于我所设计的信号源的输出频率还不是很高,所以可以用简单的低通滤波器就可以完成滤波的功能,因此我选择使用RC低通滤波器。参数为:R=100欧姆,C=0.1UF。

具体结构如下:

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

3.3.8 键盘模块

键盘是直接与ARM(LPC2138)芯片的P0口P0.16—P0.21连接,通过ARM芯片对P0.16—P0.21输

[11]

入数据,0表示有效,1表示无效。键1用来选择输出波形,键2用来选择所要改变的参数,键3和键4用来加/减键3所选的参数

4 软件设计

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

中断1

对波形进行选择

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

5 系统测试与数据分析

5.1 测试工具

双踪示波器 YB-4325(20MHZ) 万用表

5.2 测试数据及表格 5.2.1 频率与间隔点数的计算

由于正弦波总的波形长度分为1024个分点,即0~1023,因此在频率为fKHz时,点数n=1000/2/f,所以间隔=1023*n,具体如下:

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

5.2.2 不同波的幅度与频率的测试

根据精度的计算方法可知,波形产生的精度=1/1023≈0.001,即偏差为±0.0005,这使产品产生的波形达到了很高的精度。

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

5.3 调试结果图

5.3.1 三角波

频率=200HZ 幅度=2.4V

5.3.2 正弦波

频率=40HZ 幅度=100MV

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

5.3.3 方波

频率=1000HZ 幅度

=2V

5.3.4合成波

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

频率=100HZ 幅度

=0.8V

6 结论

本设计以LPC2138为核心很好的完成了设计的要求,在设计中力求硬件电路的简单,充分发挥软件的编程的方便灵活的特点,并最大限度挖掘嵌入源,来满足系统设计要求。

附录:(程序)

********************************************************************************************************************************************************************************** #include "config.h" #include "math.h" #include "stdio.h"

const uint32 LED1=( 1 << 18); // P0.7控制蜂鸣器,低电平蜂鸣(#DEFINE BEEP OX00000070) const uint32 LED2=( 1 << 19); const uint32 LED3=( 1 << 20); const uint32 LED4=( 1 << 21); const uint32 LED5=( 1 << 22);

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

const uint32 LED6=( 1 << 23); const uint32 LED7=( 1 << 24); const uint32 LED8=( 1 << 25);

#define BEEP 1<<7 #define key1 1<<16 #define key2 1<<17 #define key3 1<<18 #define key4 1<<19 #define key5 1<<20 #define key6 1<<21

uint32 pinsave;

#define pinvalue (0x3f<<16) //定义键盘 uint16 delay; uint16 bo=0 ; uint16 canshu=0; uint16 da;

static uint16 l=0; uint16 k=0,b,c; uint16 zj_flag=0; uint16 table[1024]; static uint16 i; static uint16 a=0;

static uint16 hight=13,fc=5;

#define UART_BPS 115200 // 通讯波特率115200

/***************************************************************************************/ ** 函数名称 :UART0_Init()

** 函数功能 :初始化串口0:波特率115200,8位数据位,1位停止位,无奇偶校验。 ** 入口参数 :无 ** 出口参数 :无

/***************************************************************************************/ void UART0_Init (void) { uint16 Fdiv; U0LCR = 0x83; // DLAB = 1 Fdiv = (Fpclk / 16) / UART_BPS; U0DLM = Fdiv / 256;

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

U0DLL = Fdiv % 256; U0LCR = 0x03; }

/***************************************************************************************/ ** 函数名称 :UART0_SendByte()

** 函数功能 :向串口发送字节数据,并等待数据发送完毕。 ** 入口参数 :data 要发送的数据 ** 出口参数 :无

/***************************************************************************************/ void UART0_SendByte (uint8 data) { // data=18; U0THR = data; while ((U0LSR & 0x40) == 0); // 等待数据发送完毕 }

/***************************************************************************************/ ** 函数名称 :PC_DispChar()

** 函数功能 :向PC机发送显示字符。 ** 入口参数 :x 显示字符的横坐标 ** y 显示字符的纵坐标 ** chr 显示的字符,不能为ff ** color 显示的状态,包括前景色、背景色、闪烁位。 ** 与DOS字符显示一样:0~3,前景色,4~6,背景色,7,闪烁位。 ** 出口参数 :无

/***************************************************************************************/ void PC_DispChar (uint8 x, uint8 y, uint8 chr, uint8 color) { UART0_SendByte(0xff); // 起始字符 UART0_SendByte(x); UART0_SendByte(y); UART0_SendByte(chr); UART0_SendByte(color); }

/**************************************************************************************/ ** 函数名称 :ISendStr()

** 函数功能 :向上位机发送字符串。 ** 入口参数 :x 显示字符的横坐标 ** y 显示字符的纵坐标 ** color 显示的状态,包括前景色、背景色、闪烁位。

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

** 与DOS字符显示一样:0~3,前景色,4~6,背景色,7,闪烁位。 ** str 要发送的字符串,以'\0'结束 ** 出口参数 :无

/**************************************************************************************/ void ISendStr (uint8 x, uint8 y, uint8 color, char *str) { while (1) { if (*str == '\0') break; // 结束字符 PC_DispChar(x++, y, *str++, color); if (x >= 80) { x = 0; y++; } } }

/****************************************************/ **正弦

/****************************************************/ void sin_wave(void) { if(a == 1024) a=0;

DACR=(((table[a++])*hight/26)<<6); } /*

/**********************************************************/ **三角波

/**********************************************************/ void trip_wave(void) {

if (zj_flag==0) { b+=2; if (b>1020) { zj_flag=1; } } else { b-=2;

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

if (b<10) { b=10; zj_flag=0; } } DACR=((b*hight/26)<<6); }

/***************************************************/ **方波

/***************************************************/ void fang_wave(void) {

k++; if(k<512) c=1024*hight/26; else c=10; if(k>1024) k=1; DACR=(c<<6); }

/**************************************************/ **合成波

/**************************************************/ void hecheng(void) { if(l<512) { b=b+1; da=(table[a++])/20+256+(b)/10;} else {b=b-1; da=(table[a++])/20+1+(b)/10;} DACR=(da<<6); l++; if(l>1024) l=0;

if(a == 1024) a=0;

T0IR = 0x01;

VICVectAddr = 0x00; }

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

/***************************************************************************************/ ** 函数名称 :IRQ_Timer0()

** 函数功能 :定时器0中断服务程序,取反LED9控制口。 ** 入口参数 :无 ** 出口参数 :无

/***************************************************************************************/ void __irq IRQ_Timer0(void) {

pinsave=(IO0PIN&pinvalue); if(pinsave!=pinvalue) {

while(delay++==2) { delay=0;

if(pinsave == (IO0PIN&pinvalue)) switch(pinsave) {

case 0x003e0000: {

bo=bo+1; if(bo>4) bo=1; } break;

case 0x003d0000:

{canshu+=1; if(canshu>2) canshu=1; } break;

case 0x003b0000: {switch(canshu) {case 1:

{if(hight<26) hight=hight+1;} break; case 2:

{if(fc<100) fc=fc+2;}

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

break;} } break;

case 0x00370000: {switch(canshu) {case 1:

{if(hight<26) hight=hight-1;} break; case 2:

{if(fc<100) fc=fc-2;} break;} } break; } }

} T0IR=0x01;

VICVectAddr=0x00;}

/***************************************************************************************/ ** 函数名称 :Timer1_CapInt()

** 函数功能 :定时器1捕获中断服务程序 ** 入口参数 :无 ** 出口参数 :无

/***************************************************************************************/ void __irq IRQ_Timer1(void) {

switch(bo) { case 1:

sin_wave(); break;

case 2:

trip_wave(); break;

case 3:

fang_wave(); break;

case 4:

本设计采用数值计算合成和D/A转换模块来完成,可产生输出频率及幅度可调,频率范围为1HZ~50KHZ的正弦波、方波、三角波及其复合波信号,具有信号频率、波形、幅度变化容易,硬件简单可靠等特点

hecheng(); break;

default:

break;}

T1IR=0x01;

VICVectAddr=0x00; }

/***************************************************************************************/** 函数名称 :main()

** 函数功能 :用P0.7控制BEEP,让BEEP鸣叫。 ** 调试说明 :需将跳线JP5和LED短接。

/***************************************************************************************/ int main (void) { char str[30];

const double T = (2 * 3.1415926)/1024; //把一个周期分成2048份 for(i=0;i<1024;i++) {

table[i] = 512*(1+sin(T*i)); } PINSEL0 = 0x00000000; // 设置管脚连接GPIO,管脚功能选折寄存器全部为0时选为GPIO功能 PINSEL1=(2<<18); PINSEL2=PINSEL2&(~0x08); DACR=(0<<16); //最大定时1US,电流700UA IRQEnable(); T0TC=0; T0PR=0; T0MCR=0x03; T0MR0=Fpclk/2; T0TCR = 0x03; // 启动并复位T0TC T0TCR=0x01; T1TC=0; T1PR=0; T1MCR=0x03; T1MR0=Fpclk/205000*(fc/100); //把一秒分成2048份,再根据要求的频率来进行设置t T1TCR = 0x03; // 启动并复位T1TC

本文来源:https://www.bwwdw.com/article/z6p1.html

Top