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

MSP430 按键程序范例(附原理图)
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;//恢复以前值。

//读取各个管脚的状态

nP10 = P1IN & BIT0;

nP11 = P1IN & BIT1;

nP12 = P1IN & BIT2;

nP13 = P1IN & BIT3;

for(;;)

{

if(nP10 == 1 && nP11 == 1 && nP12 == 1 && nP13 == 1) {

//等待松开按键

break;

}

}

return nRes;

}

// 处理来自端口 1 的中断

interrupt [PORT1_VECTOR] void PORT_ISR(void)

{

Delay();

KeyProcess();

if(P1IFG & BIT0)

{

P1IFG &= ~(BIT0);// 清除中断标志位

}

if(P1IFG & BIT1)

{

P1IFG &= ~(BIT1);// 清除中断标志位

}

if(P1IFG & BIT2)

{

P1IFG &= ~(BIT2);// 清除中断标志位

}

if(P1IFG & BIT3)

{

P1IFG &= ~(BIT3);// 清除中断标志位

}

}

void Init_CLK(void)

{

unsigned int i;

BCSCTL1 = 0X00; //将寄存器的内容清零

//XT2震荡器开启

//LFTX1工作在低频模式

//ACLK的分频因子为1

do

{

IFG1 &= ~OFIFG; // 清除OSCFault标志

for (i = 0x20; i > 0; i--);

}

while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1

BCSCTL2 = 0X00; //将寄存器的内容清零

BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1

BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1

}

msp430g2553的矩阵按键程序

IAR环境下的程序! 矩阵按键在单片机设计中经常见到,下面给大家几个程序!如果有需求可以看看!矩阵按键,扫描 下面程序是淘来的! #include /***************全局变量***************/ unsigned char Key_V al; //存放键值 void CtrlKey(unsigned char sw); //控制键盘开关//sw=0关sw=1开 /******************************************* 函数名称:Init_Keypad 功能:初始化扫描键盘的IO端口 参数:无 返回值:无 ********************************************/ void Init_Keypad(void) { P1DIR = 0x0f; //P1.0~P1.3设置为输出状态,P1.4~P1.7输入状态(上拉H) P1OUT=0; P1IES =0xf0; //P1.4~P1.7允许中断 P1IE =0xf0; //P1.4~P1.7下降沿触发中断 P1IFG=0; //中断标志清0 Key_V al = 0; } /******************************************* 函数名称:Check_Key 功能:扫描键盘的IO端口,获得键值 参数:无 返回值:无 ********************************************/ //p14\5\6\7 接上拉电阻 /*************************************** key_V al 对应键值 列:[p14] [p15] [p16] [p17] ↓↓↓↓ 行: [p13]→ 1 2 3 4 [p12]→ 5 6 7 8 [p11]→9 10 11 12 [p10]→13 14 15 16 ***************************************/ void Check_Key(void) { unsigned char row ,col,tmp1,tmp2;

基于MSP430G2553的按键测试程序

基于msp430G2系列的按键测试程序本程序有扫描和中断两种方式,代码均附后。 4、4×1独立按键实验 (1)4×1键盘1:扫描数码管显示 (2)4×1键盘2:中断数码管显示 (3)4×1键盘3:控制LED (4)4×1键盘4:控制蜂鸣器 5、4×4矩阵键盘实验 (1)4×4键盘1:行列扫描数码管显示 (2)4×4键盘2:行列扫描1602液晶显示 3)4×4键盘3:控制LED蜂鸣器 #include #define BUTTON BIT3 #define LED_RED BIT0 #define LED_GREEN BIT6 #define LED_DIR P1DIR #define BUTTON_DIR P1DIR #define BUTTON_OUT P1OUT #define LED_OUT P1OUT #define BUTTON_REN P1REN #define BUTTON_ON (P1IN&BIT3) #define BUTTON_OFF !(P1IN&BIT3) #define LED_RED_ON() P1OUT|=BIT0 #define LED_RED_OFF() P1OUT&=~BIT0 #define LED_GREEN_ON() P1OUT|=BIT6 #define LED_GREEN_OFF() P1OUT&=~BIT6 volatile unsigned char i=0,flag=0; void main(void) { WDTCTL = WDTPW + WDTHOLD; BUTTON_DIR &= ~BUTTON; LED_DIR |= LED_RED+LED_GREEN; BUTTON_REN |= BUTTON; BUTTON_OUT = BUTTON; while(1) { /*通过按键改变选择标志位*/

基于MSP430实现的步进电机控制

