搜档网
当前位置:搜档网 › 基于MSP430单片机开关稳压电源

基于MSP430单片机开关稳压电源

基于MSP430单片机开关稳压电源
基于MSP430单片机开关稳压电源

开关稳压电源

摘 要:本系统以Boost 升压斩波电路为主电路,采用TL494作为开关稳压电源的核心控制芯片,并加入反接保护、输入过压欠压保护、输出过流保护、输出电压反馈、输出电压显示等辅助系统,实现输出电压30~36V 可调,最大输出电流2A 的功能。

关键词:Boost TL494 开关电源 msp430f149单片机

1 绪 论

开关稳压电源简称开关电源(Switching Power Supply ),通过控制开关管的导通比来维持输出电压的稳定,体积小、重量轻(体积和重量只有线性电源的20~30%)、效率高(一般为60~70%,而线性电源只有30~40%)、自身抗干扰性强、输出电压范围宽、模块化。功耗低、纹波小、噪音低、易扩容等特点,使得开关电源具有高的稳定性和性价比,在仪器、仪表、工业自动化等领域得到广泛应用。

2 系统方案设计

2.1 DC-DC 主回路拓扑

方案一:隔离型的开关电源中高频变换器的基本形式有五种:单端正激式、单端反激式、半桥式、全桥式和推挽式。其中单端正激式和单端反激式结构简单、易于实现,半桥式、全桥式和推挽式电路结构较复杂对驱动电路要求较高、输出功率较大。

方案二:非隔离型DC-DC 变换器没有开关变压器,采用Boost 降压变换器可以实现将直流电压升高,简图如图2-1所示。

第二种方案的电路简洁易于实现,而且性价比也比第一种方案好,故选非隔

离型Boost DC-DC 变换器作为主电路。

2.2控制方法及实现方案

方案一:用PWM 准用芯片产生PWM 控制信号。此防范较易实现,而且工作稳

R L

图2-1 Boost 升压斩波电路拓扑结构

定,不易实现输出电压键盘设定和步进调整。

方案二:用单片机产生PWM控制信号。单片机根据取样电路的反馈对PWM信号做出调整以实现稳压输出。但这种方案很不稳定,实现难以。

综合考虑我们选择方案一。

2.3系统总体框图

系统总体框图如图2-1所示。

图2-2 系统总体框图

2.4 提高效率的方法及实现方案

Boost升压斩波电路中开关管的选取:电力晶体管(GTR)耐压高、工作频率较低、开关损耗大;电力场效应管(Power MOSFET)开关损耗小、工作频率较高。从工作频率和降低损耗的角度考虑,选择电力场效应管作为开关管。

选择合适的开关工作频率:为降低开关损耗,应尽量降低工作频率;为避免产生噪声,工作频率不应在音频内。综合考虑后,我们把开关频率设定为20kHz。

Boost升压电路中二极管的选取:开关电源对于二极管的开关速度要求较高,可从快速恢复二极管和肖特基二极管中加以选择。与快速恢复二极管相比,肖特基二极管具有正向压降很小、恢复时间更短的优点,但反向耐压较低,多用于低压场合。考虑到降低损耗和低压应用的实际,选择肖特基二极管。

3 电路设计与参数确定

3.1 Boost升压子系统的设计

这里我们在常见的Boost升压结构的基础之上外加反接保护、过压欠压保护构成,达到使系统更加安全可靠地目的,输出滤波部分加多级电容使输出文波更

小, 反接保护功能由二极管和保险丝实现,电路如图3-1 。

图3-1 输入反接保护模块原理图

Boost 升压的DC-DC 拓扑结构如图3-2所示。

图3-2 Boost 升压模块原理图

3.2重要元器件参数的选择

开关管的选择:选择导通电阻小的IRF540作为开关管,其导通电阻仅为77m Ω(V GS =10V, I D =17A )。IRF540击穿电压V DSS 为55V ,漏极电流最大值为28A (V GS =10 V , 25°C),允许最大管耗P CM 可达50W ,完全满足电路要求。

肖特基二极管的选择:选择ESAD85M-009型肖特基二极管,其导通压降小,通过1 A 电流时仅为0.35V ,并且恢复时间短。实际使用时为降低导通压降将两个肖特基二极管并联。

电感参数的计算:

()2

2

O

O IN O IN

B fU mI U U U L -= (3-1) 其中,m 是脉动电流与平均电流之比取为0.25,开关频率f=25 kHz,输出电压为36V 时,L B =527.48μH ,取530μH 。

电感线径的计算:最大电流I L 为2.5A ,电流密度J 取4 A/mm 2,线径为d,

则由L I d J =2

2

