基于msp430单片机的信号发生器毕业设计内容摘要:

4 方案的实现 系统硬件设计 信号发生器工作原理 信号发生器电路主要由 MSP430F149 单片机、独立键盘电路、 1602 液晶显示电路、DAC5571 数模转换芯片、系统电源电路等组成。 系统原理方框图如 41所示。 图 41 系统原理方框图 MSP430F149 复位电路 复位电路的主要作用是在上电时对单片机进行一些初始的设置或者当程序运行失控时,选择手动复位从而使单片机重启。 有上电自动复位,手动复位和外部脉冲复位 3种复位方式。 本 设计用到的 MSP430F149单片机采用的是低电平上电自动复位,当上电瞬间由于电容电压不能突然变化,所以 RST 也就相当于和地相连,单片机复位。 当程序运行出现故障时,可以手动按下 S5 键进行手动复位。 MSP430F149 复位电路如图 42 所示。 11 图 42 MSP430F149 复位电路 独立键盘电路 采用了四个独立按键对波形信息进行选择和设置如图 43所示。 图 43 独立键盘电路 液晶显示电路 通过 LCD1602 显示电路能将按键输入的波形信息显示出来。 LCD1602 显示电 路如图 44所示。 12 图 44 LCD1602 显示电路 波形产生电路 采用 DAC5571 芯片将单片机输出的数字信号转换成模拟信号输出。 数模转换DAC5571 波形发生电路如图 44 所示。 图 45 DAC5571 波形产生电路 系统软件设计 信号发生器主流程图 首先对各个功能模块进行初始化,接着扫描独立按键获取默认参数( 10HZ, )的波形信号(正弦波、方波、锯齿波、三角波)并将参数信息显示在 1602 液晶上,然后再次扫描按键,判断是否修改波形参数,如果要改变频率 ,只需要重新设置定时器 A中 CCR0 的记数周期值就可以,要改变幅值的话,只需要将送入 DAC 数模转换芯片的数值乘以一定的比例系数(不大于 1)就可以,如图 45所示。 13 图 46 信号发生器主流程图 正弦波程序流程图 首先建立一个正弦波数据列表 tosin[256],每次进入定时器 A 的中断服务时,就将列表里的数据送给 DAC 数模转换芯片输出,将 256 个元素输出一遍,产生一个正弦波,如此循环如图 46 所示。 14 图 47 正弦波产生程序流程图 方波程序流程图 方波信号是通过 MSP430F149内部定时器 A每次中断到来时,进入中断服务程序,前 128 次中断时将 0xff 乘以一定系数(不大于 1)送 DAC 数模转换芯片输出,后 128次中断时将 0 送 DAC 数模转换芯片输出,然后中断次数清零,如此循环如图 47所示。 15 图 48 方波产生程序流程图 锯齿波程序流程图 锯齿波信号的产生是当定时器 A 中断时,一旦进入中断服务程序后,变量 i 自增,同时将变量 i 的值送给 DAC 数模转换芯片输出,当 i 等于 255 时, i 清零,重新计数,如此循环如图 48 所示。 16 图 49 锯齿波产生程序流程图 三 角波程序流程图 三角波和锯齿波的主要区别是:前者上坡和下坡的斜率相等,后者的不相等。 三角波信号的产生是当定时器 A 中断时,一旦进入中断服务程序,变量 i 乘以 2,同时将变量 i 乘以 2的值送给 DAC 数模转换芯片输出,当 i大于 128时,将( 255i)乘以 2 的值送给 DAC 数模转换芯片输出,当 i 等于 255 时, i 清零,重新计数,如此循环如图 49所示。 17 图 410 三角波产生程序流程图 开发工具和语言介绍 本次设计使用的开发工具是 IAR Embedded Workbench,该工具对 C/C++语言高度优 化,同时也是一个强大的编辑器和一个项目工程管理器,其次更重要的是该工具在仿真调试方面功能也很强大。 这款开发工具适用于许多 8 位、 16 位和 32 位的MCU,本次用到的 MSP430 单片机属于 16位的单片机,因此同样也适用。 MSP430 单片机开发语言有两种,分别是汇编语言和 C 语言。 传统的汇编语言开发出来的代码虽然运行效率高,但是开发难度相对较大,并且代码不容易移植。 尽管 C 语言没有汇编的高效率,但是现在很多编译器都对 C 语言进行优化,而且单片机的时钟频率也很高所以效率方面已经不是问题了,另外 C 语言开发相当简单,而且比较 方便实现移植。 因此本次设计采用了 C 语言编程。 18 仿真调试 信号发生器仿真原理图 选择合适的芯片,依据信号发生器的硬件设计原理和软件设计流程图,在Proteus 中对信号发生器系统进行仿真和调试,运用 Proteus 仿真从而可以很方便将各个功能模块进行连接,了解各个数据端口的电平变化,波形信息也比较直观,而且不需要真实的元件,通过应用仿真进行软件调试很大程度上降低了成本。 通过仿真调试,可以完善自己思路,优化自己硬件的设计电路和软件的程序结构,发现自己系统设计中的问题,让自己更 加深入的了解信号发生器的工作原理。 软件仿真并不能完全反映实际情况,但可以作为一种学习的辅助手段。 信号发生器仿真原理图如图 411所示。 图 411 信号发生器仿真原理图 19 正弦波仿真图 ( 1) 初始设置( 10HZ, )正弦波仿真图 图 412 默认设置正弦波仿真图 ( 2) 调频( 15HZ, )正弦波仿真图 图 413 频率调节正弦波仿真图 20 ( 3) 调幅( 10HZ,)正弦波仿真图 图 414 幅值调节正弦波仿真图 方波仿真图 ( 1) 初始设置( 10HZ, )方波仿真图 图 415 默认参数方波仿真图 21 ( 2) 调频( 15HZ, )方波仿真图 图 416 频率调节方波仿真图 ( 3) 调幅( 10HZ,)方波仿真图 图 417 幅值调节方波仿真图 22 锯齿波仿真图 ( 1) 初始设置( 10HZ, )锯齿波仿真图 图 418 默认参数锯齿波仿真图 ( 2) 调频( 15HZ, )锯齿波仿真图 图 419 频率调节锯齿波仿真图 23 ( 3) 调幅( 10HZ,)锯齿波仿真图 图 420 幅值调节锯齿波仿真图 三角波仿真图 ( 1) 初始设置( 10HZ, )三角波仿真图 图 421 默认参数三角波仿真图 24 ( 2) 调频( 15HZ, )三角波仿真图 图 422 频率调节三角波仿真图 ( 3) 调幅( 10HZ,)三角波仿真图 图 423 幅值调节三角波仿真图 25 结果分析 通过软件仿真调试发现,只要改变 D/A 芯片的参考电压,就可以改变输出波形的幅值,可以用滑动变阻器实现分压,送给 D/A 芯片作为参考电压,同时将此时的参考电压采集并且显示在 1602 液晶上的话,就可以扩大幅 值调节的范围。 还有输出波形的最大频率与所选择的 D/A 芯片有关,还与外接运放的处理速度有很大联系。 由于只是软件仿真,所以波形的频率和幅值参数其实只作为参考,用来观察模拟该功能的。 26 总结 通过本次课题设计,首先深入了解了信号发生器的工作原理和发展趋势,对于MSP430 单片机的内部模块以及应用特点有了清晰的认识,扩展了自己的知识面,锻炼了自己的学习能力以及如何有条理的进行一项设计。 该设计主要产生四种波形信号(正弦波、方波、锯齿波、三角波),而且这四种波形信号还可以通过按键实 现幅值( , , )和频率( 10HZ, 20HZ, 30HZ,50HZ)的调节。 最后,对课题进行了仿真,可以很直观的看到波形信号的变化,通过调试不断完善自己的思路。 该设计还可以进行扩展功能从而达到幅值和频率的宽覆盖,高精度的目的。 当然在设计中也遇到许多问题比如方波的波形出现失真,这主要是因为方波是从 D/A 输出的波形信号,由于方波的电平变化剧烈,内部电容充放电明显从而影响了输出信号波形。 如果方波从单片机的 I/O 管脚输出的话,不会出现失真,不过 I/O管脚只有高地电平变化,不能进行幅值调节,需要通 过外接电路改变参考电压来调节幅值,为了方便对四种波形统一调节,就都从 D/A 输出,其实当方波频率提高的时候,失真现象就会减弱。 还有就是 1602 液晶手册上说明使用的时候要进行忙检测,在硬件调试的时候没问题,当进行仿真的时候,忙检测程序导致 1602 液晶忙检测位一直处于高电平状态,使得 1602 液晶无法正常工作,删除忙检测程序就可以。 软件仿真只能模拟大概功能,好多具体实际参数需要硬件调试去修改。 软件仿真和硬件调试互相配合,可以更好的处理问题。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。