作品概述 第一节基本情况 MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。 第二节软硬件总体设计方案 本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad 核心板加底板的形式,对步进电机进行控制。滑变,即滑动变阻器,用来控制电机的转速,本系统共有两个拨动按键,一个拨动按键用来选择步进电机的模式,如四相八拍或四相四拍,另一个拨动按键用来控制转动方向。数码管可用来显示模式和方向,以及转速的百分比。系统总体设计框图如下 图1.2.1 系统总体设计框图 在硬件设计时,只需设计外围电路,留出与Launchpad核心板的接口即可,既节约了设计时间,又节省了成本,而且无需额外购买仿真器,从而使设计成本

到达最低。 在软件设计方面,可充分利用G2系列单片机的各个功能模块,如时钟系统、TA定时器、ADC10模数转换器,看门狗,以及IO口中断等资源,设计出高效率、低功耗、结构紧凑而又功能强大的产品。

第一章作品硬件系统设计 第一节MSP430G2系列Launchpad开发板组成及硬件资源情况介绍MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。LaunchPad 具有集成的DIP 目标插座,可支持多达20 个引脚,从而使MSP430 Value Line 器件能够简便地插入LaunchPad 电路板中。此外,其还可提供板上Flash 仿真工具,以直接连接至PC 轻松进行编程、调试和评估。LaunchPad 试验板还能够对eZ430-RF2500T 目标板、eZ430-Chronos 手表模块eZ430-F2012T/F2013T 目标板进行编程。此外,它还提供了从MSP430G2xx 器件到主机PC 或相连目标板的9600 波特UART 串行连接。其实物图如图2.1所示。 图2.1.1 MSP430G2系列Launchpad开发板实物图 MSP430G2系列Launchpad开发板硬件资源: ? USB 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的

msp430控制步进电机实验报告

计算机硬件应用课程设计

一、实验内容及要求 题目:步进电机控制设计 使用单片机为核心,设计一个步进电机控制器。 基本要求:使用单片机为控制核心,编写程序并设计硬件结构,实现对步进电机 的控制。步进电机按固定方向连续转动。对电机的运行方向进行控制,如:要求按下A 键时,能够控制步进电机正转;按下B键时,能够控制步进电机反转。 提高要求(选作):用LED数码管显示步进电机的转动状态;增加启动、停止控制按键。 二、小组成员 三、实验软硬件环境简介 硬件环境:MSP430G2553单片机一块,五线四相步进电机一个,驱动芯片ULN2003一块,开关三个,下载线一根。 软件设计:仿真软件PROTEUS 8.0 Professional;代码编写软件IAR;WINDOWS操作系统。 四、设计方案分析 步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电设备,它实际上是一种单相或多相同步的步进电机。单相步进电机由单路电脉冲驱动,输出功率一般很小,故需要加一个驱动电路。当向脉冲分配器输入一个脉冲时,电动机各相的通电状态就会发生改变,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入法的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。 步进电机的不同驱动方式,都是在工作时,脉冲信号按一定顺序轮流加到三相绕组上,从而实现不同的工作状态。步进电机有三线式、五线式、六线式三种,但其控制方式均相同,都必须以脉冲电流来驱动。若每转一圈以20个励磁信号来计算,则每个励磁信号前进18°,其旋转角度与脉冲数成正比,正反转可以由脉冲顺序来控制。 步进电机的励磁方式可分为全部励磁及半步励磁,其中全部励磁又有1相励磁及2相励磁之分,而半步励磁又称为1-2相励磁。 1相励磁法:在每一瞬间只有一个线圈导通。消耗电力小,精确度良好,但转矩小,振动较大,每一励磁信号可走18°。若以1相励磁法控制步进电机正转,其励磁顺序表如下。若以励磁信号反响传送,则步进电机反转。本实验中采用这个方法。

msp430 按键控制LED 最基本程序

按键篇 经过一短时间的学习,下面,亲自动手编写一下程序吧。 程序的目的是:按下按键,控制LED的亮和灭。短按键,则小灯亮1秒,然后灭;长按键,小灯常亮。 首先,完成键盘的扫描程序。 第一点:如果是扫描,就要用到定时器。我想设计定时器每隔10ms扫描一次按键。 定时器,我选用定时器A。它的定时中断函数如下: 函数名称:TimerA_ISR 功能:定时器A的中断服务函数 参数:无 返回值:无 ********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void TimerA_ISR(void) { GetKey(); } 上面这个定时中断函数的意思就是:每当定时时间到了以后,就调用GetKey()函数一次。GetKey()函数就是扫描键盘按键的函数了。在GetKey()函数中,会根据按键类型(长按/短按)返回不同的数值。根据返回的数值,做小灯亮法的操作。那么,返回的这个值,我们需要保存在一个变量中,在这里定义一个变量ucharFlagLcd ; 来保存返回值。这个变量在全局变量中定义,以保证它的作用域。 那么定时函数就变为 #pragma vector = TIMERA0_VECTOR __interrupt void TimerA_ISR(void) { FlagLcd =GetKey(); } 定时器中断的时间间隔,我在主函数中定义。 这样写: CCTL0 = CCIE; //使能CCR0中断 CCR0 = 40; //设定周期0.01S TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式 这样,定时器这块就算完工了。那么,下面进行按键扫描程序。

