简易函数信号发生器设计

PAGE

PAGE 2

简易函数信号发生器设计

摘要:信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。这次的设计分为五个模块:单片机控制及显示模块、数模转换模块、波形产生模块、输出显示模块、电源模块。使用AT89C52作为主控台结合芯片DAC0832产生1HZ-300HZ频率可调的五种信号波(正弦波、三角波和方波)。这几种波形有几个开关控制,可以随意进行切换,十分方便。另外,波形的频率和振幅也可以通过开关进行更改。可以说这次的设计操作简单,内容丰富,而且电路快捷明了。在编程语言上,我们选择自身比较熟悉的C语言,这样在后期波形的调试及与硬件衔接方面更容易发挥出自身优势。经过设计及后期长时间的调试,设计的所有功能均已实现。

关键字:信号发生器、频率、幅度、AT98C52、DAC0832

1、设计要求

1)以单片机为核心,经过D/A转换和放大电路的处理,最后输出信号;

2)要求能输出正弦波、三角波和方波四种信号;

3)输出信号可以通过按键来改变;

4)频率可变,范围在1300hz;

5)幅度可调010v;

6)可实现四路A/D电压采样;

2、总体设计

2.1?系统组成及工作原理

该函数信号发生器可以输出四种波形,有正弦波、三角波和方波。在此基础上进一步实现对波形频率和占空比的调节,并用液晶屏分两行显示波形名称和波形频率。

函数信号发生器的设计总体框图如图1所示,主要有单片机AT89C52,电源,键盘模块,LCD1602显示模块构成。

按案件模块:由5个复位开关与74LS21组成的系统通过对单片机传输中断信号来实现波形切换及频率和占空比的调节。

显示模块:用LCD1602,分行显示波形类型和波形频率的显示。

图1 系统总体框图

2.2测量原理

我们这个系统可实现四路A/D电压采样,使用的算法是:V=5*N/256,取五个点电压进行测量,并将测量完的十进制数据转化为二进制数据。

AD采样数据

电压源输入

0.10

0.20

0.30

0.40

0.45

电压表测得

(放大后)

1.01

2.00

3.02

4.01

4.51

采集系统测得

1.01

2.00

3.02

4.02

4.52

3、硬件设计

3.1硬件组成

3.1.1 资源分配

晶振采用12MHZ。P1口的P1.0-P1.4分别与四个按键连接,分别控制波形切换、频率加、频率减,占空比加,占空比减。

P2口与DAC0832的D0-D7数据输入端相连。

P3口用来控制DAC0832的输入寄存器选择信号CS。

3.1.2 D/A转换模块部件

DAC0832芯片原理

管脚功能介绍(如图2所示)

图2 DAC0832管脚图

DI7~DI0:8位的数据输入端,DI7为最高位。

ILE:数据锁存允许控制信号输入线,高电平有效。

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

WR1:数据锁存器写选选通输入线,负脉冲有效,由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变化,LE1的负跳变时将输入数据锁存。

XFER:数据传输控制信号输入线,低电平有效,负脉冲有效。

WR2:DAC寄存器选通输入线,负脉冲有效,由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。

IOUT1:模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当 DAC寄存器中数据全为0时,输出电流为0。

IOUT2:模拟电流输出端2, IOUT2与IOUT1的和为一个常数,即IOUT1+IOUT2=常数。

RFB:反馈电阻引出端,DAC0832内部已经有反馈电阻,所以 RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。

VREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。VREF端与D/A内部T形电阻网络相连。

Vcc:芯片供电电压,范围为(+5~+15)V。

AGND:模拟量地,即模拟电路接地端。

DGND:数字量地。

3.1.3放大部分

放大部分采用双极运算放大电路,LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。

图3 lm358

3.2?单片机核心模块

3.2.1 AT89C52单片机及其说明

AT89

c语言中如何用sqar函数,简易函数信号发生器设计_毕业论文.doc相关推荐

  1. 在C语言中以编程的方式获取函数名

    在C语言中以编程的方式获取函数名 仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及 ...

  2. 关于linuxC语言中创建进程,利用execlp函数执行.c程序问题

    关于linuxC语言中创建进程,利用execlp函数执行.c程序问题 对于一个小白来说,这个系统调用真的太难了,完全摸不着头脑啊,一搜execlp函数,全是执行的命令,什么传参硬是没懂. 不过说到底, ...

  3. c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用

    详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...

  4. c语言中的输入输出函数之printf函数

    文章目录 一.前言 二.printf函数 1.printf函数定义 2.格式 格式化字符串 1.字符串常量 2.格式控制字符串 a.类型 b.标志 c.最小宽度 d. .精度 e.类型长度 3.转义字 ...

  5. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  6. R语言中的异常处理和eval函数

    异常处理tryCatch() [R]R语言里的异常处理与错误控制 看看下面这个例子就能快速了解. #这里不要用c(1,2,'a',4), 因为R中向量中的元素必须一致,会自动转换成c("1& ...

  7. C语言中常见的四个内存函数

    前言 我们为什么要用内存操作函数? 内存函数,是通过访问地址的方式操作对象,因此可应用于任何类型对象,只要按照字节操作 1. memcpy void * memcpy ( void * destina ...

  8. c语言中结构体类型定义的函数指针,结构体中定义函数指针

    结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...

  9. C语言中随机数的生成(rand函数和srand函数)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程.这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路.学习之乐,独乐乐,不如众乐 ...

最新文章

  1. webpack相关配置
  2. win10 远程问题汇总
  3. 如何查看经过iOS优化的PNG图片
  4. 从C语言的角度重构数据结构系列(七)-数据结构堆知识求解数据流中的第K大元素
  5. SpringCloud学习笔记:SpringCloud简介(1)
  6. Tomcat 服务器介绍和使用
  7. docker网络--理解linux底层实现机制、docker网络模式
  8. LTE学习:LTE系统中RB、RBG、CCE、REG分别是如何定义的
  9. php数组array_filter,php数组array_filter()函数和array_slice()函数
  10. 房间WIFI信号不好怎么办?——无线路由桥接(WDS)
  11. java对象赋值_Java对象引用和对象赋值
  12. 如何获得微信小游戏源码
  13. 去哪儿网前端架构师司徒正美:如何挑选适合的前端框架?
  14. 小麦亩产一千八(kela)
  15. C --cp2 类似cat工具的小程序。
  16. 浅谈AI绘图工具Midjourney
  17. gis 六边形网格_ArcGIS中实现指定面积蜂窝(正六边形)方法
  18. 正则表达式:必须包含数字,小写,大写,符号
  19. Python绘制GPS轨迹图
  20. 在线考试视频学习平台

热门文章

  1. 关于nofollow的问题
  2. win rar如何注册破解
  3. 神经网络学习(3)————BP神经网络以及python实现
  4. sentinel限流入门
  5. 期刊列表及发表文章的相关事项
  6. 总结 离散数学知识点
  7. linux网络凭据,适用于Linux和Windows的服务器凭据管理
  8. delphi向控件发送消息,全选、复制、黏贴,sendmessage
  9. C语言--逗号运算符及逗号表达式
  10. 如何白piao一台优质的华为云服务器