单片机函数信号发生器(参考文献).doc

上传人:兮*** 文档编号:965301 上传时间:2019-09-13 格式:DOC 页数:13 大小:379.50KB
返回 下载 相关 举报
单片机函数信号发生器(参考文献).doc_第1页
第1页 / 共13页
单片机函数信号发生器(参考文献).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《单片机函数信号发生器(参考文献).doc》由会员分享,可在线阅读,更多相关《单片机函数信号发生器(参考文献).doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1单片机函数信号发生器单片机函数信号发生器摘要:摘要:本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。关键词:低频信号发生器;单片机;D /A 转换; 1 设计选题及任务设计选题及任务设计题目:基于单片

2、机的信号发生器的设计与制作 任务与要求:设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。基本要求:(1)产生三种以上波形。如正弦波、三角波、矩形波等。 (2)最大频率不低于 500Hz。并且频率可按一定规律调节,如周期按 1T,2T,3T,4T或 1T,2T,4T,8T 变化。 (3)幅度可调,峰峰值在 0-5V 之间变化。 扩展要求:产生更多的频率和波形。 2 系统概述系统概述2.1 方案论证和比较方案论证和比较2.1.1 总体方案:总体方案:方案一:采用

3、模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波) ,并且频率调节很不方便。方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。方案三:使用集成信号发生器发生芯片,例如 AD9854,它可以生成最高几十 MHZ 的波形。但是该方案也不能产生任意波形(例如梯形波) ,并且价格昂贵。方案四:采用 AT89C51 单片机和 DAC0832 数模转换器生成波形,加上一个低通滤波器,生成的波形比较纯净。它的特点是可产生任意波形,频率容易调节

4、,频率能达到设计的500HZ 以上。性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。经比较,方案四既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比高,所以采用该方案.2.1.2 改变幅度方案:改变幅度方案:2方案一:可以将送给 DA 的数字量乘以一个系数,这样就可以改变 DA 输出电流的幅度,从而改变输出电压;但是这样做有很严重的问题,单片机在做乘法运算时需要很长的时间,这样的话输出波形的频率就会很低,达不到至少 500HZ 的要求;并且该方案的输出电压做不到连续可调,当 DA 的输入数字量比较小时,输出的波形失真就会比较严重。方案二:将输出电压通过一个运算放大器

5、的放大。这样还有个优点是幅度连续可调。经比较,方案二既可满足课程设计的基本要求,并且电路也挺简单。2.2 系统部休结构与原理系统部休结构与原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51 单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器 CPU、随机存取存储器 RAM、只读存储器ROM、I/O 接口电路、定时器/计数器以及串行通讯接口等,只要将 89C51 再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,其信号发生器构成系统框图如下图 2-1 所示。单片机数模转换

6、电路放大电路低通滤波按键电路电源波形 ROM表波形输出图 2-1 系统框图89C51 是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。波形 ROM 表是将信号一个周期等间距地分离成 64 个点,储存在单片机得 RON 内。具体 ROM 表是通过 MATLAB 生成的,例如正弦表,MATLAB 生成的程序如下:x=0:2*pi/64:2*pi; y=round(sin(x)*127)+128 3 硬件电路设计与分析硬件电路设计与分析3.1 主控电路主控

7、电路设计中主要采用 STC89C51 型单片机,它具有如下优点:(1)拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。 (2)该单片机内部拥有 4K 字节的FLASH ROM 程序存储器空间和 256 字节的 RAM 数据存储空间,完全可以满足程序的要求。由于该芯片可电擦写,故可重复使用。如果更改程序内容,可将芯片拿下重新烧写。 (3)该单片机与工业标准的 MCS51 型机的指令集和输出引脚兼容。中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器 CPU 正在3处理某件事的时候外界发生了紧急事件,要求 CPU 暂停当前的工作,转而去处理这个紧急事件。在波

8、形发生器中,用两个开光直接与外部中断 0 和外部中断 1 的管脚相连,其中 S1 开光用来改变波形,S2 开光用来改变频率。在程序主函数中,我们写了个死循环一直输出一个默认的波形,当 S1 或 S2 按下又抬起时,程序会暂时跳出死循环,进入中断处理程序,从而对波形和频率进行改变。时钟电路。由于频率较大时,三角波、正弦波、方波等波中每一点延时时间为几微秒,故延时时间还要加上指令时间即可得到指定频率的波形,该电路用 11.0592MHz 晶振。P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.

