文档库 最新最全的文档下载
当前位置:文档库 › msp430 按键控制LED 最基本程序

msp430 按键控制LED 最基本程序

msp430 按键控制LED 最基本程序
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,增计数模式

这样,定时器这块就算完工了。那么,下面进行按键扫描程序。

按键的定义是这样的,根据我板子的按键原理图如下

这是一个矩阵键盘。其中KEY就是外部高电平3.3V。我只想用其中的P1.0作为这次试验的按键。那么,做些设置就可以了。将P1.7方向设置为输出,并输出电平为低。这样,才能实现当K1按下时,P1.0输入为低;当K1抬起时,P1.0输入为高的效果。

对P1口进行初始化:

void Init_Keypad(void)

{

P1DIR = 0xfe; //P1.0设置为输入状态, P1.1~P1.7设置为输出状态

P1OUT &= 0x7f; // P1.0~P1.6输出高电平,P1.7输出低电平

}

下面是键盘扫描函数:

unsigned char GetKey()

{

unsigned char keyRetu=0; //返回的按键值

static unsigned char s_keyState=0,keyTime=0; //按键状态,按键按下的时间

计数器

switch (s_keyState)

{

case 0:

if((P1IN&0x01)==0) //检测到有按键,转到状态1,相当于是消抖过程。((P1IN&0x01)==0判断P1.0口输

入是高还是低电平

{

s_keyState=1;

}

break;

case 1:

if((P1IN&0x01)==0) //再次检测到有按键,转到状态2

{

s_keyState=2;

keyTime=0; //清零按键时间计数器

}

else

{

s_keyState=0; //没有检测到按键,说明状态0检测到是一个抖动,重新转到状态0

}

break;

case 2:

if((P1IN&0x01)==1) //检测到按键松开

{

s_keyState=0; //状态转到状态0

keyRetu=1; //输出1

}

else

{

if(++keyTime>=50) //按下时间>1s

{

s_keyState=3; //转到状态3

keyTime=0; //清零按键时间计数器

keyRetu=2; // 输出2

}

}

break;

case 3:

if((P1IN&0x01)==1) //检测到按键松开

{

s_keyState=0; //状态转到状态0

}

else

{

s_keyState=3; //转到状态3

}

break;

}

return keyRetu;

}

上面这个扫描函数,根据按键K1是长按还是短按,返回不同的值:长按,返回2;短按,返回1。

获得了返回值以后,就要对LED进行操作了。

我的板子的LED如下图

LED是LED供电高电平,这里我只想用其中的D1作为实验灯。初始化P2.0口:P2DIR = 0xff; //设置P2口方向为输出

P2OUT = 0xff; //设置P2口输出高电平

那么P2OUT = 0xfe,则LED亮;P2OUT = 0xff,则LED灭。这个很好实现。但是,怎么样才能持续亮1s呢?这个问题还需要定时器来解决。我在这里还利用定时器A来完成这个任务。

在主程序中定义全局变量unsigned int TIME_1_S=0;然后再定时器中断函数中做些改动

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

FlagLcd =GetKey();

If(FlagLcd==1)

TIME_1_S=1;

If((TIME_1_S>0)&&( TIME_1_S<100))

TIME_1_S++;

Else

TIME_1_S=0;

}

这样,在控制LED的时候,可以这样写

If(TIME_1_S>0)

P2OUT = 0xfe;

Else

P2OUT = 0xff;

就实现了亮1S的效果。

那么长按键的时候呢,则需要再做一下处理。

在主程序中定义全局变量unsigned int TIME_L_S=0;然后再定时器中断函数中做些改动

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

FlagLcd =GetKey();

If(FlagLcd==1)

TIME_1_S=1;

If((TIME_1_S>0)&&( TIME_1_S<100))

TIME_1_S++;

Else

TIME_1_S=0;

If(FlagLcd==2)

TIME_L_S=1;

}

If((TIME_1_S>0)||( TIME_L_S==1))

