找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6216|回复: 1
打印 上一主题 下一主题
收起左侧

基于51单片机的数字信号发生器的设计

[复制链接]
跳转到指定楼层
楼主
ID:210371 发表于 2017-6-12 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于 51 单片机的数字信号发生器的设计
西安交通大学    姜萌   彭保基   杨东平

摘要:本文介绍了基于 ATMEL 公司的 AT89C51 和 AT89C2051 的数字信
号发生器的硬件设计和软件编程思想。
关键词:51 单片机,UART 通讯,模拟开关,波形转换
概述:我们用一块AT89C51实现键盘输入扫描与LED数码管显示控制,
同时通过UART向AT89C2051发送频率控制与波形转换档位选择信息。
AT89C2051 通过 UART 接收 AT89C51 发送的控制信息,选择波形转换
档位之后通过内部定时器在 I/O 口产生相应频率的方波信号,至此完
成数字信号发生过程。2051 将产生的方波信号输入运算放大器组成
的积分电路,得到相同频率的三角波信号,该三角波信号通过差分放
大电路得到相同频率的正弦波信号。该信号发生器能准确输出频率范
围为 16HZ—70KHZ 的三种波形信号。

方案论证与比较
信号发生部分:
方案一:使用锁相环通过分频运算实现频率的步进,这种方案频率稳
定度高,但程控比较困难,而且步进范围过大,鉴于锁相环技术比较
复杂,没有采用这种方案。
方案二:使用专用函数发生电路,如 ICL8038 或 MAX038,通过 D/A
转换调整函数发生器控制电压实现频率的控制,这种方案可以使频率
连续可调,省却了波形转换电路,但控制电压与频率的变化不是严格

的线性关系,如果不加频率负反馈则频率无法稳定准确,加上频率负
反馈将使电路大大复杂,稳定度也会下降,而且如果要实现比较大的
带宽,就需要不断更换振荡电容,电路复杂程度进一步增加。为避免
调试困难,没有采用这种方案。
方案三:使用单片机的定时器设置定时时间,每半个周期对 I/O 口取
反一次,从而实现频率输出。这种方案虽然在高频频段误差比较大,
但是编程简单控制容易,权衡以上利弊,我们选择了方案三。
键盘与显示控制部分:
方案一:使用并行控制器 8279 或 IIC 总线控制器 ZLG7290 构建键盘
与显示部分,编程简单功能强大,但成本较高而且接口协议比较复杂,
我们没有采用。
方案二:使用单片机本身的 I/O 口做键盘和显示控制,能够节省大量
外围器件,符合硬件软化的原则,而且本系统对按键和显示部分的要
求并不高,所以我们采用了这种方案。
波形转换部分:
方案一:使用专用的波形转换芯片,效果好但成本高,也没有典型的
器件可以采用,故没有使用这种方案。
方案二:使用分立元件构建转换电路,虽然特性不够好,但是简单易
用,易于实现,故采用这种方案。
    综上所述,我们选择了用两块 51 单片机实现数字信号发生器的
设计,一块用于信号发生,一块用于键盘显示控制,电路简洁,编程
容易,易于调试。



控制部分
1、 硬件连接与基本功能
AT89C51 的 P0 口通过 330 欧姆上拉电阻驱动 8 位共阴数码管的
段选,P2 口通过 74LS244 同相缓冲放大后驱动 8 位数码管位选,P1
口接 4*4 键盘,键盘列选通过与门接到单片机外部中断 INT1,UART
口与 AT89C2051 的 UART 口连接实现通讯。系统晶振使用 24M,故一
个机器周期为 0.5US。
当按下数字键,则键盘显示相应的数字键,再按其他数字键则数
码管发生相应的移位,所有数字输入之后,按下发送键,相应控制信
息通过 UART 发送至 AT89C2051。

2、 键盘扫描部分设计
系统复位后,先令键盘行选 P1 低四位为低电平,列选高四位为
高电平,当按下任意键,列选线被拉为低电平,经过与门后向单片机
提出外部中断,以此判断有键按下。此后关闭中断,进入键盘扫描程
序。键盘扫描的原理是先设定第一行为低电平,同时读取列选线,经
过程序运算判断出按键位置,若所按键不在第一行,则继续扫描,扫
描顺序依次类推。
3、 数码管显示部分设计
系统复位后,8 位数码管均显示 0,当有键按下并经过判断之后,
将对应键值显示到对应的数码管上。按发送键后频率显示依然保持,
直到有新的数字键被按下。数码管动态显示根据视觉暂留原理设计,
每选中一位后延时 10MS 左右,显示效果令人满意。延时时间过长亮
度会提高,但显示会发生闪烁,时间过短显示稳定功耗降低,但亮度
下降。由于数码管为共阴并且 74LS244 为同相总线驱动,故编程时设
置相应的位选为 0 才可以选通该位,这个问题应该注意。
4、 UART 通讯部分设计
因为 51 系列单片机本身就有硬件 UART 功能,所以这部分设计非
常简单,只需将 AT89C51 与 AT89C2051 的 UART 对应连接起来既可。
UART 工作于模式 0,定时器 0 作为波特率发生器,波特率 9600。
                     信号发生部分
