基于DDS与单片机的信号发生器的设计.

合集下载

基于DDS的信号发生器设计

基于DDS的信号发生器设计

基于DDS的信号发生器设计摘要本设计主要是基于DDS的信号发生器的设计,该信号发生器主要有三大模块,主控制器模块、信号发生模块和液晶显示模块。

采用A T89S52单片机为主控制器,由它来控制DDS芯片AD9835再通过LCD12864显示输出信号信息,可以完成数字量输入到模拟量输出的转换,然后经运放调节电压幅度,产生0Hz~15MHz的正弦波、三角波和方波,最后由液晶屏显示。

关键词A T89S52;AD9851;LCD128641.课程设计任务设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编的特定频率的信号。

图1-1设计任务要求2.课程设计题目多功能信号发生器设计以DDS为核心设计一个信号发生器,可产生方波、三角波、锯齿波、正弦波信号和单脉冲输出。

技术参数:•具有产生正弦波、方波、三角波三种周期性信号变化的功能;•用键盘输入编辑生成上述三种波形(同周期)的频率、相位和幅度;•输出信号的频率范围为0Hz~15MHz;重复频率可调,频率步进间隔1Hz;•波形输出幅度0~5V可调;•具有显示输出波形的类型、重复频率(周期)和幅度的功能;发挥部分•用键盘或其他输入装置产生任意波形;•波形输出幅度0~5V可调;•增加稳幅输出功能,当负载变化时,输出电压幅度比那化不大于±3‰(负载电阻变化范围:100Ω~∞);•具有掉电存储功能,可存储掉电前用户编辑的波形和设置;3.设计总体方案选择本设计的核心问题是信号的控制问题,其中包括信号频率、信号种类以及信号强度的控制。

在设计的过程中,我们综合考虑了以下四种实现方案:3.1方案一采用555集成芯片函数发生器,555可以产生可变的正弦波、方波、三角波及实现频率控制,但由于产生的频率较低,本方案将不采用。

3.2 方案二采用低温漂、低失真、高线性单片压控函数发生器ICL8038,产生频率(0.001~300KHZ)可变的正弦波、三角波、方波及数控频率调整。

基于DDS技术的信号发生器的设计与实现

基于DDS技术的信号发生器的设计与实现

基于DDS技术的信号发生器的设计与实现DDS(Direct Digital Synthesis)技术是一种基于数字信号处理的频率合成技术,通过数字方式生成正弦波信号。

DDS信号发生器可以用于科学实验、通信系统中的频率合成、音频处理等应用领域。

通过DDS技术,可以实现高精度、稳定性好、频率范围广的信号发生器。

DDS信号发生器的基本原理是:通过一个相位累加器、一个频率累加器和一个波表,来生成一个时域上的正弦波信号,并将其转换为模拟电压信号输出。

相位累加器用来控制波表中的每个周期的采样点,频率累加器用来控制相位累加器的步进。

波表中存储了一个完整的正弦波周期的数值,波表的长度决定了信号发生器的频率分辨率。

DDS信号发生器的主要模块包括:时钟模块、相位累加器、频率累加器、波表和数模转换器。

时钟模块是DDS信号发生器的产生步进信号的时钟源,可以采用稳定的晶振或者时钟信号源。

时钟信号的频率决定了DDS信号发生器的输出信号的频率精度。

相位累加器是DDS信号发生器的核心模块,它接收时钟信号,并根据频率累加器的输入生成一个相位累加信号。

相位累加器可以采用简化的模数累加器,根据时钟信号的周期计算脉冲个数,每当相位累加信号增加一个固定的脉冲数时,波表就输出一个采样点。

频率累加器实时地改变相位累加器的步进,从而改变信号发生器的输出频率。

频率累加器可以通过输入一个控制信号来改变频率累加器的增加或减少的步进大小,从而实现更精细的频率调节。

波表是DDS信号发生器的存储波形数据的模块。

