基于MSP430的信号发生器设计

合集下载

基于MSP430单片机的信号发生器毕业设计

基于MSP430单片机的信号发生器毕业设计

2013届毕业生毕业设计说明书题目: 基于MSP430单片机的任意信号发生器设计学院名称:电气工程学院班级:电气F0902 学生姓名:李福乐学号: 200948720425 指导教师:杨勇教师职称:高级工程师2013年5月17日目次1 概述 (I)1.1 信号发生器背景及其发展状况 (1)1.2 本设计主要研究内容 (1)2 方案论证 (2)2.1 设计方案的提出 (2)2.2 设计方案的比较 (2)2.3 设计方案的选择 (3)3 选用模块介绍 (3)3.1 MSP430F149单片机 (3)3.2 1602液晶 (6)3.3 DAC5571芯片 (8)3.4 时钟模块及定时器A (9)4 方案的实现 (10)4.1 系统硬件设计 (10)4.2 系统软件设计 (12)4.3 仿真调试 (18)总结 (26)致谢 (27)参考文献 (28)附录A:硬件原理图 (29)附录B:仿真调试程序 (30)1 概述1.1 信号发生器背景及其发展状况信号发生器在各个领域都有着相当广泛的应用,无论是通信产品还是电子仪表,无论是科学指导还是教学研究,小到电子手表、大到计算机,都离不开信号发生器。

信号发生器在许多方面发挥着重要的作用。

信号发生器也常常被称为信号源,能够提供稳定的和可靠的参考信号。

信号发生器的频率、幅值、波形等信号参数可以通过人设置调节。

现代电子领域中,单片机的应用越来越深入到各个方面,这一发展趋势必然会使得以前的检测技术获得巨大变革。

由单片机控制的仪器具有可靠性高、性能价格比好的优点,并广泛应用在医疗通信和智能仪器等诸多领域,而且还走入普通家庭从冰箱、遥控器到汽车,随处可见其身影。

以单片机为控制核心,加上键盘扫描、1602液晶显示、数模转换(D/A)等电路,可以设计出功能多样化、性能卓越的信号发生器,同时该信号发生器还可以采用USB接口设计,从而使其具有远程通信的功能。

目前,实验、科研和生产制造中一般都选择该方法去实现所需信号源。

北京邮电大学课设 基于MSP430的简单信号发生器的设计

北京邮电大学课设 基于MSP430的简单信号发生器的设计

基于MSP430的信号发生器设计报告学院:电子工程学院班级:2013211212组员:唐卓浩(2012211069)王旭东(2013211134)李务雨(2013211138)指导老师:***一、摘要信号发生器是电子实验室的基本设备之一,目前各类学校广泛使用的是标准产品,虽然功能齐全、性能指标较高,但是价格较贵,且许多功能用不上。

本设计介绍一款基于MSP430G2553单片机的信号发生器。

该信号发生器虽然功能及性能指标赶不上标准信号发生器,但能满足一般的实验要求,且结构简单,成本较低。

本次需要完成的任务是以MSP430 LaunchPad 的单片机为控制核心、DAC 模块作为转换与按键电路作为输入构成的一种电子产品。

MSP430 LaunchPad 单片机为控制核心,能实时的进行控制;按键输入调整输出状态,DAC0832将单片机输出的数字信号转化为模拟量,经运放放大后,在示波器上输出。

在本次程序设计中充分利用了单片机内部资源,涉及到了中断系统、函数调用等。

关键字:信号发生器 MSP430 单片机 数模转换二、设计要求以msp430单片机为核心,通过一个DA (数字模拟)转换芯片,将单片机输出的方波、三角波、正弦波(数字信号)转换为模拟信号输出。

提供芯片:msp430G2553、DAC0832、REF102、LM384、OP07。

参考框图如下:Lauchpad MSP430电位器按键1DA 转换DAC0832放大输出LM384按键N按键2AD……图1 硬件功能框图1、基本要求(1) 供电电压 VDD= 5V~12V ;(√) (2) 信号频率:5~500Hz(可调);(√)(3) 输出信号电压可调范围:≥0.5*VDD ,直流偏移可调:≥0.5*VDD ;(√) (4) 完成输出信号切换;(√)(5) 方波占空比:平滑可调20%~80%;(√)(6)通带内正弦波峰峰值稳定度误差:≤±10%(负载1K )。

基于MSP430的信号波形发生器的电路设计与实现

基于MSP430的信号波形发生器的电路设计与实现

基于MSP430的信号波形发生器的电路设计与实现【摘要】设计制作一个马鞍波、方波、三角波的信号波形发生器。

系统包括方波振荡电路、分频与滤波电路、移相电路、加法合成电路、峰值检测电路、ADC转换电路、单片机控制电路与LCD显示电路。

系统界面友好,工作稳定。

【关键词】NE555;分频;滤波;MSP430F1471.方案论证与选择1.1 波形发生器选择方案一:采用RC振荡电路,此方案产生的方波信号频率精度不高。

方案二:选用NE555构成多谐振荡器产生方波,此方案电路简单、方便、灵活、频率稳定,故选用此方案。

1.2 分频与滤波电路的选择方案一:分别用低通滤波器和带通滤波器对方波进行处理得到所需正弦波。

其中低通滤波器的作用是把10KHz的方波滤波处理得到10KHz的正弦波,带通滤波器的作用则是为了得到30KHz和50KHz的正弦波。

此方案较容易得到10KHz的正弦波,但是带通滤波器的制作精度困难,不易得到30KHz和50KHz 的正弦波。

方案二:利用NE555产生一个150KHz的方波,再用HCF4017分别实现5分频、3分频得到10KHz、30KHz、50KHz的方波,然后采用由TLC04、OP07等运算放大器构成的低通滤波器进行滤波得到10KHz、30KHz、50KHz的正弦波。

此方案的关键在于不同频率低通滤波器的设计,通过合理选择参数,容易实现,故选用此方案。

2.系统总体方案设计2.1 总体设计思路波形产生电路由NE555振荡电路构成,产生150KHz的方波;经分频得到10KHz、30KHz、50KHz的方波;再通过由TLC04和OP27构成的低通滤波电路得到10KHz、30KHz、50KHz的正弦波;然后通过由OP27组成的合成电路分别得到马鞍波、方波、三角波波形。

同时以MSP430F147作为主控芯片,将三路正弦波通过由选通芯片CD4052和放大器OPA820组成的峰值检测电路得到的结果用TLV1544C进行A/D转换并在LCD上显示。

基于MSP430G2211实现的简易信号发生器

基于MSP430G2211实现的简易信号发生器
MSP430G2 系列 Launchpad 开发板应用实例作品
基于 MSP430G2211 实现的简易信号发生器
景振华
德州仪器半导体技术上海(有限)公司 西安电子科技大学 MSP430 单片机联合实验室
2011 年 12 月
目 录 第一章 作品概述 ......................................... 3

器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板 高质量的 20 引脚 DIP 插座,可轻松简便地插入目标器件或将其移除
本作品中所使用的 MSP430G2211 单片机的资源和功能: 16 位 RISC 指令集处理器 128 字节 RAM(数据)+2K 字节 Flash 存储器(代码) 一个 16 位 TA 定时器 内置数控振荡器(DCO) ,最高频率可达 21MHz 9 个双向 I/O 口,每个 I/O 口都可以作为中断源 自带 BOR 检测电路,能自动避开上电瞬间的毛刺并产生可靠的复位信号 内置低功耗低频振荡器(VLO) 可通过软件配置的 8 通道比较器
U J 2 S 1 + 5 V D 1 TLV1117-33CDCY 1 +3.6V
R
5VDC
3
1
Vin
SW-SPDT
Vout
2
2
C
1
G
N
D
C
IN4007
2
3K3
1
D
3
10uf/10v
10uf/10v
5VDC_JK
1
D
5
8
7
1
G
N
G
N
D
D

基于MSP430的正弦信号发生器

基于MSP430的正弦信号发生器

基于MSP430的正弦信号发生器摘要以二线式电流型变送器转换成电压信号采集电阻的阻值,通过数码管显示电阻阻值,以TI公司的MSP430F149为主控制器,根据采集到的电阻值来控制DDS集成芯片AD9851实现不同频率的正弦信号的无失真输出。

关键词变送器;MSP430F149;DDS1系统结构通过调节送入二线电流变送器的输入电阻量,改变变送器的输出为电流信号,单片机通过采样变送器电流输出在电流上产生的电压来控制AD9851来产正弦电流信号,并将此时输入电流量转化为电阻量在数码管上显示。

图1系统总体设计框图2功能实现电路2.1信号发生部分采用DDS芯片AD9851及用单片机直接控制。

它产生的频率稳定,控制性能良好、频率范围比较宽。

因为他可以产生正弦波等常见波形用单片机控制字可以方便进行控制输出满足条件的波形且电路简单。

2.2控制部分采用MSP430F149,它是16位单片机、处理速度快、外部资源丰富、自带的A/D转换模块、可以方便的进行信号的采集和功耗低。

2.3显示部分采用8为数码管,虽然只能显示数字,但控制简单,调试方便,且只需要显示必要的数字信息。

