MSP430流水灯蜂鸣器实验报告

时间:2024.5.9

MSP430实验报告

姓名:

学号:

一、实验目的:

掌握msp430单片机的程序编写和运行过程。

掌握IAR Embedded Workbench程序的编译和运行。

二、实验内容:

实现流水灯以三种流动方式和四种流动速度的不同组合而进行点亮"流动",同时每改变一次流水方式,蜂鸣器响一次。

三、使用串口:

P2口,P6口

四、蜂鸣器实现:

通过定义Timer()函数,并在每次改变流水方式时调用Timer()函数,通过对p6接口的设置,来达到蜂鸣器声音的实现。

五、实验代码:

//BoardConfig.h//

typedef unsigned char uchar;

typedef unsigned int uint;

//控制位的宏定义

#define Ctrl_Out P3DIR |= BIT3 + BIT6 + BIT7;

#define Ctrl_0 P3OUT &= ~(BIT3 + BIT6 + BIT7)

#define SRCLK_1 P3OUT |= BIT7

#define SRCLK_0 P3OUT &= ~BIT7

#define SER_1 P3OUT |= BIT6

#define SER_0 P3OUT &= ~BIT6

#define RCLK_1 P3OUT |= BIT3

#define RCLK_0 P3OUT &= ~BIT3

//板上资源配置函数

void BoardConfig(uchar cmd)

{

uchar i;

Ctrl_Out;

Ctrl_0;

for(i = 0; i < 8; i++)

{

SRCLK_0;

if(cmd & 0x80) SER_1;

else SER_0;

SRCLK_1;

cmd <<= 1;

}

RCLK_1;

_NOP();

RCLK_0;

}

主函数:

#include <msp430x14x.h>

#include "BoardConfig.h"

void Timer (void);

void delay(int z);

uint i = 0,j = 0,dir = 0;uchar step = 0xff;

uint flag = 0,speed = 0; //flag--灯光流动方式,speed--灯光流动速度

void main(void)

{

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

BoardConfig(0xf0);

CCTL0 = CCIE; //使能CCR0中断

CCR0 = 50000;

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

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

P2OUT = 0xff;

P6DIR |= BIT7; //蜂鸣器对应IO设置为输出

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

LPM0; //CPU进入LPM0模式

}

函数名称:Timer_A

功 能:定时器A的中断服务函数,在这里通过标志

控制流水灯的流动方向和流动速度

参 数:无

返回值 :无

#pragma vector = TIMERA0_VECTOR

__interrupt void Timer_A (void)

{

if(flag == 0)

{

P2OUT = ~(0x80>>(i++)); //灯的点亮顺序D8 -> D1

}

else if(flag == 1)

{

P2OUT = ~(0x01<<(i++)); //灯的点亮顺序D1 -> D8

}

else

{

if(dir) //灯的点亮顺序 D8 -> D1,D1 -> D8,循环绕圈

{

P2OUT = ~(0x80>>(i++));

}

else

{

P2OUT = ~(0x01<<(i++));

}

}

if(i == 8)

{

i = 0;

dir = ~dir;

}

j++;

if(j == 8)

{ Timer();

i = 0;

j = 0;

flag++;

if(flag == 4) flag = 0; switch(speed)

{

case 0: TACTL &=~ (ID0 + ID1); TACTL |= ID_3; break;

case 1:

TACTL &=~ (ID0 + ID1); TACTL |= ID_2; break;

case 2:

TACTL &=~ (ID0 + ID1); TACTL |= ID_1; break;

case 3:

TACTL &=~ (ID0 + ID1); TACTL |= ID_0; break;

default:

break;

}

if(flag != 3) speed++; if(speed == 4) speed = 0; }

}

void Timer (void)

{

P6OUT ^= BIT7; // Toggle P6.7

delay(1);

}

void delay(int z)

{int x;

for(x=z;x>0;x--);

//for(y=10;y>0;y--);

}

六、总结

通过这次msp430单片机的实验,是我进一步的了解了单片机的远离,虽然在实验过程中遇到了一些问题,但我及时与同学讨论与老师沟通,解决了以上问题。在此次试验中,我充分的了解到了实践的重要性。


第二篇:MSP430流水灯蜂鸣器实验报告


MSP430实验报告

水位报警器

姓名: 丁宇昊

学号: 021210508

一、实验目的:

掌握msp430单片机的程序编写和运行过程。

掌握IAR Embedded Workbench程序的编译和运行。

二、实验内容:

用继电器代替传感器输入模拟电压,用IED灯显示水位高度,当超过预定值时,蜂鸣器响,实现报警。

三、使用串口:

P1口,P2口

四、电路实现:

把继电器作为的AD的输入,通过AD转换,把电压分成16小分,每一份信号控制1个led,通过改变led两端电平高低,控制led亮灭。当到达预定值时,把蜂鸣器的接口设置为高电平。

五、实验代码:

#include <msp430.h>

void delay(int j)

{

do j--;

while (j != 0);

}

int main(void)

{

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled ADC10CTL1 = INCH_1+SREF0; // input A1

ADC10AE0 |= BIT7; // PA.1 ADC option select

P1DIR |= BIT0; // Set P1.0 to output direction P1DIR|=BIT4;

P1DIR|=BIT5;

P2DIR|= 0xff;

P2OUT|=0xff;

P2SEL&=0x00;

for (;;)

{

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit if (ADC10MEM > 960)

{

P1OUT |=BIT4;

P1OUT &= ~BIT5;

P2OUT =0xFE;

}

else if(ADC10MEM >900)

{ P1OUT |=BIT4;

P1OUT &= ~BIT5;

P2OUT = 0xfc;

}

else if(ADC10MEM >840)

{ P1OUT |=BIT4;

P1OUT &= ~BIT5;

P2OUT=0xf8;

}

else if(ADC10MEM >780)

{ P1OUT |=BIT4;

P1OUT &= ~BIT5;

P2OUT= 0xf0;

}

else if(ADC10MEM >660)

{ P1OUT |=BIT4;

P1OUT &= ~BIT5;

P2OUT= 0xe0;

}

else if(ADC10MEM >600)

{ P1OUT |=BIT4;

P1OUT &= ~BIT5;

P2OUT= 0xc0; }

else if(ADC10MEM >540) { P1OUT |=BIT4; P1OUT &= ~BIT5; P2OUT= 0x80; }

else if(ADC10MEM >480) { P1OUT |=BIT4; P1OUT &= ~BIT5; P2OUT= 0x00; }

else if(ADC10MEM >420) { P1OUT&=~BIT5; P2OUT=0x00; P1OUT|=BIT4; P2OUT=0x00; delay(20); P1OUT&=~BIT4; P2OUT=0xfe; P1OUT|=BIT5; P2OUT=0xfe; }

else if(ADC10MEM >360) { P1OUT&=~BIT5; P2OUT=0x00; P1OUT|=BIT4; P2OUT=0x00; delay(20); P1OUT&=~BIT4; P2OUT=0xfc; P1OUT|=BIT5; P2OUT=0xfc; }

else if(ADC10MEM >300) {P1OUT&=~BIT5; P2OUT=0x00; P1OUT|=BIT4; P2OUT=0x00; delay(20); P1OUT&=~BIT4; P2OUT=0xf8; P1OUT|=BIT5; P2OUT=0xf8;

}

else if(ADC10MEM >240) { P1OUT&=~BIT5; P2OUT=0x00;

P1OUT|=BIT4;

P2OUT=0x00;

delay(20);

P1OUT&=~BIT4; P2OUT=0xf0;

P1OUT|=BIT5;

P2OUT=0xf0;

}

else if(ADC10MEM >180) { P1OUT&=~BIT5; P2OUT=0x00;

P1OUT|=BIT4;

P2OUT=0x00;

delay(20);

P1OUT&=~BIT4; P2OUT=0xe0;

P1OUT|=BIT5;

P2OUT=0xe0;

}

else if(ADC10MEM >120) { P1OUT&=~BIT5; P2OUT=0x00;

P1OUT|=BIT4;

P2OUT=0x00;

delay(20);

P1OUT&=~BIT4; P2OUT=0xc0;

P1OUT|=BIT5;

P2OUT=0xc0;

P1DIR |=BIT6; P1OUT ^=BIT6;

delay(100);

}

else if(ADC10MEM >60) { P1OUT&=~BIT5; P2OUT=0x00;

P1OUT|=BIT4;

P2OUT=0x00;

delay(20);

P1OUT&=~BIT4;

P2OUT=0x80;

P1OUT|=BIT5;

P2OUT=0x80;

P1DIR |=BIT6;

P1OUT ^=BIT6;

delay(100);

}

else

{ P1OUT&=~BIT5;

P2OUT=0x00;

P1OUT|=BIT4;

P2OUT=0x00;

delay(20);

P1OUT&=~BIT4;

P2OUT=0x00;

P1OUT|=BIT5;

P2OUT=0x00;

P1DIR |=BIT6;

P1OUT ^=BIT6;

delay(100);

}

}

}