它包含了一个完整的正弦波周期的采样点的数值,波表的长度决定了信号发生器的输出信号的频率分辨率。

波表的数据可以事先存储在ROM中,也可以动态生成。

数模转换器将生成的波形数据转换为模拟电压信号输出。

数模转换器的位宽决定了输出信号的精度,位宽越大,精度越高。

除了上述基本模块,DDS信号发生器还可以添加比较器、滤波器等模块,以实现输出电平调节、滤波等功能。

基于单片机制作高频DDS信号发生器

基于单片机制作高频DDS信号发生器

基于单片机制作高频DDS信号发生器在现代科学和电子技术的不断进步下,数字信号发生器(DDS)已经成为了频率控制和生成的重要工具。

尤其是高频DDS信号发生器,其在雷达、通信、电子对抗等领域的应用具有不可替代的地位。

本文将介绍如何使用单片机制作高频DDS信号发生器。

一、DDS技术概述DDS,全称Direct Digital Synthesizer,即直接数字合成器,其工作原理是将数字信号通过数模转换器(DAC)转换成模拟信号。

DDS 技术的核心是相位累加器,它将输入的数字信号的相位进行累加,从而生成新的频率信号。

二、硬件设计1、单片机选择:本设计选用具有高速、低功耗、高集成度的单片机,如STM32F4系列。

2、频率控制字:通过设置频率控制字(FCW),可以控制输出信号的频率。

频率控制字由一个16位二进制数组成,表示了相位累加的步进大小。

3、存储器:使用Flash存储器存储预设的频率波形数据。

4、DAC:数模转换器将存储器中的波形数据转换成模拟信号。

本设计选用具有高分辨率、低噪声、低失真的DAC芯片。

5、滤波器:使用LC滤波器对DAC转换后的信号进行滤波,以得到更加纯净的信号。

三、软件设计1、相位累加器:相位累加器是DDS的核心,它将输入的数字信号的相位进行累加,从而生成新的频率信号。

2、波形查找表:将所需的波形数据存储在波形查找表中,通过查表的方式获取波形数据,可以大大提高DDS的工作效率。

3、控制逻辑:控制逻辑负责处理输入的控制信号,如启动、停止、频率控制字等。

4、通信接口:为了方便远程控制,需要设计通信接口,如SPI、I2C 等。

四、性能测试1、频率范围:测试DDS输出信号的频率范围是否满足设计要求。

2、频率分辨率:测试DDS输出信号的频率分辨率是否达到设计要求。

3、信号质量:测试DDS输出信号的信噪比、失真度等指标是否满足设计要求。

4、稳定性:长时间运行后,测试DDS输出信号的频率是否稳定。

5、远程控制:测试通信接口是否正常工作,可以通过计算机或者其他控制器对DDS进行远程控制。

基于单片机DDS信号发生器的硬件设计

基于单片机DDS信号发生器的硬件设计

基于单片机DDS信号发生器的硬件设计单片机DDS信号发生器是一种利用数字直接频率合成技术(Direct Digital Synthesis, DDS)来生成高精度信号波形的设备。

它通过调用存储在单片机中的频率、幅度和相位数据,实时更新波形,从而实现高速、高分辨率和低失真的信号发生器功能。

在本文中,将简要介绍单片机DDS信号发生器的设计流程以及其硬件实现。

设计流程:1.确定需求和规格:首先需要明确所需信号的频率范围、分辨率、输出幅度和失真要求等基本参数,以确定设计的方向和重点。

2.硬件选型:根据需求确定适合的单片机型号和外围器件,如振荡器、滤波器、放大器等。

3.硬件连接:根据单片机的引脚功能和外部器件的连接方式设计电路图,将各模块连接起来。

4.编程开发:编写单片机控制程序,实现DDS算法和信号波形生成,并将其烧录到单片机中。

5.调试和优化:通过实际调试和测试,不断优化硬件和软件设计,使其符合设计要求。

硬件实现:1.单片机选择:选择一款适合的高性能单片机作为控制核心,如STM32系列、PIC系列等,具有较高的计算性能和丰富的功能模块。

