基于单片机的信号发生器设计
摘 要
在电子产品调试和测量领域,常常需要有信号种类多、精度高且频率、幅度等信号参数方便可调的信号源。尤其随着电子、通信、网络行业的发展,频段的分布日趋密集,更要求有高精度、高可靠性的信号源。信号发生器则是一种常用的信号源,广泛地应用于电子电路调试、通信测试、控制系统仿真和教学实验测试等领域。但是目前的产品体积大、电路复杂、价格高,无法满足用户对成本和便携性要求高的波形发生器的需求。 本设计以单片机软件和硬件及外围电路构成了可以产生固定幅值的方波、锯齿波、三角波及正弦波4种的波形的智能化函数信号发生器。该设计在程序运行的过程中,可以调节信号的幅度及频率,并可以实现不同的波形之间的任意切换,并且在波形切换波形时,能够给与相应的指示。本设计结构简单,容易实现,波形的频率可以通过程序进行调节,采用了Proteus仿真,并用示波器测量验证了设计可行性。通过外设按键可以设置信号类型、频率及幅度,此设计对于低成本智能化测试具有较高的实用价值。 系统硬件电路主要以AT89C51单片机为核心,两个数模转换电路为主体,基于DAC0808的数模转换电路用于波形信号的产生,而基于ADC0804的数模转换电路用于信号频率的控制,4位DIP开关用于波形的选择与切换,指示电路用于指示不同的波形。此外,还包括时钟电路,复位电路,放大电路等。 软件部分主要通过Keil编程实现,将程序下载到单片机中,从而实现控制功能。首先是四种波形的生成,通过AT89C51单片机控制DAC0808实现数字调压,产生对应的模拟量电压,即利用单片机并行口输出的数字量,就可以产生四种不同的波形。 在调试过程中,遇到两个问题: (1)电路中电源设置的问题。该系统电路需要±15V,+5V,接地等电源,而供电网络中只有+5V和接地,无法满足供电需要。 在查阅相关资料后,对供电网络进行了重新的配置。又在关键的电压节点处放置探针,以确保每一个节点处电源的供电正常。 (2)仿真后示波器上无波形输出 在关联的电路节点上都放置探针,观察后发现输出端电压太小,无法产生波形。后将5K的电阻继续增大,达到升高电压的目的,后经调试后发现波形正常产生。
关键词:Proteus仿真 信号发生器 AT89C51单片机 数模转换电路
设计任务与设计目的
1.1 设计目的
(1)熟悉单片机电路的引脚安排。 (2)掌握数模转换芯片的逻辑功能及使用方法。 (3)了解信号发生器的组成及工作原理。 (4)熟悉信号发生器的设计与制作。
1.2 设计任务与指标
本设计以AT89S51单片机为核心,采用由8位ADC0804的A/D转换器和DAC0808的D/A转换器组成的数模转换电路,再利用keil软件进行单片机编程,从而设计出能够产生固定幅值的方波、锯齿波、三角波及正弦波4种波形的信号发生器。且该设计在程序运行的过程中,可以调节信号的幅度及频率,并且在波形切换不同波形时,能够给与相应的指示,并可以实现不同的波形之间的任意切换。 2 系统整体设计
2.1 设计思路
(1)设计信号发生器的基本结构。 (2)设计D/A转换的定时电路。 (3)设计单片机控制及指示电路电路。 (4)设计波形频率设定电路。
2.2 系统整体方案
该波形发生器以AT89C51单片机系统为核心, 通过C语言对单片机编程即可产生相应的正弦波,方波,三角波,锯齿波等波形信号。将所写程序装入单片机的程序存储器中,在程序运行中,当接收到来自外界的命令,需要输出某种波形时调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。 通过LCD1602显示模块实现可视化,通过按键开关可实现各种功能的转换和信号频率的控制。信号发生器总体方框图如图1所示。
3 系统硬件设计与仿真
3.1 硬件电路的总体设计
系统硬件电路主要以AT89C51单片机为核心,两个数模转换电路为主体,基于DAC0808的数模转换电路用于波形信号的产生,而基于ADC0804的数模转换电路用于信号频率的控制。4位DIP开关用于波形的选择与切换,指示电路用于指示不同的波形。此外,还包括时钟电路,复位电路,放大电路等设计,其总体设计图如图2所示。
3.2 单片机系统及指示电路
单片机系统采用8位单片机AT89C5l,32个I/O口,2个定时计数器,2个中断源足够完成该信号发生器的设计由AT89C51芯片构成的最小系统,辅助11.0592MHz的晶振电路、复位电路构成了最小系统。采用外部时钟电路,接单片机的XTAL1和XTAL2再加两个辅助电容构成时钟电路,复位电路为手动按键复位,为典型的RC电路,接法简单。当开关导通后,根据LED的亮灭的不同,可实现指示功能,如图所示。
3.3 D/A转换模块
3.3.1 波形信号产生电路
在单片机测控中,单片机只能输出数字量,但是要想形成波形信号,需要输出模拟量。就需要单片机自带DA功能或者外接DA模块。由于AT89C51不带DA功能,所以需要设计外接DAC模块。集成化的DAC芯片种类很多,本设计选用DAC0808,可以将8位数字量转换成模拟量输出。数字量输入的范围为0到255之间,对应的模拟输出范围在VREF-到VREF+之间。 根据这一特性,利用AT89C51单片机就可以控制DAC0808实现数字调压,单片机只要送给DAC0808不同的数字量,即可实现不同的模拟电压输出,从而产生不同的波形信号。其中8位数字信号输入端接单片机的P0口,D/A转化转化模块电路如图所示。
3.3.2 调频电路
以锯齿波为例,若要调节信号的频率,只需在单片机输出的两个数据之间加入一定的延时即可。通过调节输入ADC0804转换的模拟电压值,从而产生8位二进制数作为延时函数,即可控制输出波形的幅值与频率,基于ADC0804的调频电路如图所示。
3.4 按键调节模块
按键电路与单片机的P3口连接。共4个按键,一端接到单片机的P3.4、P3.5、P3.6和P3.7,另一端接地。开关处于闭合还是打开状态,可通过I/0口的高低电平来决定。所接按键的作用是控制信号发生器的各个波形间的切换。该信号发生器可以产生4种波形、正弦波、三角波、方波和锯齿波,每次按下按键信号就在4种波形中依次循环切换。按键电路虽然设计简单,但却是数字信号发生器实现多功能的关键电路,按键调节电路图如图所示。
4 软件设计
软件部分主要通过Keil编程实现,将程序下载到单片机中,从而实现控制功能。首先是四种波形的生成,通过AT89C51单片机控制DAC0808实现数字调压,产生对应的模拟量电压,即利用单片机并行口输出的数字量,就可以产生四种不同的波形。其次是通过不同按键的选择,可以实现4种波形的切换。其主程序流程图如图3所示,完整程序见附录。
5.1 软件调试
软件调试主要通过结合硬件电路,调试每一个模块的功能,使其能达到工作要求。首先通过Keil软件对程序进行编译调试,检查书写格式、标号未定义或多重定义的错误,检查完成后编译生成HEX文件,装入Proteus仿真软件的51单片机中,运行系统,观察系统运行情况。Keil软件调试完成后的界面如图4所示。
5.2 硬件调试
硬件调试件是在Protues软件中进行的,主要通过探针等工具,测量关键节点的电压,调节电路中一些元器件的参数,逐步排除故障,改善电路,从而完成电路的功能要求。其硬件调试过程图如图5所示。 在调试过程中,遇到问题如下: 问题1:电路中电源设置的问题。该系统电路需要±15V,+5V,接地等电源,而电源网络中只有+5V和接地,无法满足供电需要。 在查阅相关资料后,对供电网络进行了重新的配置。又在关键的电压节点处放置探针,以确保每一个节点处电源的供电正常。 问题2:仿真后示波器上无波形输出 在关联的电路节点上都放置探针,观察后发现输出端电压太小,无法产生波形。后将5K的电阻继续增大,达到升高电压的目的,后经调试后发现波形正常产生。
5.3仿真结果
经过对系统的仿真调试后,该系统可以稳定的输出四种波形,正弦波、方波、三角波、锯齿波,并且可以在不同波形之间的实现任意切换。四种波形图分别如图6、图7、图8、图9所示。
6 结论
本次设计的信号发生器可以实现正弦波、方波、三角波及锯齿波 4种波形的生成。根据该系统设计的电路在Proteus中画出仿真图,并将Keil编程生成的HEX文件下载到仿真图的单片机里,实现了整个系统的仿真。并用虚拟示波器观察各种波形,经过Proteus软件仿真发现波形清晰干扰小,测试频率。最终发现,设计符合要求。但是该设计仍然存在一些问题,如频率范围较小等缺点,希望后期可以采用位数较高的单片机实现频率范围较广和精度更高的信号发生器。该设计生成电路简单,设计灵活,可扩展性强,成本低,在较多的场合具有一定的实用价值。
相关单片机程序和仿真工程文件下载
7参考文献
[1] 周润景等编. PROTEUS原理图仿真与PCB设计实例精解[M]. 北京:电子工业出版社,2016.1 [2] 基于Proteus仿真的51单片机的运用[M]. 北京:北京理工大学出版社,2018.2 [3] 侯建军. 数字电路实验一体化教程[M]. 北京:清华大学出版社,北京交通大学出版社,2005. [4] 张婷.基于单片机的信号发生器设计[J].山西电子技术,2018年第五期
|