*)(π得d=0.892 mm,工作频率为25kHz,需考虑趋肤效应,制作中采取多线并绕方式,既不过流使用,又避免了趋肤效应导致漆包线有效面积的减小。

电容的参数计算:

O

O IN O O B U f U U U I C ?-=

(3-2)

其中,ΔU O 为负载电压变化量,取20 mV,f=25kHz,U O =36V 时,C B =1465μF,取为2000μF ,实际电路中用多只电容并联实现,减小电容的串联等效电阻(ESR ),起到减小输出电压纹波的作用,更好地实现稳压。

3.3 输入欠压过压保护

输入的15V ~21V 交流电经整流滤波后电压为18V ~27V ,当输入18

V +3>V -2,V -6

路正常工作;当输入VIN<18V 或VIN>27V 时,与非门输出高电平,继电器断开,是电路达到保护作用。如图3-3所示。

图3-3 输入欠压过压模块原理图

3.4 TL494控制电路的设计

TL494是一种固定频率脉宽调制电路,它包含了开关电源控制所需的全部功

能,泛应用于单端正激双管式、半桥式、全桥式开关电源。TL494有SO-16和PDIP-16两种封装形式,以适应不同场合的要求。这里我们选择单端工作方式,由于TL494内部集成多个运放,所以本系统将过流保护和电压反馈都集成在TL494里面,充分利用他的功能实现整个电路的过流恢复和输出电压稳定的功

能。

我们把1脚和2脚的运放用作电压反馈的输入端口,当输入电压增加时,1脚的采样电压增大,运放的正向输入端电压高于反向输入端,经过内部运放,或非门后使占空比减小,输出电压减小,从而使输出稳定。

将15脚和16脚的运放用作过流保护的输入端口,输出电流增加时(大于2A),运放的正向输入电压高于反向输入电压,最终使占空比减小,减小了输出电压,从而电流减小,达到过流恢复的功能。连接图如3-4所示。

图3-4 TL494模块原理图

TL494还有一个比较独特的功能,他可以实现输出电压由低到高慢慢建立,实现软启动,上电时,C1充电需要一定时间,死区电压由高逐渐变低,Q1管的导通时间逐渐增大,输出电压逐渐升高。

3.5 输出电压显示

我们使用MSP430单片机内自带的12位ADC,将输出电压采样显示,充分利用片内资源,节约硬件的使用,使本系统更加完善。

4测试与分析

4.1测试环境及仪器

在室温下进行测量,所用仪器如下:

表4-1 测量工具

4.2测试结果

电压调整率测试

测试方法:在I

0=1A时,通过调整变压器改变U

2

,测量U

,表4-1所示。

表4-1 测量结果

由以上测试结果可以计算出,系统的电压调整率达到1.15%,满足题目要求。负载调整率测试

测试方法:在U

2=19.2V时,改变负载大小,测量U

的值,表4-2所示表4-2测量结果

由以上测试结果可以计算出,系统的负载调整率达到1.82%,满足题目要求。效率测试

测试方法: U

2=19.2V, U

=30.0V时,测试输入电压电流,输出电压电流得

到,表4-3所示。

表4-3测量结果

去掉最高与最低测量值,计算得效率平均值为79.40%。

输出噪声文波测试

测试方法:将电源的输出端连接到60MHZ模拟示波器(AC耦合,扫描速度

20ms/div),在U

2=18V、U

=32V、I

=1A时观察波形图像,并记录文波电压峰-

峰值等于100mV,符合题目设计要求。

4.3测试结果与要求比较分析

测试数据与设计指标的比较,如表4-4所示。

表4-4 结果比较

产生偏差的原因:对效率等进行理论分析和计算时,采用的是器件参数的典型值,但实际器件的参数具有明显的离散性,电路性能很可能因此无法达到理论分析值。

电路的制作工艺并非理想的,会增加电路中的损耗。

改进方法:使用性能更好的器件,如换用导通电阻更小的电力MOS管,采用低阻电;使用软开关技术,进一步减小电力MOS管的开关损耗;采用同步式开关电源的方案,用电力MOS管代替肖特基二极管以减小损耗;优化软件控制算法,进一步减小电压调整率和负载调整率。

附录电路原理图

MSP430单片机实验报告v3.0

MSP430单片机课程设计 一.设计要求 数字温度计 (1)用数码管(或LCD)显示温度和提示信息; (2)通过内部温度传感器芯片测量环境温度; (3)有手动测量(按测量键单次测量)和自动测量(实时测量)两种工作模式; (4)通过按键设置工作模式和自动测量的采样时间(1秒~1小时); (5)具备温度报警功能,温度过高或过低报警。 二.系统组成 系统由G2Launch Pad及其拓展板构成,单片机为MSP430G2553。 I2的通信方式对IO进行拓展,芯片为TCA6416A; 使用C 使用HT1621控制LCD; 三.系统流程 拓展的四个按键key1、key2、key3、key4分别对应单次测量、定时测量、定时时间的增、减。定时时间分别为1s,5s,15s,30s,60s。在自动测量模式下,当温度超过设定温度上限

即报警,报警时在LCD屏幕显示ERROR同时LED2闪烁,在5s后显示0℃。此时可重新开始手动或自动测量温度。 系统示意图: 四.演示 a)手动测量温度 b)自动测量温度 c)报警