2.时钟源部分:基于晶振或者DDS芯片提供的时钟信号作为主时钟源,保证信号发生器稳定输出。

3.数字与模拟部分:DDS信号发生器的核心是DDS芯片,它与单片机通过SPI接口通信,实现信号波形的生成和调试。

4.输出功率放大器:将DDS芯片输出的信号通过功率放大器放大至所需的幅度,以驱动外部电路工作。

5.滤波器设计:为了消除输出信号中的高次谐波和噪声干扰,需要设计合适的低通滤波器,保证输出信号的纯净度和稳定性。

6.电源管理:为各个模块提供稳定可靠的电源,充分考虑信号发生器的功耗和稳定性要求。

7.外部控制:设计合适的用户接口和控制按钮,方便用户操作和调节信号波形的参数。

总结:单片机DDS信号发生器的硬件设计涉及到信号生成、时钟同步、数字模拟转换、输出功率放大和滤波等多个方面,需要综合考虑各个模块的性能和需求,以实现高质量、高稳定性的信号输出。

基于dds技术的信号发生器的设计与实现

基于dds技术的信号发生器的设计与实现

文章标题:基于S技术的信号发生器的设计与实现一、引言在电子通信和信号处理领域,信号发生器是一种常见的设备,用于产生各种类型的信号波形,包括正弦波、方波、三角波等。

基于直接数字合成(S)技术的信号发生器在现代电子设备中越来越受到重视,因为它具有频率稳定性高、频率分辨率高、频率和相位调制灵活等优点。

本文将围绕基于S技术的信号发生器的设计和实现展开讨论。

二、S技术的基本原理S技术是一种通过数字方式直接合成信号的技术,其基本原理是利用数字信号处理器(DSP)生成离散时间信号序列,再通过数模转换器将其转换为模拟信号输出。

S技术的核心在于其通过累加相位增量的方式来实现信号的频率合成,因此频率分辨率高,相位调制灵活,并且可以实现快速切换频率和相位。

三、基于S技术的信号发生器的硬件设计1. 时钟模块:基于S技术的信号发生器的时钟模块需要具有极高的稳定性和精度,以确保合成信号的频率稳定性和精度。

2. 数字信号处理模块:数字信号处理模块是实现基于S技术的信号发生器的关键,它需要具有高速的计算能力和精确的相位累加器,以实现频率和相位的精确合成。

3. 数模转换模块:数模转换模块将数字信号处理模块生成的数字信号转换为模拟信号输出,需要具有高精度和低失真的特性。

四、基于S技术的信号发生器的软件设计1. 频率和相位控制算法:基于S技术的信号发生器的软件设计需要包括频率和相位控制算法,以实现对合成信号频率和相位的灵活调节。

2. 用户界面设计:为了方便用户操作和监控合成信号的参数,基于S技术的信号发生器的软件设计还需要包括用户界面设计,以实现对信号发生器的参数设置和监控。

五、基于S技术的信号发生器的实现基于S技术的信号发生器的实现需要在硬件和软件两方面充分考虑,确保其在频率稳定性、频率分辨率和相位调制灵活性等方面具有优秀的性能。

在实际应用中还需要考虑其输出功率、谐波失真等参数,以满足不同场景的需求。

六、个人观点与展望基于S技术的信号发生器在现代电子领域中具有广泛的应用前景,其高稳定性、高频率分辨率和灵活的相位调制特性,使其在通信、雷达、医疗等领域都有着重要的地位。

-基于DDS的信号发生器单片机期末课程设计

-基于DDS的信号发生器单片机期末课程设计

