《单片机信号发生器.pdf》由会员分享,可在线阅读,更多相关《单片机信号发生器.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 多功能函数发生器 跨功能函数发生器 摘要 交流函数发生器主要实现常用波形的产生和上位机的同步控制,可以产生一系列调制波。论文详细阐述了主机的总体结构、软硬件实现和调试方法。关键词:单片机;DDS;上位机 付费多功能函数发生器 摘要 支付多功能函数发生器主要实现共发生和 PC 波形同步控制,可以产生一系列调制波。本文阐述了多功能函数发生器的一般结构、软硬件实现和上位机调试方法。关键词:单片机;DDS;个人电脑 目录 1 简介 1 1.1 项目背景 1 1.2 项目主要任务 1 2 互换多功能函数发生器 1 2.1 选项 1 2.2 整体结构框图 2 3 STC12C5A60S2 单片机介绍 3
2、 4 模拟开关 CD4066 介绍 4 4.1 主要特点 4 4.2 芯片管脚和电路 5 5 DDS 模块介绍 5 5.1 特征 5 5.2 DDS7 的优势 5 1 简介 1.1 项目背景 函数发生器是实验室的基本设备之一。目前,一些标准产品被广泛使用。它们虽然功能齐全,性能指标高,但价格昂贵,很多功能不可用。该设计集成了一个运算放大器作为应用的核心。通过增加外围器件,构成运算和正反馈电路,满足振荡条件,产生一定的波形。最后,利用差分电路的传输特性,将三角波转换为正弦波。该仪器具有结构简单、成本低、体积小、便于携带等特点。虽然功能和性能指标赶不上标准的信号发生器,但足以满足一般的实验要求。函
3、数发生器作为一种常见的信号源,是现代测试领域应用最广泛的通用仪器之一。在各种电子元器件、元器件及成套设备的开发、生产、测试和维护中,要学会有一个信号源,它可以产生不同频率和波形的电压、电流信号并加到装置或设备中。正在测试中。与其他仪器一起观察和测量被测仪器的输出响应,以分析和确定其性能参数。信号发生器是电子测量领域中最基本、应用最广泛的电子仪器。它可以产生多种波形信号,如正弦波、三角波、方波等,因此广泛应用于通信、雷达、导航、航空航天等领域。1.2 项目主要任务 任务和要求:1.可编程产生几种常用信号;2、信号风格可变,正弦波、三角波、方波、2PSK、LFM;3、变频,1MHz-10MHz,2
4、PSK 调制信号周期 0.1ms-1ms,LFM 带宽为中心频率的1/100-10%;4、输出幅度可变,可程控或手动调节。5.电源可以是实验室稳压电源 2 多功能函数发生器 2.1 方案选择 方案是否合理可行,对跨功能函数发生器的技术指标能否实现具有决定性的影响。因此,在进行具体设计之前,非常有必要根据设计要求反复推敲各种备选方案的优缺点,最终确定要选择的具体器件,以及与这些器件的连接方式。软件的整体结构也进行了设计。为实现多功能函数发生器的功能要求,系统应包括输出选择模块、DDS 波形发生模块、单片机等部件。以下是这些组件的选择分析。在确定了具体的模型之后,再确定组件之间的连接形式。(1)输
5、出选择模块 我们使用 CD4066 模拟开关从前级选择波形,控制方便稳定。(2)单片机 本设计选用 STC12C5A60S2 单片机,其主要特点是工作速度快,12C 单片机独特的 1T工作模式保证了其高速运行,比普通单片机快 12 倍。(3)DDS 波形生成模块 最早的时候,我们使用单片机来产生波形。由于普通单片机的工作频率只有 35MHz,我们想用飞思卡尔的 MC9S12XS128MCC 单片机将 16MHz 外接晶振的频率倍增到 100MHz,然后读取 ROM 中的波形数据。,但理论上还是不能满足 10MHz 的要求。最后,我们选择了 DDS。借助 DDS,我们可以轻松输出 10MHz 的
6、信号,最高甚至可以达到 40MHz。2.2 整体结构框图 基于以上分析,可以得出多功能函数发生器的整体结构框图,如图 2-1 所示。单片机作为整个系统的控制核心,接收上位机发来的控制指令,经过必要的处理后,发送给 DDS模块控制波形的相关参数,同时控制模拟开关量有选择地输出波形。数据记录的查询可以通过 PC 机进行,因此图中还附有 RS232 通讯接口。主机向微控制器发送命令以实时控制函数发生器的输出。它可以在三角波、方波、正弦波、2PSK、LFM、FSK 和 2ASK 之间切换,并可以相应地控制输出波形的幅度和占空比。,单片机还将控制量的数据实时回传给上位机,并通过上位机的虚拟多功能函数发生
7、器输出显示。单片机 上位机 DDS 模块 RS232 接口 模拟开关 信号输出 图 2-1 多功能函数发生器整体结构框图 3 STC12C5A60S2 单片机简介 STC12C5A60S2/AD/PWM系列微控制器是宏晶科技生产的单时钟/机器周期(1T)微控制器。快 8-12 倍。该部分集成了 MAX810 专用复位电路,2 路 PWM,8 路高速 10 位 A/D 转换(250K/S),适用于电机控制,强干扰场合。1、增强型 8051 CPU,1T,单时钟/机器周期,指令代码与传统 8051 完全兼容 2、工作电压:STC12C5A60S2 系列工作电压:5.5V-3.3V(5V 单片机)S
8、TC12LE5A60S2 系列工作电压:3.6V-2.2V(3V 单片机)3、工作频率范围:0-35MHz,相当于普通 8051 的 0-420MHz 4.用户应用空间 8K/16K/20K/32K/40K/48K/52K/60K/62K 字节.5.片内集成 1280 字节 RAM 6.通用 I/O 口(36/40/44),复位后:准双向口/弱上拉(普通 8051 传统 I/O 口)可设置四种模式:准双向口/弱上拉,推挽/强上拉,仅输入/高阻,每个 I/O 口开漏驱动能力可达 20mA,但整个芯片最大不超过 55mA 7、ISP(系统内可编程)/IAP(应用内可编程),无需专用编程器,无需专用
9、仿真器,可通过串口直接下载用户程序(P3.0/P3.0)。1),你可以在几秒钟内完成一个作品。8.具有 EEPROM 功能(STC12C5A60S2/AD/PWM 无 EEPROM)9.看门狗 10、该部分集成了 MAX810 专用的复位电路(当外部晶振低于 12MHz 时,复位管脚可以直接用 1K 电阻接地)11、外部掉电检测电路:P4.6 端口有一个低压阈值比较器。5V 单片机为 1.32V,误差为+/-5%,3.3v 单片机为 1.30V,误差为+/-3%12、时钟源:外接高精度晶振/时钟,外接 R/C 振荡器(温漂+/-5%到+/-10%)。下载用户程序时,用户可以选择是使用内部 R/
10、C 振荡器还是外部晶振/时钟。室温下较低的 R/C振荡器频率为:5.0V 单片机:11MHz-15.5MHz;3.3V 单片机:8MHz-12MHz。制造误差和温度漂移,以实际测试为准 13、共 4 个 16 位定时器,两个定时器/计数器兼容传统 8051,16 位定时器 T0 和 T1,没有定时器 2,而是一个独立的波特率发生器,用于串行通信的波特率发生器外加 2 个 PCA模块可以实现另外 2 个 16 位定时器 14.2 个时钟输出端口,T0 溢出可从 P3.4/T0 输出时钟,T1 溢出可从 P3.5/T1 输出时钟 15.7 个外部中断 I/O 口,传统下降沿中断或低电平触发中断,新
11、增支持上升沿中断的 PCA 模块,可通过外部中断唤醒掉电模式,INT0/P3.2,INT1/P3.3、T0/P3.4、T1/P3.5、RxD/P3.0、CCP0/P1.3(也可以通过寄存器设置为 P4.2)、CCP1/P1.4(也可以设置通过注册到 P4.3)16.PWM(2 路)/PCA(可编程计数器阵列,2 路),也可以作为 2 路 D/A,也可以用来实现 2 个以上定时器,也可以用来实现 2 个外接中断(可以单独或同时支持上升沿中断/下降沿中断)17、A/D 转换,10 位精度 ADC,共 8 通道,转换速度可达 250K/S(每秒 25 万次)18、通用全双工异步串口(UART),由于
12、 STC12 系列是高速 8051,可以用定时器或PCA 软件实现多串口 19、STC12C5A60S2 系列有双串口,后缀有 S2 标志的有双串口,RxD2/P1.2(可通过寄存器设置为 P4.2),TxD2/P1.3(可设置为 P4.2)3 通过注册)20、工作温度范围:-40-+85C(工业级)/0-75C(商业级)21、封装:PDIP-40、LQFP-44、LQFP-48 当 I/O 口不够用时,可以用 23 根普通 I/O口线连接 74HC164/165/595(可级联)到扩展 I/O 也可以使用 A/D 做按键扫描来节省 I/O 端口,或者使用双 CPU、三线通信和更多的串口。4
13、模拟开关 CD4066 介绍 4.1 主要特点 CD4066 是四路双向模拟开关,主要用于模拟或数字信号的复用。端子排列与 CC4016相同,但导通电阻较低。此外,导通电阻在整个输入信号范围内基本恒定。CD4066 由四个独立的双向开关组成,每个开关都有一个控制信号,开关中的 p 和 n 器件在控制信号的作用下同时切换。这种结构消除了开关晶体管的阈值电压随输入信号的变化,因此在整个工作信号附近导通电阻相对较低。与单路开关相比,其优点是输入信号的峰值电压等于电源电压,导通电阻比输入信号更稳定。4.2 芯片管脚及电路 图 4-1 CD4066 引脚排列 图 4-2 芯片电路 5 DDS 模块介绍
14、5.1 特点 与 DSP(数字信号处理)一样,DDS 是一项关键的数字技术。DDS 是 Direct Digital Synthesizer 的缩写。与传统频率合成器相比,DDS 具有成本低、功耗低、分辨率高、转换时间快等优点。一个 DDS 芯片主要包括三个部分(如 Q2220)、频率控制寄存器、高速相位累加器和正弦计算器。频率控制寄存器可以将用户输入的频率控制代码以串行或并行的方式加载和注册;相位累加器根据 DDS 频率控制码在每个时钟周期内进行相位累加,得到相位值。正弦计算器计算相位值。计算数字化正弦波的幅值(芯片一般查表得到)。DDS 芯片的输出一般是数字化的正弦波,因此需要经过高速 D
15、/A 转换器和低通滤波器才能得到可用的模拟频率信号。此外,部分 DDS 芯片还具有调幅、调频、调相功能和芯片 D/A 转换器(如 AD7008)。5.2 DDS 的优势 频率分辨率高,输出频点多,最多 2N 个工频点(N 为相位累加器的位数);频率切换速度快,达到我们的水平;频率切换时相位是连续的;可输出宽带正交信号;输出相位噪声低,可改善参考频率源的相位噪声;可以产生任意波形;全数字化,易于集成,体积小,重量轻。在各行各业的测试应用中,信号源起着极其重要的作用。但是信号源的种类很多,功能和特性各不相同,适用于很多不同的应用。目前,最常见的信号源类型包括任意波形发生器、函数发生器、射频信号源和
16、基本模拟输出模块。在信号源中使用 DDS 技术已逐渐成为当前测试测量行业的主流做法。5.3 典型的 DDS 函数发生器 函数波形的完整周期存储在如上所示的内存查找表中。相位累加器跟踪输出函数的当前相位。为了输出非常低的频率,采样样本之间的相位差()将非常小。例如,非常慢的正弦波可能具有 1 度的 delta 相位。那么波形的 0 号样本将得到 0时刻正弦波的幅度,波形 1 号样本将得到 1时刻正弦波的幅度,以此类推上。在 360 次采样后,将输出完整的 360 度正弦曲线,或者准确地说是一个周期。较快的正弦波可能具有 10 度的增量相位。因此,36 个样本将输出一个周期的正弦波。如果采样率保持
17、恒定,则上述较慢正弦波的频率将比较快正弦波的频率慢 10 倍。此外,恒定的 delta 相位必然会导致恒定的正弦波频率输出。但是,DDS 技术允许通过频率表快速改变信号的 delta 相位。函数发生器可以指定一个频率表,其中包括由波形频率和持续时间信息组成的段。函数发生器按顺序产生每个定义的频率区间。通过生成频率表,可以构建复杂的扫频信号和跳频信号。DDS 允许函数发生器的相位从一个阶段到另一个阶段连续变化。矢量信号发生器提供高度灵活且功能强大的解决方案,可用于科学研究、通信、消费电子、航空航天/国防、半导体测试以及软件定义无线电、射频识别(RFID)和无线传感器网络等新兴领域,ETC。一些公
18、司还提供许多其他利用 DAC 生成模拟信号的模拟输出产品。模拟输出板的基本架构是将小型 FIFO 存储器连接到 DAC。大多数模拟输出板用于产生静态电压,许多可用于产生低频波形。6 硬件设计 6.1 RS232 通讯模块 上位机可以通过 RS232 电平转换与单片机通信。本设计采用 MAX232 直接将电脑与串口相连。电路如图 6-1 所示。图 6-1 RS232 模块 6.2 DDS 模块 单片机 DA 转换后的输出输入到DDS 模块的第9 脚,控制方波的占空比。单片机的输出输入到数字电位器,再输入到DDS模块的第5-7 脚,控制输出波形的幅值。第 18 个 DDS 引脚为串行数据传输端口,
19、引脚 15-17 为模块控制端口,引脚 2、3、12 和 13 分别输出方波和正弦波。电路连接如图 6-2 所示。图 6-2 DDS 模块 7 软件设计 7.1 主机:上位机向下位机发送数据,生成相应的波形。界面如下:8 通信协议设计 由于要使用单片机与上位机之间的串行通信,因此需要进行一些简单的通信协议设计。通信协议定义了控制输出波形、模式、频率、幅度、信号类型、占空比等参数,具体协议如图7-1所示。图 7-1 通讯协议 9 结论 经过反复调试,多功能函数发生器基本满足设计要求,可以选择性输出三角波、方波、正弦波、2PSK、LFM,还增加了一些常用的波形输出,如2ASK、FSK。本设计项目采
20、用单周期STC12C5A60S2单片机和DDS模块,利用DDS实现更高频率波形的输出,利用其串口模块实现与PC机的通讯。项目的设计让我对设计电路有了进一步的了解,为以后的工作奠定了基础,也锻炼了我的思维和动手能力。至 当我即将完成毕业设计,即将离开母校去上班的时候,我的心中充满了对母校和老师们的感激之情。四年的母校培训,让我的知识水平和思想境界有了质的提升。在此,谨向四年来在我的学习、生活和思想中给予我关心、支持和鼓励的各位师生表示特别的祝福!我感谢我的父母多年来在物质和精神上的关怀、鼓励和支持。父母的爱给了我前进的巨大动力,也正因为如此,我知道如何感恩。祝母校明天比今天更好!参考 1魏王丽.
21、Protel99SE 基础教程M 人民邮电,200 6.2 胡振宇 DS18B20 接口的 C 语言编程J.单片机及嵌入式系统应用,2002,(7):55-56。3何立民.单片机高级教程应用与设计M航空航天大学,2002 年。4 马忠梅 C 语言单片机应用设计M航空航天大学,1999。5 戚薇 C51 单片机编程教程与实验M.航空航天大学,2006.6 惠萍,周国雄基于 Proteus 的单片机系统设计与仿真实例M.-机械工业,2009。附录源程序列表#include#include“功能.h”#include“生成器.h”#include Serial.h#include MPC41010.
22、h 长单位频率_0=0 x00;/转换后0的频率频率如表所示。长单位频率_1=0 x00;/转换后的频率频率如表所示。uchar 调制信号8=0,1,0,1,0,1,0,1;/调水獭控制信号数?长单位调制_频率_0=100000;/0负载频率/LFM时间段为上限T频率率 长单位调制_频率_1=200000;/1 载频/LFM 时间周期 那么 是下限 T 频率 频率 long uint sweep_time=700;/扫描阿尔法?频率?时间?时间?(单比特?是?10ms)long uint temp_time=0;/定时器/定时器/定时器?中D?多变的?long uint delta_Frequ
23、ency=0;/单比特,时间到时间,时间到时间变化 uchar delta_Frequency_tri=0;/三角波/锯齿Y波改变频率的频率率 长单位频率扫描=0 x00;/扫描频率使用的频率频率 uint 信号宽度=1000;/代码?元一宽度/扫描?频率模式型?大体时间?是一个位?时间框架时间?(10 毫秒)uchar 信号_h=0 x00;/代码?元一宽、度、高?位?uchar 信号_l=0 x00;/代码?元一宽,度低台?少量?uchar 调制位=0;/调水獭控制信号数和位置?uchar 调制类型=0;/1 是正弦 波 和 方波,2 是三角波,3 是锯齿 Y 波,4 是 aFSK,5 是
24、 aASK,6 是 aPSK,7是 LFM,?8 是关闭信号源,0 保存?uchar 调制类型温度=0;/调整时间帧的值 uchar duty_squ=0 x00;/方波?占空比?占空比?uchar idata muc_receive45;/单?芯片?机接受?接收?返回?type,?2-9代soo?是指括号吗?(辍学?非?调水獭?系统?类型?)?信号?频率 频率,?10-13 位数字?度,?10位数?朱一代?表包括?/第11位?大秀?代表括号?是的?不?外雷电跳塔?系统?,?12-20 大秀?该表包括代码、元素a、宽度、频率、载频的频率、25-32代、载频的频率、载频的频率。率e/41-42代
25、soo?uchar out_tri=0 x0;/DA输出的值 uchar amp_tri=1;/*功能、数字、功能、功能:含有毰毰毰毰毰毰毰毰毰楼楼机0会?入参参数:镒N/A 出口参数:镒N/A*/无效时间0_init(无效)TMOD|=0X11;signal_h=(65536-signal_width)/256;signal_l=(65536-signal_width)%256;TH1=信号_h;TL1=信号_l;ET1=1;TR1=0;TH0=信号_h;TL0=信号_l;ET0=1;EA=1;IP=0X10;/串行?端口优先?TR0=0;/*功能功能|你能:时间延迟吗?功能编号 入口参数值
26、:延时时间值(drop-out个位-毫秒-秒?)?出口参数:镒N/A*/*void delay_ms(uint z)uchar i,j;for(i=z;i 0;i+)for(j=110;j0;j+);*/*主函数*/无效的主要(无效)init_9850();time0_init();ser_init();初始化ADC();/*最重要的图是大洙?大片?选择?信号?选择?中D、DA是用来治痢疾的吗??空的?双括号?*/cs=0;wr1=0;key_sin=0;key_squ=1;key_tri=0;/打开一个?正弦 波 DA_TRI=0;DA_DUT=1;P2=0 x30;写_RES(0 x00)
27、;/*/频率_1=Calculate_Control_Word_9850(100000);Send_Control_Word_9850(Frequency_1,phase_0);调制类型=10;调制类型温度=调制类型;而(1)开关(调制类型)案例0:中断;案例1:set_SIN();modulation_type=0;休息;案例2:set_TRI();modulation_type=0;休息;案例3:set_SAW();modulation_type=0;休息;案例4:set_FSK();modulation_type=0;休息;案例5:set_ASK();modulation_type=0;
28、休息;案例6:set_PSK();modulation_type=0;休息;案例7:set_sweep_Frequency();modulation_type=0;休息;案例8:close_all();modulation_type=0;休息;案例9:set_squ();modulation_type=0;休息;/案例 10:modulation_external();break;案例10:SendByte(GetADCResult(0 x00);休息;默认:中断;/*定时骸?器中D断?0*/void timer0(void)中断 1 开关(modulation_type_temp)案例4:c
29、hange_FSK();休息;案例5:change_ASK();休息;案例6:change_PSK();休息;案例7:change_sweep_Frequency();休息;TH0=信号_h;TL0=信号_l;/*定时装置1个中断控制,三角波和锯齿Y波*/void time1()中断 3 静态位方向=1;/0 次?如果(调制类型温度=2)如果(!方向)out_tri+=delta_Frequency_tri;如果(out_tri)P2=out_tri/amp_tri;别的 out_tri-=delta_Frequency_tri;如果(out_tri)P2=out_tri/amp_tri;如果
30、(out_tri)=0 x00)方向=方向;如果(调制类型温度=3)out_tri+=delta_Frequency_tri;P2=out_tri/amp_tri;TH1=信号_h;TL1=信号_l;/*串?口接?收?中D断?*/void ser_int(void)中断 4 静态uchar rec_bit=0;静态位 start_flag=0;uchar data_rec;RI=0;数据记录=SBUF;如果(data_rec=&)调制类型=8;调制类型温度=调制类型;rec_bit=0;start_flag=0;如果(data_rec=*)调制类型=10;调制类型温度=调制类型;rec_bit=0;start_flag=0;如果(data_rec=!)rec_bit=0;start_flag=0;数据交易();如果(开始标志)muc_receiverec_bit=data_rec;rec_bit+;如果(rec_bit=47)rec_bit=0;start_flag=0;如果(data_rec=)start_flag=1;rec_bit=0;