MSP430实现的多路电源开关控制器

基于MSP430G2211实现的多路电源开关 控制器 第一章作品概述 (2) 第一节基本情况 (2) 第二节软硬件总体设计方案 (2) 第二章作品硬件系统设计 (4) 第一节MSP430G2系列Launchpad开发板组成及硬件资源情况介绍 (4) 第二节关键器件选型以及性能指标参数 (4) 第三节单元电路介绍 (5) 第五节PCB板设计要求和注意事项 (9) 第六节安装调试注意事项 (12) 第三章作品软件系统设计 (14) 第一节程序流程图介绍 (14) 第二节CCS设计与调试方法介绍 (19) 第四章总结与思考 (23)

第一章作品概述 第一节基本情况 本作品使用MSP430G2211单片机实现了通过按键对四路功率继电器进行选择控制,达到对四路交流电源加电/断电的控制要求,由于是对220V市电进行控制,所以作品中尽可能的考虑了使用安全问题,使用了隔离电路以及在每一路上都有功率限制。 第二节软硬件总体设计方案 系统总体设计框图如下 图1.1 系统总体设计框图

为了实现安全的控制220V的交流电,本作品使用隔离控制大功率继电器的方式实现。220V交流电引入系统后,经过继电器和保险管后再经过四路插座输出。在控制继电器的方式上,为了安全起见,控制信号通过光耦隔离之后控制继电器。本作品可以实现4路220W 的功率输出控制。 各个模块之间的具体工作关系如下,用户通过键盘像MSP430处理器发送命令,MSP430G2211处理器在检测到案件后,会对相应的继电器控制I/O置位,注意此时的控制信号是隔离之前的信号;此信号经过隔离模块之后交给控制模块,用来控制相应的继电器动作,从而使得不同的通道导通。

MSP430F5529实验指导书(V1.0)

MSP430F5529 实验指导书 (V1.0) 2014年10月27日 东北林业大学机电工程学院“3+1”实验室

实验一基础GPIO实验 实验二键盘与液晶显示实验实验三时钟系统配置实验实验四看门狗与定时器实验实验五AD/DA实验 实验六比较器实验 实验七Flash实验 实验八串行通信实验

实验一基础GPIO实验 【实验目的】 1、熟悉CCS的基本使用方法; 2、掌握MSP430系列单片机程序开发的基本步骤; 3、掌握MSP430 IO口的基本功能。 【实验仪器】 1、SEED-EXP430F5529v1.0开发板一套; 2、PC机操作系统Windows XP或Windows 7,CCSv5.1集成开发环境。 【实验原理】 CCS(Code Composer Studio)是TI 公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。CCSv5.1 为CCS 软件的最新版本,功能更强大、性能更稳定、可用性更高,是MSP430 软件开发的理想工具。 SEED-EXP430F5529v1.0开发板上的有8个可操作的LED灯,与MCU的IO口对应关系如图1-1所示: 图1-1 LED与MCU的IO对应关系电路

我们可以通过控制单片机IO口的输出电平状态来控制各个LED灯的亮灭。 开发板上还有2个可操作的按键S1,S2。如图1-2所示。 图1-2 按键电路 我们可以通过读取与按键相连的IO口的输入电平状态来执行相应的操作。此外,S1,S2还可以作为外部中断源,触发中断。 【实验内容】 1、用调用头文件的方法,使能MSP430F5529开发板上的8个LED灯依次按顺序循环点亮; 2、用按键S1控制开发板上LED1的亮灭状态(查询法); 3、用按键S2控制开发板上跑马灯的循环速度(中断方式)。 【实验步骤】 内容1:使能开发板上的8个LED灯依次按顺序循环点亮 1、打开CCSv5并确定工作区间,然后选择File-->New-->CCS Project 弹出图1-3对话框。

msp430按键控制