目录第1节引言 (1)1.1 信号发生器概述 (1)1.2 本设计任务和主要内容 (2)第2节系统主要硬件电路设计 (3)2.1 总体设计方案与比较 (3)2.2 单片机控制系统原理 (4)2.3 单片机主机系统电路 (5)2.3.1电源模块 (5)2.3.2按键模块 (7)2.3.3 D/A转换模块 (10)2.4 LCD液晶显示电路 (12)2.4.1 ST7920 LCD组成原理 (13)2.4.2 ST7920的应用 (14)2.5 DDS信号发生电路 (15)2.5.1 DDS的性能特点 (16)2.5.2 DDS的应用 (17)2.6 模拟乘法器MC1595 (19)第3节系统的软件设计 (22)3.1 软件设计概况 (22)3.2 主程序流程图 (22)3.2 事务处理任务流程图 (23)3.3 数据处理原理 (23)3.4 系统主程序设计 (24)3.4.1 LCD发送及接收部分 (24)3.4.2 AD9850发送部分 (26)3.4.3 D/A5615发送部分 (27)第4节结束语 (28)参考文献 (29)基于DDS技术的信号发生器第1节引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。

本设计分五个模块:单片机控制及显示模块、数模(D/A)转换模块、波形产生模块、输出显示模块、电源模块。

使用AT89C51作为主控制台,结合DDS芯片ADC9850产生1HZ~10MHZ频率可调的三种信号波(正弦波、方波、三角波),步进为1HZ;配合使用DA5615采集电压通过模拟乘法器和AD811放大电压,在50 负载条件下输出正弦波信号的电压峰-峰值Vopp在0~5V范围内可调,调节步进间隔可达到0.1V,通过ZLG7289控制按键进行设置。

系统采用液晶屏操作方式,显示清晰,简洁明了,且有一定的系统稳定性。

基于单片机与DDS的多功能正弦信号发生器设计

基于单片机与DDS的多功能正弦信号发生器设计

本设计以较低的成本制作了频率范围为 1Hz-30MHz 的正弦信号发生器,输出波形稳定, 精度高,输出频率可通过按键设置,也可步进调 整,输出的正弦信号幅度调整范围宽。用于核磁 共振磁场测量仪既可激发共振信号,又能有效避 免信号饱和;用作正弦信号源,在 50Ω负载电阻 上峰-峰值可达 7V。系统亦可通过按键控制,输 出多种调制信号波形,操作方便,满足设计要求, 具有实用价值。
参考文献
[1] Analog Devices. CMOS 125MHz Complete DDS Synthesizer AD9850[EB/OL]. REV.H, 2004.
标志初始化 调正弦函数
○1
PSK,频率步进“+”和频率步进“-”,控制实现
相应功能。对于频率步进按键,长按可使输出频
率连续快速加、减。 3.8 显示界面
用于显示信号发生器当前工作状态以及信号 频率。采用内含 T6963C 控制器的图形液晶显示模 块 HS12864-10,使人机交互界面友好、美观,使 用汉字点阵字模提取软件提取显示字库,送到相 应位置显示即可。
公司的单片机 OM4368BN 和 AD 公司的 DDS 芯片 AD9850[1]实现。OM4368BN 内含 32K flash 程序存
储器,便于存储大量的字库数据和频率偏移样点
信息。AD9850 的典型时钟频率为 125MHz,相位累
加器为 32 位,使用 100MHz 有源晶体振荡器,最
小频率分辨率为
Q5 = (Q0Q1Q2Q3Q4 ) ⊕ Q2 ⊕ Q0 ,即可产生能自启动 的 m 序列,调制信号取自 Q0,原理如图 4 所示。
-12V
图 3 调制信号产生电路
产生的正弦波信号频率为

基于DDS的基本原理设计的低频信号发生器

基于DDS的基本原理设计的低频信号发生器

基于DDS的基本原理设计的低频信号发生器低频信号发生器是一种能够产生低频电信号的设备,广泛应用于电子、通信、声学等领域的实验、测试和调试中。

在设计低频信号发生器时,基于DDS(Direct Digital Synthesis,直接数字合成)的原理,可以有效地生成稳定、精确的低频信号。