显示ERROR同时LED闪烁d)设置时间界面 五.代码部分 #include "MSP430G2553.h" #include "TCA6416A.h" #include "LCD_128.h" #include "HT1621.h" #include "DAC8411.h" #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) static int t=0; long temp; long IntDeg; void ADC10_ISR(void); void ADC10_init(void); void LCD_Init(); void LCD_Display(); void GPIO_init(); void I2C_IODect(); void Error_Display(); void WDT_Ontime(void); void LCD_Init_AUTO(); void LCD1S_Display();

南理工 王宏波 MSP430F6638单片机实验报告

MSP430单片机应用技术 实验报告 学号:XXXXXXXX

实验1 一、实验题目:UCS实验 二、实验目的 设置DCO FLL reference =ACLK=LFXT1 = 32768Hz, MCLK = SMCLK = 8MHz,输出ACLK、SMCLK,用示波器观察并拍照。 UCS,MCLK、 SMCLK 8MHz 的 1 2 六、实验结果 实验2 一、实验题目:FLL+应用实验 二、实验目的

检测P1.4 输入,遇上升沿进端口中断,在中断服务程序内翻转P4.1 状态。 三、实验仪器和设备 计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5 四、实验步骤 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; WDT 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; 3、新建工作空间workspace; 4、新建工程project与源文件main.C; 5、编写程序; 6、编译、调试、下载程序到单片机;

7、观察、分析、保存运行结果。 五、实验程序 实验4 一、实验题目:WDT_A实验 二、实验目的 定时模式 1 2 六、实验结果 实验5一、实验题目:Timer_A实验