第三讲按键控制 一、概述 LAUNCH PAD的实验板上共有两个按键,一个按键接至RESET脚,固定作为复位按键来使用(S1)。按键S2连接在引脚P1.3,可供我们自由使用。这里我们实现通过此按键控制LED的闪烁。应当注意,连接按键的引脚松开时为高电平,按下为低电平。 按键一般可以通过扫描和中断来实现。扫描是指程 序通过循环不停地读取IO口的输入值,并以此判断按 键是否按下。中断实现可以免除扫描的麻烦,在按键按 下时,中断当前的程序,执行中断处理函数,效率较高。 二、中断简介 中断对于初学者来说,是最不容易理解的。但它的 道理实际上很简单,中断条件满足时,暂停正在运行的 程序,开始处理中断服务函数,中断服务函数结束后返 回,继续从之前停下的地方运行。就好像是你原来在网 上聊天,突然电话响了,接完电话继续上网一样。这里, 上网就像是初始运行的程序,电话响了是中断触发条件, 接电话是中断服务程序。只是设置好中断处理函数以后, 每次中断运行的程序都是相同的。 每种CPU之中,都会有许多不同种类的中断。对 于单片机来说,最常用的中断有外部中断、定时器中断 等。而这些中断中,又有不同的优先级,有时还可以实 现中断嵌套。 中断优先级是指系统中多个中断源可能同时提出中断请求,需要按中断的轻重缓急给每个中断源指定一个优先级别。 从头文件中,我们可以看到msp430g2553的中断优先级。如图,最下面的复位中断具有最高优先级。 中断嵌套是指系统为某个中断请求服务时,可能再次接收到其他中断请求信号,这时系统有可能会再次中断,转去处理新的、优先级更高的中断请求。对于msp430,一般情况下

msp430的矩阵键盘程序

msp430g2553的矩阵按键程序 IAR环境下的程序! 矩阵按键在单片机设计中经常见到,下面给大家几个程序!如果有需求可以看看!矩阵按键,扫描 下面程序是淘来的! #include /***************全局变量***************/ unsigned char Key_Val; //存放键值 void CtrlKey(unsigned char sw); //控制键盘开关//sw=0关sw=1开 /******************************************* 函数名称:Init_Keypad 功能:初始化扫描键盘的IO端口 参数:无 返回值:无 ********************************************/ void Init_Keypad(void) { P1DIR = 0x0f; //P1.0~P1.3设置为输出状态,P1.4~P1.7输入状态(上拉H) P1OUT=0; P1IES =0xf0; //P1.4~P1.7允许中断 P1IE =0xf0; //P1.4~P1.7下降沿触发中断 P1IFG=0; //中断标志清0 Key_Val = 0; } /******************************************* 函数名称:Check_Key 功能:扫描键盘的IO端口,获得键值 参数:无 返回值:无 ********************************************/ //p14\5\6\7 接上拉电阻 /*************************************** key_Val 对应键值 列:[p14] [p15] [p16] [p17] ↓↓↓↓ 行: [p13]→ 1 2 3 4 [p12]→ 5 6 7 8 [p11]→ 9 10 11 12 [p10]→ 13 14 15 16 ***************************************/ void Check_Key(void) {

基于MSP430G2553的简易信号发生器

基于MSP430G2553的简易信号发生器 浙江工业大学 摘要:本作品基于TI的LaunchPad设计了一款简易信号发生器,选用TI的MSP430G2553单片机。通过单片机加外围LCD12864、DAC0832及TL082放大电路,实现了可产生正弦波、锯齿波、三角波、方波的简易信号发生器,且频率可调。 关键词:MSP430G2553 DAC0832 正弦波锯齿波三角波 一、作品基本功能介绍

2 在信号产生和处理方面。通过MSP430G2553内部的TA 定时器,外加DAC0832产生四种波形,在DA 输出后,通过一个由运算放大器TL082和精密可调电位器组成的运算放大电路,以实现信号的增益控制。最后在 50负载电阻上输出电压。系统总体框图如图1.1所示。 图1.1 系统总体框图 3 人机交互方面。本作品使用三个独立按键来控制菜单选项,其功能如表1.2所表1.2 按键功能说明 二、系统硬件和软件说明 1 硬件构成 本作品使用LCD12864作为人机交互模块,由于MSP430G2553的I/O 口很少,所以通过对LCD 的进行串行数据输入,以节约I/O 口。其连接如图1.2所示。 +5V 图1.2 LCD12864硬件连接 由于是通过MSP430G2553输出数字量的信号来产生波形,因此需要用到