DDS基本原理:DDS是一种采用数字技术直接产生波形信号的技术,其基本原理是利用数字计算机和其它逻辑电路将高稳定度的时钟信号分频,通过DAC(数字模拟转换器)输出相应的模拟信号。

具体步骤如下:1.频率和相位累加器:DDS中的关键元件是频率和相位累加器。

频率累加器根据输入的控制字频率,以固定的速度递增或递减,并产生一个周期范围内的数字相位输出。

相位累加器则将相位信息输出给DAC。

2.正弦波表:DDS中会预先存储一个周期范围内的正弦波表。

相位输出经过插值之后,会得到一个数值,然后该数值通过正弦波表查表,得到该相位上的正弦波取样值。

3.插值滤波器:DDS通常采用插值滤波器对正弦波表输出进行低通滤波,以去除高频噪声成分。

1.选择合适的时钟源和DDS芯片:首先需要选择一个高稳定度的时钟源,如TCXO(温度补偿型晶体振荡器)。

然后选择合适的DDS芯片,如AD9850或AD9833,这些芯片已经有成熟的设计方案和丰富的技术资料。

2.建立控制电路:根据DDS芯片的规格书和应用电路设计指南,使用微控制器或PLC实现控制电路。

该电路应能够控制频率、相位和幅度等参数,并能与外部设备进行交互。

3.数字信号处理:在设计中,需要进行一系列的数字信号处理,包括频率累加器和相位累加器的递增或递减实现,正弦波表查表的插值运算,以及插值滤波器的设计和滤波处理等。

4.输出电路设计:输出电路应采用高精度DAC进行数字模拟转换,并根据设计要求进行滤波和放大等处理,以产生稳定、精确的低频信号。

5.整体系统测试与调试:完成设计后,需要对整个系统进行全面测试和调试,包括频率范围测试、频率精度测试、稳定度测试、波形畸变测试等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于DDS与单片机的信号发生器的设计参赛队员:陈天元杨维龙王伟健选题:信号源的设计和制作(B题)摘要在信号发生器的设计中,传统的用分立元件或通用数字电路元件设计电子线路的方法设计周期长,花费大,可移植性差。

本设计是用直接数字频率合成器(DDS)。

与传统的频率合成方法相比,DDS合成信号具有频率切换时间短、频率分辨率高、相位变化连续等诸多优点。

使用单片机灵活的控制能力与液晶显示相结合,使得可以直观的控制波形的产生与调整,带来了很大的便利。

关键词:单片机,直接数字频率合成,液晶1、现有元件电源模块7805,STC89C52单片机,DDS直接式数字合成频率计,模数转换器ADC0804,1602液晶显示模块,独立按键等。

2、设计要求一、任务在给定±12V电源电压条件下,设计并制作一个正弦波信号源。

二、要求1、基本要求:(1)输出信号频率:20Hz~300kHz;(2)信号幅度:负载50Ω时,输出电压峰峰值为1~3V可调;(3)信号源输出电阻为50Ω;(4)显示信号的频率和幅度。

2、发挥部分:(1)提高信号的输出频率至1MHz;(2)提高信号的输出电压峰峰值至1~10V可调(带50Ω负载);(3)自行扩展信号源功能。

3、可以达到的效果本设计可以将输出频率调整到1~30 MHz,而由于在超高频条件下,一般运放的带宽不足以满足放大波幅的设计要求,但是我们通过负电压增加电流的方式,使得信号输出电压峰峰值为0.7v~2.4v可调。

本设计可以通过按键进入设置模式,左右按键移动光标,上下按键加减频率,再通过旋钮调节幅值,然后按键结束设置模式,就可以从输出口输出我们在设置模式下给定的波形。

4、硬件设计4.1、总体设计通过STC89c52给定DDS频率,短接DDS上J3口,使DDS可以输出稳定频率通过按键中断进入波形设置模式,可以通过按键增减与移位调整液晶屏上的频率显示,通过调整LM348设置新的幅值,在跳出波形设置模式时,DDS会按照设置好的波形参数产生一个新的波形,用以输出。