二、实验目的 比较模式-Timer_A0,两路PWM 输出,增减计数模式,时钟源SMCLK,输出模式7 TACLK = SMCLK = default DCOCLKDIV。PWM周期CCR0 = 512-1,P1.6 输出PWM占空比CCR1 = 37.5%,P1.7输出PWM占空比CCR1 =12.5%。 要求: (1)用示波器观察两路PWM 输出的波形并拍照,测量周期、正脉宽等参数,与理论值进行对比分析。 (2 (3 1 2 实验6 一、实验题目:ADC12实验 二、实验目的 ADC12 单次采样A0 端口,根据转换结果控制LED 状态。

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

MSP430单片机实验报告

MSP430单片机实验报告 专业: 姓名: 学号:

MSP430单片机实验报告 设计目标:使8位数码管显示“5201314.”,深入了解串行数据接口。 实现过程:主要分为主函数、驱动8位数码管函数、驱动1位数码管函数及延时函数。 延时函数:采用for循环。 驱动1位数码管子函数:设置74HC164的时钟传输和数传输,声明变量,使数据表中每一个要表示的字符的每一位都与shift做与运算从而进行传输,上升沿将传输数据传送出去。驱动1位数码管子函数的流程图如图1所示。 图1 驱动1位数码管子函数流程图 驱动8位数码管子函数:调用8次驱动1位数码管子函数。驱动8位数码管子函数流程图如图2所示。 图2 驱动8位数码管流程图

while 图3 主函数流程图 实验结果:供电后,数码管显示“5201314.”字样。 源程序: /************* 程序名称:5201314.*************/ /***程序功能:通过模拟同步串口控制8个共阳数码管***/ /*******P5.1 数据管脚,P5.3 同步时钟管脚*******/ #include // 头文件 void delay(void); // 声明延迟函数void seg7_1 (unsigned char seg7_data); // 声明驱动1 位数码管函数void seg7_8 ( unsigned char seg7_data7, unsigned char seg7_data6, unsigned char seg7_data5, unsigned char seg7_data4, unsigned char seg7_data3, unsigned char seg7_data2,

MSP430单片机AD转换实验

A/D转换实验 一、转换原理 MSP430F149的A/D转换器原理请参考相关书籍。 实验板上与AD相关的硬件电路: 编程工作实际就是对以下寄存器的操作: 寄存器类型寄存器缩写寄存器的含义 转换控制寄存器ADC12CTL0转换控制寄存器0 ADC12CTL1转换控制寄存器1 中断控制寄存器ADC12IFG中断标志寄存器ADC12IE中断使能寄存器ADC12IV中断向量寄存器 存储及其 控制寄存器ADC12MCTL0 ~ ADC12MCTL15存储控制寄存器0~15 ADC12MEM0 ~ ADC12MEM15 存储寄存器0~15

设计主程序和中断服务程序。 二、转换程序 1、程序1:转换结果发送到PC 主程序中进行A/D初始化,中断服务程序读A/D转换结果,主程序中通过串口发送结果。 “”主程序与中断程序: /********************************************************* 程序功能:将ADC对端口电压的转换结果按转换数据和对应的 模拟电压的形式通过串口发送到PC机屏幕上显示 ----------------------------------------------------------- 通信格式: 9600 ----------------------------------------------------------- 测试说明:打开串口调试精灵,正确设置通信格式,观察接收数据 **********************************************************/ #include <> #include "" #include "" #include "" #define Num_of_Results 32 uint results[Num_of_Results]; //保存ADC转换结果的数组 uint average; uchar tcnt = 0; /***********************主函数***********************/ void main( void ) {

430单片机点亮LED实验报告

430单片机点亮LED实验报告 一.安装实验软件IAR 二.编写点亮LED灯程序 1.使P1.0口LED灯会不停的闪烁着,程序 #include typedef unsigned int uint; typedef unsigned char uchar; /*延时函数*/ void Delay_Ms(uint x) { uint i; while(x--)for(i=0;i<250;i++); } /*主函数*/ int main( void ) { WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset P2DIR|=BIT0;//定义P1口为输出 while(1)//死循环 { P2OUT^=BIT0;//P1.0口输出取反

Delay_Ms(600);//稍作延时 } } 下载进去看到了P1.0口LED灯会不停的闪烁着。 2.实验目的让两盏灯交换闪烁程序 #include"msp430g2553.h" void main(void) { void Blink_LED(); WDTCTL=WDTPW+WDTHOLD; //关闭看门狗 P1DIR=BIT6; P2DIR=BIT0; while(1) { Blink_LED(); } } void Blink_LED() { _delay_cycles(1000000); //控制第二个LED P1OUT^=BIT6; _delay_cycles(1000000); //控制第一个LED P2OUT^=BIT0;

MSP430单片机GPIO实验教程

GPIO实验教程 2015/7/24 官网地址:http://www.fengke.club

目录 第一节GPIO硬件介绍 (2) 第二节GPIO寄存器介绍 (3) 第三节实验 (5) 第四节实验现象 (7)

第一节GPIO硬件介绍 MSP430F5438A单片机属于5系列单片机,该系列的单片机最多可以提供12路数字IO接口,P1~P11以及PJ。大部分接口都有8个管脚,但是有些接口会少于8 个管脚。可以参考说明文档中关于接口的章节。每个I/O 管脚都可以独立的设置为输入或者输出方向,并且每个I/O 接线都可以被独立的读取或者写入。所有接口的寄存器都可以被独立的置位或者清零,就像设置驱动能力一样。 P1和P2接口具中断功能。从P1和P2接口的各个I/O管脚引入的中断可以独立的被使能并且设置为上升沿或者下降沿出发中断。所有的P1接口的I/O管脚的中断都来源于同一个中断向量P1IV,并且P2接口的中断都来源于另外一个中断向量P2IV。在一些MSP430x5xx单片机中,附加的接口也具有中断功能。详细说明请查阅芯片的说明文档。 每个独立的接口可以作为字节长度端口访问或者结合起来作为字长度端口进行访问。端口配对P1/P2、P3/P4、P5/P6、P7/P8 等联合起来分别叫做PA、PB、PC、PD 等。当进行字操作写入PA 口时,所有的16 为都被写入这个端口。利用字节操作写入PA 口的低字节时,高字节保持不变。相似地,使用字节指令写入PA 口高字节时,低字节保持不变。其它端口也是一样的,当写入的数据长度小于端口最大长度时,那些没有用到的位保持不变。所有的端口寄存器都利用这个规则来命名,除了中断向量寄存器P1IV 和P2IV。它们只能进行字节操作,并且PAIV 这个寄存器根本不存在。 利用字操作读取端口PA可以使所有16位数据传递到目的地。利用字节操作读取端口PA(P1或者P2)的高字节或者低字节并且将它们存储到存储器时可以只把高字节或者低字节分别传递到目的地。利用字节操作读取PA口数据并写入通用寄存器时整个字节都被写入寄存器中最不重要的字节。寄存器中其它重要的字节会自动清零。端口PB、PC、PD 和PE 都可以进行相同的操作。当读入的数据长短小于端口最大长度时,那些没有用到的位被视零,PJ 口也是一样的。 数字I/O的主要特征有: 1、可以独立编程的独立I/O口; 2、可以任意的混合输入输出; 3、独立配置P1、P2口的中断; 4、独立的输入和输出数据寄存器; 5、独立配置上拉或下拉电阻。

MSP430单片机AD转换实验

AD转换实验 一、转换原理 MSP430F149勺A/D转换器原理请参考相关书籍。实验板上与AD相关的硬件电路: RV3 10K ------------ 3-3\ J6 P61 SI?2 Al)输入电路 RV4 III-10K f > 2 ; ||| 二、转换程序 1、程序1:转换结果发送到PC 主程序中进行A/D初始化,中断服务程序读A/D转换结果,主程序中通过串口发送结果。

“ main 、c ”主程序与中断程序: /********************************************************* 程序功能:将ADC 对P6、0端口电压的转换结果按转换数据与对应的 模拟电压的形式通过 串口发送到 PC 机屏幕上显示 通信格式 :N 、 8、 1, 9600 测试说明 :打开串口调试精灵 ,正确设置通信格式 ,观察接收数据 **********************************************************/ #include #include "allfunc 、 h" #include "UART0_Func 、 c" #include "ADC_Func 、 c" #define Num_of_Results 32 uint results[Num_of_Results]; // 保存 ADC 转换结果的数组 uint average; uchar tcnt = 0; /*********************** void main( void ) { uchar i; uchar buffer[5]; WDTCTL = WDTPW + WDTHOLD; // 关狗 /* 下面六行程序关闭所有的 IO 口 */ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; P6DIR |= BIT2;P6OUT |= BIT2; // P6DIR|=BIT6;P6OUT&=~BIT6; // InitUART(); Init_ADC(); _EINT(); buffer[4] = '\0'; 主函数 ********************* 关闭电平转换 关闭数码管显示

MSP430 按键程序范例(附原理图)

#i nclude void Init_Port(void) { //将P1口所有的管脚在初始化的时候设置为输入方式 P1DIR = 0; //将P1口所有的管脚设置为一般I/O口 P1SEL = 0; // 将P1.4 P1.5 P1.6 P1.7设置为输出方向 P1DIR |= BIT4; P1DIR |= BIT5; P1DIR |= BIT6; P1DIR |= BIT7; //先输出低电平 P1OUT = 0x00; // 将中断寄存器清零 P1IE = 0; P1IES = 0; P1IFG = 0; //打开管脚的中断功能 //对应的管脚由高到低电平跳变使相应的标志置位 P1IE |= BIT0; P1IES |= BIT0; P1IE |= BIT1; P1IES |= BIT1; P1IE |= BIT2; P1IES |= BIT2; P1IE |= BIT3; P1IES |= BIT3; _EINT();//打开中断 return; } void Delay(void) { int i; for(i = 100;i--;i > 0) ;//延时一点时间 } int KeyProcess(void) { int nP10,nP11,nP12,nP13; int nRes = 0;

//P1.4输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 13; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 14; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 15; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 16; //P1.5输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 9; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 10; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 11; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 12; //P1.6输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 5; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 6; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 7; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 8; //P1.7输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 1; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 2; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 3; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 4; P1OUT = 0x00;//恢复以前值。

基于MSP430单片机的环境参数监测仪的设计制作

毕业设计(论文) 题目:基于MSP430单片机的环境 参数监测仪的设计制作 指导者: 评阅者: 2014 年 4 月

毕业设计(论文)中文摘要 温湿度和光照度等参数是标定环境不可缺少的参数,对其进行准确的测量具有重要意义。本文以室内外居住环境为背景,设计出一种以MSP430F5438A超低功耗单片机为控制核心的环境参数监测仪。 论文对环境参数监测系统硬件和软件模块包括子系统模块进行了详细设计:通过相应的传感器芯片对包括温度、湿度、光强、红外辐射度和可燃气体浓度等环境参数进行检测和采集;通过微处理器MSP430F5438A将传感器芯片采集到的数据进行分析处理,并在液晶终端进行参数的实时显示和监控。 论文分别对温度传感器模块,单总线湿度传感器模块,光照度传感器模块,气敏传感器模块,红外热释电模块以及按键和液晶显示模块进行了单模块分别调试。在此基础上对这些子程序模块进行了整合调试及整机功能和功耗测试,最终完成整个监控系统及仪器的设计制作。 实验显示,本环境参数监测仪具有体积小、携带方便、功耗低、可靠性高、免维护、成本低等优点,在室内外环境参数监测领域,具有很好的应用前景。 关键词:MSP430单片机环境参数监测传感器液晶显示

毕业设计(论文)外文摘要 Title: The Design and Production of Environmental Parameter Monitor Based on MSP430 Abstract: Parameters such as temperature, humidity and illuminance are indispensable to the calibration environment, which has important significance for accurate measurement. The aim of this thesis is to design an environmental parameter monitor, which controlled by an ultra-low power MSP430F5438A for indoor and outdoor living environment. The detailed design of hardware and software module including subsystem module in the environmental parameter monitor is proposed in this thesis. The corresponding sensor chip is used to detect and collect the environmental parameter such as temperature, humidity, illuminance, the infrared radiation intensity and combustible gas concentration. The MSP430F5438A analyzes and processed the data which collected by sensor chips, and realized the real-time display and monitoring for parameters on LCD terminal. The thesis proceeds debugging on single module likes temperature sensor module, single bus humidity sensor module, illuminance sensor module, gas sensor module, pyroelectric infrared module and buttons and LCD module, respectively. On the basis of that, after debugging and test on the function and power for the integrated subroutine modules, the design and production of the whole monitoring system and instrument is completed. Test results given show that the environmental parameter monitor has several advantages, such as small volume, portable, low power

MSP430单片机定时器实验报告

实验四定时器实验 实验目的: MPS430F5529片内集成的定时器A的使用,学习计数器的补捕获比较模块的使用。实验内容: 定时器采用辅助时钟ACLK作为计数脉冲,fACLK=32768Hz,实现以下功能: 1.定时器TA0延时1s,点亮或熄灭LED6,即灯亮1s灭1s,如此循环,采用中断服务程序实现。 2.定时器TA0延时1s,点亮或熄灭LED4,采用捕获比较器CCR0的比较模式,设定输出方式,输出方波,不用中断服务程序 3.采用捕获比较器CCR1的比较模式LED5,设定输出方式,输出PWM波形,使LED 亮2s,灭1s。 4.用定时器实现30s倒计时,在液晶模块上显示,每过一秒显示数字变化一次。 5.使用TA1的捕获比较器CCR0捕获按键的间隔时间,在液晶模块上显示。 程序代码: 程序1: #include void main() {WDTCTL = WDTPW + WDTHOLD; //关看门狗 P1DIR |= BIT3; //设置P1.0口方向为输出。 TA0CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1, //CCR0捕获/比较功能中断为允许。 TA0CCR0 = 32767; //捕获/比较控制寄存器CCR0初值为32767 TA0CTL = TASSEL_1 + MC_1+TACLR; //设置定时器A控制寄存器TACTL, //使时钟源选择为SMCLK辅助时钟。 //进入低功耗模式LPM0和开总中断 _BIS_SR(LPM0_bits +GIE); } //定时器A 中断服务程序区 #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A (void) {

msp430单片机实现猜数字游戏

Msp430猜数字游戏设计 设计任务: 1.先以一组四位数字为原版; 2.游戏参与者依次输入所猜测的四位数字,单片机根据所说入的四 位数字,进行提示xAyb,x为数字位置都正确的个数,y为数字正确位置不正确的个数; 3.设置按键显示正确结果。 设计方案: 根据第一个实验设计进行改变,在其基础上添加比较compare()子函数,运行时调用次子函数进行比较。之后显示结果。 设计目的: 体验单片机的趣味性。 程序代码: #include #define uchar unsigned char #define uint unsigned int unsigned char yuanshu[4]={9,4,7,3}; //设置原数组//

unsigned char leddata[27] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8f,0xbf,0x89,0xb9 ,0xff,0x86,0xaf,0xcf,0xc7,0x91,0x8c}; unsigned char time[8] = {0,10,0,11,0,0,0,0};//初始数码管unsigned char getkey(void); unsigned int qiushu(); long compare(); void qingping(void); void fenjie(); void delay(unsigned int asdf) { for(uint asd=0;asd