DA将数字量转换为模拟量。考虑到单片机的I/O口数量,选用8位的DA来进行数模转换。硬件如图1.3所示,DAC0832采用直通工作方式,节省I/O口控制引脚。 +5V P1.0-P1.3 P1.4-P1.7 +5V I OUT 图1.3 DAC0832 直通方式硬件连接 由DAC输出模拟量后,由于波形的幅值太小,因此还需要进行幅值的放大。其中R3是精密可调电位器,方便用户对信号的幅度进行调节。50Ω的电阻可以保证整个信号发生器的输出阻抗为50Ω。信号幅度调节和输出部分电路如图1.4所示。 图1.4 幅值放大的硬件电路 2 软件系统 整个系统的软件主要有主函数、定时器TA中断函数、按键中断函数三个大

MSP430初学者注意事项

元件自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上松香水,在松香水未干的情况下,将芯片放在焊盘上,注意芯片第一引脚的位置,并使引脚与焊盘对齐,将擦干净的电烙铁(不能有任何焊锡)接触引脚,引脚只要一热,焊盘上的焊锡就自动将引脚焊住了,千万注意电烙铁上不能有焊锡,焊接时最好配备一个放大镜。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IA R软件 到利尔达公司或TI公司的网站下载IA R软件,并安装到计算机上。 (5)调试FET和实验板 将FET的一端与PC机的并行口相连,另一端连接实验板的JTAG接口,上电后,检查FET 芯片、实验板上的单片机芯片是否发热(用手模),PC机是否工作正常后,运行IA R软件,找个C语言或汇编语言的例子,编译成功后下载到单片机中,如果能够下载,说明一切成功。否则还需要仔细研究,一般情况下,只要电路板上的电路正确,元件参数准确,没有不成功的。 (6)分步骤学习单片机 学习使用单片机就是理解单片机硬件结构,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。 第一步:数字I/O的使用 使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。 第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。 定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。 第三步:中断 单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果

基于msp430上的矩阵键盘

基于MSP430 系列单片机的键盘与显示模块 的设计 申报者: 队长 : 队员: 摘要:矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。 矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。 4*4矩阵式键盘采用MSP430单片机为核心,主要由矩阵式键盘电路,显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。 关键词MSP430;单片机;显示电路;矩阵键盘; Abstract: Matrix keyboard key operation management efficiency and effective method, which can improve the system accuracy, to save resources, reduce the operator itself quality requirements. Is it to be on time, real-time, efficient display key information, so as to improve the work efficiency and the utilization rate of resources. Matrix keyboard is today the most widely used keyboard mode,the system is connected to the N port control N*N keys, displayed on the LED digital tube. SCM control according to the keyboarddisplay system, the system can real-time display of the different keys, its core is the MCU and the keyboard matrix circuit part,mainly on the buttons and display each part of the circuit, therelationship matrix technology and equipment, system hardware,software and implementation. 4*4 matrix keyboard using MSP430 microcontroller as the core,mainly by the matrix keyboard circuit, display circuit, the software uses C language programming. The key to the detected signalsinto digital signals, shown on the LED display. The system is flexible, easy operation, high reliability, there will be a broader development prospects. Key words: MSP430; MCU; display circuit; matrix keyboard;

msp430定时器控制led闪烁

第四讲定时器控制LED闪烁 一、定时器简介 定时器,简单的说,就像单片机内的一个闹钟。它以单片机的时钟作为计数基准,根据计数数值不同来改变定时时间,并可以设置使时间满足定时条件时进行一系列操作。 下面是msp430g2553的datasheet对其定时器的介绍: 从这里开始,我们介绍的部件往往会涉及很多寄存器,初学者往往由于配置不全,不能得到想要的效果。因此,学习这一部分,尽量参考用户手册和相关例程进行分析。 二、定时器A配置 我们要实现使用定时器控制LED闪烁,需要使用定时器中断来控制。定时器中断与外部中断的具体原理一样,都是从主程序中断,处理完中断服务函数再返回。区别只在于触发条件,定时器中断的触发条件是定时器计数溢出(计数数值达到设定数值)。 这是用户手册对定时器A的介绍: 16位定时/计数,4种计数模式,可选时钟源,2到3个捕获比较寄存器,异步输入输出锁存,定时中断寄存器。 16位定时/计数,是指计数数值范围是0-65535,与设置好的时钟源来组合成一定的定时时长。如时钟周期为1us,那么要定时1ms,计数数值就需要设置为1000。 上图是定时模式的介绍,一般采用增计数模式即可,即每次定时从0计数到设置的数值。 定时器配置最重要的部分在于TACLR寄存器,其16位所代表的含义如下图,具体配置内容可从用户手册和头文件内查出,这里不做一一介绍,在例程中再进行讲解。