2.4变送器部分采用电桥,通过仪表放大器AD623采集电桥的电压差,再经调整电路及运算放大器放大得到的电压信号,再通过V/I变换器输出2~4mA电流,通过调节送入二线电流变送器的输入电阻量,改变变送器的输出为电流,变送器电流输出在电阻上产生的电压,再用电压跟随器隔离,采用MSP430内置A/D转换器采样减小了硬件的复杂度,将它转换为电阻值,来达到系统的控制。

3理论分析与参数计算4~20ma电流环在结构上由两部分即变送器和接收器组成,变送器一般位于现场端、传感器端或模块端,而接收器一般在处理器端,它一般在控制器内。

其工作电源和信号共用一根导线,工作电源由接收端提供。

为了避工作频率的干扰,采用电流来传输信号。

另外一种考虑是降低回路电流在接收端的压降。

通过改变电阻值来调整变送器的电流来传输信号,因为电流对噪声并不敏感。

基于MSP430单片机的信号发生器设计

基于MSP430单片机的信号发生器设计

题目名称:基于MSP430的信号发生器设计*名:***班级:电信111学号:************日期:2014/7/08I摘要随着科技的发展和现代科研的需要,信号发生器已经成为了很多行业进行研究测试不可或缺的工具。

信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。

各种波形曲线均可以用三角函数方程式来表示。

能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。

函数信号发生器在电路实验和设备检测中具有十分广泛的用途。

例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。

在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。

本系统采用MSP430F149单片机为控制核心,利用单片机内置的DA芯片,通过按键中断来逻辑选择要输出的波形(正弦波、方波、三角波、锯齿波),再设置其它键来控制波形的幅值及频率,然后通过单片机控制显示到LCD1602上。

波形的产生是通过MSP430单片机执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。

在MSP430学习板的键盘按键,通过软件编程来选择各种波形、幅值电压和频率,按不同按键产生不同波形的信号。

此方案的有点是电路原理比较简单,实现起来比较容易。

关键字:MSP430,信号发生器,LCD1602II前言计算机和集成技术的高速发展,电子电路的分析与设计及相应专业课程的教学与实验所采用的方式与方法都发生了重大变化,特别是电子设计自动化系统中所包含的测试测量技术已经成为现代教育技术的重要组成部分,在高校的各个电子相关的实验室中,都需要开发和测试各种复杂的电路或子系统,其通常要求从没有上市的或很难获得的元器件或传感器中提取额外的信号,由此可见信号发生器已经成为了很多行业进行研究测试不可或缺的工具。

基于MSP430的信号发生系统设计

基于MSP430的信号发生系统设计

基于MSP430的信号发生系统设计MSP430是一款低功耗、高性能的微控制器,适用于许多应用领域,包括信号发生系统设计。

在信号发生系统设计中,MSP430可以作为主控芯片,实现信号的产生、处理和输出。

首先,在信号发生系统设计中,我们需要考虑使用什么样的信号发生电路。

MSP430可以通过GPIO(通用输入输出)引脚产生数字信号,也可以通过模拟信号发生器产生模拟信号。

根据系统的需求,我们可以选择合适的电路,例如RC电路产生正弦信号,电容电感电路产生方波信号等等。

其次,我们需要考虑如何使用MSP430控制信号发生电路。

MSP430具有丰富的外设接口,例如定时器、比较器、ADC等等,可以实现与外部电路的连接和控制。

通过配置MSP430的定时器,我们可以实现产生固定频率的信号。

通过配置比较器,我们可以实现产生特定幅值的信号。

通过配置ADC,我们可以实现对模拟信号的采样和数字化处理。

另外,在信号发生系统设计中,我们还需要考虑信号的处理和输出。

MSP430可以通过内部的计算单元和存储器,实现对信号的处理算法,例如滤波、采样、平均等。

通过配置MSP430的外部引脚,我们可以将处理后的信号输出到外部设备,例如显示器、音响等等。

在信号发生系统设计中,还需要考虑功耗管理的问题。

MSP430具有低功耗的特点,可以通过配置功耗管理模块,实现系统的低功耗运行。

例如使用低功耗模式,关闭不需要的外设,降低系统的功耗。

最后,在信号发生系统设计中,需要考虑系统的可靠性和稳定性。

MSP430具有多个时钟源和时钟分频器,可以实现稳定的系统时钟。

此外,MSP430还具有多种保护机制,例如电源过压保护、温度保护等等,可以提高系统的稳定性和可靠性。

综上所述,基于MSP430的信号发生系统设计需要考虑信号发生电路的选择、MSP430的外设接口的配置、信号的处理和输出、功耗管理以及系统的可靠性和稳定性等方面。

通过合理地设计和配置,可以实现稳定、可靠、低功耗的信号发生系统。

基于MSP430F149与AD9850的信号发生器设计

基于MSP430F149与AD9850的信号发生器设计

第 4期
周锋, 等: 基于 M SP430F 149与 A D9850的信号发生器设计
43
要, 其性能的优劣对输出信号的质量起着重要的 作用。这里我们设计了频带宽度为 20 MH z的 5 阶巴特沃斯低通滤波器, 其电路图如图 4所示。
图 4 低通滤波器电路 Fig. 4 Low- pass filter c ircu its
预置频率
10 0 50 0 1 10 10 0 1 5 10 20
单位
Hz Hz kH z kH z kH z MH z MH z MH z MH z
表 1 系统测试数据 T ab le 1 T esting data of system
正弦波 99. 800 499. 300 0. 995 9. 980 99. 500 1. 002 4. 980 9. 970 19. 950
3 系统软件设计
图 5为系统软件算法流程图。系统软件设计 核心问题是如何计算 DDS的频率控制字, 并把频 率控制字输入到 AD9850。我们是将键盘输入频 率设定值, 并通过 M SP 430F149计算, 转换为频率 控制字, 将此频率控制字写入 AD9850。
图 5为系统软件算法流程图。系统开机后首 先进行初始化, 包括 M SP430F149 初始化及液晶 显 示 屏 的 初 始 化。 然 后 设 定 输 出 频 率, 由 M SP430F 149根据公式 fo = K f c /2N ( fo 为输出频 率, 即键盘设定的频率值; K 为频 率控制字; f c 为 外部参考时钟, 系统选用 50 MH z外部晶振; N 为 相位寄存器的位数, 等于 32)计算频率控制字 K: K = f o 232 /f c = f 0 8 589. 9。计算出 K 后, 转换 成为 40 位控制字, ( AD9850有 40 位控制字, 32 位用于频率控制, 5 位用于相位控制, 1位用于电 源 休 眠 控 制, 2 位 用 于 选 择 工 作 方 式 )。 M SP430F 149再把计算出来的 40位控制字通过图 4所 示的 时 序, 在 5 个时 钟 周 期送 给 AD9850。 AD 9850在接收完成后, FQ _UP由低电平变成高

基于MSP430单片机的信号源

基于MSP430单片机的信号源

基于MSP430单片机的信号源学生姓名:学生学号:院(系):电气信息工程学院年级专业:指导教师:助理指导教师:二〇一五年五月摘要由于科学技术的发展和现代科学研究发展趋势,信号发生器已经成为很多研究和测试行业不可或缺的工具。

已广泛应用于生产实践和科学技术的信号源可称为信号振荡器和信号发生器,能够产生多种波形,如三角波、锯齿波、正弦波、方波。

函数信号发生器广泛应用于电路实验和测试设备领域。

在通信方面,广播电视系统中,例如需要的高频(射频)发射无线电波,音频(低频率),视频信号或脉冲信号调制的载波,就需要产生高频振荡。

在工业、农业、生物医药等区域,如高频感应加热,熔化,淬火,超声,磁共振成像,我们需要强度或大或小,或高或低的频率的振荡器。

该系统以MSP430F149单片机为控制核心,利用单片机内部的DAC芯片,合理选择需要的输出波形(正弦波,三角波,方波,锯齿波)。

此过程的关键是中断,然后设置其他键控制输出波形,主要是调节振幅和频率,然后通过单片机控制LCD1602完成显示。

生成波形通过MSP430单片机执行一个波形生成程序,D/A转换器输入端按照一定的规则发出数据,再以D/A转换电路获得相应的输出电压波形。

学习板MSP430键盘控制是经过软件编程来选择不同的输出波形,不同的振幅和频率的电压波形,根据不同按钮被按下实现。

这个方案是一种电路原理相对简单,比较容易实现和调试。