单片机原理及应用_第十讲_MSP430单片机的ADC实验报告

单片机原理及应用 第十讲 MSP430单片机的ADC 实验报告 报告人:学号:同组人员: 实验内容 实验1 AD采集输入电压并比较 实验2 AD内部温度采集实验 实验3 验收实验:温度采集与显示 把实验2中的实测温度值以摄氏度数值显示在段码LCD上。 实验步骤 步骤: (1) 将PC 和板载仿真器通过USB 线相连; (2) 打开CCS 集成开发工具,选择样例工程或自己新建一个工程,修改代码; (3) 选择对该工程进行编译链接,生成.out 文件。然后选择,将程序下载到实验板中。程序下载完毕之后,可以选择全速运行程序,也可以选择

单步调试程序,选择F3 查看具体函数。也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。再按下实验板的复位键,运 行程序。(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议 上电运行程序)。 关键代码: 实验1 AD采集输入电压并比较 #include int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 on ADC12CTL1 = ADC12SHP; // Use sampling timer ADC12IE = 0x01; // Enable interrupt ADC12CTL0 |= ADC12ENC; P6SEL |= 0x01; // P6.0 ADC option select P4DIR |= BIT1; // P4.1 output while (1) { ADC12CTL0 |= ADC12SC; // Start sampling/conversion __bis_SR_register(LPM0_bits + GIE); // LPM0, ADC12_ISR will force exit __no_operation(); // For debugger } } #pragma vector = ADC12_VECTOR __interrupt void ADC12_ISR(void) { switch(__even_in_range(ADC12IV,34)) { case 0: break; // Vector 0: No interrupt case 2: break; // Vector 2: ADC overflow case 4: break; // Vector 4: ADC timing overflow