三、实践操作 这里,由于我们的单片机默认时钟为DCO 1MHZ,16位定时器计数数值65536,所以最大定时时长为65.536ms。在这里我们进行0.05s的定时,每隔0.05s触发一次中断函数,使LED亮0.05s,灭0.05s,并交替进行。 为了方便调试,我们先使用延时的方法使LED闪烁,确认单片机以及LED工作正常。顺便复习一下对IO的操作。 下面就到定时器的核心配置了。 我们要设置定时器,核心部分当然是TACTL寄存器,它是定时器工作的关键,涉及到定时器所采用的时钟周期以及计数方式。 接下来设置定时时间,即计数数值TACCR0。 当然为了使用定时中断,要记得打开中断。 具体配置如下图所示,相关定义可从头文件中查出。其中CCIE是指打开定时器中断,最后的_EINT();是打开总中断,两者缺一不可。TASSEL_2可从头文件中查出,指定时器A采用子系统时钟SMCLK,在不做设置时为默认DCO(数控振荡器)的值1MHZ。MC_2指采用增计数模式。而数值50000*时钟周期1us=50ms,为我们的定时时长。

MSP430 键盘程序

/* MSP430F42X系列单片机16位ADC通用程序库 说明:该驱动程序库包含了常用的16位ADC操作与控制功能函数,如选择通道、设置信号放大/* 带有缓冲区及长短键的键盘通用程序库 说明:该程序库包含了读取键盘的相关函数,并且包含了一个键盘缓冲区,当主程序执行较慢,而遇到连续快速的键盘输入来不及及时读取的情况下, 新的按键信息将会自动存入键盘缓冲队列内,每次调用读键盘函数时会 依顺序读取,保证键盘操作不会丢失。并且带有长短按键识别功能,当按 键时间小于2秒时,返回短键,按键超过2秒后,每隔0.25秒返回一次长 按键。 该键盘程序可以作为各种程序的底层驱动使用。 要使用该库函数,需要将本文件(Key.c)添加进工程,并在需要调用键盘函数的文件开头处包含"Key.h";还需要开启一个定时器,在定时中断 内调用Key_ScanIO()函数。设置定时中断的频率在16~128次/秒之间。 */ // +-------------+ // | 定时中断| 软件结构 // +-------------+ // | // +-------------+ +-------------+ +-------------+ // KEY1_IN -->| Key_ScanIO | | KeyBuff[] | |Key_GetKey() | // KEY2_IN -->| 键盘扫描|-->| 键盘缓冲|-->|Key_WaitKey()|-->应用程序 // KEY3_IN -->| 函数| | 队列(FIFO) | |键盘读取函数| // +-------------+ +-------------+ +-------------+ // // // MSP430F4XX // +---------------+ // +---KEY1--|P1.5 | // | | XOUT|----- // +---KEY2--|P1.6 | 32.768KHz Watch Crystal // | | XIN|----- // +---KEY3--|P1.7 | // | +---------------+

MSP430原理图示例

Application Report ZHCA084 – May 2010 MSP430在单电池供电的LED照明中的应用丁京柱 TI MSP430技术支持 摘要 便携式设备常采用单节的碱性电池供电,亦称作单电池供电。而LED是发光二极管的简称, 由于其省电、寿命长和开关速度快等特点,正被广泛应用到照明领域;而部分照明设备如自行车 运动爱好者的车灯、头灯以及特殊要求手电筒等又要求能够便携以便于移动,所以对系统的功耗 即电池的寿命有着严格的要求。本文针对低功耗、便携以及较低系统成本LED照明的要求,基于 超低功耗单片机MSP430以及升压转换器TPS61200,设计并完成单电池供电的LED照明应用。 内容 1单电池供电的LED照明系统简介 (2) 2系统结构和总体设计方案 (2) 3硬件电路设计 (2) 3.1LED驱动电路设计 (2) 3.2基于比较器实现按键以及电池电压检测 (4) 4系统控制流程及软件设计 (5) 4.1记忆功能实现 (5) 4.2控制流程以及软件流程图 (5) 5总结 (6) 参考文档 (6) 图 图 1.单电池供电的LED照明系统框图 (2) 图 2.TPS61200 典型应用电路 (3) 图 3.白光LED恒流驱动控制 (3) 图 4.基于比较器实现按键以及电池电压检测原理图 (4) 图 5.系统控制流程图 (6)

