1、1基于单片机的正弦波发生器的设计【摘要】本文旨在介绍基于单片机的正弦波发生器的设计,在单片机的正弦波发生器的实现原理基础上,详细阐述了正弦波发生器的系统框架结构图,并以具体的幅值和频率值为例来设计了单片机控制程序的流程,从而实现幅值和频率可调的正弦波发生器。 【关键词】单片机;正弦波发生器;数模转换;定时器 1 概述 随着社会的不断向前发展,我国的电子制造行业也得到长足发展。信号发生器发出的标准信号是一种电子制造行业进行电子实验经常使用的电子信号,对电子的各种元器件的参数以及工作性能进行测量,以及电工和电子产品的指数验证和工作系能鉴定、工作参数的调整都起着至关重要的作用。尤其是正弦波信号,在电
2、子制造实验以及工程技术的应用非常广泛。基于单片机来设计的正弦波发生器的输出信号频率具有非常高的稳定度,加上单片机自身的控制灵活等特点,使得正弦波发生器的频率和幅度控制方面更加灵活。所以深入学习和研究基于单片机的正弦波发生器的工作原理和系统结构,对于电子制造实验中正弦波信号的产生和应用具有非常重要的实用价值。 2 单片机的正弦波发生器的实现原理 我们知道,单片机输出或者产生的信号都是数字信号,而正弦波发生器产生的正弦信号是模拟信号,所以单片机产生数字信号后,需要经2过数模转换电路将其编程模拟信号。基于单片机的正弦波发生器的主要设计原理就是通过单片机向固定端口发送预先设计的数据,然后通过单片机外围
3、的数模转换电路或者芯片将数据转换成模拟量,通过所有预设数据的产生的模拟量的组合构成一个周期内的正弦波信号,最后通过循环有序地发送预设数据值固定端口即可实现正弦波信号的连续产生。所以,在设计预设数据时,改变预设数据的最大值,从而使得进行数模转换的数据发生变化,生成的模拟信号量也会发生变化,从而实现正弦波信号幅值的变化。对于产生正弦波动的频率调整原理,是通过改变向端口发送数据的时间间隔,来改变正弦波信号的频率。对于预设数据来说,所有的预设数据经过数模转换会产生一个周期的正弦波,如果改变发送数据之间的时间间隔,就会使所有预设数据发送完的时间发生变化,使得产生的正弦波信号周期发生变化,从而实现正弦波发
4、生器输出信号频率的变化。 当然,由于单片机自身的工作频率限制,产生的正弦波信号频率会限制在一定的范围内,此外,由于数模转换电路或者 D/A 芯片能够转换产生的模拟量最大值是固定的,所以产生的正弦波最大幅值也是有限制的,如果在设计正弦波发生器时不考虑这些因素,产生的正弦波会发生畸变而不能满足我们对正弦波信号的需求。 3 单片机产生正弦波 3.1 基于单片机的正弦波发生器系统框架图 根据基于单片机设计的正弦波发生器的设计原理,单片机产生的正弦波可以在一定的频率和幅值范围内变化,故而在设计单片机正弦波发3生器系统时,要有人工控制的接口,来控制正弦波频率和幅值发生变化,同时,单片机外部需要有专门的数模
5、转换电路或者 D/A 芯片来完成数模转换(由于数模转换的广泛应用,当前很多单片机内部已经嵌入了 DAC模块,可以直接在单片机内部实现 D/A 转换) ,从而实现正弦波的输出。如图 1 所示,为基于单片机的正弦波发生器系统框架图。 图 1 基于单片机的正弦波发生器系统框架图 其中,开关按钮提供了人工控制输出信号频率和幅值的外部接口,通过不同的按钮实现不同的频率和幅值的变化。单片机系统完成数据处理和数据发送的功能,数模转换模块则是将单片机发出的数字信号转换成模拟信号,信号输出模块则是通过运算放大器等电路完成对数模转换电路的输出信号的优化。 3.2 正弦波发生器的单片机程序设计流程 以正弦波发生器产
6、生的正弦信号频率可为1KHz,2KHz,3KHz,4KHz,幅度可为 1V,2V,3V,4V,为例,来设计单片机内部的程序运行流程。假设正弦信号频率 1KHz,2KHz,3KHz,4KHz对应的数据发送的定时器设置的初始值分别为 t1,t2,t3,t4,幅值为1V,2V,3V,4V,对应的预设数组为 A1,A2,A3,A4。 (1)开始 (2)初始化,设置常量 m=0,i=0,j=0 与数组,包括定时器的预设值数组 Array_time=t1,t2,t3,t4以及各个幅值的正弦波对应的二维预设数组 Array_value=A1,A2,A3,A4 (3)循环(j=0; j (a)判断频率按钮是否
7、被按下,如果频率按4钮被按下,则是 m 自加 1,并 m=m%4 (b)判断幅度按钮是否被按下,如果幅值按钮被按下,则是 i 自加1,并 i=i%4 (c)设定计时器初始计时量为 Array_timem,并开始计时 (d)定时结束,向端口发送 Array_valueij (4)跳到第(3)步 根据设计的程序,在单片机上电初期,会自动输出幅值为 1V,频率为 1KHz 的正弦波,外部按钮有两个按钮,分别是频率按钮和幅值按钮,每按下一次频率或者幅值按钮,输出正弦波的频率或者幅值就会增加一个量级,到最大值后会跳至最小值开始循环,进而实现正弦波的循环输出。 4 总结 基于单片机的正弦波发生器的设计,主要是通过单片机向数据输出端口发送预设数据,并通过数模转换电路或者芯片实现模拟信号输出,同时,通过改变预设数据值以及发送数据间隔来改变输出正弦波信号的幅值和频率,从而实现正弦波信号发生器信号可调输出。 参考文献: 1曹怡然.基于单片机的三相正弦波发生器设计J.软件导刊.2013(11) 2何凤,许建明.基于单片机的信号发生器设计J.电子制作.2013(09) 3李伟龙.基于单片机的函数信号发生器设计J.河南科技.52013(10) 4樊鹏,徐顺.基于单片机的多功能信号发生器的设计与实现J.电子技术与软件工程.2013(15)