4.2、 STC89C52单片机介绍4.2.1 STC89C52是一种低功耗、高性能CMOS8位微控制器,其特性及参数如下:、1、增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

2、工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),此设计用的是5V的单片机。

3、工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。

4、8K字节程序存储空间。

5、片上集成512字节RAM。

6.通用I/O口(32个),复位后为:P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7、ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。

8、共3个16位定时器/计数器。

即定时器T0、T1、T2。

9、具有看门狗功能,PDIP封装。

4.2.2 STC89C52各个引脚分布如下图3-3所示:图3-3(P0口连接数码管前要加1千欧的排阻作为上拉电阻)P2.7~本设计主要用的是P0口,P2.4口,这12口用于控制数码管;P3.2,P3.3,P3.6,P3.7口与ADC0804相连接用以接受ADC0804转换后的数字信号;引脚9用以单片机的复位电路;P2.0口用以控制蜂鸣器;18,19引脚用以晶振相关的电路;40和31引脚用以连接+5V电压。

(注:单片机的核心部分晶振必不可少,并且晶振应该尽量靠近单片机,否则将使得单片机无法正常工作。

)4.3 模数转换器ADC0804介绍4.3.1 ADC0804规格及引脚分配图如下图3-4所示:图3-4本设计采用的模数转换器ADC0804,它是CMOS8位单通道逐次渐近型的模数转换器,各个引脚的大致功能如下:1、/CS:芯片片选信号,低电平有效,即/CS=0,该芯片才能正常工作。

2、/WR:启动ADC0804进行ADC采样,该信号低电平有效,即/WR信号由高电平变成低电平时,触发一次ADC转换。

3、/RD:低电平有效,即/RD=0时,可以通过数据端口DB0~DB7读出本次的采样结果。

4、UIN(+)和UIN(-):模拟电压输入端,模拟电压输入接UIN(+)端,UIN(-)端接地。

5、VREF/2:参考电压接入引脚,该引脚可外接电压也可悬空。

6、CLKR和CLKIN:外接RC电路产生模数转换器所需的时钟信号,时钟频率CLK = 1/1.1RC,一般要求频率范围100KHz~1.28MHz。

7、AGND和DGND:分别接模拟地和数字地。

8、/INT:中断请求信号输出引脚,该引脚低电平有效,当一次A/D转换完成后,将引起/INT=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的INT0,INT1脚),当产生/INT信号有效时,还需等待/RD=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将/INT引脚悬空。

9、DB0~DB7:输出A/D转换后的8位二进制结果。

4.3.2 ADC0804的外围电路如下图3-5所示:图3-5如图3-5所示,图中的C4为104的电容,其中104表示的是大小为10乘以10的4次方皮法的电容;R4是大小为十千欧的电容。

VccREF接+5V的电压,Vin(-)和A-GND 以及D-GND均接地,Vref/2不接任何线路,Vin(+)接输入的模拟电压信号;DB0~DB7分别于单片机上的P0.0~P0.7引脚相连;INTR、CS、RD和WR分别连接单片机的P3.3、P3.2、P3.7及P3.6引脚相连。

4.3.3ADC0804转换时序图如下图3-6所示:图3-6ADC0804转换主要包含下面三个步骤:1.启动转换:由图3-6中的上部“FIGURE 10A”可知,在/CS信号为低电平的情况下,延时后,再将/WR引脚拉成高电平,即将/WR引脚先由高电平变成低电平,经过至少tW(WR)I启动了一次AD转换。

注:正常启动AD转换/WR的低电平保持时间t的最小值为100ns,即/WR拉低后延W(WR)I时大于100ns即可以,具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于100ns即可。

号启动AD采样后,经过1到8个Tclk+INTERNAL Tc延时后,AD转换结束,因此,启动转换后必须加入一个延时以等待AD采样结束。

注:内部转换时间“INTERNAL Tc”的时间范围为62~73个始终周期,因此延时等待时间应该至少为8+73=81个时钟周期。

