信号发生器c语言编程,基于AT89C51的信号发生器的设计

摘要:为了设计一款结构简单、性能优良的信号发生器。采用了AT89C51单片机为控制核心。在Proteus下仿真可以产生正弦波、方波、三角波、锯齿波,而且可以方便地设定输出信号的频率及幅度,得到的输出波形失真度低,频谱纯度高。

关键词:信号发生器;D/A转换;AT89C51;频率;幅度

0 引言

在计算机控制技术、电子技术飞速发展的今天,信号发生器的应用越来越广,对信号发生器的频率稳定度、频谱纯度、频率范围和输出信号的频率微调分辨率提出越来越高的要求,普通的频率源已经不能满足现代电子技术的高标准要求。国内外纷纷设计制作先进的信号发生器,从实用价值来看,各高校中信号发生器应用极为广泛,能够设计出低成本、高精度的信号发生器并推广使用具有非常重要的意义。

基于单片机的信号发生器的设计,以性价比相对较高的AT89C51单片机为核心,以简单、廉价的元器件构筑,能够产生高精度、高纯度的方波、三角波、锯齿波、正弦波,同时可以实现波形自由切换,以及频率和幅度在线调整。目前购买的信号发生器价格昂贵,功能强大,实际在高校开展实验过程中用到最多的是低频函数信号发生器。如果能够在高校实验领域应用本文设计的仪器取代它们,将具有重要的实际意义。

1 系统硬件设计

信号发生器的设计涉及到程序固化与存储能力、电源电路设计、波形选择电路、时钟电路与复位电路、波形转换与电压放大功能、输出控制电路等部分。系统总体设计框图如图1所示。

12716786e3c7e62616bf4e5467d6a65f.png

其中复位电路通过确定的电压值启动复位操作,同时排除瞬间干扰的影响,又有防止MCU在电源启动和关闭期间的误操作有效,保证数据安全。输入电路用于检测各按键与拨动开关的状态,并通过运算处理实现相应控制,显示电路用于显示波形频率与幅度。DAC0808是系统的核心部分,为使芯片正常工作,必须提供一个基准频率,可以是晶体振荡器也可以是高精度振荡电路。为了使信号输出有一定的幅度与功率,在波形产生电路后增加放大电路模块,放大电路可以增加输出信号的准确度,具有更好的控制特性与准确性。为了对输出波形进行选择,由单片机控制多路模拟开关输入四路信号中的一路。将输入信号经电路转换后送入单片机。

2 系统软件设计

2.1 系统主程序流程图

信号发生器的软件设计包括按键处理程序、正弦波产生程序、方波产生程序、三角波产生程序、锯齿波产生程序几个主要部分。主程序的主要功能接收用户键盘输入的数据(信号参数的预制、选择)和控制指令,单片机发送数据及控制指令,按要求输出信号。系统主程序流程图如图2所示。

fca54611a7de56e4ed553bf4340f03f6.png

根据功能要求,本软件设计了按键输入程序,用户可通过DIP开关设置输出信号的频率,或选择输出正弦波、方波、三角波、锯齿波等。当用户设定输出时,程序把参数送至单片机,并对单片机发出控制命令使其按要求输出需要的信号。

主程序模块主要完成的任务是对系统的初始化,初始化同时扫描是否有相应的功能键按下,如有,则转入相应的功能子程序进行相应的操作。

2.2 系统仿真

在PROTEUS电子设计平台下,先绘制电路,然后对设计的程序进行编译,生成*.HEX文件,加载到单片机中,得到的仿真图如图3所示。

c36a37e6ab92e680507859e44e636bf7.png

2.2.1 波形选择仿真

在运行过程中,改变接在P3口的拔码开关,得到仿真结果如图4所示。

6c574e7f4cb99deaec4f5a4dc083d0fa.png

2.2.2 波形频率调整

在运行过程中,通过改变P2口的值,观察波形的频率变化,图5是正弦波频率变化的情况。

2.2.3 幅值调整

在运行中,通过调整RV1的值,观察到波形幅度发生改变,图6是当RV1分别处于20%和50%时的正弦波波形。

3 结语

基于AT89C51的信号发生器可以输出正弦波、方波、三角波、锯齿波,波形失真小,幅值输出准确,波形频率稳定度取决于频率基准信号,输出信号失真度低,在低频到高频部分都能有较好波形输出,达到了预期的设计目的。这种信号发生器操作简单,显示直观而且价格低廉、可靠性高、灵活性好,具有很大的应用价值。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值