9、3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17X218X119GND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40STC89C521 2 3 4 5 6 7 8 9PAIZU-10KVCCY1 11.0592MC630PC730PD0P30 P31VCCVCC1 25VD1 D2 D3 D4 D5 D6 D7CSDA WRS1S2S3图 3-1 主控电路图3.2 数

10、数/模转换电路模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有 8 位分辨率的数模转换器DAC0832。DAC0832 主要由 8 位输入寄存器、8 位 DAC 寄存器、8 位 D/A 转换器以及输入控制电路四部分组成。但实际上,DAC0832 输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832 是电流型输出,在应用时外接运放使之成为电压型输出。根据对 DAC0832的数据锁存器和 DAC 寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲

11、方式和双缓冲方式。本设计选用直通方式。DAC0832 的数据口和单片机的 P0 口相连。CSDA:片选信号输入线(选通数据锁存器) ,低电平有效;WR:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由 ILE、CS、WR1的逻辑组合产生 LE1,当 LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳4变时将输入数据锁存;1 2 3 4 5 6 7 8 9 1020 19 18 17 16 15 14 13 12 11P4DAC0832VCCCSDA WRD0VCCD1D2D3 D4 D5 D6 D7图 3-2 数模转换电路3.3 运算放大电路和低通滤波电路运算放大电路

12、和低通滤波电路1 2 3 4 5 6 7 8 9 1020 19 18 17 16 15 14 13 12 11P4DAC0832VCCCSDA WRD0 VCC 7562411LM324 91083411LM32412V10KR25KR112V-12V-12V100R3104C6D1D2D3 D4 D5 D6 D71 2VOUT11 2VOUT2图 3-3 滤波与放大电路LM324 的 5 管脚与 DAC0832 的(IOUT2)12 管脚相连,LM324 的 6 管脚与 DAC0832的(IOUT1)11 管脚相连,LM324 的 7 管脚与 DAC0832 的 REF(9)管脚相连.第一

13、级运算放大器的作用是将 DAC0832 输出的电流信号转化为电压信号 V1,第二级运算放大器的作用是将 V1 通过反向放大电路-(R2/R1)倍。题目要求输出的电压在 0-5V 可调,而 V1 的电压大约是 5V,所以 R1 选择 5K 的电阻,R2 选择 10K 的电位器,这样最大的输出电压为 5*(10/2)=10,最小电压为 0,可以实现题目要求的 0-5V。在第二个运算放大器的输出端连了一个低通滤波器。如果不加低通滤波器,也能够生成波形,但是产生的信号中毛刺很多,加一个低通滤波器不仅起到的滤波的作用,还起到了平滑的作用。低通滤波器的截止频率 F=1/(2*pi*R3*C6),这里我们选

14、择 R3 为 100 欧姆电阻,C6 为 104 电容,截止频率 F=16KHZ。实验表明,此时的输出波形效果不错。4 系统软件设计系统软件设计软件设计上,根据功能分了几个模块编程。模块主要有:主程序模块、外部中断 0 模块,外部中断 1 模块。4.1 主程序设计主程序设计5主程序先是进行一些初始化的工作,然后根据波形标志 a,b,c,d,e 的值进入相应的 while 循环。这样写的好处是输出的波形频率可以 790 多 HZ。在 while 循环中,单片机根据地址标志位不停低查表,然后把查得的值赋给 DAC0832 的数据口,然后地址标志位加一,并判断地址标志位是否等于 64,如果是就置 0

15、 再往下执行,如果不是直接往下执行。然后根据频率标志位进行相应的延时。初始化开始根据地址标志位查表while循环输出数字量给 DAC0832数据口根据a,b,c,d,e的值进入相 应的while循环地址标志位加1地址标志位是 否等于64否地址标志位置0相应延时(对应频 率)4-1 主程序流程图4.2 中断服务程序中断服务程序本程序中两个外部中断分别起到了控制波形和频率的作用。在程序中还加入了消抖部分。外部中断1是否有中断信 号是否频率标志位加1频率标志位是 否等于8是否频率标志位置0根据频率标志做 相应处理外部中断0是否有中断信 号是否波形标志位加1波形标志位是 否等于5是否波形标志位置0根据