本试验时钟频率约为Fclk=1/1.1R36C15=606KHz,其中R36约为150K, C15约为150pF,因此时钟周期约为Tclk=1/Fclk=1.65us。

所以该步骤至少应延时81*Tclk=133.65us. 具体做法可通过调用delay()延时函数实现,不用太精确,只要估计插入的延时大于133.65us即可。

3.读取转换结果:由图3-6的下部“FIGURE 10B”可知,采样转换完毕后,再/CS信号为低的前提下,将/RD脚由高电平拉成低电平后,经过tACC的延时即可从DB脚读出有效的采样结果。

注:tACC的典型值和最大值分别为135ns和200ns,因此将/RD引脚拉低后,等待大于200ns后即可从DB读出有效的转换结果。

具体做法可通过调用delay()延时函数实现,不用太精确,只要估计插入的延时大于200ns即可。

4.4单片机最小系统电路单片机最小系统电路包括单片机CPU,复位电路以及晶振电路,具体电路如下图3-7所示:图3-7如上图所示与第9引脚相连的即为复位电路,与第18、19引脚相连的为晶振电路。

其中Y1为晶振,频率为11.0592MHZ。

复位电路中的106是大小为10μF的电容,R1为200欧姆的电阻,S1为复位按键。

其中GND接地,第40和31引脚接+5V电压。

4.5单片机与模数转换器的引脚连接电路图3-84.6 DDS模块DDS采用串行写入模式,省下了单片机的5个IO口。

4.7液晶1602模块液晶屏幕光标指针对应的实际位置如下:采用串口写入模式,省下4个IO口。

back1,back2用来调整背景光,V0用来调整液晶中的文字显示电压,调整文字亮度。

4.8按键设置采用5个独立按键作为波形设置按键,一个外部中断0的按键,采用跳变沿触发进入设置模式。

P0.0按键加一,P0.1按键减一,P0.2按键液晶光标左移一位,P0.3按键液晶光标右移一位,P0.4按键跳出频率设置,进入幅值设置,再次按下,跳出波形调试,开始产生波形。

4.9整体电路5、系统程序设计本设计采用c语言编程。

程序流程图:6、测试6.1测试仪器:示波器6.2测试方法:按键,通过示波器查看波形频率与幅值是否与液晶显示值相吻合。

按下Set 键后进入波形设置模式,分为两个环节,先调整频率,之后按下break 键锁住频率,通过旋钮调整幅值,再按下break 键锁住幅值,跳出设置,产生波形。

7、结束语经过几天的辛勤努力,三人合理分工,我们虽然没能实现题目的所有要求,但在调试的过程中,遇到了很多问题,有硬件上的,也有软件上的,但在大家的努力下,最终解决了不少问题。

由于时间紧,任务重,不可能做到尽善尽美,系统还可以进行很多改进。

这次竞赛增强了我们的实践能力和协作精神,而且懂得了联系实际的重要性,这对我们以后的学习和工作大有裨益。

虽然我们遇到了很多困难和障碍,但同时也是困难与希望并存,我们将继续努力争取更大的进步。

