- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计
信号发生器
学生姓名: 安小鹏
学 号: 131001201
学 院: 理学院
专 业: 应用物理
指导教师: 任世伟 刘天山
年 06 月 28 日
信号发生器
摘要:本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、锯齿波、波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。
关键词:单片机,信号发生器,D/A转换
一、设计要求
利用单片机的控制及编程能力,采用查询法设计一个函数发生器,要求能够产生方波、正弦波,分析采样点数量与频率之间的关系。
二、设计原理
向单片机输入所需要的程序并通过扩展D/A转换接口就可以方便地产生正弦信号。正弦波的产生比较特殊,它不是由单片机直接产生波形的,它只能产生连续的阶梯波来向正弦波不断地逼近。很显然,在一个周期内阶梯波的阶梯数目越多,单片机输出的波形也就越接近正弦波。如图所所示
一般而言,计算机要形成正弦波信号的最简便办法就是使用D/A转换器,因计算机可以隔一定时间向D/A转换器输出一个数字量,而输出的该数字量为相应时刻的函数值,则在D/A转换器输出端就可以得到一个相应的函数信号。D/A转换器形成的函数信号实际上是一个阶梯状波。所以用D/A转化器形成的正弦波信号除了正弦基频分量(所需要的信号)外,还包含了各种高次谐波与余弦基频分量。因而形成的正弦波信号只能是一逼近的正弦波信号。为了正弦信号的数字量逼近,可以有多种方案。而逼近一个正弦函数的精确程度是和正弦波信号的细分度N和D/A转换器的分辨率直接有关。细分度N越大产生的正弦信号就越精确,但是这要求计算机速度也相应的高;D/A转化器的分辨率越高产生的正弦信号也就越精确,但是D/A转化器的分辨率受其价格和计算速度以及字长的制约,不宜过高,应取一个合理的分辨率。故对正弦信号逼近方案的讨论,是在确定的细分度N和D/A转化器的分辨率基础上比较的。把其结果转换为十六进制,并把计算的十六进制以表格的形式存放于EPROM内存中,然后以查表的方式来形成正弦信号。采用查表的方式单片机正弦波发生器的工作原理如下:
对正弦信号进行采样,将正弦波的第一个周期的波形均分为若干等份,设正弦波一个周期采样点数共N个。则有:
①
上式中n取0,1,2,......N-1,考虑到正弦函数值的范围是从-1 0 +1,将它们转化为定点无符号数值存放,例如存放的位数(即M)是8,那么对公式①:进行数值迁移,则有:
②
这样正弦函数值范围-1--0-- +1,因为00H~FFH对应的数字量为0~255,存放的8位(即M)二进制数据则相应为0--128-- 255(十进制表示)。依次对公式②采样可得X(n),n=0,1,2,......N-1共N 个数据,组成了一张正弦数据表,单片机将这一个周期的数据表存入EPROM中。EPROM的地址线和地址发生器的输出端相连。地址发生器在时钟作用下依次产生选通地址,就会依次选中EPROM的0单元、1单元、2单元......N-1单元地址,再由D/A转化器输出相应幅值的模拟信号,当地址发生器输出满N个地址时,一个完整的正弦波就产生了。假设从数据表中每取一个数据,并将它从D/A转化器输出至少需要时间为,那么输出一个完整的正弦波所需要的时间为,则有= N。查表程序周而复始进行下去,便可产生连续的正弦波信号。
固定周期是由若干机器周期组成,机器周期一般又是单片机时钟周期的若干倍,则有:
一旦时钟确定,也就固定了。一个固定周期内的计数脉冲数就可以通过下式计算出来:
三、程序设计:
3.1、设计流程图:
输出锯齿波
检测有按键按下
输出三角波
检测有按键按下
打开总中断
配置定时器(T0)
默认输出正弦波
检测有按键按下
3.2程序源代码:(见附录1)
3.3产生波形图:(见附录2)
四、正弦波误差分析
4.1计数脉冲数M对正弦波的影响
固定周期是由若干机器周期组成,机器周期一般又是单片机时钟周期的若干倍,产生的正弦波周期为:
在一个 QUOTE 周期内相对误差为:
若用16MHz时钟的单片机产生的正弦波,设其定时器输入脉冲周期是时钟脉冲的2倍时,则计算如下:
( QUOTE
若要产生2300HZ的正弦波,其周期应为
( QUOTE
取N=128则:
( QUOTE
因为,所以M=27,则最大相对误差为:
由此可
文档评论(0)