// ADC10 interrupt service routine

#pragma vector=ADC10_VECTOR

__interrupt void ADC10_ISR(void)

{

__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) }

六、总结

通过这次msp430单片机的实验,是我进一步的了解了单片机的远离,虽然在实验过程中遇到了一些问题,但我及时与同学讨论与老师沟通,解决了以上问题。在此次试验中,我充分的了解到了实践的重要性。

更多相关推荐:
蜂鸣器实验报告

实验报告信息与通信工程学院1实验要求用所学知识和编程技巧编写一段程序实现用蜂鸣器演奏一首歌曲按下sw2按键蜂鸣器唱出一首歌歌曲可以自己选择主要是通过不同的频率来实现不同的音调2实验原理21蜂鸣器类型蜂鸣器主要分...

蜂鸣器实验报告

驱动蜂鸣器实验一实验要求完成驱动蜂鸣器实验二实验目的1234学习Proteus软件的使用方法学习Keil软件的使用方法学习端口输出的使用方法掌握延时程序的设计三实验说明条理清晰含程序的一些功能分析计算分析系统要...

蜂鸣器实验报告

实验一电子音响一实验目的了解计算机发出不同音调声音的编程方法二实验仪器微机实验箱PC机三实验原理四实验内容利用定时器产生不同频率的方法组成乐谱由单片机进行信息处理经过放大利用8032P17口输出音乐五实验步骤1...

蜂鸣器与流水灯实验报告

蜂鸣器与流水灯实验实验一蜂鸣器一电路图二程序注释1频率节拍常数的编码2定时计数器0中断赋初值使计数器计满一次时时间为100ms同时没记一满次n减13毫秒的延时函数4无参数返回值的延时函数5主函数用switch函...

单片机课程设计报告蜂鸣器

河南师范大学新联学院单片机课程设计报告课程:单片机原理及接口技术设计题目:蜂鸣器演奏歌曲年级专业:2011级计算机科学与技术学号:学生姓名指导教师20xx年6月15日蜂鸣器演奏歌曲实验报告一、要求完成驱动蜂鸣器…

vhdl实验报告--蜂鸣器

VHDL实验报告一实验目的1掌握蜂鸣器的使用2通过复杂实验进一步加深对VHDL语言的掌握程度二实验原理乐曲都是由一连串的音符组成因此按照乐曲的乐谱依次输出这些音符所对应的频率就可以在蜂鸣器上连续地发出各个音符的...

蜂鸣器与LED流水灯实验报告

实验名称蜂鸣器控制实验和基于COSII的LED流水灯控制实验摘要熟悉ucosII操作系统和LPC2200专用工程模板在该操作系统上完成流水灯循环控制任务和检测KEY1键控制蜂鸣器任务一实验目的掌握LPC2200...

MSP430流水灯蜂鸣器实验报告

MSP430实验报告水位报警器姓名丁宇昊学号021210508一实验目的掌握msp430单片机的程序编写和运行过程掌握IAREmbeddedWorkbench程序的编译和运行二实验内容用继电器代替传感器输入模拟...

FPGA实现蜂鸣器播放音乐实验报告

实验报告一二功能利用FPGA开发板板子实现一段简单的简谱的播放工具Spartan3EStarterKit开发板一块PC机一台ISE开发环境无源蜂鸣器一个语言VHDL和Verilog三源码timescale1ns...

实验蜂鸣器实验说明文档

实验2BEEP实验说明文档BEEP硬件说明GPIO硬件说明STM32开发板引出了电路长的所有IO口电路如下图1引出的IO口STM32的IO口可以通过软件配置为以下的8种模式1GPIOModeAIN模拟输入2GP...

蜂鸣器报警实验

32蜂鸣器报警实验一实验目的1掌握2812IO控制方法二实验设备1一台装有CCS33软件的计算机2DSP实验箱3DSP硬件仿真器三实验原理复用控制寄存器GPxMUX0数字IO1专用外设功能方向控制寄存器GPxD...

eda蜂鸣器输出报警声实验

上海理工大学实验报告课程名称实验名称姓名班级学号一实验目的学习交流蜂鸣器的发音原理二实验内容在SmartSOPC实验箱上的蜂鸣器输出报警笛声三实验原理SmartSOPC实验箱上有1个交流蜂鸣器BUZZER通过跳...

蜂鸣器实验报告(22篇)