关键词: MSP430,信号源,信号发生器,LCD1602ABSTRACT IIIIABSTRACT With the development of science and technology and modern scientific research, the signal generator has become a lot of research and testing industry indispensable tools. The signal generator and the signal source or oscillator, has been widely used in the production practice and science and technology. All kinds of waveform can be used to express trigonometric equation. Can produce a variety of waveforms, such as triangle wave, sawtooth wave, square wave (with Fang Bo), the circuit is called sine function signal generator. Function signal generator is widely used in circuit experiment and test equipment. For example, in communication, broadcasting television system, require radio frequency (HF) emission, where the radio wave is the carrier, the audio (low frequency), the video signal or pulse signal carry out, we need to produce high-frequency oscillator. In industry, agriculture, biomedical and other fields, such as high frequency induction heating, melting, quenching, ultrasound, magnetic resonance imaging, all need power or big or small, or high or low frequency oscillator.This system uses MSP430F149 microcontroller as control core, using DA microcontroller chip built-in, to logical choice to output waveform by key interrupt (sine wave, triangle wave, Fang Bo, Ju Chibo), the amplitude and frequency and then set the other keys to control the waveform, and then through the single-chip microcomputer control display to LCD1602.The waveform is generated through MSP430 microcontroller performs a waveform generation program, to the D/A converter input data according to certain rules, so as to obtain the corresponding voltage waveform at the output end of the D/A switching circuit. Learn the keyboard key board in MSP430, through software programming to select different waveform, amplitude and frequency of voltage signal waveform, different according to different keys. This scheme is a kind of circuit principle is relatively simple, relatively easy to achieve.Keywords: MSP430, Signal generator, LCD1602目录摘要 (I)ABSTRACT .............................................................................................................................................. I I1 概述 (1)1.1 信号发生器设计背景及意义 (1)1.2 信号发生器的发展现状 (2)1.3 本设计采用的研究方法和技术路线 (3)2 系统方案论证与选择 (4)2.1系统方案设计 (4)2.2系统方案选择 (5)3 系统硬件设计 (6)3.1 MSP430单片机的特点及发展与应用 (6)3.1.1 MSP430单片机的特点 (6)3.1.2 单片机的发展及应用 (8)3.1.3 MSP430F149单片机的电路图 (9)3.2 LCD1602液晶显示器简介 (10)3.2.1 LCD1602液晶显示器的引脚说明 (10)3.2.2 寄存器选择控制表 (11)3.3 DAC5571简介 (11)3.3.1 DAC5571的引脚说明 (11)3.3.2 DAC5571的原理图及运算方法 (12)3.4 模块电路设计 (13)3.4.1基于MSP430F149信号源构成及工作原理 (13)3.4.2. 信号发生器的键盘电路 (15)3.4.3 信号发生器的LCD1602显示模块 (15)3.4.4 数模转换DAC5571电路 (17)4 系统软件设计 (18)4.1 信号源总流程图 (18)4.2 初始化程序流程图 (19)14.3 按键中断程序流程图 (20)4.4 波形产生程序流程图 (22)4.4.1 正弦波产生程序流程图 (22)4.4.2 方波产生程序流程图 (22)4.4.3 锯齿波产生程序流程图 (23)4.4.4 三角波产生程序流程图 (23)5 PCB设计 (24)5.1 PCB设计软件 (24)5.1.1 PCB原理图设计 (25)5.1.2 PCB板制作方法 (25)5.2 PCB的EMC设计 (25)5.2.1 元器件布局的基本原则 (25)5.2.2 布线设计原则 (26)5.3 印制电路板 (26)6 设计的成果与分析 (28)结论 (31)参考文献 (32)附录A:基于MSP430单片机的信号源源程序代码 (34)附录B:PCB板图 (45)致谢................................................................................................................. 错误!未定义书签。

基于msp430单片机的信号发生器设计 程序

基于msp430单片机的信号发生器设计 程序

