锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

基于51单片机函数信号发生器

时间:2022-09-04 23:00:00 电容式分离器装置

摘要

本文以STC89C51单片机为核心设计了低频函数信号发生器。信号发生器采用数字波合成技术,通过硬件电路和软件程序输出自定义波,如正弦波、方波、三角波、三角波、梯形波和其他任何波,波的频率和范围可以在一定范围内任意改变。软件控制波形和频率的变化,硬件实现振幅的变化。介绍了波形生成原理、硬件电路和软件部分的设计原理。该系统最高频率为798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全等优点。

1.设计主题和任务

设计主题:基于单片机信号发生器的设计和实现

任务及要求:

设计一个由单片机控制的信号发生器。单片机系统用于控制各种波形,包括方波、三角波、锯齿波、正弦波等。可调节信号发生器产生的波形的频率和范围。信号的波形可以通过软件任意改变。

基本要求:

1.产生三种以上的波形。如正弦波、三角波、矩形波等。

2.最大频率不低于 500Hz。频率可以按一定的规律调整,如周期为1T,2T,3T,4T或1T,2T,4T,8T变化。

3.峰值0-5V之间变化。

扩展要求:产生更多的频率和波形。

2系统概述

2.1.方案论证和比较

2.1.1总体方案:

方案1:通过模拟电路构建函数信号发生器,可同时产生方波、三角波和正弦波。但该模块不能产生任何波形(如梯形波),频率调节非常不方便。