MSP430单片机实验指导书

试验一 一、实验目的 进一步熟悉IAR for MSP430编程软件和PROTEUS仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。掌握MSP430单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。掌握PROTEUS仿真软件仿真MSP430单片机过程中的注意事项。 二、实验内容 1、运用PROTEUS仿真软件绘制LED流水灯电路; 2、运用IAR for MSP430编程软件编辑led流水灯程序,并且生成.hex 或.d90文件,并且将生成的文件加载到单片机中,程序使用P1或其它端口来演示跑马灯,输出低电平驱动。 三、实验器材 电脑一台 四、实验原理及介绍 LED流水灯实际上是一个带有发光二极管的单片机最小系统,即由led灯、电阻、电容器、电源等电路和必要的软件组成的单个的单片机;如果要让接在P1或其它端口的LED灯亮起来,那么只需要将P1或其它端口的电平变为低电平就可以了。同理,将该端口电平变为高电平,LED灯就会熄灭。 五、程序流程图 开始 端口初始化 LED顺序点亮 结束 六、实验步骤 1、运用PROTEUS仿真软件绘制电路图; 2、运用IAR for MSP430编写流水灯程序,并且生成‘’.hex’’或“.d90”文件

3、将‘’.hex’’或“.d90”文件软件加载到PROTEUS仿真软件中; 4、换一种流水灯的亮灭顺序,改变延时时间的大小,多次实验,灵活使用 七、参考程序 #include "msp430f249.h" #define uint unsigned int /******************** 主函数 **************************/ void main(void) { Uint I; WDTCTL = WDTPW + WDTHOLD; P1DIR = ox0ff; while(1) { PIOUT = 0x00; For(I = 0;I < 65565;I ++); PIOUT = 0x0ff; For(I = 0;I < 65565;I ++); } } 八、心得体会(二页以上)