/***************此程序与00程序的不同在于P0中断程序中去掉了开、关中断的操作***************///显示方面只显示第一次按键的显示要求#include <msp430x14x.h>#include <math.h>#include "BoardConfig.h"#define uchar unsigned char/***************显示模块的定义***************/#define DataDir P4DIR#define DataPort P4OUT#define Busy 0x80#define CtrlDir P3DIR#define CLR_RS P3OUT &= ~BIT0; //RS = P3.0#define SET_RS P3OUT |= BIT0;#define CLR_RW P3OUT &= ~BIT1; //RW = P3.1#define SET_RW P3OUT |= BIT1;#define CLR_EN P3OUT &= ~BIT2; //EN = P3.2#define SET_EN P3OUT |= BIT2;/***************DA转换模块的定义***************/#define SCL_H P1OUT |= BIT1#define SCL_L P1OUT &= ~BIT1#define SDA_H P1OUT |= BIT0#define SDA_L P1OUT &= ~BIT0#define SCL_out P1DIR |= BIT1 //SCL设置为输出模式#define SDA_in P1DIR &= ~BIT0 //SDA改成输入模式#define SDA_out P1DIR |= BIT0 //SDA变回输出模式#define SDA_val P1IN&BIT0 //SDA的位值#define TRUE 1#define FALSE 0#define pai 3.14/***************按键模块全局变量***************/uchar key_Pressed; //按键是否被按下:1--是,0--否uchar key_val; //存放键值uchar key_Flag; //按键是否已放开:1--是,0--否//设置键盘逻辑键值与程序计算键值的映射uchar key_Map[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};uchar s1[] = {"zhengxian:"};uchar s2[] = {"fangbo:"};uchar s3[] = {"juchi:"};uchar s4[] = {"sanjiao:"};/***************调节模块全局变量***************/uchar fuzhi;uchar pinlv;unsigned int time; //定时int vcc; //da上加的电压uchar boxing;double bianliang;uchar biaozhi;int pianyi;int shuchu;/***************总体定义模块***************//***************总体定义模块***************/void xianshi(void);void DispNChar(uchar x,uchar y, uchar n,uchar *ptr);void LocateXY(uchar x,uchar y) ;void Disp1Char(uchar x,uchar y,uchar data);void LcdReset(void) ;void LcdWriteCommand(uchar cmd,uchar chk) ;void LcdWriteData( uchar data );void WaitForEnable(void);void Set_IO(void);void start(void);void stop(void);uchar check(void);void write1(void);void write0(void);void write1byte(uchar wdata);uchar Write_DAC(uchar wdata);void Init_Keypad(void);void Check_Key(void);void Key_Event(void);void zhengxian(void);void chansheng1(void);void fangbo(void);void chansheng2(void);void juchi(void);void chansheng3(void);void sanjiao(void);void chansheng4(void);void zengfu(void);void jiaofu(void);void zengpin(void);void jianpin(void);void delay100us(void);void delay5ms(void);void delay15ms(void);void delay400ms(void);/***************总体显示模块***************//***************总体显示模块***************//***********************************函数名称:xianshi功能:让液晶显示程序中液晶显示的主框架参数:返回值:***********************************************/void xianshi(void){LcdWriteCommand(0x01, 1); //清除显示Disp1Char(0,1,0x46); //显示FDisp1Char(1,1,0x3d); //显示=Disp1Char(3,1,0x56); //0x56是字符V的ASCII码值Disp1Char(5,1,0x50); //显示PDisp1Char(6,1,0x3d); //显示=Disp1Char(9,1,0x48); //0x48是字符H的ASCII码值Disp1Char(10,1,0x5a); //0x5a是字符Z的ASCII码值}/*******************************************函数名称:DispNchar功能:让液晶从某个位置起连续显示N个字符参数:x--位置的列坐标y--位置的行坐标n--字符个数ptr--指向字符存放位置的指针返回值:无********************************************/void DispNChar(uchar x,uchar y, uchar n,uchar *ptr){uchar i;for (i=0;i<n;i++){Disp1Char(x++,y,ptr[i]);if (x == 0x0f){x = 0;y ^= 1;}}}/******************************************* 函数名称:LocateXY功能:向液晶输入显示字符位置的坐标信息参数:x--位置的列坐标y--位置的行坐标返回值:无********************************************/ void LocateXY(uchar x,uchar y){uchar temp;temp = x&0x0f;y &= 0x01;if(y) temp |= 0x40; //如果在第2行temp |= 0x80;LcdWriteCommand(temp,1);}/******************************************* 函数名称:Disp1Char功能:在某个位置显示一个字符参数:x--位置的列坐标y--位置的行坐标data--显示的字符数据返回值:无********************************************/ void Disp1Char(uchar x,uchar y,uchar data) {LocateXY( x, y );LcdWriteData( data );}/*******************************************函数名称:LcdReset功能:对1602液晶模块进行复位操作参数:无返回值:无********************************************/void LcdReset(void){CtrlDir |= 0x07; //控制线端口设为输出状态 DataDir = 0xFF; //数据端口设为输出状态LcdWriteCommand(0x38, 0); //规定的复位操作delay5ms();LcdWriteCommand(0x38, 0);delay5ms();LcdWriteCommand(0x38, 0);delay5ms();LcdWriteCommand(0x38, 1); //显示模式设置LcdWriteCommand(0x08, 1); //显示关闭LcdWriteCommand(0x01, 1); //显示清屏LcdWriteCommand(0x06, 1); //写字符时整体不移动LcdWriteCommand(0x0c, 1); //显示开,不开游标,不闪烁}/*******************************************函数名称:LcdWriteCommand功能:向液晶模块写入命令参数:cmd-- chk--是否判忙的标志,1:判忙,0:不判返回值:无********************************************/void LcdWriteCommand(uchar cmd,uchar chk){if (chk) WaitForEnable(); // 检测忙信号?CLR_RS;CLR_RW;_NOP();DataPort = cmd; //将命令字写入数据端口_NOP();SET_EN; //产生使能脉冲信号_NOP();_NOP();CLR_EN;}/*******************************************函数名称:LcdWriteData功能:向液晶显示的当前地址写入显示数据参数:data--显示字符数据返回值:无********************************************/void LcdWriteData( uchar data ){WaitForEnable(); //等待液晶不忙SET_RS;CLR_RW;_NOP();DataPort = data; //将显示数据写入数据端口 _NOP();SET_EN; //产生使能脉冲信号_NOP();_NOP();CLR_EN;}/*******************************************函数名称:WaitForEnable功能:等待1602液晶完成内部操作参数:无返回值:无********************************************/void WaitForEnable(void){P4DIR &= 0x00; //将P4口切换为输入状态CLR_RS;SET_RW;_NOP();SET_EN;_NOP();_NOP();while((P4IN & Busy)!=0); //检测忙标志CLR_EN;P4DIR |= 0xFF; //将P4口切换为输出状态}/***************总体DA转换模块***************//***************总体DA转换模块***************//*******************************************函数名称:Set_IO功能:设置IIC对应IO为输出方向并输出高电平参数:无返回值:无********************************************/void Set_IO(void){SCL_out;SDA_out;SCL_H;SDA_H;}/*******************************************函数名称:start功能:完成IIC的起始条件操作参数:无返回值:无********************************************/void start(void){SCL_H;SDA_H;delay100us();SDA_L;delay100us();SCL_L;delay100us();}/*******************************************函数名称:stop功能:完成IIC的终止条件操作参数:无返回值:无********************************************/ void stop(void){SCL_H;SDA_L;delay100us();SDA_H;delay100us();}/******************************************* 函数名称:check功能:检查从机的应答操作参数:无返回值:从机是否有应答:1--有,0--无********************************************/ uchar check(void){uchar slaveack;SDA_in;SCL_H;delay100us();slaveack = SDA_val; //读入SDA数值SCL_L;delay100us();SDA_out;if(slaveack) return FALSE;else return TRUE;}/****函数名称:write1功能:向IIC总线发送一个1参数:无返回值:无********************************************/ void write1(void){SDA_H;delay100us();SCL_H;delay100us();SCL_L;delay100us();}/******************************************* 函数名称:write0功能:向IIC总线发送一个0参数:无返回值:无********************************************/ void write0(void){SDA_L;delay100us();SCL_H;delay100us();SCL_L;delay100us();}/******************************************* 函数名称:write1byte功能:向IIC总线发送一个字节的数据参数:wdata--发送的数据返回值:无********************************************/ void write1byte(uchar wdata){uchar i;for(i = 8;i > 0;i--){if(wdata & 0x80) write1();else write0();wdata <<= 1;}}/******************************************* 函数名称:Write_DAC功能:向DAC中写入输出电压数据参数:无返回值:写入结果:1--成功,0--失败********************************************/uchar Write_DAC(uchar wdata){start();write1byte(0x98); //DAC的设备地址if(check()) write1byte(wdata>>4); //写控制模式和电压数据的高四位else return 0;if(check()) write1byte(wdata<<4); //写电压数据的低四位else return 0;if(check()) stop();else return 0;return 1;}/***************总体按键模块***************//***************总体按键模块***************//*******************************************函数名称:Init_Keypad功能:初始化扫描键盘的IO端口参数:无返回值:无********************************************/void Init_Keypad(void){P1DIR = 0xf0; //P1.0~P1.3设置为输入状态, P1.4~P1.7设置为输出状态P1OUT |= 0x0f; //P1.4~P1.7输出低电平P1IES = 0x0f; //P1.0~P1.3下降沿触发中断P1IE = 0x0f; //P1.0~P1.3允许中断key_Flag = 0;key_Pressed = 0;key_val = 0;}/*******************************************函数名称:Check_Key功能:扫描键盘的IO端口,获得键值参数:无返回值:无********************************************/void Check_Key(void){uchar row ,col,tmp1,tmp2;tmp1 = 0x80;for(row = 0;row < 4;row++) //行扫描{P1OUT = 0xf0; //P1.4~P1.7输出全1P1OUT -= tmp1; //P1.4~p1.7输出四位中有一个为0tmp1 >>=1;if ((P1IN & 0x0f) < 0x0f) //是否P1IN的P1.0~P1.3中有 { tmp2 = 0x01; // tmp2用于检测出那一位为0for(col = 0;col < 4;col++) // 列检测{if((P1IN & tmp2) == 0x00) // 是否是该列,等于0为是{key_val = key_Map[row * 4 + col]; // 获取键值return; // 退出循环}tmp2 <<= 1; // tmp2右移1位}}}}/*******************************************函数名称:Key_Event功能:检测按键,并获取键值参数:无返回值:无********************************************/void Key_Event(void){uchar tmp;P1OUT &= 0x00; // 设置P1OUT全为0,等待按键输入tmp = P1IN; // 获取 p1INif ((key_Pressed == 0x00)&&((tmp & 0x0f) < 0x0f)) //如果有键按下{key_Pressed = 1; // 如果有按键按下,设置key_Pressed标识delay15ms(); //消除抖动Check_Key(); // 调用check_Key(),获取键值}else if ((key_Pressed == 1)&&((tmp & 0x0f) == 0x0f)) //如果按键已经释放{key_Pressed = 0; // 清除key_Pressed标识key_Flag = 1; // 设置key_Flag标识}else{_NOP();}}/***************总体波形及显示模块***************//***************总体波形及显示模块***************//*******************************************函数名称:zhengxian功能:输出正弦波参数:无返回值:无********************************************/void zhengxian(void){biaozhi = 0;boxing = 1;xianshi();DispNChar(0,0,10,s1); //显示正弦波CCTL0 = CCIE;CCR0 = time / 12;TACTL = TASSEL_1 + MC_1;_EINT(); //打开中断while(1){Disp1Char(2,1,0x30 + fuzhi); //显示幅值数字的ASCII码值等于其本身数值加上0x30Disp1Char(7,1,0x30 + pinlv / 10); //显示频率十位Disp1Char(8,1,0x30); //显示频率各位}}/*******************************************函数名称:chansheng1功能:输出正弦波参数:无返回值:无********************************************/void chansheng1(void){if(biaozhi == 12){biaozhi = 0;}if(biaozhi < 12){biaozhi += 1;}shuchu = 0xff * (fuzhi * sin(biaozhi * bianliang)+1.5) / vcc;Write_DAC(shuchu); //写入DAC}/*******************************************函数名称:fangbo功能:输出显示参数:无返回值:无************************void fangbo(void){boxing = 2;biaozhi = 1;time = time / 2;xianshi();DispNChar(0,0,7,s2); //显示方波CCTL0 = CCIE;CCR0 = time;TACTL = TASSEL_1 + MC_1;_EINT(); //打开中断while(1){Disp1Char(2,1,0x30 + fuzhi); //显示幅值数字的ASCII码值等于其本身数值加上0x30Disp1Char(7,1,0x30 + pinlv / 10); //显示频率十位Disp1Char(8,1,0x30); //显示频率各位shuchu = 0xff * fuzhi / vcc; //确定输出值的大小}}/*******************************************函数名称:chansheng2功能:输出方波参数:无返回值:无********************************************/void chansheng2(void){ if(biaozhi != 0){Write_DAC(shuchu); //写入DAC}else{Write_DAC(0); //写入DAC}}/*******************************************函数名称:juchi功能:输出显示参数:无返回值:无********************************************/void juchi(void){boxing = 3;xianshi();shuchu = 0;DispNChar(0,0,6,s3); //显示锯齿波Write_DAC(shuchu); //写入DACCCTL0 = CCIE;CCR0 = time / 10;TACTL = TASSEL_1 + MC_1;_EINT(); //打开中断while(1){ Disp1Char(2,1,0x30 + fuzhi); //显示幅值数字的ASCII码值等于其本身数值加上0x30Disp1Char(7,1,0x30 + pinlv / 10); //显示频率十位Disp1Char(8,1,0x30); //显示频率各位}}/*******************************************函数名称:chansheng3功能:输出锯齿波参数:无返回值:无********************************************/void chansheng3(void){shuchu += pianyi;Write_DAC(shuchu); //写入DACif(shuchu >= pianyi * 10)shuchu = 0;}/*******************************************函数名称:sanjiao功能:输出显示参数:无返回值:无********************************************/void sanjiao(void){shuchu = 0;biaozhi = 0;boxing = 4;xianshi();DispNChar(0,0,8,s4); //显示三角波CCTL0 = CCIE;CCR0 = time / 10;TACTL = TASSEL_1 + MC_1;_EINT();while(1){Disp1Char(2,1,0x30 + fuzhi); //显示幅值数字的ASCII码值等于其本身数值加上0x30Disp1Char(7,1,0x30 + pinlv / 10); //显示频率十位Disp1Char(8,1,0x30); //显示频率各位}}/*******************************************函数名称:chansheng4功能:输出三角波参数:无返回值:无********************************************/void chansheng4(void){ if(biaozhi == 10){biaozhi = 0;}if(biaozhi >= 5 && biaozhi {biaozhi += 1;shuchu -= pianyi;}if(biaozhi < 5){biaozhi += 1;shuchu += pianyi;}Write_DAC(shuchu); //写入DAC}/*******************************************函数名称:zengfu功能:增加波形幅值参数:无返回值:无********************************************/ void zengfu(void){_EINT(); //打开中断if(fuzhi < 3){fuzhi += 1; } //幅值加1}/******************************************* 函数名称:jiaofu功能:减小波形幅值参数:无返回值:无********************************************/ void jiaofu(void){_EINT(); //打开中断if(fuzhi > 1){fuzhi -= 1; } //幅值减1}/******************************************* 函数名称:zengpin功能:增加波形频率参数:无返回值:无********************************************/ void zengpin(void){_EINT(); //打开中断pinlv = 20;switch(boxing){case 1: time = 136; break;case 2: time = 819; break;case 3: time = 164; break;case 4: time = 164; break;}CCR0 = time;}/******************************************* 函数名称:jianpin功能:减小波形频率参数:无返回值:无********************************************/ void jianpin(void){_EINT(); //打开中断pinlv = 10;switch(boxing){case 1: time = 273; break;case 2: time = 1638; break;case 3: time = 327; break;case 4: time = 327; break;}CCR0 = time;}/***************总体延时模块***************//***************总体延时模块***************//*******************************************函数名称:delay100us功能:延时约100us的时间参数:无返回值:无********************************************/void delay100us(void){uchar i;for(i = 0;i < 15;i++)_NOP();}/*******************************************函数名称:delay5ms功能:延时约5ms参数:无返回值:无********************************************/void delay5ms(void){int i = 4000;while (i != 0){i--;}}/*******************************************函数名称:delay15ms功能:延时约15ms,完成消抖功能参数:无返回值:无********************************************/void delay15ms(void){int tmp;for(tmp = 12000;tmp > 0;tmp--);}/*******************************************函数名称:delay400ms功能:延时约400ms参数:无返回值:无********************************************/void delay400ms(void){uchar i = 50;int j;while(i--){j = 7269;while(j--);}}void main(void){ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗BoardConfig(0xb8); //关闭数码管、流水灯和电平转换 vcc = 3; //da上加的电压bianliang = 2 * pai / 12;fuzhi = 0x02;pinlv = 10;time = 3276;LcdReset(); //初始化LCDInit_Keypad(); //初始化键盘端口_EINT(); //打开中断while(1);}/*******************************************函数名称:Port1_ISR功能:端口P1的中断服务函数参数:无返回值:无********************************************/#pragma vector=PORT1_VECTOR__interrupt void Port1_ISR(void){ while(1){Key_Event(); //检测按键,并获取键值P1IFG = 0; P1OUT = 0; //清中断标志switch(key_val){ case 1: zhengxian(); break; //输出正弦波 case 2: fangbo(); break; //输出方波case 3: juchi(); break; //输出锯齿波 case 4: sanjiao(); break; //输出三角波 case 5: zengfu(); break; //增加幅值case 6: jiaofu(); break; //减小幅值case 7: zengpin(); break; //增大频率即选择20hzcase 8: jianpin(); break; //减小频率即选择10hzdefault: break;}break;}}/*******************************************函数名称:TIMERA0_VECTOR功能:定时器A的中断服务函数参数:无返回值:无********************************************/#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A (void){switch(boxing){case 1:chansheng1();break;case 2:biaozhi = ~biaozhi;chansheng2();break;case 3:pianyi = 0xff * fuzhi / vcc / 10; //确定偏移量的大小 chansheng3();break;case 4:pianyi = 0xff * fuzhi / vcc / 5; //确定偏移量的大小; chansheng4();break;}}。