1 单电池供电的LED照明系统简介 考虑到业界单电池供电的LED照明系统的实际应用要求,需满足以下设计要求, z工作电压范围:设备供电采用常用的单节碱性电池,为0.6~1.5V。 z低电压启动:低至0.6V系统也能启动。 z待机电流:超低待机功耗,待机电流<1uA z恒流驱动:LED采用恒流驱动,驱动电流在48mA±2mA z按键控制:通过按键实现开关机、LED照明状态和灯光闪烁示警信号状态切换等 z记忆功能:可记忆上次关机时的状态 2 系统结构和总体设计方案 本文描述的单电池供电的LED照明系统以TI MSP430F2011和TI TPS61200为主芯片。MSP430系列单片机CPU 采用16 位精简指令集,集成了16 个通用寄存器以及常数发生器,极大的提高了代码的执行效率。提供了五种低功耗模式,可最大限度的延长手持设备的电池寿命。其数字控制振荡器(DCO)可在1us 内由低功耗模式切换到活动模式。MSP430F2011是MSP430系列单片机中的低引脚数单片机,其中集成了带捕获/比较功能的16位定时器,10个GPIO口和一个多用途的比较器 [1]。TPS61200是业界最低输入电压的DC/DC升压转换器,其可在低至0.3V 达90% 单电池供电的LED LED所需的导通电压,采用实现单节电池电压0.6~1.5V到3.6V的恒流驱动。由于MSP430 1.8-3.6V,所以单节干电池电压不能用于的直接供电,若再增加一升压电路专为MSP430 的供电电压取自TPS61200的输出。另外,由于TPS61200的静态电流典型值为50uA1uA的技术要求,TPS61200 MSP430供电),否则很难达到系统的静态功耗要求。这样,系统待机时 MSP430F2011供电,并使其实现整个系统控制,包括用比较器实现按键、按键开机自锁、关机状态记忆以及LED 的开关控制以及节电控制等等,也是系统的设计要点。 图 1.单电池供电的LED照明系统框图 3 硬件电路设计 3.1 LED驱动电路设计 对于单节电池供电的LED照明设备,首先要选用升压芯片为LED提供电源以保证LED的正常导通。这里我们选用了TPS61200,其工作电压为0.3~5.5V,工作电流最大可承受1800mA,并且在升压转换中可达到90%的转化效率,完全能够满足该方案的设计要求。该照明设备选用白光LED,其导通压降典型值为3.2~3.5V,所以升压

基于MSP430实现的多路电源开关

第一节基本情况 本作品使用MSP430G2211单片机实现了通过按键对四路功率继电器进行选择控制,达到对四路交流电源加电/断电的控制要求,由于是对220V市电进行控制,所以作品中尽可能的考虑了使用安全问题,使用了隔离电路以及在每一路上都有功率限制。 第二节软硬件总体设计方案 系统总体设计框图如下

图1.1 系统总体设计框图 为了实现安全的控制220V的交流电,本作品使用隔离控制大功率继电器的方式实现。220V交流电引入系统后,经过继电器和保险管后再经过四路插座输出。在控制继电器的方式上,为了安全起见,控制信号通过光耦隔离之后控制继电器。本作品可以实现4路220W 的功率输出控制。 各个模块之间的具体工作关系如下,用户通过键盘像MSP430处理器发送命令,MSP430G2211处理器在检测到案件后,会对相应的继电器控制I/O置位,注意此时的控制信号是隔离之前的信号;此信号经过隔离模块之后交给控制模块,用来控制相应的继电器动作,从而使得不同的通道导通。

第一章作品硬件系统设计 第一节MSP430G2系列Launchpad开发板组成及硬件资源情况介绍 MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。它适用于适用于TI 最新MSP430G2xx 系列产品其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。LaunchPad 具有集成的DIP 目标插座,可支持多达20 个引脚,从而使MSP430 Value Line 器件能够简便地插入LaunchPad 电路板中。此外,其还可提供板上Flash 仿真工具,以直接连接至PC 轻松进行编程、调试和评估。LaunchPad 试验板还能够对eZ430-RF2500T 目标板、eZ430-Chronos 手表模块eZ430-F2012T/F2013T 目标板进行编程。此外,它还提供了从MSP430G2xx 器件到主机PC 或相连目标板的9600 波特UART 串行连接。 MSP430G2系列Launchpad开发板硬件资源: ? USB 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的UART 串行通信速度 ? 支持所有采用PDIP14 或PDIP20 封装的MSP430G2xx 和MSP430F20xx 器件 ? 分别连接至绿光和红光LED 的两个通用数字I/O 引脚可提供视觉反馈 ? 两个按钮可实现用户反馈和芯片复位 ? 器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板? 高质量的20 引脚DIP 插座,可轻松简便地插入目标器件或将其移除 第二节关键器件选型以及性能指标参数 作为大功率电源开关的核心器件,大功率继电器的选型对整个系统的可靠性和性能都起着至关重要的作用。本作品中选用了厦门宏发电声生产的HF115-1ZS1型大功率继电器。其关键指标如下: 1.触点负载达到12A,250VAC,完全可以满足1A,220VAC的通过能力要求 2.最大切换电压和电流达到440VAC和12A。 3.触点间耐压达到1000VAC。 实物图如图2.1所示