P2OUT = 0xfe;

Else

P2OUT = 0xff;

到这里,基本的实现函数都已经完成了。剩下的事情,就是把相关框架搭建一下

第一:是main.c文件

#include

#include "key.h"

unsigned char FlagLcd ;

unsigned int TIME_L_S=0;

unsigned int TIME_1_S=0;

void main(void)

{

P1DIR = 0XFF;P1OUT = 0XFF;

P2DIR = 0XFF;P2OUT = 0XFF;

P3DIR = 0XFF;P3OUT = 0XFF;

P4DIR = 0XFF;P4OUT = 0XFF;

P5DIR = 0XFF;P5OUT = 0XFF;

P6DIR = 0XFF;P6OUT = 0XFF;

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换

CCTL0 = CCIE; //使能CCR0中断

CCR0 = 40; //设定周期0.01S

TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式

P2DIR = 0xff; //设置P2口方向为输出

P2OUT = 0xff; //设置P2口输出高电平

Init_Keypad();

_EINT();//使能全局中断

while(1)

{

if((TIME_1_S>0)||( TIME_L_S==1))

P2OUT = 0xfe;

else

P2OUT = 0xff;

}

}

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

FlagLcd =GetKey();

if(FlagLcd==1)

TIME_1_S=1;

if((TIME_1_S>0)&&( TIME_1_S<100))

TIME_1_S++;

else

TIME_1_S=0;

if(FlagLcd==2)

TIME_L_S=1;

}

第二:key.c文件

#include

void Init_Keypad(void)

{

P1DIR = 0xfe; //P1.0设置为输入状态, P1.1~P1.7设置为输出状态

P1OUT &= 0x7f; // P1.1~P1.7输出高电平

}

unsigned char GetKey()

{

unsigned char keyRetu=0; //返回的按键值

static unsigned char s_keyState=0,keyTime=0; //按键状态,按键按下的时间计数器

switch (s_keyState)

{

case 0:

if((P1IN&0x01)==0) //检测到有按键,转到状态1,相当于是消抖过程

{

s_keyState=1;

}

break;

case 1:

if((P1IN&0x01)==0) //再次检测到有按键,转到状态2

{

s_keyState=2;

keyTime=0; //清零按键时间计数器

}

else

{

s_keyState=0; //没有检测到按键,说明状态0检测到是一个抖动,重新转到状态0

}

break;

case 2:

if((P1IN&0x01)==1) //检测到按键松开

{

s_keyState=0; //状态转到状态0

keyRetu=1; //输出1

}

else

{

if(++keyTime>=50) //按下时间>1s

{

s_keyState=3; //转到状态3

keyTime=0; //清零按键时间计数器

keyRetu=2; // 输出2

}

}

break;

case 3:

if((P1IN&0x01)==1) //检测到按键松开

{

s_keyState=0; //状态转到状态0

}

else

{

s_keyState=3; //转到状态3

}

break;

}

return keyRetu;

}

第三:key.h文件

void Init_Keypad(void);

unsigned char GetKey();

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;

独立按键控制LED灯

项目五独立按键控制LED灯 1.掌握独立按键消抖原理 2.掌握独立按键接口电路设计 1.设计独立按键控制LED的硬件电路 2.编写程序分别实现按下按键1和按键2,LED灯闪烁方式不同 3.下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试 键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。本项目要求两个按键分别实现LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。 本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈现不同的电平。独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者低电平,读者可以根据自己的需求自行设计。单片机应用中的独立按键多是机械弹性开关,在按键按下和弹开时,由于按键的机械特性,有抖动产生。消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms~10ms延时后,再次读取I/O端口电平,以确认按键是否按下或弹开。

1.独立按键与矩阵按键 键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。非编码键盘按连接方式可分为独立按键和矩阵按键。 独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单,适合所需按键较少的场合。矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。 图独立按键接口电路与矩阵按键接口电路上图四个按键(常开触点开关)S1,S2,S3,S4分别与单片机的四个I/O端口连接。当按键没有按下时,四个I/O端口的电压为高电平;当按键按下