基于MSP430的函数信号发生器设计方案

基于MSP430的函数信号发生器设计方案

基于MSP430的函数信号发生器设计方案摘要:信号产生部分采用信号发生芯片max038,以msp430单片机为微控制器,进行各种功能操作,完成输出信号的波形、频率、幅度的调节。

max038输出的频率经过一级跟随器送给opa300和74hc00构成的波形整形电路对波形进行转换和整形变换成方波信号,再将次信号进行分频,分频后的信号送入msp430进行测量。

用lcd显示器,实时显示输出信号参数。

控制部分及信号测量部分由msp430单片机实现。

关键词:函数信号发生器发生芯片max038 单片机引言函数信号发生器可以产生正弦波、方波、三角波三种信号,输出频率频率范围为1khz-1mhz。

分为三个档位:1khz-10khz、10khz-100khz、100khz-1mhz。

输出频率可以用频率电位器(多圈精密电位器)调节,输出信号幅度(vpp)从50mv到9v可调。

波形切换通过一个按键实现,并且可以从液晶显示上可以显示当前输出的波形,频率值和信号幅度值。

信号产生部分电路图采用精密函数信号发生器max038。

信号处理部分采用ti公司的opa300,tl082等运放构成。

1.方案设计能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。

函数信号发生器在电路实验和设备检测中具有十分广泛的用途,但是以往产品中的信号发生器,往往体积较大,还要外部供电,给户外需要用到信号发生器的地方带来不便。

如果能把整机功耗降下来,体积做小,并且采用电池供电,这样就可以做出便携式函数信号发生器。

整体电路共分为一下几部分:信号产生模块,后级放大模块,信号整形分频模块,信号频率测量模块,信号幅度测量模块,又可分为硬件设计和软件设计[1]。

2.信号产生电路设计图1中电位器rp1是频率调节电位器,满足精度要求,所以选择高精度的多圈电位器。

电位器一段连接max038的1脚ref端,ref输出标准电压2.5v。

另一端连接max038的10脚in输入端,通过调节电位器rp1可以改变10脚iin的值,从而改变输出频率值。

一种基于MSP430单片机的SPWM发生器设计

一种基于MSP430单片机的SPWM发生器设计

总第326期2016年第12期计算机与数字工程Computer &Digital Engineering Vol.44 N o.122513一种基于MSP430单片机的SPW M发生器设计$刘东青1郑茂1叶俊杰2(1.空军预警学院武汉430019)!.空军雷达兵第十三旅乌鲁木齐830000)摘要针对S P W M控制方法实现简单,效果良好,其输出电流或者电压波形为正弦波,在点击控制领域获得了广泛 的应用。

论文设计了一种基于单片机M S P430G2553实现S P W M波形的方法,设计思路主要是根据正弦表中的采样数据,通过程序控制单片机M S P430G2553输出按正弦规律变化的P W M波形,再将其经过适当的低通滤波处理,从而获得期望 的幅频可控的正弦波,并通过实验验证了利用其实现S P W M波的可行性和有效性。

关键词S P W M;滤波器;M S P430G2553单片机中图分类号T P393 D O# 10.3969/j.issn1672-9722. 2016. 12.046Design of A SPWM Generator Based on MSP430 MCUL I U Dongqing1Z H E N G M a o1YEJunjie2(1.Air Force Early Warning Academy,W u h a n430019)(2.Air Force Radar13T H Brigade,u R U M C H I830000)Abstract The S P W M control method has a good effect,the output current or voltage waveform i s sine wave,has been widely used in the fie l d of control click.This paper designs a kind of method based on single chip microcomputerM S P430G2553 to realize S P W M waveform.Design thinking i s mainly according t o the sampling data through the program control microcontroller M S P430G2553 output according to the sine law of change of P W M waveform,i t gets through the appropriate low-pass f i l t e r processing,to get expected sine wave amplitude frequency controllable,in orderto verify the use of the feasibility and effectiveness of the realization of S P W M waveform.Key Words S P W M,f i l t e r,M S P430G2553 microcomputerClass Number T P3931引言逆变电源是一种采用电力电子技术进行电能变换的装置,它从交流或直流输入获得稳压恒频的 交流输出[1]。

基于MSP430单片机三相正弦波形发生器设计.

基于MSP430单片机三相正弦波形发生器设计.

吉林化工学院毕业设计说明书基于MSP430单片机三相正弦波形发生器设计Design of Three-phase Sine Wave Generator Based on MSP430 Microcomputer学生学号:11510321学生姓名:周俊龙专业班级:自动1103指导教师:吴兴波职称:副教授起止日期:2015.03.09~2015.06.26吉林化工学院Jilin Institute of Chemical Technology吉林化工学院毕业设计说明书摘要随着科技的发展和现代科研的需要,信号发生器已经成为了很多行业进行研究测试不可或缺的工具。

信号发生器是指产生所需参数的电测试信号的仪器。

按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器四大类。

信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应。

本系统采用MSP430F169单片机为控制核心,通过对单片机内部的D/A进行编程,在单片机的DAC0和DAC1两端输出两相相位差为120度的A相和B相正弦波,正弦波的频率由编程决定。

通过外接反相加法器(u c=-u a-u b),合成为C相电压。

外接程控放大电路,对输出的正弦波形进行幅值放大,最后通过显示器LCD1602将输出的幅值和频率显示出来。

波形的产生是通过MSP430单片机执行波形发生程序,向D/A转换器的输入端按一定的规律输入数据,从而在D/A转换电路的输出端得到相应的电压波形。

通过软件编程来确定波形的形状、幅值和频率。

此方案的特点是电路原理比较简单,实现起来比较容易。

