




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、频率频率发生器发生器设计设计频率发生器 本系统以低功耗单片机stm32为主控器件分为微控制器、DA转换器、功率放大等模块,实现了一个能产生任意频率波频率发生器。 本设计利用单片机生成各种波形的数据将数据传输给RAM存储器通过后级的DA转换器实现波形的产生。系统输入波形,1HZ步进,可调峰-峰值可在0到10V之间任意调节。电路设计条理清晰,人机交互界面友好,控制方便,很好地完成了题目的所有基本和发挥要求。 实验内容实验内容1设计放大器电路2设计嵌入式系统电路及程序,实现频率发生器基本功能,可以产生三种标准波形:正玄波、三角波和方波;3编写嵌入式系统程序,实现函数频率发生器功能,可以对标准波形设计
2、频率、周期、最大值、最小值、峰峰值、偏移量和方波占空比。4编写嵌入式系统程序,实现随机频率发生器功能,输出波形。实验设备实验设备1.示波器、信号发生器、万用表2.STC单片机开发板、C8051F开发板、STM32开发板实验器件: STM32F103ZET6、ADUC7026实验实验方案方案(1 1)波形生成方案)波形生成方案 采用STM32单片机生成波形,由于是软件滤波,所以不会有寄生的高次谐波分量, 生成的波形比较纯净。它的特点是价格低、性能高,在低频范围内稳定性好、操作方便、 体积小、耗电少。 采用此方案既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制, 性价比高。 (2 2
3、)任意波形的生成原理)任意波形的生成原理 采用键盘输入,这是最基本的方法。优点是输入值精确。但用户自定义输入时无法 自由输入想要的特殊波形, 而且输入数据繁琐,操作麻烦,由于实现相对简单,故本实验采用该方案。系统设计分析 (1 1)硬件部分)硬件部分STM32液晶屏D/A运放键盘输入控制示波器 运算放大器电路R1是耦合电阻,R2,R3都为分压式反馈电阻。R2和R1的电压比例为1:2,OUT2的电压为-5v0v,在第二级运放中要把-5v0v之间的电压转变为-5v5v,即第一级运放转换成电压量的值没增加或减少1v,第二级运放产生的电压就减少或增加2v。(2 2)微控制器软件实现)微控制器软件实现
4、微控制器主要用于完成数据的采集,显示以及处理,生成各种波形数据,本系统采样256个数据,采用8位DA转换器,因此RAM地址位设置为8位,数据位设置为8位。微控制器先进行数据收集处理,生成各种波形的归一化数据,然后存储在256位的数组里,根据幅值要求乘以相应的系数,最终生成可以存放在RAM里的数据。 本系统采用12位DA转换器,最大输出电压为5Vpp,功率放大为2倍,所以系统最大的输出电压可以达到10Vpp,可计算出最小电压分辨率为:电压分辨率:K=10/4096(V)主流程初始化液晶显示键盘输入处理判断波形方波正弦波三角波锯齿波中断返回定时中断开始 (1)是波形发生器的主流图,由系统初始化和人
5、机交互模块组成,其中液晶显示子模块和键盘输入处理子模块占用单片机主要处理时间,单片机反复运行该模块程序人机交互模块相当于系统的监控程序;(2)是定时中断服务流程图,波形发生模块放置在定时中断服务程序中,系统每隔一定时间,产生一个定时中断,暂停主流程运行,转到定时中断服务程序起始处,执行波形发生模块,该模块输出一个样值后,结束此次中断服务,返回主流程断点处继续运行。反复多次定时中断服务,从而完成波形生成。(3 3)键盘输入处理子模块)键盘输入处理子模块 在具体实现时,键值识别部分作为主程序,键功能处理部分作为子程序,它们之间的关系是主程序调用子程序。键盘的工作过程:1)扫描键盘,获得列扫描码和行
6、状态码,从而确定被按下的按键的键值;2)根据键值,通过散转表,跳转到相应的键功能处理部分;3)进入键处理部分,完成键功能;4)完成一次键输入工作 通过键盘对单片机系统进行设置,每按一次键,键盘都会有上述的处理过程,每次仅能完成一个键功能。在实际设置波形参数时,一个参数需要多个键功能来实现,那么相应的键盘也要多次完成键值识别,跳转键处理的工作过程。(4 4)函数参数)函数参数设置设置 1)正弦波归一化数据生成函数 S(t)=sin(t) /(2K) 2)三角波归一化数据生成函数 T(t)=t/(63 *2K) (t64) T(t)=(127-t)/(63 *2K) (64t128) T(t)=(
7、t-128)/(63 *2K) (128t192) T(t)=(255-t)/(63 *2K) (192t256)3)方波归一化数据生成函数 根据电压分辨率可以得出方波归一化数据生成函数为: F(t)= 1/(2k) (0t128) F(t)= - 1/(2k) (128t256)4)5次谐波数据的生成函数 W(t)=a*sin(t)+ b*sin(2t+m)+ c*sin(3t+n)+d* sin(4t+p)+ e*sin(5t+q) 此函数要求幅值和相位参数:a.b.c.d.e.m.n.p.q 5)正弦波、方波、三角波线性组合波数据生成函数 D(t)=a*S(t)+ b*F(t+m)+ c
8、*T(t+n)(5 5)实验参考程序)实验参考程序/*-* 功 能 :STM32 DAC 数模转换(正弦波/矩形波/三角波)输出实验 * 说 明 :按 SW5 输出正弦波 / 按 SW4 输出矩形波 / 按 SW3 输出三角波, 输出端口 PA4 *-*/ #include #include / STM32F10 x Library Definitions#include STM32_Reg.h / STM32 register and bit Definitions#include STM32_Init.h / STM32 Initialization#include common.h#in
9、clude sine_wave_1024.h / 输出端口 : PA4#define SINE_WAVE1/sine 正弦波#define RECT_WAVE2/rectangular矩形波#define HACKLE_WAVE3/hackle三角波 UINT8 flag = 0;UINT8 func = SINE_WAVE;/*- MAIN function *-*/int main (void) UINT16 i = 0; UINT32 *pDAC_BASE = (UINT32 *)DAC_BASE; stm32_Init(); / STM32 setup LED_Init(); /打开D
10、AC时钟使能 RCC-APB1ENR |= (UINT32)(1 29); /设置DAC控制参数 *(pDAC_BASE + 0 x00) = (0 x01 0)| (0 x00 2) | (0 x04 3) | (0 x03 6) | (0 x0b 8); *(pDAC_BASE + 0 x04) = 0 x01 printf( - Program start - rn); while (TRUE)/ Loop forever if(!Get_SW5()func = SINE_WAVE;else if(!Get_SW4()func = RECT_WAVE;else if(!Get_SW3()
11、func = HACKLE_WAVE; switch(func)case SINE_WAVE:/-#ifdef SINE_WAVE if(i 1024) i+=2; else i = 0; *(pDAC_BASE + 0 x08) = Sine_WAVEi 4;#endif/-break; case RECT_WAVE: #ifdef RECT_WAVEfor(i=0;i2000;i+)*(pDAC_BASE + 0 x08) = 0 x0fff;for(i=0;i2000;i+)*(pDAC_BASE + 0 x08) = 0;#endif/-break;case HACKLE_WAVE:#
12、ifdef HACKLE_WAVE if(flag) flag = 0;while(TRUE) if(i 0) i -= 1; else break; *(pDAC_BASE + 0 x08) = i; #endifbreak; default:break;/- / end while / end main /*- * 设置方向 *-*/void Set_IO_direction(UINT8 PORT, UINT8 GPIO, UINT8 Value) RCC-APB2ENR |= RCC_APB2ENR_IOPAEN; if(PORT = PORT_A) if(GPIO CRL &=
13、 (0 x0f CRL |= (Value CRH &= (0 x0f CRH |= (Value (GPIO * 4 - 8 * 4);/Set used bit if(PORT = PORT_B) if(GPIO CRL &= (0 x0f CRL |= (Value CRH &= (0 x0f CRH |= (Value (GPIO * 4 - 8 * 4);/Set used bit if(PORT = PORT_C) if(GPIO CRL &= (0 x0f CRL |= (Value CRH &= (0 x0f CRH |= (Value
14、(GPIO * 4 - 8 * 4);/Set used bit if(PORT = PORT_D) if(GPIO CRL &= (0 x0f CRL |= (Value CRH &= (0 x0f CRH |= (Value (GPIO * 4 - 8 * 4);/Set used bit if(PORT = PORT_E) if(GPIO CRL &= (0 x0f CRL |= (Value CRH &= (0 x0f CRH |= (Value SR & USART_FLAG_TXE); USART2-DR = (ch & 0 x1FF
15、); return (ch); /*- GetKey Read character to Serial Port. *-*/int GetKey (void) while (!(USART2-SR & USART_FLAG_RXNE); return (int)(USART2-DR & 0 x1FF); void LED_Init(void)Set_IO_direction(PORT_E,LED1,OUTPUT);Set_IO_direction(PORT_E,LED2,OUTPUT);Set_IO_direction(PORT_E,LED3,OUTPUT);Set_IO_direction(PORT_E,LED4,OUTPUT);Set_IO_direction(PORT_B,SW2,INPUT);Set_IO_direction(PORT_B,SW3,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于“思维导图”可视化的教学策略-以苏教版小学数学单元整合复习课为例
- 车辆检测合同(标准版)
- 过户货车合同(标准版)
- 三年级语文下册S版教案
- 2025年高中定语从句题库及答案
- 2025年燃气经营企业从业人员专业考试仿真试题及答案
- 广西北海市2025年注册环保工程师考试(大气污染防治专业案例)全真模拟题库及答案
- 考点解析-人教版八年级物理上册第5章透镜及其应用-透镜专题训练练习题(解析版)
- 仓库安防、监控工程施工方案
- 2025年注册环保工程师考试(大气污染防治专业案例)全真模拟题库及答案(山东)
- 2025年育婴员(高级)理论考试题库附答案
- 四川省广安市前锋区高2026届上学期第一次全真模拟考试英语试卷(原卷)
- 2025江苏南京玄武区招聘社区工作者和“两新”组织专职党务工作人员70人考试参考试题及答案解析
- 干雾抑尘设备施工方案
- 2025年国家电投笔试考试及答案
- 2025广西北海市检察机关聘用人员控制数招聘26人考试模拟试题及答案解析
- 南京大学工作人员招聘考试真题2022
- 纪委书记政治画像
- 雅思词汇一本全(打印珍藏版)
- 2023统编版高中历史必修中外历史纲要上重点知识点归纳总结(复习必背)
- 高速磁浮大跨度桥梁设计关键技术介绍
评论
0/150
提交评论