- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
基于单片机的波形发生器课程设计文档
4.2波形生成模块程序设计
波形生成是本系统的核心功能,其实现依赖于DDS算法。DDS的关键在于相位累加器和波形查找表。
相位累加器:其核心是一个N位的计数器。每一个系统时钟周期,相位累加器的值增加一个“频率控制字”(FCW)。当相位累加器溢出时,便完成了一个波形周期。相位累加器的输出作为波形查找表的地址指针。
频率控制字FCW的计算公式为:FCW=(f_out*2^N)/f_clk,其中f_out是期望输出的波形频率,f_clk是相位累加器的更新时钟频率,N是相位累加器的位数(通常与波形查找表的深度相关)。通过改变FCW的值,即可改变输出波形的频率。
波形查找表:将一个周期的波形(如正弦波)按照一定的点数(例如256点、512点)进行采样,将每个采样点的幅值量化为数字量(如8位、12位),存储在一个数组中,即构成波形查找表。单片机根据相位累加器输出的地址,从查找表中取出对应的幅值数据,发送给DAC。
对于方波和三角波,除了预先建立查找表,也可以通过实时计算得到。例如,方波可根据相位累加器的高几位来判断输出高电平还是低电平;三角波则可根据相位累加器的值线性增减输出幅值。
程序设计时,可将不同波形的查找表分别定义为数组。当用户选择某种波形时,程序便切换到对应的数组进行数据读取。为了实现频率的连续可调,需要精确计算并设置频率控制字。可通过定时器中断来触发相位累加器的更新和DAC数据的输出,以保证输出波形的稳定性。
4.3按键扫描与处理模块程序设计
按键扫描采用查询方式或外部中断方式。考虑到系统对按键响应的实时性要求不是特别高,查询方式更为简单易行。
在主程序的循环中,定期调用按键扫描函数。按键扫描函数首先检测是否有按键按下,若有,则进行软件消抖(通常延时10ms-20ms后再次检测,若仍为按下状态则确认按键有效)。然后判断是哪个按键被按下,并执行相应的处理函数,如:
*波形选择键:循环切换波形类型变量(如0代表正弦波,1代表方波,2代表三角波),并更新显示。
*频率加/减键:修改频率变量的值。为了实现不同步长的调节,可设计为短按一次增加/减小一个小步长,长按则以较大步长快速增减。
*幅值调节键:若通过DAC输出电压或控制PGA增益来调节幅值,则修改对应的幅值控制变量或DAC参考电压控制字。
*确认/复位键:确认当前设置或调用系统初始化函数。
按键处理函数应尽量简洁,避免在中断或按键处理中进行过多耗时操作,以免影响波形输出的稳定性。
4.4显示模块程序设计
显示模块的主要功能是实时更新当前的波形类型、输出频率、幅值等信息。以LCD1602为例,显示程序主要包括LCD初始化函数、写命令函数、写数据函数和显示更新函数。
LCD初始化函数在系统上电时被调用,完成LCD的功能设置(如显示模式、光标开关等)。写
原创力文档


文档评论(0)