关键词:MSP430F169;信号发生器;LCD1602;D/A转换器基于MSP430单片机三相正弦波形发生器设计AbstractWith the development of science and technology and modern scientific research, the signal generator has become a tool for many sectors of research and testing indispensable. Signal generator means generates electrical test signals required parameters for the instrument. Press the signal waveform can be divided into a sinusoidal signal, function (waveform) signals, pulse signal and random signal generator four categories. Also known as the signal source signal generator or oscillator, in production practices and technology areas it has a wide range of applications. The system uses MSP430F169 microcontroller core, microcontroller via the internal D / A to be programmed at both ends of the microcontroller DAC0 and DAC1 output two-phase phase difference of 120 degrees of A-phase and B-phase sine wave, sine wave frequency is Programming decisions. Anti-adder (u c= -u a-u b) by an external, synthesized as C-phase voltage. External programmable amplifier, the output sine wave Amplitude amplification, amplitude and frequency Finally LCD1602 display output is displayed.Waveform generation is performed through MSP430 microcontroller waveform generation program, the D / A converter input of the input data according to certain rules, so that D / A conversion circuit of the output of the corresponding voltage waveform. To determine the shape, amplitude and frequency of the waveform by software programming. This program features is a circuit principle is relatively simple, relatively easy to implement.Keywords: MSP430F169;signal generator;LCD1602;D / A converter吉林化工学院毕业设计说明书目录摘要 (I)Abstract (II)第1章概述 (1)1.1 信号发生器设计背景 (1)1.2 信号发生器的发展现状 (1)1.3 本设计采用的研究方法和技术路线 (2)第2章芯片介绍 (3)2.1 MSP430单片机技术的发展特点及应用 (3)2.1.1 MSP430单片机技术的发展特点 (3)2.1.2 单片机的应用 (5)2.2 MSP430F169概述 (5)2.2.1 DAC模块的主要性能指标 (9)2.2.2 MSP430F169单片机中的D/A功能 (9)2.1.3 MSP430F169单片机的引脚 (10)2.2 LCD1602液晶显示器简介 (11)2.2.1 LCD1602液晶显示器的引脚说明 (11)2.2.2 寄存器选择控制表 (11)第3章系统硬件设计 (13)3.1 基于MSP430F169信号发生器构成及工作原理 (13)3.2 MSP430F169小系统构成 (14)3.3 信号发生器的键盘电路 (15)3.4 反相加法器电路设计 (16)3.5 程控放大电路设计 (16)3.6 信号发生器的LCD1602显示模块 (18)3.7 正弦基波数值计算方法 (19)3.7.1 幅值计算方法 (19)3.7.2 定时中断时间常数计算方法 (19)3.7.3 A和B相相位移调整方法 (19)3.8 电源电路设计 (20)3.7 本章小结 (21)第4章系统软件设计 (22)基于MSP430单片机三相正弦波形发生器设计4.1 数据定义 (23)4.2 定时器初始化与中断程序 (24)4.3 按键控制程序 (25)4.4 液晶显示程序 (26)结论 (27)参考文献 (28)附录A 硬件电路 (29)附录A 硬件电路(续) (30)附录B 软件程序 (31)致谢 (40)吉林化工学院毕业设计说明书第1章概述1.1 信号发生器设计背景随着计算机和集成技术的高速发展,电子电路的分析与设计及相应专业课程的教学与实验所采用的方式与方法都发生了重大变化,特别是电子设计自动化系统中所包含的测试测量技术已经成为现代教育技术的重要组成部分,在高校的各个电子相关的实验室中,都需要开发和测试各种复杂的电路或子系统,其通常要求从没有上市的或很难获得的元器件或传感器中提取额外的信号,由此可见信号发生器已经成为了很多行业进行研究测试不可或缺的工具。

基于MSP430单片机和直接数字合成技术的信号发生器

基于MSP430单片机和直接数字合成技术的信号发生器

功耗 M P 3 单 片机 实现 的正 弦信 号 发生 器, 出信 S40 输
位 调制 数 据 ; () 内有 高性  ̄ D A 换 器和 高速 3片 E/转 比较 器 ,可输 出正 弦 波 和 方 波 ; ( ) 高 ] 作 时 4最 二
号具有 高精度 、高频 率、高稳 定度 的特 点 。
g nrtrb sdo i c ii l y tei tcn lg DDS. h ytm d pe e eao ae ndr t gt nht eh oo y( e d as c ) T esse ao tdAD9 5 sc r hp M S 4 0mircnrl r s 8 0a oec i, P 3 coo tol ea
Ab t a t I to c i sm a o t eⅥo k n i c pl , y t m tuc u e a d h r wa e a d s twa e d sgn o i e ve sg a s r c : n r du t on wa de t h r i g prn i e s se sr t r , n a d r n of r e i fs n wa i n l
江苏电器 (0 8 o1) 2 0 .1 N
基于M P 3 片机和直接数 字合成技术的信号发生器 S4o
基于MP3单片机和直接数字合成技术的信号发生器 S40
胡虎 斌 ,胡仁 杰
( 东南大学 电气工程学院,江苏 南京 2 9) 1 0 0 6
摘 要 : 介绍 了基 于直接数字合成技 术 (D )的正弦信 号发生器 的工作原 理、系统结构及软硬件 DS 设计 ,该系统 采用 A 9 5 D 8 0为核心 芯片 ,以 M P 3 S 4 0单片机 为控制 芯片 ,给 出了 A 9 5 D 8 0子程序 。系统 能够 实现高精度 、宽频带 、控 制灵活 的正弦信号输 出。输 出信 号稳定不 失真 ,工作性 能可靠 ,具有广

基于MSP430单片机的信号发生器设计

基于MSP430单片机的信号发生器设计

基于MSP430单片机的信号发生器设计信号发生器是一种用于产生各种波形信号的仪器,常用于电子实验、通信测试等领域。

本文将基于MSP430单片机设计一个简单的信号发生器,并介绍其原理、硬件电路和软件设计过程。

一、设计原理MSP430是德州仪器(TI)推出的一款低功耗微控制器,具有丰富的外设和易用的开发环境,适合用于嵌入式系统设计。

通过MSP430的数字模拟转换器(DAC)和PWM输出功能,我们可以实现一个基本的信号发生器。

本设计基于MSP430G2553单片机,通过PWM输出产生不同频率的方波,并通过DAC输出控制方波的幅度,从而生成正弦、三角和方波等不同波形的信号。

二、硬件电路设计硬件电路主要包括MSP430G2553单片机、DAC芯片、PWM输出电路和运放放大电路。

1.MSP430G2553单片机MSP430G2553单片机具有16位的定时器,可产生必要的时序信号,以及8位的数字模拟转换器(DAC),可用于控制信号幅度。

2.DAC芯片DAC芯片用于将MSP430的数字信号转换为模拟信号,并控制信号的幅度。

常用的DAC芯片有MAX523和TLV5620等。

3.PWM输出电路PWM输出电路用于产生不同频率和占空比的方波信号。

我们可以利用MSP430的定时器功能或使用外部PWM芯片,如L293D或ULN2803A。

4.运放放大电路运放放大电路用于放大DAC输出的信号,以得到更高的输出幅度。

我们可以选择常见的运放芯片,如LM324或OPA2134三、软件设计过程软件设计主要包括定时器配置、PWM输出配置和DAC控制等模块。

1.定时器配置首先,我们需要配置MSP430的定时器,以产生所需的频率。

通过设定定时器的计数周期和分频系数,可以设置定时器的频率。

2.PWM输出配置接下来,我们需要配置PWM输出。

通过设定PWM期间和占空比,可以产生不同频率和占空比的方波信号。

3.DAC控制最后,我们需要利用MSP430的DAC输出控制信号的幅度。

基于MSP430G2553的函数信号发生器

基于MSP430G2553的函数信号发生器

