




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
燕山大学嵌入式智能仪表三级项目设计说明书题目: 频率发生器设计 学院(系): 电气工程学院 年级专业: 13仪表一班 学生姓名: 小组成员: 小 组: 第一组 指导教师: 郝晓辰 教授 燕 山 大 学 三级项目设计说明书摘要本系统以低功耗单片机stm32为主控器件,分为微控制器、da转换器、功率放大等模块,实现了一个能产生任意频率波形的频率发生器。本设计利用单片机生成各种波形的数据,将数据传输给ram存储器,通过后级的da转换器实现波形的产生。系统输入波形参数,频率1hz步进可调,峰-峰值可在0到10v之间任意调节。电路设计条理清晰,人机交互界面友好,控制方便,很好地完成了题目的所有基本和发挥要求。前言智能仪器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。智能仪器的出现,极大地扩充了传统仪器的应用范围。智能仪器凭借其体积小、功能强、功耗低等优势,迅速地在家用电器、科研单位和工业企业中得到了广泛的应用。近年来,智能化测量控制仪表的发展尤为迅速,为经济发展提供了巨大推动力。进入互联网时代,智能仪器向着微型化、多功能、人工智能化、网络化发展,在越来越多的领域发挥了不可替代的作用。实验内容1设计放大器电路。2设计嵌入式系统电路及程序,实现频率发生器基本功能,可以产生三种标准波形:正玄波、三角波和方波。3编写嵌入式系统程序,实现函数频率发生器功能,可以对标准波形设计频率、周期、最大值、最小值、峰峰值、偏移量和方波占空比。4编写嵌入式系统程序,实现随机频率发生器功能,输出波形。实验设备1.示波器、信号发生器、万用表2.stc单片机开发板、c8051f开发板、stm32开发板实验器件: stm32f103zet6、aduc7026实验方案(1)波形生成方案采用stm32单片机生成波形,由于是软件滤波,所以不会有寄生的高次谐波分量,生成的波形比较纯净。它的特点是价格低、性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。采用此方案既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比高。 (2)任意波形的生成原理采用键盘输入,这是最基本的方法。优点是输入值精确。但用户自定义输入时无法自由输入想要的特殊波形,而且输入数据繁琐,操作麻烦,由于实现相对简单,故本实验采用该方案。系统设计分析(1)硬件部分stm32液晶屏d/a运放示波器键盘输入控制 运算放大器电路 r1是耦合电阻,r2,r3都为分压式反馈电阻。r2和r1的电压比例为1:2,out2的电压为-5v0v,在第二级运放中要把-5v0v之间的电压转变为-5v5v,即第一级运放转换成电压量的值没增加或减少1v,第二级运放产生的电压就减少或增加2v。(2)微控制器软件实现 微控制器主要用于完成数据的采集,显示以及处理,生成各种波形数据,本系统采样256个数据,采用8位da转换器,因此ram地址位设置为8位,数据位设置为8位。微控制器先进行数据收集处理,生成各种波形的归一化数据,然后存储在256位的数组里,根据幅值要求乘以相应的系数,最终生成可以存放在ram里的数据。 本系统采用12位da转换器,最大输出电压为5vpp,功率放大为2倍,所以系统最大的输出电压可以达到10vpp,可计算出最小电压分辨率为:主流程初始化液晶显示键盘输入处理判断波形方波正弦波三角波锯齿波中断返回定时中断开始电压分辨率:k=10/4096(v) (1)是波形发生器的主流图,由系统初始化和人机交互模块组成,其中液晶显示子模块和键盘输入处理子模块占用单片机主要处理时间,单片机反复运行该模块程序人机交互模块相当于系统的监控程序;(2)是定时中断服务流程图,波形发生模块放置在定时中断服务程序中,系统每隔一定时间,产生一个定时中断,暂停主流程运行,转到定时中断服务程序起始处,执行波形发生模块,该模块输出一个样值后,结束此次中断服务,返回主流程断点处继续运行。反复多次定时中断服务,从而完成波形生成。(3)键盘输入处理子模块在具体实现时,键值识别部分作为主程序,键功能处理部分作为子程序,它们之间的关系是主程序调用子程序。键盘的工作过程:1)扫描键盘,获得列扫描码和行状态码,从而确定被按下的按键的键值;2)根据键值,通过散转表,跳转到相应的键功能处理部分;3)进入键处理部分,完成键功能;4) 完成一次键输入工作通过键盘对单片机系统进行设置,每按一次键,键盘都会有上述的处理过程,每次仅能完成一个键功能。在实际设置波形参数时,一个参数需要多个键功能来实现,那么相应的键盘也要多次完成键值识别,跳转键处理的工作过程。(4)函数参数设置1)正弦波归一化数据生成函数 s(t)=sin(t) /(2k) 2)三角波归一化数据生成函数t(t)=t/(63 *2k) (t64) t(t)=(127-t)/(63 *2k) (64t128)t(t)=(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*t(t+n)(5)实验参考程序/*-* 功 能 :stm32 dac 数模转换(正弦波/矩形波/三角波)输出实验 * 说 明 :按 sw5 输出正弦波 / 按 sw4 输出矩形波 / 按 sw3 输出三角波, 输出端口 pa4 *-*/#include #include / stm32f10x library definitions#include stm32_reg.h / stm32 register and bit definitions#include stm32_init.h / stm32 initialization#include common.h#include 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(); /打开dac时钟使能 rcc-apb1enr |= (uint32)(1 29); /设置dac控制参数 *(pdac_base + 0x00) = (0x01 0)| (0x00 2) | (0x04 3) | (0x03 6) | (0x0b 8); *(pdac_base + 0x04) = 0x01 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()func = hackle_wave; switch(func)case sine_wave:/-#ifdef sine_wave if(i 1024) i+=2; else i = 0; *(pdac_base + 0x08) = sine_wavei 4;#endif/-break;case rect_wave: #ifdef rect_wavefor(i=0;i2000;i+)*(pdac_base + 0x08) = 0x0fff;for(i=0;i2000;i+)*(pdac_base + 0x08) = 0;#endif/-break;case hackle_wave:#ifdef hackle_wave if(flag) flag = 0;while(true) if(i 0) i -= 1; else break; *(pdac_base + 0x08) = 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 &= (0x0f crl |= (value crh &= (0x0f crh |= (value (gpio * 4 - 8 * 4);/set used bit if(port = port_b) if(gpio crl &= (0x0f crl |= (value crh &= (0x0f crh |= (value (gpio * 4 - 8 * 4);/set used bit if(port = port_c) if(gpio crl &= (0x0f crl |= (value crh &= (0x0f crh |= (value (gpio * 4 - 8 * 4);/set used bit if(port = port_d) if(gpio crl &= (0x0f crl |= (value crh &= (0x0f crh |= (value (gpio * 4 - 8 * 4);/set used bit if(port = port_e) if(gpio crl &= (0x0f crl |= (value crh &= (0x0f crh |= (value sr & usart_flag_txe); usart2-dr = (ch & 0x1ff); return (ch);/*- getkey read character to serial port. *-*/int getkey (void) while (!(usart2-sr & usart_flag_rxne); return (int)(usart2-dr & 0x1ff);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,input);set_io_direction(port_e,sw4,input);set_io_direction(port_e,sw5,input);turn_off_led1();turn_off_led2();turn_off_led3();turn_off_led4();/*- insert a delay time. *-*/void delay(unsigned int ncount) for(; n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一汉服活动方案
- 六一活动健步走活动方案
- 六一活动吹水球活动方案
- 六一活动延伸活动方案
- 六一活动赛龙舟活动方案
- 六一活动预热活动方案
- 六一游园互动活动方案
- 六一环保活动方案
- 六一端午社区活动方案
- 六一补发活动方案
- NBT-31084-2016风力发电场项目建设工程验收规程(A.监理基本用表)
- 食品质量安全溯源系统技术方案
- 国电智深DCS系统培训PPT课件
- 混凝土结构及砌体结构课程设计(共18页)
- 家长在高考动员会讲话3篇
- 普通中等专业学校招生体检标准
- 铣床数控课程设计(共39页)
- 屋面设备基础施工方案
- 中国基金税收政策及其改进建议
- 全过程、多元化统计学课程考核方式改革探索
- 大数据时代金融机构从业人员思政教育研究
评论
0/150
提交评论