重大光电MSP430单片机实验代码

实验一 #include int main(void) #include int main(void) {WDTCTL=WDTPW+WDTHOLD; int flag=0; P4REN |=BIT0+BIT1+BIT2+BIT3+BIT4; P4OUT |=BIT0+BIT1+BIT2+BIT3+BIT4; P1DIR |=BIT0+BIT6+BIT7; while(1) { if((P4IN&BIT0)==0) { if ((P4IN&BIT0)==0) { flag=7; } } if((P4IN&BIT4)==0) { if ((P4IN&BIT4)==0) { flag=3; } } if((P4IN&BIT2)==0) { if ((P4IN&BIT2)==0) { flag=5; } } if(flag==7) {P1OUT |=BIT0;P1OUT |=BIT6;P1OUT &=~BIT7; } if(flag==3) {P1OUT |=BIT0;P1OUT |=BIT7;P1OUT &=~BIT6; } if(flag==5) {P1OUT &=~BIT0; } } }

实验二 #include void initAdc() { ADC12CTL0 |= ADC12MSC;//自动循环采样转换 ADC12CTL0 |= ADC12ON;//启动ADC12模块 ADC12CTL1 |= ADC12CONSEQ1 ;//选择单通道循环采样转换 ADC12CTL1 |= ADC12SHP;//采样保持模式 ADC12MCTL0 |= ADC12INCH_7; //选择通道15,连接拨码电位器 ADC12CTL0 |= ADC12ENC; } int main(void) { WDTCTL = WDTPW +WDTHOLD; P4DIR |=BIT5+BIT6+BIT7; P5DIR |=BIT7; P8DIR |=BIT0; ADC12CTL0=ADC12SHT0_8; initAdc(); ADC12IE|=BIT0; ADC12CTL0|=ADC12SC; _EINT();// 开中断 } #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR(void) { if(ADC12MEM0>=3686) { P4OUT |=BIT5+BIT6+BIT7; P5OUT |=BIT7; P8OUT |=BIT0; } if(ADC12MEM0>=2867) { P4OUT &=~BIT5; P4OUT |=BIT6+BIT7; P5OUT |=BIT7;P8OUT |=BIT0; } if(ADC12MEM0>=2048) { P4OUT &=~BIT5;P4OUT &=~BIT6;P4OUT |=BIT7;P5OUT |=BIT7;P8OUT |=BIT0; } if(ADC12MEM0>=1229) { P4OUT &=~BIT5;P4OUT &=~BIT6;P4OUT &=~BIT7;P5OUT |=BIT7;P8OUT |=BIT0;} if(ADC12MEM0>=410) { P4OUT &=~BIT5;P4OUT &=~BIT6;P4OUT &=~BIT7;P5OUT &=~BIT7;P8OUT |=BIT0; } else { P4OUT=0x00; P5OUT=0x00; P8OUT=0x00; } }