基于MSP430G2553的函数信号发生器#include#include "lcd1602_4.h"#define LDAC_LOW P2OUT &= ~BIT1; //p2.1作为#define LDAC_HIGH P2OUT |= BIT1;#define LOAD_HIGH P1OUT |= BIT0;#define LOAD_LOW P1OUT &= ~BIT0;unsigned char TLVBUF[]={0,0};void TxSPI1(unsigned char c);void TxSPInbytes(unsigned char *p,unsigned char cnt);void TxTLV5620(unsigned char ch,unsigned char data);char xianshi[4]= " ",pinlv[7] = "hello!";unsigned long int p2Keytime1=0, p2Keytime2=0, k,i;unsigned long f_out=1;int a=100, b=99, freq2=123, freq1=123, WaveSelect=0;char *p1,*p2,*pa;int flag = 1,k1,k2,k3,k4;char saw[50]={0x00,0x05,0x0a,0x0f,0x14,0x19,0x1e,0x23,0x28,0x2d,0x32,0x 37,0x3c,0x041,0x46,0x4b,0x50,0x55,0x5a,0x5f,0x64,0x69,0x61,0x73,0x78,0x7d,0x82,0x 87,0x8c,0x91,0x96,0x9b,0xa0,0xa5,0xaa,0xaf,0xb4,0xb9,0xbe,0xc3,0xc8,0xcd,0xd2,0xd7,0x dc,0xe1,0xe6,0xeb,0xf0,0xf5};char squ[50]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x ff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00};char tri[50]={0x00,0x0a,0x14,0x1e,0x28,0x32,0x3c,0x46,0x50,0x5a,0x64,0x61,0x78,0x82,0x8c,0x96,0xa0,0xaa,0xb4,0xbe,0xc8,0xd2,0xdc,0xe6,0xf0,0xe6,0xdc,0xd2,0xc8,0xbe,0xb4,0xa0,0xaa,0x96,0x8c,0x82,0x78,0x61,0x64,0x5a, 0x50,0x46,0x3c,0x32,0x28,0x1e,0x14,0x0a};char sin[50]={0x64,0x5a,0x4e,0x44,0x3b,0x30,0x28,0x21,0x19,0x15,0x11,0x 0e,0x0d,0x0c,0x0e,0x11,0x15,0x19,0x21,0x28,0x30,0x3b,0x44,0x4e,0x5a,0x64,0x6e,0x 79,0x84,0x8e,0x97,0xa0,0xa7,0xae,0xb3,0xb7,0xba,0xbb,0xba,0xb7,0xb3,0xae,0xa7,0 xa0,0x97,0x8e,0x84,0x79,0x6e,0x64};void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTdo{BCSCTL1 |=CALBC1_16MHZ; //Configure DCO: 设置范围可以改变相应的频率DCOCTL |=CALDCO_16MHZ; //Configure DCO:设置频率16MHZBCSCTL3 |=XT2S_2; //Configure XT2:选择2-16MHZBCSCTL3 |=LFXT1S_2; //Configure LFXT1:选择VLO 超低频IFG1 &= ~OFIFG; //清除振荡错误标志for(i = 0; i < 1000; i++)_NOP(); //延时等待}while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待IFG1 &= ~OFIFG; // Clear OSCFault flag//BCSCTL3 |=LFXT1S_2;//ACLK=VLOBCSCTL2 |=SELM_1+DIVM_0;//MCLK=DCO 不分频BCSCTL2 &=~SELS; //SELS=1是前提,使SMCLK=DC0BCSCTL2 |=DIVS_0; //DIVS=1是前提,使SMCLK=8M 2分频//按键中断配置P1DIR |= BIT0+BIT5; // P1.0 output// P1.5 outputP1DIR&=~(BIT6+BIT7);P1IES|=BIT6+BIT7;P1IE|=BIT6+BIT7;P2DIR&=~(BIT2+BIT3);//P2.3 P2.->INPUT//P2SEL&=~(BIT6+BIT7);//关闭第二功能P2IES|=BIT2+BIT3;//下降沿触发P2IE|=BIT2+BIT3;//开中断//SPI信号输出端口设置P1OUT = 0x00; // P1 setup for LED & reset outputP1DIR |= BIT0 + BIT5;P1SEL = BIT1 + BIT2 + BIT4;P1SEL2 = BIT1 + BIT2 + BIT4;//SPI配置UCA0CTL1|=UCSWRST;UCA0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI master UCCKPL为时钟极性控制位// 置位SSEL0与SSEL1时钟的类型,11则为SMCLK;CKPL为时钟极性控制位,0时UCLKI信号// 与UCLK信号极性相同,1时UCLKI信号与UCLK信号极性相反。

基于MSP430的信号发生系统设计

基于MSP430的信号发生系统设计

图1 整机系统框图图2 AD9851功能框图位机的加入可以极大增强用户体验性,使学生不再畏惧实验,同时进一步熟悉实验相关仪器的操作。

本系统的主要功能包含频率计、波形发生器(包括正弦波、方波、三角波、锯齿波)和信号调制功能(包括ASK、PSK和FSK)。

其中,频率计的频率范围为1Hz~500KHz,波形发生器的信号频率和幅度可调,频率范围为10Hz~10MHz,步进1Hz可调,峰峰值范围为20mV~13V,同时还能产生-3V~ +3V的直流偏置。

整机系统框图如图1所示。

该系统分为信号发生模块、信号调理模块、信号反馈模块以及频率测量模块。

PC机通过直接命令,使得两块MSP430单片机能控制各个模块,达到协同工作的效果。

第一块开发板负责控制频率计模块、AD9851DDS模块和AD9834DDS模块,可以测量输入信号的频率,产生幅值较为稳定的正弦信号、方波信号、三角波信号和锯齿波信号,完成ASK、PSK和FSK的演示功能。

第二块开发板负责控制VCA810电压控制模块、后级功放的选择、直流偏置模块与峰值检测模块,实现对前级信号的放大或缩小,并进行峰值幅度校准,以实现用户所需幅度的信号的输出。

演示波形。

2 模块实现2.1 信号发生模块在系统设计中采用AD9851设计输出信号为10Hz~10MHz效电流源,其输出幅度会随所接负载变化而变化后接电压跟随器稳定输出,最后通过一片模拟开关芯片选择正弦波或方波输出。

AD9851功能框图如图AD9834能够产生高性能正弦波和三角波输出执行简单调制,也可实现GMSK案,其功能框图如图3所示。

波、锯齿波以及对输出信号进行而完善了信号发生器的功能。

出做了电压跟随的处理,同时在后级电路中通过现从三角波到锯齿波的转换。

实际中应注意AD9834应该采用模拟部分与数字部分分离设计,并限制在电路板的一定区域内易于被分割。

为实现最佳屏蔽接。

图3 AD9834功能框图益至+40 dB范围内成dB/ V的线性变化。

基于MSP430的函数信号发生器设计方案

基于MSP430的函数信号发生器设计方案
1 . 方 案设 计
输出波形 正弦波 方波
0 o信 号 处 理 模 块 MA X 0 3 8 产 生 的正 弦波 、 三 角波 、 方 波 是 不 可 以 直 接 送 给m s p 4 3 0 单 片 机 进 行 测 量 的 ,那 么 就 要 一 部 分 电 路 实 现 对
A 0 . A 1
函数 信 号 发 生 器 可 以 产 生正 弦波 、方 波 、 三 角 波三 种 信 号, 输 出频 率 频率 范 围为 1 K H Z — l MH Z 。 分为三个档位 : 1 K H Z 一 1 0 K HZ 、 1 0 K H Z — l 0 0 K H Z 、 1 0 0 K H Z — l MH Z 。输 出频 率 可 以 用 频 率电位器 ( 多 圈精 密 电 位器 )调 节 ,输 出 信 号 幅 度 ( V p p ) 从 5 0 mv 到9 V可 调 。 波形 切 换 通 过 一 个 按 键 实 现 . 并 且 可 以从 液 晶显 示 上 可 以显 示 当前 输 出 的波 形 , 频 率 值 和 信 号 幅 度值 。 信 号 产 生 部 分 电路 图采 用 精 密 函数 信 号 发 生 器MA X 0 3 8 。 信 号 处 理 部 分 采 用1 ’ I 公 司 的O P A 3 0 0 , T L 0 8 2 等运放构成。
图2 所示 , 图中前 级两 个O P A 3 0 0 构 成 比较 器 , 参 考 电压 为O 伏, 当U I N z 正 向过零 时 , U 0 1 为 低电平 , U 0 2 为高 电平 , 当U I N 反 向过零 时 , U 0 1 为 高 电平 , U 0 2 为低 电平 . 从 而 将 正 弦 波 转 换 为方 波 。因 为 0 P A 为单 电源供 电 , 所 以输 入 电压 负 值 要 小 于0 . 3 V C C,要 对 输 入 信 号 电 压 进 行 分 压 , U I N / 3 = 1 / 3 = 0 . 3 3 ,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录目录 (1)课程设计任务书 (2)摘要 (3)1.概述 (4)1.1作品基本情况介绍 (4)1.2系统硬件和软件框图 (4)2硬件系统设计 (5)2.1MSP430系列LaunchPad开发板介绍 (5)2.2 方案论证与选择 (5)2.3系统原理图设计 (5)2.4系统PCB图设计 (8)3 程序设计 (9)3.1 程序主流程 (9)3.2 程序设计 (9)3.2.1初始化程序 (9)3.2.2主程序 (10)3.2.3 按键中断 (10)3.2.4波形输出函数 (15)4 程序调试与运行结果 (17)结束语 (18)参考文献 (19)附录1 (20)完整程序 (20)附录2: (29).本科生课程设计成绩评定表 (29)课程设计任务书学生姓名:专业班级:自动化指导教师:工作单位:题目: 基于MSP430的信号发生器设计初始条件:1.运用所学的单片机和C语言等知识;2.用到元件:MSP430 LaunchPad,IAR软件,LED灯。

要求完成的主要任务:基于MSP430单片机设计一款信号发生器,作品采用MSP430Launch Pad结合DAC和运算放大器,实现可产生正弦波、三角波、锯齿波的信号发生器。

①能产生正弦波,三角波,锯齿波;②能通过按键切换波形;③幅值连续可调,频率按键可调,输出使能控制,LED指示;④搭建硬件电路,编制完整的程序并调试;⑤撰写设计说明书及调试心得。

时间安排:1. 1月10日----1月12日查阅资料及确定方案总体设计2.1月13日----1月15日编程3.1月16日开始调试程序4.1月17日撰写课程设计报告5.1月18日正式开始答辩指导教师签名:年月日系主任(或责任教师)签名:年月日摘要信号发生器是电子实验室的基本设备之一,目前各类学校广泛使用的是标准产品,虽然功能齐全、性能指标较高,但是价格较贵,且许多功能用不上。