这部分使用 AT89C2051 最小系统完成。
AT89C2051 通过 UART 接收到 AT89C51 发送来的频率与波形转换
的分档信息之后,经过计算后装载定时器高低位寄存器,然后允许定
时器中断,每次定时器溢出后对 P1.0 口取反,从而形成占空比为 50%
的相应频率的方波信号,定时时间为设定频率信号周期的一半。因为

AT89C2051 只有一个定时器,所以定时器只能分时复用,即在通讯时
作为波特率发生器,通讯结束之后作为信号发生定时器。因 P1.0 为
AT89C2051 内部比较器输入端,为开漏输出,需加 10K 上拉电阻,否
则不能发出标准方波信号。其他三个 I/O 口线连接 CD4051 模拟开关,
用来选择相应档位。电路原理图如下:



波形转换部分
1、方波三角波转换部分设计
此电路使用高输入阻抗高速运放 LF353 构建积分电路,LF353 转
换速率达到 13V/US,可以保证高频部分转换速度。由于在不同频率
下需要使用不同容量的反馈电容才能保证波形与幅度的准确,故使用
CD4051 模拟开关切换不同的反馈电容。基本积分电路原理不再赘述,
实验证明波形与输出幅度均令人满意。
2、三角波正弦波转换部分设计
我们使用两只高性能差分对管 LM394 构建差分放大电路作为三
角波正弦波转换电路,一 只 LM394 作为差分放大级,一 只 LM394 作为

恒流源电路。三角波经过差分放大并经过输出削波电容的波形转换,
使三角波转换为圆滑正弦波。由于输出波形和幅度大小与信号频率和
输出削波电容的匹配有关,故此电容的接入也用 CD4051 分为八档,
这八档与积分电路的电容选择联动,构成双刀八掷模拟开关。实 验 证
明 ,正弦波的波形良好,但是在同一档位内幅度变化比较大,如果分
为 16 个档位效果会更好。

方波输出
方波输出 三角波输出
R9 20K
三角波输出

      其他电路部分
外部电源输入接入全桥,可以使用交直流电源,使用直流电源时
可以进行极性转换,可以防止电源输入反接。电源稳压部分由三端稳
压提供正负 12V 电源供给运算放大器,7805 提供正 5V 电源供给单片
机。单片机复位使用一般的阻容复位,实验证明复位可靠。



软件流程

软件使用 C51 编制,开发环境为 KEIL7.0。2051 部分软件设计
流程非常简单,不再赘述,AT89C51 控制部分软件流程图如下:  

                   测量结果与误差分析
     测试仪器使用 60M 带宽数字示波器,方波信号的波形与幅度完
全令人满意。三角波的波形很好,满幅度输出接近正负 12V,频率改
变以后波形良好,输出幅度有所变化,在可接受范围之内。正弦波波

形良好,由于分档比较少,出现在同一档位内输出幅度随着频率升高
而降低的问题,若通过减小电容的方法提高输出幅度,则低频率下波
形会因为输出幅度过大而出现一定的失真,这个问题可以通过增加档
位的方法解决。
由于系统使用 24M 晶振,则 16 位定时器最多 32767.5us 溢出一
次,则信号最低的频率是 16HZ。同样道理 16 位定时器最少 0.5US 溢
出一次,则信号最高频率是 1MHZ,但是频率升高以后程序本身的运
行要占用大量时间,实 际测量在 70KHZ 之内能够保证误差足够小。在
低频段频率相当精确,如果想进一步降低到超低频的话,可以在软件
中设置一个计数器,但是频率上限将会下降。如果使用高速单片机,
如 AVR 或者 DS89C320,频率上限可以提高很多,同时 AT89C2051 的
程序编制改用汇编的话,代码量将缩小,也有利于提高频率上限。
结束语
虽然 51 的时代即将过去,但是作为一个练习,我们还是选择了
51 单片机作为这次实验的控制芯片,希望能在实验过程中加强单片
机的基础知识和电子技术基本技能的学习,在此之后,我们将进行贴
近时代技术前沿的新器件和新理论的学习,为参与真正的科技工作打
下良好的基础。感谢院领导对我们这次培训的重视与支持,尤其感谢
张鹏辉老师准确的指导与无私的帮助,我们将继续努力,争取为学院
争光,为学校争光,随时准备投身到火热的科技工作中去,为科技强
国贡献微薄之力。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:284357 发表于 2019-1-10 15:04 | 只看该作者
有没有程序啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表