基于MSP430单片机的交流电压测量设计

基于MSP430单片机的交流电压测量设计 东南大学仪器科学与工程学院 许欢 摘要:在单片机的一些测量中,有时候需要我们直接测量交流信号, 现介绍一种基于 msp430 单片机实现的交流电压的测量方法。 关键字:MSP430单片机,交流电压,测量,中断 日常生活及学习中, 我们一般需要之间测量交流信号, 测量交流信号的方法有很多, 而在 应用单片机的测量中,我们常常用来测量直流电压,现在将介绍一种基于 msp430单片机实 现的交流电压的测量方法。 系统的构成主要分硬件设计和软件设计两块来介绍。 硬件设计: 为了保证硬件电路设计的通用性, 采用单级性电压测量的方法, 将输入的双极性电压转换 成单级性电压进行测量。 整个电路主要包括极性转换电路和输入处理电路。 其中,极性转换 电路主要由放大电路实现,在此我采用 MCP 601放大芯片。 MCP601芯片:(Microchip 公司的一款高性能的放大芯片) Vcc 管脚:电源管脚 GND 管脚:接地管脚 VIN-管脚:负输入端管脚 VIN+管脚:正输入端管脚 OUT 管脚:输出管脚 极性转换电路设计: 在进行A/D 转换时,我们一般会采用芯片的工作电压作为 A/D 转换的参考电压。由于一般 芯片的工作电压都为正电压, 而我们在这里要测量交流电压, 所以要对输入的交流信号进行 极性转换,将双极性变成单级性。下图为极性转换电路: 如图所示,该芯片共有 8个管脚,

在极性转换电路中,ADOUT 为输出信号。输出信号是在输入信号 ADIN 的基础上叠加了一 个直流分量,调节上面的 Vref 的值就可以改变直流分量的值。如果调节 Vref 使直流分量的 值为1.5V ,并且此时输入信号是幅值为 1.5V 的交流正弦信号,那么输出信号就为最大值为 3V ,最小值为0V 的单级性正弦信号。在极性转换电路基础上我们将很容易设计出我们要的 输入电路。 输入处理电路: 在极性转换电路基础上,输入处理电路需要将 220V 的交流电压信号变为幅值为 1.5V 左右 的交流信号,此外,还需要为 MCP 601提供适当的参考电压信号。电路如下图所示: 从所设计的电路中我们可以得到, 首先通过变压器将 220V 的交流电压降成 8V 的交流电压, 再经过极性转换电路将双极性的交流电压转换为单级性的交流电压。电路中的 R405电位器 主要用于调节参考电压, R404电位器用于调节交流输入电压的幅度。 经过上面电路的处理, 可以将输入的交流电压转换成 0?3V 的单级性交流电压,这样很容易使用 MSP430单片机 自带的A/D 转换通道进行模拟量采集,从而实现交流电压的测量。 在上面的电路中,电压采用 3V 供电,电源芯片采用 TPS76030,实现电路如下图所示: R403 0.0 4.19K 厂 C4M 二 R401 4 721t C404 O.O47nf tic NC _S O.lnf ^C4C2 V1H- Vcc 7 J ■ ? r riTTT —s UU 1 GHD HC _5 2 kDOUT 琴曲 3 MOI~ —斗 I 01肚

msp430f6638单片机实验程序

实验一 验证性试验 #include int flag; void DCmotor(int p) { switch(p) { case 0: {P1OUT &=~ BIT0; //停转 P1OUT &=~ BIT6; P1OUT &=~ BIT7; break; } case 1: {P1OUT |= BIT0; //正转 P1OUT |= BIT6; P1OUT &=~ BIT7; break; } case 2: { P1OUT |= BIT0; P1OUT &=~ BIT6; P1OUT |= BIT7; break; } } } int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer P4REN |=BIT0+BIT1+BIT2+BIT3+BIT4; // 上下拉电阻使能P4OUT |=BIT0+BIT1+BIT2+BIT3+BIT4; //设置为上拉电阻P4DIR |=BIT5+BIT6+BIT7; //LED管脚设置 P5DIR |=BIT7; P8DIR |=BIT0; P1DIR |= BIT0+BIT6+BIT7; while(1) { if((P4IN&BIT0)==0){ //按键S7 __delay_cycles(160000); if((P4IN&BIT0)==0) { flag=2;}} if((P4IN&BIT4)==0){ //按键S3 __delay_cycles(160000); i f((P4IN&BIT4)==0) { flag=1;}} DCmotor(flag); } } 设计性试验 #include int main(void) { WDTCTL = WDTPW +WDTHOLD; P4REN |=BIT0+BIT2+BIT4; P4OUT |=BIT0+BIT2+BIT4; P1DIR |=BIT0+BIT6+BIT7; while(1) { if((P4IN&BIT0)==0)

相关主题