本设计介绍一款基于MSP430G2452单片机的信号发生器。

该信号发生器虽然功能及性能指标赶不上标准信号发生器,但能满足一般的实验要求,且结构简单,成本较低。

本次需要完成的任务是以MSP430 LaunchPad的单片机为控制核心、LED作为指示、DAC模块作为转换与按键电路作为输入构成的一种电子产品。

MSP430 LaunchPad单片机为控制核心,能实时的进行控制;按键输入调整输出状态,LED灯显示输出波形状态,DAC0832将单片机输出的数字信号转化为模拟量,经运放放大后输出。

在本次程序设计中充分利用了单片机内部资源,涉及到了LED驱动、中断系统、函数调用等。

关键字:MSP430 LaunchPad ,按键输入,DAC0832,OPA071 概述1.1作品基本情况介绍本作品基于TI 的LaunchPad ,选用TI 的MSP430G2452这款单片机设计了一款信号发生器。

作品采用查表原理来实现信号的产生,外围使用一些基本的DAC 和放大电路,实现了可产生正弦波、三角波、锯齿波的信号发生器。

信号发生器的主要技术参数如下:1.频率范围:1HZ--1KHZ2.频率步进间隔:1HZ3.输出幅值:8V4.其他:幅度连续可调、频率按键可调、输出使能控制、LED 指示1.2 系统硬件和软件框图1)系统硬件框图图1 系统硬件框图2)系统软件框图:信号输出图2 系统软件框图2 硬件系统设计2.1 MSP430G2系列LaunchPad开发板介绍TI的MSP430G2系列Launchpad开发板是一款适用于TI 最新MSP430G2xx 系列产品的完整开发解决方案。

其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。

LaunchPad 具有集成的DIP插座,可支持多达20 个引脚,从而使MSP430 Value Line器件能够简便地插入LaunchPad电路板中。

此外,其还可提供板上Flash 仿真工具,以直接连接至PC 轻松进行编程、调试和评估。

此外,它还提供了从MSP430G2xx 器件到主机PC 或相连目标板的9600 波特率的UART 串行连接。

MSP430G2系列Launchpad开发板的特性:USB 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的UART 串行通信速度。

支持所有采用PDIP14 或PDIP20 封装的MSP430G2xx 和MSP430F20xx 器件。

两个通用数字I/O 引脚分别连接至绿光和红光的LED 灯可提供视觉反馈。

两个按钮可实现用户反馈和芯片复位。

器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板。

2.2 方案论证与选择方案一:控制部分由MSP430G2452实现,波形产生采用单片压控函数发生器(MAX038等),可同时产生频率可控可变的正弦波、三角波、方波。

优缺点:简单易行,采用专用芯片,系统体积大大减小;但频率步进的步长很难控制,并且整个设计中MSP430G2452仅完成简单的控制功能,资源没有充分利用。

方案二:由MSP430G2452实现对专门的DDS芯片(如AD9850)的控制,产生各种波形。

优缺点:此方案产生波形的频率稳定度高,易于程控。

但DDS芯片价格高,系统成本高。

方案三:由MSP430G2452结合DAC0832实现各种波形的产生。

优缺点:此方案可以充分利用MSP430G2452上的资源,降低系统成本,但是产生波形频率较低。

综上,方案三充分利用MSP430G2452的资源,外围电路简单、系统成本较低,可以满足信号发生器的要求,所以最终采用方案三。

2.3 硬件电路系统设计系统主控部分采用IT的MSP430G2452 LaunchPad开发板;外围电路主要包括DAC模块、电源及按键模块。

1) DAC模块:DAC模块主要由DAC0832和OPA227PA运算放大器组成。

DAC0832 是8分辨率的D/A转换集成芯片。

与微处理器完全兼容。

这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。

其主要参数如下:* 分辨率为8位;* 电流稳定时间1us;* 可单缓冲、双缓冲或直接数字输入;* 只需在满量程下调整其线性度;* 单一电源供电(+5V~+15V);* 低功耗,20mW其引脚功能如下:* D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);* ILE:数据锁存允许控制信号输入线,高电平有效;* CS:片选信号输入线(选通数据锁存器),低电平有效;* WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。

由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;* XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;* WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。

由WR2、XFER 的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。

* IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;* IOUT2:电流输出端2,其值与IOUT1值之和为一常数;* Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;* Vcc:电源输入端,Vcc的范围为+5V~+15V;* VREF:基准电压输入线,VREF的范围为-10V~+10V;* AGND:模拟信号地;* DGND:数字信号地。

图3 DAC0832引脚图电路原理图如下图所示:图4.DAC模块原理图2)电源及按键模块:系统共使用了四种电源:12V、-12V、5V、-5V。

其中12V 和-12V由电源模块产生,5V和-5V由L7805和L7905产生。

四个按键功能分别为:信号输出使能、频率+、频率-、信号切换。

电源及按键模块电路原理图如下图所示:图5.电源及按键模块原理图2.4 系统PCB图设计1)DAC及放大模块PCB图如下图所示:图6. DAC模块PCB图2)电源及按键模块PCB图如下图所示:图7. 电源及按键模块PCB图3 程序设计3.1 程序主流程如图8所示为程序主流程图:图8系统主流程框图3.2 程序设计系统程序主要分为以下几个模块:初始化程序、主程序、输出程序和中断函数。

3.2.1初始化程序初始化程序主要完成的引脚的配置void Port_init(){//P2.0,P2.5点灯P2DIR|=(BIT0+BIT5);P2OUT|=BIT0;//初始为Sine,点亮相应指示灯P2OUT&=~(BIT5);//四个按键P2.1使能,P2.2波形选择,P2.3频率加,P2.4频率减P2IES|=0x1E;P2IE|=0x1E;P2IFG|=0x1E;P1DIR=0xff;P1OUT=0xaa;}3.2.2主程序主程序要负责总体程序管理功能,全局变量赋值。

int main( void ){WDTCTL = WDTPW + WDTHOLD;//关看门狗WaveSelect=5;f_out=50;M=0;Key=0;K=count[f_out];Port_init(); //IO口初始化_BIS_SR(GIE); //开系统中断while(1){if(Key==1) output();}};3.2.3 按键中断程序主要完成按键的读取,以及相应的输出量赋值。

图9 按键中断流程图#pragma vector = PORT2_VECTOR__interrupt void P2_ISR_KEYS(void) {unsigned int i,Keytime1=0,Keytime2=0; unsigned char PushKey;PushKey=P2IFG&(BIT1+BIT2+BIT3+BIT4); for(i=0;i<1000;i++);//除干扰if((P2IN&PushKey)==PushKey){P2IFG=0;return;}if(PushKey&BIT1)//P2.1输出使能{Key=1;//允许输出信号}if(PushKey&BIT2)//P2.2波形选择{Key=0;WaveSelect+=5;switch(WaveSelect){case 5: P2OUT|=BIT0;P2OUT&=~(BIT5);break;case 10: P2OUT|=BIT5;P2OUT&=~(BIT0);break;case 15: P2OUT|=BIT0+BIT5;break;default: WaveSelect=5;P2OUT|=BIT0;P2OUT&=~(BIT5);break; }}if(PushKey&BIT3)//P2.3 频率加{while((P2IN&BIT3)==0)//判断按键是否是长按{Keytime1++;{Keytime2++;Keytime1=0;if(Keytime2>10){if(f_out<=100)f_out+=5;else f_out=1;Keytime2=0;}}}if(f_out<=100)f_out+=1;else f_out=1;}if(PushKey&BIT4)//频率减{while((P2IN&BIT4)==0)//判断按键是否是长按 {Keytime1++;if(Keytime1>60000){Keytime2++;Keytime1=0;if(Keytime2>10){if(f_out) f_out-=5;}}}if(f_out) f_out-=1;}P2IFG=0;return;}3.2.4输出程序根据各参数量,输出相应数字信号图10 输出函数流程图void output(void){unsigned long j;K=count[f_out];if(WaveSelect==5)//正弦波 {P1OUT=sin[M];for(j=0;j<100000;j+=K); M++;if(M==255)M=0;}if(WaveSelect==10)//锯齿波 {if(M<=255){P1OUT=value[M];for(j=0;j<100000;j+=K); M++;}if(M>255){P1OUT=value[510-M];for(j=0;j<100000;j+=K); M++;if(M==510)M=0;}}if(WaveSelect==15)//三角波{P1OUT=value[M];for(j=0;j<100000;j+=K);M++;if(M==255)M=0;}}4程序调试与运行结果烧录程序后,将LaunchPad重新上电,用示波器观测输出波形,开始时有一个固定电平输出,只有当按下输出允许键后才有输出波形,开始默认输出正弦波,按下波形选择键后表示波形的LED灯会亮,且输出为一固定电平,只有当再次按下输出允许键后才会再次有波形输出;按下频率加减键后,输出波形的频率会做出相应变化,但是由于波形效果不太理想,所以无法测出其频率。

相关文档
最新文档