基于MSP430的交通灯控制系统

**大学 课程设计说明书 题目:智能仪器仪表课程设计 姓名:*** 院(系):电气信息工程学院 专业班级:自动化09-2班 学号:540901010204 指导教师:李银华毋媛媛 成绩: 时间:2013 年 1 月 2 日至2013 年 1 月18 日

说明 1、课程设计进行期间,学生应按教学计划,将每天的学习情况(包括学习内容、遇到问题及解决办法、心得体会等)如实进行记录。 2、结束时,根据课程设计内容和学习记录书写报告。 3、指导教师应综合考虑学生的学习态度、报告内容和实际操作情况等,给出评语和成绩。 课程设计报告撰写格式 1、课程设计说明书用纸一律采用16开幅面,有条件最好打印。打印正文用宋体小四号字;版面页边距:上2.5cm,下2.5cm,左3cm,右2cm;页码用小五号字底端居中;左边装订。 2、课程设计报告一般由以下几部分组成:A.任务书; B.目录; C.正文; D.参考文献;E.附录。 3、报告正文撰写的题序层次格式:

**大学 课程设计任务书 题目交通信号灯控制系统 专业、班级自动化09-2班学号 04 姓名 *** 主要内容、基本要求、主要参考资料等: 主要内容: 设计内容参见附件 基本要求: 明确课程设计任务,复习与查阅有关资料。 按要求对设计进行简要说明,总体设计方案,设计电路,使用计算机绘图,画出详细的电路接线图,列出元器件清单。电路图要求工整、清楚、正确,并标明管脚。 软件编程必须有流程图,程序必须加注释,各程序段的开始要注明该段功能和作用。 写出体会和总结。 要求使用B5打印稿或16开纸手写,不少于5000字。格式遵照学校规定。 主要参考资料: ●“单片机与控制技术” 杨宁主编,北京航空航天大学出版社。 ●“单片机应用程序设计技术” (修订版) 周航慈主编,北京航空航天大学出版社。 ●“电子技术应用”、“电子设计应用”、“单片机与嵌入式系统应用”等期刊 ●https://www.360docs.net/doc/3f18418341.html,(单片机和元器件资料) ●https://www.360docs.net/doc/3f18418341.html, (元器件资料) ●https://www.360docs.net/doc/3f18418341.html,(电子产品世界) 完成期限:2012年1月6日 指导教师签名: 课程负责人签名: 2011年 12 月 16 日

msp430的四种计时器程序

基于msp430g2553定时器详解1 已有2682 次阅读2012-8-10 21:11 | /*#include "msp430g2553.h" unsigned char num; void main() { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; BCSCTL3 |= LFXT1S_2; // Set LFXT1为vol时钟即12kHZ CCTL0|= CCIE; //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断CCR0 =12000; //设置捕获/比较寄存器,初始值为12000,对于ACLK时钟频率为12khz的频率,相当于1s TA0CTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器, // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK,与dco有关; // TACLR=0x0004,清除定时器A计数器 //TACTL |= MC0; //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数P1SEL&=~BIT6; //P1.6为I/O口 P1DIR |=BIT6; //P1.6为输出 _EINT(); //使能中断,这是一个C编译器支持的内部过程。 while(1); //无限次while循环 } #pragma vector=TIMER0_A0_VECTOR//固定的格式 __interrupt void Timer_A (void) //定时器A的CC0中断处理程序必须是没有返回值的{ P1OUT ^= BIT6; //将P3.7引脚取反,就是使发光二极管闪烁 }*/ //使用主系统做为时钟源时,可用用num配合使用,达到一秒定时, //也可以通过BCSCTL2 |= SELM_1 + DIVM_3; 选择MCLK并且8分频 #include "msp430g2553.h" unsigned char num; void main() { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //主系统时钟切换为外部高速晶振 if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF) {

相关主题
相关文档
最新文档