方案二:压控振荡器采用相频率合成器,采用锁相环(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。

方案三:使用集成信号发生器发生芯片,如AD它可以产生最高几十个9854MHZ波形。但该方案不能产生任何波形(如梯形波),而且价格昂贵。

方案四:采用AT89C51单片机和DAC0832数模转换器产生波形,低通滤波器产生纯波形。它的特点是可以产生任何波形,容易调节频率,频率可以达到设计的500HZ以上。性能高,稳定性好,操作方便,体积小,功耗低。

经过比较,方案4既能满足课程设计的基本要求,又能充分发挥其优势。电路简单,易于控制,性价比高,因此采用该方案.

2.1.2变幅度方案:

方案一:可以给DA数字乘以一个系数,可以改变DA输出电流的范围从而改变输出电压;然而,这有一个非常严重的问题。单片机在乘法操作中需要很长时间。这样,输出波形的频率将非常低,至少不能达到500HZ的要求;

当该方案的输出电压不能连续可调时DA当输入数量相对较小时,输出的波形失真将更加严重。

方案二:通过操作放大器放大输出电压。另一个优点是范围连续可调。

相比之下,方案二既能满足课程设计的基本要求,又能使电路相当简单。

2.2工作原理

数字信号可以通过数字/模拟转换器转换为模拟信号,因此所需的波形可以通过产生数字信号转换为模拟信号来获得。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器、串行通信接口等。C重新配置键盘、数模转换、波形输出、放大电路等部件,形成所需的波形发生器,系统框图如下图所示。

a598cc8d1c3322a39330dea6ba3efd7d.png

系统框图

89C51是整个波形发生器的核心部分。通过编写和执行程序,产生各种信号,并从键盘接收数据,转换各种功能和调整信号范围。当数字信号电路到达转换电路时,将其转换为模拟信号,即所需的输出波形。

波形ROM表将信号等间距分成64点,存储在单片机中RON内。具体ROM表是通过MATLAB如正弦表,MATLAB生成程序如下:

x=0:2*pi/64:2*pi; y=round(sin(x)*127) 128

3单元电路设计与分析

3.1.1主控电路

主要用于设计STC89C51型单片机具有以下优点:

(1)拥有完善的外部扩展总线,通过这些总线可以轻松扩展外围单元和外围接口。(2)单片机内部有4个K字节的FLASH ROM程序存储空间和256字节RAM数据存储空间可以完全满足程序的要求。因为芯片可以电擦写,所以可以重复使用。如果更改程序内容,可以取下芯片再烧写。

(3)单片机和工业标准MCS-51型机的指令集与输出引脚兼容。

中断系统是为了使处理器具有处理外部异步事件的能力。中央处理器CPU正在

在处理某件事时,外界发生了紧急况,要求CPU暂停目前的工作,转而处理这个紧张局势

急事件。

在波形发生器中,两个开光直接连接到外部中断0和外部中断1的管脚S开光用于改变波形,S2开光用于改变频率。在程序主函数中,当默认波形输出时,我们写了一个死循环S1或S按下并抬起时,程序会暂时跳出死循环,进入中断处理程序,从而改变波形和频率。

时钟电路。由于率较大时,三角波、正弦波、方波等波中的每个延迟时间为几微秒,因此延迟时间和指令时间可以获得指定频率的波形,该电路为11.0592MHz晶振

主控电路图

3.1.2 数/模转换电路

由于单片机产生数字信号,为了获得所需的波形,需要将数字信号转换为模拟信号,因此选择价格低、界面简单、转换控制方便、分辨率8位的数字模型转换器DAC0832。DAC0832主要由8位输入寄存器DAC寄存器、8位D/A转换器和输入控制电路由四部分组成。但实际上,DAC0832输出的功率并非真正连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流输出,在应用过程中外接运放使其成为电压输出。

根据对DAC0832数据锁和DAC不同的寄存器控制方法,DAC0832有三种工作方式和双缓冲三种工作方式。本设计采用直接方式。

DAC0832的数据口和单片机P0口相连。

CSDA:选片信号输入线(选通数据锁存器),低电平有效;

WR:负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR产生1的逻辑组合LE1,当LE在高电平时,数据锁存器状态随输入数据线而变化,LE1负跳变时,输入数据锁定;

数模转换电路

3.1.3操作放大电路和低通滤波电路

LM324的5管脚与DAC0832的(IOUT2)12管脚相连,LM324的6管脚与DAC0832的(IOUT1)11管脚相连,LM324的7管脚与DAC0832的REF(9)管脚相连.

一级操作放大器的作用是将DAC0832输出的电流信号转换为电压信号V1.二级操作放大器的作用是V通过反向放大电路-(R2/R1)倍。

主题要求0-5输出电压V可调,而V1的电压约为5V,所以R1选择5K的电阻,R2选择10K最大输出电压为5*(10/2)=10.最小电压为0,可实现主题要求的0-5V。

低通滤波器连接到第二个操作放大器的输出端。如果不添加低通滤波器,也可以产生波形,但信号中有许多毛刺。添加低通滤波器不仅起到滤波的作用,而且起到平滑的作用。低通滤波器的截止频率F=1/(2*pi*R3*C6),这里我们选择R3 100欧姆电阻,C6是104电容,截止频率F=16KHZ。实验表明,此时输出波形效果良好。

3.1.四串口通信电路

通用异步收发器(UART)这种外设接口一般包含在微处理器中。异步串行接口提供了一种简单的通信方式,使两个设备可以通信,而无需共享同一时钟信号。如果添加合适的电平转换器MAX串口可用于232RS232和RS在485等网络中实现通信,或与计算机通信COM端口连接。串口只需要两条信号线(RX和TX)可以实现,只要两端设备采用相同的位置格式和波特率,它们就可以在没有任何其他信息的情况下成功传输数据。

串口通信电路图

3.2系统软件设计

在软件设计中,根据功能分为几个模块编程。模块主要包括:主程序模块、外部中断0模块、外部中断1模块。

主程序:

主程序首先进行一些初始化工作,然后根据波形标志进行a,b,c,d,e值进入相应的值while 循环。这样写的好处是输出的波形频率可以超过790HZ。在while在循环中,单片机根据地址标志位不断低调查表,然后赋予检查值DAC0832数据端口,然后添加地址标志位,判断地址标志位是否等于64,如果是0,如果不直接执行。然后根据频率标志位进行相应的延迟。

主程序流程图

中断服务程序:

两个外部中断在控制波形和频率方面发挥了作用。还在程序中添加了抖动部分。

安装调试及测量数据分析

4.1调试过程;

1.不通电,根据电路图用万用表仔细检查各线路连接是否正常。

2.首先是调试单片机部分,DA不连接操作放大器芯片。STC_ISP_V通过串口下程序的483软件。看能不能正常下程序。

3.当可以正常下程序时,给下一个51单片机,让切I/0口一会儿输入0,延时,再输出1,以此类推。用万用表测量各I/O口得电压是不是高一点,低一点?

4.安上DA和算放大器芯片,给单片机下一个输出正弦波的测试程序,通过示波器看输出是否正常。

5.给单片机下一个完整的程序,分别按下S1,看波形是否改变。按下S2,看频率是否改变。

4.2频率的测量数据:

单位:HZ周期T2T3T4T5T6T7T8T

理论值798.6399.3266.2199.7159.7133.1114.199.8

实际值798.6399.6266.5199.9159.9133.3114.299.9

4.3出现的问题与解决的方法:

1.调试单片机的串口时,发现不能正常的下程序。我想可能是单片机坏了借了一块学习板测试了一下单片机芯片,发现可以正常下载。这说明很可能是MAX232的电路出了问题。我仔细查看了电路图,又上网查了下其他的MAX232的电路图,发现我的电路图和别人的不一样。我是按照郭天翔的那本《新概念51单片机C语言教程 入门、提高、开发、拓展全》第130页的串口电路画的图,电路图中MAX232的TIOU1接串口的第3脚。而其他书上有些电路图却是MAX232的TIOU1接到了串口的第2脚。于是我将MAX232的TIOU1接串口的第2脚,再下程序,终于可以正常下载了。

2.刚开始写的测试程序输出的波形失真很大。我想可能是波形的ROM表里的数据值过小,导致DA输出的误差很大。因而卧将波形的ROM表里的数据值调大,在测试时发现波形变得好多了。

3.调试波形的时候我发现矩形波的失真比较大。我想到可能是低通滤波器的截止频率太低了,因而我将RC低通滤波器的电阻由1K换成了100欧姆,效果好了很多。

4.4系统仿真波形:

矩形波

锯齿波

正弦波

4.5效果分析:

由4.2的频率理论值与实际值,可知频率在T,2T,3T,4T,5T,6T,7T,8T上频率误差很小。

最终的波形输出效果也很不错。

4.6测量仪器

示波器

直流稳压电源

万用表

5结束语

基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。通过单片机控制一个模数转换器DAC0832产生所需要的电流,然后使用运算放大器LM324可以将其电流输出线性地转换成电压输出,再将电压经过运算放大器的放大,可以得到足够幅度的信号。通过程序的控制,可以产生一系列有规律的波形。这样一个信号发生装置在控制领域有相当广泛的应用范围。

最终做出来的信号发生器满足了题目中的所有要求:

1.产生五种波形。正弦波、三角波、矩形波、梯形波,锯齿波。

2.最大频率为798.6HZ。并且频率可按按1T,2T,3T,4T,5T,6T,7T,8T变化。

3.幅度可调,峰峰值在0——5V之间变化。

当然还是存在不足的地方,比如不能实现频率的按一个小的步进调整。并且当频率太小时矩形波会有些失真。

信号发生器可以生成更多的波形,只需要再加些波形表即可。

在这里得感谢学校为我们提供个这样一个实践的机会,当然还得感谢实验室指导老师们的细心指导。

参考文献:

[1] 郭天翔.新概念51单片机C语言教程 入门、提高、开发、拓展全.北京.电子工业出版社 2009.1

[2] 童诗白.模拟电路技术基础[M].北京:高等教育出版社,2000.171~202.

附录

1:总电路图

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章