




免费预览已结束,剩余22页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Msp430单片机的波形发生器设计报告 项目名称:基于Msp430单片机波形发生器的设计 学生姓名:陈硕 学号:20111003681 班级:076112 指导老师:宋恒力、赵娟目 录第1章 概 述11.1 信号发生器设计背景11.2信号发生器的发展现状21.3本设计采用的研究方法和技术路线2第2章 芯片介绍42.1 MSP430单片机技术的发展特点及应用42.1.1MSP430单片机技术的发展特点42.1.2 MSP430F149单片机的引脚图72.2 DAC5571简介92.2.1 DAC5571的引脚说明92.2.2 DAC5571的原理图及运算方法10第3章 系统硬件设计113.1 基于MSP430F149信号发生器构成及工作原理113.2键盘电路113.3数模转换DAC5571电路13第4章 系统软件设计154.1 信号发生器总流程图154.2 各个硬件模块程序流程图164.3 波形产生程序流程图18附录25 第1章 概 述1.1 信号发生器设计背景 随着计算机和集成技术的高速发展,电子电路的分析与设计及相应专业课程的教学与实验所采用的方式与方法都发生了重大变化,特别是电子设计自动化系统中所包含的测试测量技术已经成为现代教育技术的重要组成部分,在高校的各个电子相关的实验室中,都需要开发和测试各种复杂的电路或子系统,其通常要求从没有上市的或很难获得的元器件或传感器中提取额外的信号,由此可见信号发生器已经成为了很多行业进行研究测试不可或缺的工具。 信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。(1)用分立元件组成的函数发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试。 (2)可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。(3)利用单片集成芯片的函数发生器:能产生多种波形,达到较高的频率,且易于调试。(4)利用专用直接数字合成DDS芯片的函数发生器:能产生任意波形并达到很高的频率,但成本较高。1.2信号发生器的发展现状 信号发生器既可以构成独立的信号源,也可以是高性能网络分析仪、频谱仪及其它自动测试设备的组成部分。信号发生器的关键技术是多种高性能仪器的支撑技术,因为它能够提供高质量的精密信号源及扫频源,可使相应系统的检测过程大大简化,降低检测费用并极大地提高检测精度。美国泰克生产的DTG5000 信号发生器的采样率达到最高3.35 Gb/s(数据)。国产S1000型数字合成扫频信号发生器通过采用新技术、新器件实现高精度、宽频带的扫频源,同时应用DDS和锁相技术,使频率范围从1MHz1024MHz能精确地分辨到100Hz,它既是一台高精度的扫频源,同时也是一台高精度的标准信号发生器。还有很多其它类型的信号发生器,他们各有各的优点,但是信号发生器总的趋势将向着宽频率覆盖、高频率精度、多功能、多用途、自动化和智能化方向发展。1.3本设计采用的研究方法和技术路线 首先去图书馆借阅有关MSP430单片机的书籍资料,了解MSP430单片机的工作原理、内部结构、功能模块、各种寄存器以及汇编语言,从整体上对MSP430单片机的使用方法和编程原理进行理解。然后利用网络资源查阅单片机的C语言编程实例和视频讲解,对单片机每个功能模块的使用有所了解。最后根据自己的题材基于MSP430单片机的信号发生器设计指定相应的策略想办法完成编程。波形的产生是通过MSP430单片机执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。在MSP430学习板的键盘按键,通过软件编程来选择各种波形、幅值电压和频率,按不同按键产生不同波形的信号。此方案的有点是电路原理比较简单,实现起来比较容易。具体就是系统采用MSP430单片机为控制核心,利用单片机内置的AD芯片,通过按键中断来逻辑选择要输出的波形(正弦波、方波、三角波、锯齿波),再设置其它键来控制波形的复制及频率,然后通过示波器观察波形的情况以作为参考。 第2章 芯片介绍2.1 MSP430单片机技术的发展特点及应用 MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片”解决方案。该系列单片机多应用于需要电池供电的便携式仪器仪表中1。2.1.1MSP430单片机技术的发展特点德州仪器1996年到2000年初,先后推出了31x、32x、33x等几个系列,这些系列具有LCD驱动模块,对提高系统的集成度较有利。每一系列有ROM 型(C)、OTP 型(P)、和 EPROM 型(E)等芯片。2000 年推出了11x/11x1系列。这个系列采用20脚封装,内存容量、片上功能和 I/O 引脚数比较少,但是价格比较低廉。2000年7月推出了F13x/F14x 系列,在2001年7月到2002年又相继推出F41x、F43x、F44x。这些全部是 Flash 型单片机。2001年TI 公司又公布了BOOTSTRAP LOADER技术,利用它可在烧断熔丝以后只要几根线就可更改并运行内部的程序。这为系统软件的升级提供了又一方便的手段。BOOTSTRAP 具有很高的保密性,口令可达到 32个字节的长度1。1、处理能力强MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。2、运算速度快 MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如 FFT 等)。3、超低功耗MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165A左右,RAM 保持模式下的最低功耗只有0.1A。其次,独特的时钟系统设计。在 MSP430 系列中有两个不同的时钟系统:基本时钟系统、锁频环(FLL 和FLL+)时钟系统和DCO数字振荡器时钟系统。可以只使用一个晶体振荡器(32768Hz),也可以使用两个晶体振荡器。由系统时钟系统产生 CPU 和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。由于系统运行时开启的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPM0LPM4)。在实时时钟模式下,可达2.5A ,在RAM 保持模式下,最低可达0.1A 。4、片内资源丰富MSP430 系列单片机的各系列都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位- ADC、DMA、I/O端口、基本定时器(Basic Timer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出 A/D 转换器;16 位定时器(Timer_A 和 Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、 PWM 等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的 I/O 端口,P0、P1、P2 端口能够接收外部上升沿或下降沿的中断输入;10/12位硬件 A/D 转换器有较高的转换速率,最高可达200kbps ,能够满足大多数数据采集应用;能直接驱动液晶多达 160 段;实现两路的 12 位 D/A 转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用的DMA模块。MSP430 系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。5、方便高效的开发环境 MSP430 系列有 OPT 型、 FLASH 型和 ROM 型三种类型的器件,这些器件的开发手段不同。对于 OPT 型和 ROM 型的器件是使用仿真器开发成功之后烧写或掩膜芯片;对于 FLASH 型则有十分方便的开发调试环境,因为器件片内有 JTAG 调试接口,还有可电擦写的 FLASH 存储器,因此采用先下载程序到 FLASH 内,再在器件内通过软件控制程序的运行,由 JTAG 接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台 PC 机和一个 JTAG 调试器,而不需要仿真器和编程器。开发语言有汇编语言和 C 语言。2.1.2 MSP430F149单片机的引脚图 2.2 DAC5571简介 2.2.1 DAC5571的引脚说明 DAC5571的引脚说明如表2-3所示。表2-3 DAC5571的引脚说明引脚名称描述1VOUT模拟输出电压2GND所有地面参考3VDD模拟供电电压输入4SDA串行数据输入5SCL串行时钟输入6A0设备地址选择 2.2.2 DAC5571的原理图及运算方法 DAC5571的原理图及运算方法分别如图2-2和图2-3所示。 DAC5571原理图 DAC5571运算算法第3章 系统硬件设计3.1 基于MSP430F149信号发生器构成及工作原理信号发生器电路主要由MSP430F149系统、键盘电路、LCD1602显示电路、DAC5571芯片、电源电路等组成。系统原理方框图如图3-1所示。显示电路键盘电路数模转换MSP430F149电 源 图3-1系统原理方框图系统工作原理:本系统采用MSP430单片机为控制核心,利用单片机内置的DA芯片,通过按键中断来逻辑选择要输出的波形(正弦波、方波、三角波、锯齿波),再设置其它键来控制波形的复制及频率,然后通过单片机控制显示到LCD1602上。波形的产生是通过MSP430单片机执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。在MSP430学习板的键盘按键,通过软件编程来选择各种波形、幅值电压和频率,按不同按键产生不同波形的信号。3.2信号发生器的键盘电路本系统所需要的键盘有8个,经过分析觉得使用独立式键盘更为合适,但是手上有现有的4*4矩阵键盘,因此使用了4*4矩阵键盘。连接电路如图3-2所示。图3-2 键盘模块电路现在具体分析键盘的工作原理:键盘初始化使得单片机P1的P1.0P1.3设置为输入状态, P1.4P1.7设置为输出状态,然后令P1.4P1.7输出低电平,P1.0P1.3下降沿触发中断,并开中断。进入中断子程序后进行扫描并获得键值,最后根据按键的不同分别跳到对应的子程序中。在扫描的子程序中,当在P1.7管脚上输出低电平,并且行线的其他管脚上输出高电平时,如果“K1”键被按下,则P1.0为低电平;如果“K2”键被按下,则P1.1为低电平;如果“K3”键被按下,则P1.2为低电平;如果“K4”键被按下,则P1.3为低电平。通过设置一条行线的输出就可以获取列线上的相应状态,从而获得键盘输入的值。同理,依次在其他列线上输出低电平,就可以获取其他键的输入值。通过这样的扫描方式,可以实现键盘的输入。3.3数模转换DAC5571电路 第4章 系统软件设计信号发生器的顺利工作,需要合适的软件来协调系统的各个硬件组成部分,根据信号发生器系统的工作需要来工作,从而达到特定的功能。本章主要设计信号发生器系统的各个硬件组成部分的程序流程图。4.1 信号发生器总流程图系统总程序流程图如图4-1所示。系统初始化后,当有按键按下是就会产生按键中断,然后按键扫描获得键值并根据键值跳转到不同的子程序,产生不同的波形。流程图如下: 4.2 各个模块程序流程图4.2.1 初始化程序流程图初始化程序流程图如图4-2所示。进入初始化阶段,信号发生器的各个部分依次初始化,为后期的程序执行做好准备。 图4-2 初始化程序流程图4.2.2 按键中断程序流程图按键中断程序流程图如图4-3所示。当有按键按下是就会产生按键中断,然后按键扫描获得键值并根据键值跳转到不同的子程序,产生不同的波形。图4-3 按键中断程序流程图4.3波形产生程序流程图4.3.1 正弦波产生程序流程图本程序的波形产生原理是将一个波形周期分割成n等份,每加上一个偏移量然后对输出量求正弦值,并写到DAC5571中,原理图如图4-4所示。图4-4 正弦波程序流程图4.3.2 方波产生程序流程图方波的产生程序是根据波形的频率要求计算出每次幅值跃变的时间,等到定时器A的计时时间到时进入中断进行一次跃变,流程图如图4-5所示。图4-5 方波程序流程图4.3.3 锯齿波产生程序流程图锯齿波的产生程序根据波形的频率要求计算出每次幅值变化的时间,等到定时器A的计时时间到时进入中断进行一次增值,如图4-6所示。 图4-6 锯齿波程序流程图4.3.4 三角波产生程序流程图三角波的产生程序跟锯齿波的产生程序是同一个原理,根据波形的频率要求计算出每次幅值变化的时间,等到定时器A的计时时间到时进入中断进行一次增值另设一个计数变量,用于判断幅值增减的分割点,流程图如图4-7所示。图4-7 三角波程序流程图 附录一、硬件电路原理图及实物图 电路的原理图 电路的实物图2、 实验现象2.1 正弦波(低频、高频、低幅度、高幅度) 2.2 方波2.3三角波2.4 锯齿波3、 源程序代码#include #include xinhao.h#define uchar unsigned char#define uint unsigned int#define CPU_F (double)8000000) #define delayus(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0) #define delayms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0) uchar temp,x,a=1,b;void Init(void);void main( void ) uchar i; Init(); P3DIR|=(BIT0+BIT1); P3OUT&=(BIT0+BIT1); while(1) switch(x) case 1: for(;x=1;i+)if(i3)*a;delayus(b);else i=0;break; case 2: for(;x=2;i+)if(i3)*a;delayus(b);else i=0;break; case 3: for(;x=3;i+)if(i3)*a;delayus(b);else i=0;break; case 4: for(;x=4;i+)if(i3)*a;delayus(b);else i=0;break; case 5: for(;x=5;i+)if(i3)*a;delayus(b);else i=0;break; case 6: for(;x=6;i+) P2OUT =(i3)*a;delayus(b);break; default: x=0; void Initclk() unsigned int iq0; /使用XT2振荡器 BCSCTL1&=XT2OFF; /打开XT2振荡器 do IFG1 &= OFIFG; / 清除振荡器失效标志 for (iq0 = 0xFF; iq0 0; iq0-); / 延时,等待XT2起振 while (IFG1 & OFIFG) != 0); / 判断XT2是否起振 BCSCTL2 =SELM_2+SELS; /选择MCLK、SMCLK为XT2 /以下填充用户代码,对各种模块、中断、外围设备等进行初始化 void Init(void) WDTCTL = WDTPW + WDTHOLD; /关闭看门狗 P2DIR = 0xff; P2OUT = 0xff; P1DIR = 0xf0; P1OUT = 0x00; P1IES = 0x0f; P1IE = 0x0f; _EINT();#pragma vector=PORT1_VECTOR_interrupt void P1_ISR(void) temp = (P1IFG&0x0f); delayms(20); if(P1IN&temp)=temp) P1IFG=0; return; switch(temp) case BIT0:P1OUT=0xe0;if(P1IN&BIT0)=0)x=1;a=1;b=0; P1OUT=0xd0;if(P1IN&BIT0)=0)x=2;a=1;b=0; P1OUT=0xb0;if(P1IN&BIT0)=0)x=3;a=1;b=0; P1OUT=0x70;if(P1IN&BIT0)=0)x=4;a=1;b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论