SetBreak左 加右 减调幅附录:单片机程序# include <reg52.h># include <intrins.h>#include <math.h>typedef unsigned char BYTE;typedef unsigned int WORD;typedef bit BOOL;sbit add=P0^0;sbit miu=P0^1;sbit left=P0^2;sbit right=P0^3;sbit keybreak=P0^4;sbit ad9850_w_clk =P2^2; //P2.2口接ad9850的w_clk脚/PIN7sbit ad9850_fq_up =P2^1; //P2.1口接ad9850的fq_up脚/PIN8sbit ad9850_rest =P2^0; //P2.0口接ad9850的rest脚/PIN12 sbit ad9850_bit_data =P2^3; //P2.3口接ad9850的D7脚/PIN25 sbit int1=P3^3;//定义管脚功能sbit cs=P3^0;//使能端sbit wr=P3^6;//写端口sbit rd=P3^7;//读端口sbit rs=P0^7; //lcdsbit rw=P0^6;sbit ep=P0^5;sbit d7=P2^7;sbit d6=P2^6;sbit d5=P2^5;sbit d4=P2^4;BYTE dis1[]={"V:00000000 V "};BYTE dis2[]={"F:01000000 Hz"};double frequence=1000000;double volt=1.17;void dds(); //dds模块输出波形void reset_serial(); //dds初始化void wr_serial(unsigned char w0,double frequence); //dds写入频率void delay2(int m) //延时1us左右{unsigned char i,j;for (i=0;i<m;i++)for (j=0;j<253;j++);}void delay(unsigned int t); //延时很短void delay(unsigned int t){unsigned int qwe;for(qwe=t;qwe>0;qwe--);}BOOL lcd_bz() //检测lcd是否忙{BOOL result;rs=0; // 读忙信号rw=1;ep=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();result = (BOOL)((P2&0xf0)&0x80);ep=0;return(result );}lcd_wcmd (BYTE cmd) //向lcd写入设置工作命令{while (lcd_bz());rs=0;rw=0;ep=0;_nop_();_nop_();P2=cmd;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;rs=0;rw=0;ep=0;_nop_();_nop_();P2=cmd<<4;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;}lcd_pos (BYTE pos) //定位lcd光标(指针)位置{lcd_wcmd (pos|0x80);}lcd_wdat (BYTE dat) //lcd写数据{while (lcd_bz());rs=1;rw=0;ep=0;_nop_();_nop_();P2=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;rs=1;rw=0;ep=0;_nop_();_nop_();dat=dat<<4;P2=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;}lcd_init () //lcd初始化{lcd_wcmd (0x28);delay2 (1);lcd_wcmd (0x0f);delay2 (1);lcd_wcmd (0x06);delay2 (1);lcd_wcmd (0x01);delay2 (1);}void display() //显示初始频率与幅值初值{BYTE i;lcd_init ();delay2 (20);lcd_pos (0x00);i=0;while (dis1[i]!='\0'){lcd_wdat (dis1[i]);i++;}lcd_pos (0x40);i=0;while (dis2[i]!='\0'){lcd_wdat (dis2[i]);i++;}}void display1(); //按键调频同时显示void display1(){unsigned int i;long int sum=10000000,freq,h;freq=(long int)frequence;for(i=0;i<8;i++){lcd_pos (0x40+i+2);h=freq/sum;lcd_wdat ('0'+h);freq=freq%(sum);sum=sum/10;}}void display2(); //按键设置模式结束后,液晶显示幅值void display2(){unsigned int i;long int h,v,sum=1000000;v=(long int)(volt*1000000);for(i=0;i<6;i++){lcd_pos (0x00+i+4);h=v/sum;lcd_wdat ('0'+h);if(i==0){lcd_pos (0x00+i+5);lcd_wdat (0x2e);i++;}v=v%(sum);sum=sum/10;}lcd_pos (0x00+11);}void dds() //dds总程序{ad9850_w_clk=0;ad9850_fq_up=0;ad9850_rest=0;ad9850_bit_data=0;reset_serial();wr_serial(0x00,frequence);delay2(20);}//P1为8位数据口// ad9850复位(串口模式) // void reset_serial(){ad9850_w_clk=0;ad9850_fq_up=0;//rest信号ad9850_rest=0;ad9850_rest=1;ad9850_rest=0;//w_clk信号ad9850_w_clk=0;ad9850_w_clk=1;ad9850_w_clk=0;//fq_up信号ad9850_fq_up=0;ad9850_fq_up=1;ad9850_fq_up=0;}// 向ad9850中写命令与数据(串口) // void wr_serial(unsigned char w0,double frequence)//wr_serial(0x00,1000);//{unsigned char i,w;long int y;double x;//计算频率的HEX值x=4294967295/125;//适合125M晶振这是计算机程序设计里面的一个值,表示无符号整数的十进制最大值。

相关文档
最新文档