基于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置位,注意此时的控制信号是隔离之前的信号;此信号经过隔离模块之后交给控制模块,用来控制相应的继电器动作,从而使得不同的通道导通。

独立按键控制LED灯

项目五独立按键控制LED灯 1. 掌握独立按键消抖原理 2. 掌握独立按键接口电路设计 3. 掌握独立按键控制 LED灯的程序编写 项目任务 1. 设计独立按键控制 LED的硬件电路 2. 编写程序分别实现按下按键1和按键2, LED灯闪烁方式不同 3. 下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试 键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易 计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。本项目要求两个按键分别实现 LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。 本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。 独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈 现不同的电平。独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者 低电平,读者可以根据自己的需求自行设计。单片机应用中的独立按键多是机械弹性开关,在按键按下和弹开时,由于按键的机械特性,有抖动产生。消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms- 10ms延时后,再次读取I/O端口电平,以确认按键是否按下或弹开。

1. 独立按键与矩阵按键 键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。非编码键盘按连接方式可分为独立按键和矩阵按键。 独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O 口利用率不高,但程序编制简单,适合所需按键较少的场合。矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O 口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。 图独立按键接口电路与矩阵按键接口电路 上图四个按键(常开触点开关)S1,S2, S3, S4分别与单片机的四个 I/O端口连接。当按键没有按下时,四个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) {

51单片机按键控制花样灯

51单片机按键控制花样灯 时间:2012-09-10 13:50:11 来源:51hei 作者: /**************************************************** * 本程序实现用按键控制花样灯。 * * 当K1按下时,灯从0xfe向左跑一遍; * * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;* * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。* * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。* * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。* ******************************************************/ ************************************************* 连接方法:P0接独立按键JP5;P2接LED灯接口JP1 * ***********************************************************/ #include //头文件,函数声明 #include //定义按键所在位 sbit K1=P0^0; sbit K2=P0^1; sbit K3=P0^2; 页脚内容1

sbit K4=P0^3; sbit K5=P0^4; unsigned char led; unsigned char j; void delayms(unsigned char ms) // 1ms标准延时 { while(ms--) { for(j=0;j<110;j++); //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确} } void main() { //P2=led; unsigned int i; while(1) { /********************************************* 页脚内容2

基于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)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。 定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。 第三步:中断 单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果

按键控制数码管和流水灯设计报告实验报告要点

摘要 单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。在硬件电路的基础上加上软件程序的控制来实现本设计。其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。 关键字:单片机、流水灯、数码管、控制系统 SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the Keywords: SCM, water lights, digital tubes, control system 键盘控制流水灯和数码管实验报告 目录 一设计的目的 (2) 二任务描述及方案设计 (3) 1. 任务描述 (3)

基于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,为我们的定时时长。

独立按键控制LED灯

【下载本文档,可以自由复制内容或自由编辑修改内容,更多精彩文章,期待你的好评和关注,我将一如既往为您服务】 项目五独立按键控制LED灯 1.掌握独立按键消抖原理 2.掌握独立按键接口电路设计 1.设计独立按键控制LED的硬件电路 2.编写程序分别实现按下按键1和按键2,LED灯闪烁方式不同 3.下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试 键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。本项目要求两个按键分别实现LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。 本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈现不同的电平。独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者低电平,读者可以根据自己的需求自行设计。单片机应用中的独立按键多是机械弹性开关,

在按键按下和弹开时,由于按键的机械特性,有抖动产生。消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms~10ms延时后,再次读取I/O端口电平,以确认按键是否按下或弹开。 1.独立按键与矩阵按键 键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。非编码键盘按连接方式可分为独立按键和矩阵按键。 独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单,适合所需按键较少的场合。矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。

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 | // | +---------------+

相关文档