16、波形标志做 相应处理图 4-2 中断服务程序流程5 安装调试及测量数据分析安装调试及测量数据分析65.1 调试过程调试过程(1)不通电,用万用表根据电路图仔细检查各线路连接是否正常。(2)首先是调试单片机部分,DA 和运算放大器芯片不接。用 STC_ISP_V483 软件通过串口下程序。看是否可以正常下程序。(3)当可以正常下程序时,给 51 单片机下一个让所有 I/0 口一会儿输入 0,延时,再输出 1,以此类推。用万用表测量各 I/O 口得电压是不是一会儿高,一会儿低。(4)安上 DA 和运算放大器芯片,给单片机下一个输出正弦波的测试程序,通过示波器看输出是否正常。(5)给单片机下一个完整

17、的程序,分别按下 S1,看波形是否改变。按下 S2,看频率是否改变。5.2 频率的测量数据:频率的测量数据:单位:HZ周期T2T3T4T5T6T7T8T理论值798.6399.3266.2199.7159.7133.1114.199.8实际值798.6399.6266.5199.9159.9133.3114.299.95.3 出现的问题与解决的方法:出现的问题与解决的方法:(1)调试单片机的串口时,发现不能正常的下程序。我想可能是单片机坏了借了一块学习板测试了一下单片机芯片,发现可以正常下载。这说明很可能是 MAX232 的电路出了问题。我仔细查看了电路图,又上网查了下其他的 MAX232 的

18、电路图,发现我的电路图和别人的不一样。我是按照郭天翔的那本新概念 51 单片机 C 语言教程 入门、提高、开发、拓展全第 130 页的串口电路画的图,电路图中 MAX232 的 TIOU1 接串口的第 3 脚。而其他书上有些电路图却是 MAX232 的 TIOU1 接到了串口的第 2 脚。于是我将 MAX232 的 TIOU1 接串口的第 2 脚,再下程序,终于可以正常下载了。(2)刚开始写的测试程序输出的波形失真很大。我想可能是波形的 ROM 表里的数据值过小,导致 DA 输出的误差很大。因而卧将波形的 ROM 表里的数据值调大,在测试时发现波形变得好多了。(3)调试波形的时候我发现矩形波的

19、失真比较大。我想到可能是低通滤波器的截止频率太低了,因而我将 RC 低通滤波器的电阻由 1K 换成了 100 欧姆,效果好了很多。5.4 系统仿真波形系统仿真波形(1)矩形波(2)锯齿波(3)正弦波75.5 效果分析:效果分析:由 4.2 的频率理论值与实际值,可知频率在 T,2T,3T,4T,5T,6T,7T,8T 上频率误差很小。最终的波形输出效果也很不错。6 实训结语实训结语(总结总结)基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。通过单片机控制一个模数转换器 DAC0832 产生所需要的电流,然后使用运算放大器 LM324可以将其电流输出线性地转换成电压输

20、出,再将电压经过运算放大器的放大,可以得到足够幅度的信号。通过程序的控制,可以产生一系列有规律的波形。这样一个信号发生装置在控制领域有相当广泛的应用范围。最终做出来的信号发生器满足了题目中的所有要求:(1)产生五种波形。正弦波、三角波、矩形波、梯形波,锯齿波。 (2)最大频率为 798.6HZ。并且频率可按按 1T,2T,3T,4T,5T,6T,7T,8T 变化。(3)幅度可调,峰峰值在 0-5V 之间变化。 当然还是存在不足的地方,比如不能实现频率的按一个小的步进调整。并且当频率太小时矩形波会有些失真。信号发生器可以生成更多的波形,只需要再加些波形表即可。在这里得感谢学校为我们提供个这样一个

21、实践的机会,当然还得感谢指导老师们的细心指导。参考文献参考文献1 郭天翔.新概念 51 单片机 C 语言教程 入门、提高、开发、拓展全.北京.电子工业出版社 2009.12 童诗白.模拟电路技术基础M.北京:高等教育出版社,2000.171202.附录附录1:总电路图:总电路图8P1.01 P1.12 P1.23 P1.34 P1.45 P1.56 P1.67 P1.78 RST9 P3.0/RXD10 P3.1/TXD11 P3.2/INT012 P3.3/INT113 P3.4/T014 P3.5/T115 P3.6/WR16 P3.7/RD17 X218 X119 GND20P2.021

22、P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40STC89C521 2 3 4 5 6 7 8 9 PAIZU-10KVCCY111.0592MC630PC730PD0P30 P31VCCVCC1 25V1234567891110RS23212 34 56 78 910 1112 1314 1516U2M AX232P31P30VCCT1OUTR1INT1OUTR1IN104C5D1 D2 D3 D4 D5 D6 D71 2

23、 3 4 5 6 7 8 9 1020 19 18 17 16 15 14 13 12 11P4DAC0832VCCCSDA WRD0 VCC 7562411LM 324 91083411LM 32412V10KR25KR112V-12V-12VCSDA WR104C1104C2104C3104C4100R3104C6D1D2D3 D4 D5 D6 D7S1S21 2VOUT11 2VOUT2S39附录附录 2:源程序:源程序#include #define uchar unsigned char #define uint unsigned intsbit csda=P22; sbit wr=

24、P21; sbit s1=P32; sbit s2=P33; uchar k=0,p=0,delay=0; uchar bxxz=0;pinglv=0; uchar a=1,b=0,c=0,d=0,e=0;uchar code sin64= 135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,2 22,213,204,193,182,170,158, 146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2

25、,5,9,14,20,28,36,45,55,66,78,90,102,114,1 28 ; uchar code juxing64= 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2 55,255,255, 255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; uchar code juchi64= 0,4,8,12,16,20,2

26、4,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,1 25,130,134,138,142, 146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,235,2 39,243,247,251,255 ; uchar code tixing64= 0,13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,208,221

27、,234,247,247,247,247,247,247,2 47,247,247,247,247,247,247,247,247,247,247,247,247, 247,247,247,247,247,247,247,242,229,216,203,190,177,164,151,138,125,112,99,86,73,60,47,34,21,8; uchar code sanjiao64= 0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208, 216,2

28、24,232,240,248, 248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,5 6,48,40,32,24,16,8,0 ;10void delay1() int a,b; for(a=1;a0;a-) for(b=122;b0;b-); void int0() interrupt 0 EX0=0; delay1(); if(s1=0) bxxz+; if(bxxz=5) bxxz=0; switch(bxxz) case 0 : a=1,b=0,c=0,d

29、=0,e=0; break; case 1 : a=0,b=1,c=0,d=0,e=0; break; case 2 : a=1,b=0,c=1,d=0,e=0; break; case 3 : a=0,b=0,c=0,d=1,e=0; break; case 4 : a=0,b=0,c=0,d=0,e=1; break; delay1(); while(!s1); while(!s1); EX0=1; void int1() interrupt 2 EX1=0; delay1();11if(s2=0) p+; if(p=8)p=0; switch(p) case 1 : pinglv=3;

30、break; case 2 : pinglv=6; break; case 3 : pinglv=9; break; case 4 : pinglv=12; break; case 5 : pinglv=15; break; case 6 : pinglv=18; break; case 7 : pinglv=21; break; default : pinglv=0; break; delay1(); while(!s2); while(!s2); EX1=1; void main() csda=0; wr=0; EA=1;12IT0=1; EX0=1; IT1=1; EX1=1; whil

31、e(1) while(a) delay=pinglv; P0=sink; k+; if(k=64) k=0; while(delay) delay-; while(b) delay=pinglv; P0=juxingk; k+; if(k=64) k=0; while(delay) delay-; while(c) delay=pinglv; P0=juchik; k+; if(k=64) k=0; while(delay) delay-; while(d) delay=pinglv; P0=tixingk; k+; if(k=64)13k=0; while(delay) delay-; while(e) delay=pinglv; P0=sanjiaok; k+; if(k=64) k=0; while(delay) delay-;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com