430单片机点亮LED实验报告
msp430 实验报告

msp430 实验报告Title: MSP430 Experiment ReportIntroductionThe MSP430 is a series of microcontroller units (MCUs) developed by Texas Instruments. These MCUs are known for their low power consumption and high performance, making them ideal for a wide range of applications including consumer electronics, industrial control, and medical devices. In this experiment report, we will discuss the results of our experiments with the MSP430 MCU and its performance in various applications.Experiment 1: LED BlinkingIn our first experiment, we programmed the MSP430 to control the blinking of an LED. We used the MSP430 LaunchPad development kit, which includes a development board with an MSP430 MCU and various peripherals. By writing a simple program in the MSP430 Integrated Development Environment (IDE), we were able to control the blinking frequency of the LED. This experiment demonstrated the ease of programming and the low power consumption of the MSP430 MCU.Experiment 2: Sensor Data AcquisitionIn our second experiment, we connected a temperature sensor to the MSP430 and programmed it to acquire and process the sensor data. The MSP430's built-in analog-to-digital converter (ADC) allowed us to easily interface with the sensor and read the temperature values. We then used the MSP430's serialcommunication interface to transmit the data to a computer for further analysis. This experiment showcased the versatility of the MSP430 in interfacing with external sensors and communicating with other devices.Experiment 3: Power ManagementOne of the key features of the MSP430 is its low power consumption, which makes it suitable for battery-powered applications. In our third experiment, we tested the power management capabilities of the MSP430 by programming it to enter low-power modes when not actively processing data. We measured the current consumption in different power modes and compared it to the datasheet specifications. The results confirmed the MSP430's low power consumption and its ability to prolong battery life in portable devices. ConclusionOur experiments with the MSP430 MCU have demonstrated its versatility, ease of programming, and low power consumption. The MSP430's performance in controlling peripherals, interfacing with sensors, and managing power consumption makes it a compelling choice for a wide range of embedded applications. As technology continues to advance, the MSP430's capabilities will continue to make it a popular choice for developers seeking a reliable and efficient microcontroller solution.。
430单片机实验报告

题 目430单片机实验报告
学院(部)信息工程学院
专 业
指导教师
学号姓名
同组成员
二〇一六年五月
实验一 LED流水灯实验
一、
LED流水灯实验
二、
1.掌握IAR 开发环境的使用方法;
2.练习IO端口寄存器的设置;练习时钟部分的配置
三、
1、制作相应的外围电路。要求用单片机的P1口连接8个发光二级管,当相应的IO口输出为高电平时发光二极管发光。
P2SEL=0X00;
key_val=0;
}
void Key_Scan(void) //扫描键盘获得键值
{
unsigned char row,col,temp1,temp2;
unsigned char key_table[]={0,1,2,3,4,5,6,7,8,
9,10,11,12,13,14,15};//设置键盘逻辑键值
P1DIR |= BIT0+BIT6; // P1.0 - P1.2 outputs
P1SEL|= 0x00;
P1OUT= BIT0;
CCR0=20000;
CCTL0 = CCIE; // CCR0 toggle, interrupt enabled
TACTL = TASSEL_2 + MC0 +TACLR; // SMCLK, Contmode, int enabled
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
单片机点亮彩灯实训报告

一、实训背景随着科技的不断发展,单片机技术在各个领域得到了广泛应用。
为了提高自己的实践能力,我参加了单片机点亮彩灯的实训项目。
通过本次实训,我深入了解了单片机的原理、编程方法以及在实际应用中的操作技巧。
二、实训目的1. 熟悉单片机的基本原理和组成;2. 掌握51单片机的编程方法;3. 熟悉LED彩灯的工作原理;4. 学会使用单片机控制LED彩灯的点亮和熄灭。
三、实训内容1. 单片机简介单片机是一种将计算机的基本功能部件全部集成在一块芯片上的微型计算机。
它具有体积小、功耗低、成本低、可靠性高等优点。
单片机主要由中央处理器(CPU)、存储器、输入输出接口等组成。
2. LED彩灯简介LED彩灯是一种发光二极管(LED)制成的彩色装饰灯。
它具有发光亮度高、寿命长、节能等优点。
LED彩灯可以通过改变电流的方向和大小来控制其颜色和亮度。
3. 实训步骤(1)搭建电路首先,我们需要搭建一个基于51单片机的LED彩灯电路。
电路主要包括单片机、LED彩灯、电阻、晶振、复位电路等。
(2)编写程序编写单片机程序,实现LED彩灯的点亮和熄灭。
程序主要包括以下部分:① 初始化:设置单片机的IO口、晶振频率等参数;② 主循环:通过改变IO口的状态来控制LED彩灯的点亮和熄灭;③ 延时函数:实现LED彩灯的闪烁效果。
(3)调试程序将编写好的程序烧录到单片机中,通过仿真软件进行调试。
观察LED彩灯的点亮和熄灭效果,确保程序正常运行。
4. 实训成果通过本次实训,我成功实现了基于51单片机的LED彩灯控制。
LED彩灯能够按照设定的程序进行点亮和熄灭,实现了预期的效果。
四、实训总结1. 学到了单片机的基本原理和组成,了解了51单片机的编程方法;2. 掌握了LED彩灯的工作原理,学会了如何使用单片机控制LED彩灯;3. 提高了动手实践能力,培养了团队协作精神;4. 了解了单片机在实际应用中的操作技巧,为今后的学习和工作打下了基础。
五、实训心得1. 要做好实训,首先要明确实训目的,掌握实训内容;2. 在实训过程中,要注重理论与实践相结合,多动手、多思考;3. 遇到问题要勇于请教,与同学、老师共同探讨,共同进步;4. 保持良好的学习态度,不断提高自己的综合素质。
实验一用单片机点亮一只发光二极管LED

黄石理工学院机电工程学院实验指导书课程名称:单片机原理与接口技术实验学时: 20 学时适用专业:机械制造及自动化、机械设计与制造、汽车运用技术、电子仪器仪表与维修模具设计与制造、制冷与冷藏专业先进制造技术实验室2005-3-10实验一单片机系统及实验开发系统的认识一、实验目的1、了解单片机最小系统。
2、了解D V C C仿真系统使用方法3、掌握P1口的输入/输出使用方法4、编程的初步知识二、实验设备D V C C仿真系统一套、计算机一台。
三、实验内容1、了解D V C C仿真系统的的部分硬件(8031、74L S373、2764)和基本使用方法。
2、了解程序编辑、汇编、修改、连接和运行的过程。
3、将P1.0~P1.3作为输入接K0~K3,P1.4~P1.7作为输出接LED0~LED3,由K0~K3控制LED0~LED3的状态。
四、实验线路五、实验步骤1、由教师介绍D V C C仿真系统的的部分硬件的实物与作用。
2、在教师的指导下编辑、保存下列程序。
ORG 0000H ;伪指令ORG,说明机器码存储的首地址LOOP: MOV P1,#0FH ;数据传送指令,将0FH这个数传送到P1中,定义P1.0-P1.3为输入状态。
MOV A, P1 ;将P1.0-P1.3引脚的状态和P1.4-P1.7锁存器的数传送到A中。
ANL A,#0FH;逻辑运算指令,寄存器A中的数与0FH进行“与”运算。
JZ OVER ;条件转移指令,若(A)=00H,程序转移到标号O V E R处执行S W A P A;高低字节交换指令, ACC.0-ACC.3与ACC.4-ACC.7交换。
MOV P1,A ;将寄存器A中的数传送到P1,并由P1.4-P1.7输出到L E D。
SJMP LOOP ;无条件转移指令,程序转移到标号L O O P处执行。
OVER: SJMP $ ;无条件转移指令,程序转移到标号O V E R处执行,即原地等待。
MSP430单片机实验报告

MSP430单片机实验报告--段式LCD显示1.实验介绍:实验演示了将ADC结果用段式LCD显示,并且还原输入电压也采用段式LCD显示。
ADC的结果可以通过ADC12MEM0的值来显示。
当程序运行时,LCD屏幕采用10进制显示出ADC12MEM0的值。
2.实验目的:a.熟悉IAR5.0软件开发环境的使用b.了解MSP430段式LCD的工作方式c.掌握MSP430段式LCD的编程方法3.实验原理:驱动LCD需要在段电极和公共电极上施加交流电压。
若只在电极上施加直流电压,液晶本身发生劣化。
解决这个问题的一般方法是使用短时也就驱动器,如MSP430F4xx系列单片机就集成有段式液晶驱动。
如果要在没有液晶驱动器的情况下使用段式液晶显示器,就要用到如图1所示电路。
图1中,A为电极信号输入端,控制该段液晶是否被点亮;B为交流方波信号输入端,将有一个固定频率的方波信号从此端输入;com为公共背极信号。
工作原理为;固定的方波信号被直接加载到液晶公共背极,同时该信号通过一个异或门加载到液晶段极。
当A端为低电平时,液晶的段极与公共背极将得到一个同相、同频率、同幅度的方波信号,液晶的两端始终保持没有电压差;当A端为高电平时,液晶的段极也公共背极将得到一个反相、同幅度、同频率的方波信号,液晶两端将保持一个交流的电压差。
这样既能使液晶保持点亮状态,又不会发生劣化而损坏液晶显示器。
图一.段式液晶驱动电路4.实验步骤:(1)将PC 和板载仿真器通过USB 线相连;5.实验现象:段式LCD显示屏显示的数字为002031,ADC12MEM0的值为07EF,其值为16进制,将其转换后值为2031与屏幕显示一致。
6.关键代码分析:#include <msp430x26x.h>#include "General_File.h"#include "I2C_Define.h"void I2C_Start(void){DIR_OUT;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SDA_0;I2C_Delay();SCL_0;}//End I2C_Start/*函数名:I2C_Stop 功能:遵循I2C总线协议定义的停止*/void I2C_Stop(void){DIR_OUT;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SDA_1;}//End I2C_Stop/* 函数名:I2C_ReceiveACK 功能:待接受ACK 信号,完成一次操作*/void I2C_Write_ACK( void ){SDA_1;DIR_IN;SCL_1;I2C_Delay();while(SDA_IN );SCL_0;I2C_Delay();DIR_OUT;return;}//End I2C_ReceiveACK/* 函数名:2C_Read_Ack 功能:接受数据后发送一个ACK信号*/void I2C_Read_Ack(void){DIR_OUT;SCL_0;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SCL_0;SDA_1;}//End I2C_Read_Ack/* 函数名:I2C_Read_NoAck 功能:最后接受数据后发送NoACK信号*/void I2C_Read_NoAck( void ){DIR_OUT;SCL_0;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SCL_0;}//End I2C_Read_Ack/* 函数名:I2C_Receiveuchar 功能:接受一个字节的数据*/uchar I2C_Receiveuchar(void){uchar Read_Data = 0x00; //返回值uchar DataBit = 0x00; //每一个clk 接受到的数据SCL_0;I2C_Delay();SDA_1;DIR_IN;for( uchar i = 0;i < 8;i++ ){SCL_1;I2C_Delay();DataBit = SDA_IN;SCL_0;I2C_Delay();I2C_Delay();Read_Data = ( ( Read_Data << 1 ) | DataBit ); //将数据依次存入Read_Data }return( Read_Data );}//End I2C_Receiveuchar/* 函数名:I2C_Senduchar 功能:遵循I2C总线协议定义发送一字节数据*/void I2C_Senduchar( uchar Wr_Data ){DIR_OUT;SCL_0;SDA_1;for( uchar i = 0;i < 8;i++ ){if( Wr_Data & 0x80 ){SDA_1; //最高位是否为1,为1则SDA= 1 }else{SDA_0; //否则SDA=0}I2C_Delay();SCL_1;I2C_Delay();SCL_0;I2C_Delay();Wr_Data <<= 1; //数据左移一位,进入下一轮送数}SDA_1;return;}//End I2C_Senduchar/************ BU9796FS相关指令定义**********/#define Write_Com 0x80#define Write_Data 0x00#define Display_ON 0x48#define Half_Bias 0x44#define Set_Reset 0x6A#define Ext_Clock 0x69#define Blink_Mode0 0x70#define Blink_Mode1 0x71#define Blink_Mode2 0x72#define Blink_Mode3 0x73#define Pixel_ON 0x7E#define Pixel_OFF 0x7D#define BU9796_Addr 0x7C#define Base_Add 0x00/************** 引用的外部函数*********************/extern void I2C_Start(void);extern void I2C_Stop(void);extern void I2C_Write_ACK(void);extern void I2C_Senduchar( uchar Wr_Data );/************** 定义段式LCD的阿拉伯数字码*********************/const uchar Num_Code[] ={0xAF, // 00x06, // 10x6D, // 20x4F, // 30xC6, // 40xCB, // 50xEB, // 60x0E, // 70xEF, // 80xCF, // 90x10, //. 如果要显示小数点,必须要将此值与下一位值相加0x88 //: ,包括LCD上的两个":"};uchar Disp_Data[]={ 5,5,7,3,1,5 };/* 函数名:Segment_Display 功能:段式LCD数据包写入服务程序,负责将一串字符送到段式LCD 上去显示*/void Segment_Display( const uchar Addr,const uchar *P_Data, uchar Length ){uchar User_Addr = Addr;I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK();I2C_Senduchar( Base_Add + User_Addr * 2 ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = Length ;i > 0;i-- ){if( *P_Data != 0x0A ) // 显存中是否有小数点?如果有,就将小数点码值与下一位码值相加{I2C_Senduchar( Num_Code[ *P_Data++ ] );}else{uchar Temp_Disp_Data = Num_Code[ *P_Data++ ];I2C_Senduchar( Temp_Disp_Data + Num_Code[ *P_Data++ ]);i--;}I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_BU9796FS 功能:初始化驱动芯片BU9796的相关参数*/void Init_BU9796FS( void ){I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Set_Reset); //启动软复位I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Blink_Mode2 );I2C_Write_ACK();I2C_Senduchar( Write_Com + Display_ON ); //开显示I2C_Write_ACK();I2C_Senduchar( Write_Data + Base_Add ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = 0;i<10;i++ ) //清LCD显示屏{I2C_Senduchar( 0x00 );I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_MCU 功能:初始化MSP430的相关参数*/void Init_MCU( void ){/* WDTCTL = WDTPW + WDTHOLD; */ // 关看门狗BCSCTL3 |= XT2S_2; // XT2频率范围设置BCSCTL1 &= ~XT2OFF; // 打开XT2振荡器do{IFG1 &= ~OFIFG; // 清振荡器失效标志BCSCTL3 &= ~XT2OF; // 清XT2失效标志for( uint i = 0x47FF; i > 0; i-- ); // 等待XT2频率稳定}while (IFG1 & OFIFG); // 外部时钟源正常起动了吗?BCSCTL2 |= SELM_2 + SELS ; // 设置MCLK、SMCLK为XT2P4OUT &= ~BIT4;P4DIR |= BIT4; // 打开LCD显示部分的电源//P8REN |= BIT3 + BIT4;P8DIR |= BIT3 + BIT4; // 配置MSP430与BU9796的数据数P8OUT |= BIT3 + BIT4;P5OUT &= ~BIT7; // 点亮外部LEDP5DIR |= BIT7;}/* 函数名:main 功能:系统入口主函数*/void main( void ){WDTCTL = WDTPW + WDTHOLD; // 停看门狗ADC12CTL0 = SHT0_2 + ADC12ON; // 设置采样时间,开ADC12,Vref = V ACC ADC12CTL1 = SHP; // 使用定时器采样ADC12MCTL0 = INCH_1; // 选用A1通道ADC12IE = 0x01; // 开ADC12MCTL0中断ADC12CTL0 |= ENC; // 启动转换ADC12MCTL0 = INCH_1;P5DIR |= BIT7; // P5.7输出-LED/*for (;;){ADC12CTL0 |= ADC12SC; // 软件启动转换_BIS_SR(CPUOFF + GIE); // LPM0模式,由ADC12中断唤醒}*//* 功能:将16进制转化为10进制*/int a,b;a=ADC12MEM0;Disp_Data[5]=a%10;b=a/10;Disp_Data[4]=b%10;a=b/10;Disp_Data[3]=a%10;b=a/10;Disp_Data[2]=b%10;a=b/10;Disp_Data[1]=a%10;b=a/10;Disp_Data[0]=b%10;Init_MCU();Init_BU9796FS();P5OUT |= BIT7;Segment_Display( 0,Disp_Data,6 );_BIS_SR( CPUOFF );}#pragma vector=ADC12_VECTOR__interrupt void ADC12_ISR (void){ _BIC_SR_IRQ(CPUOFF); }。
430实验(实验一)流水灯xwz

实验报告课程名称嵌入式系统原理与设计实验名称I/O口的应用专业通信工程班级1301学号201303020102姓名谢稳桩指导教师胡瑛2015年9 月28 日实验一I/O口的应用实验名称I/O口的应用评分实验日期2015 年9 月28 日指导教师胡瑛姓名谢稳桩专业班级通信工程1301 学号201303020102一、实验目的1、熟悉和掌握MSP430单片机I/O的应用;2、掌握LED流水灯的控制;二、实验设备MSP430F5438开发板,示波器三、实验原理实验要求做一个LED显示流水灯,并要求四个灯闪烁,每次亮一个灯,依次闪烁,而且再往回闪烁。
再开发板原理图上找到LED指示灯的电路图,本次我选的是DIG5到DIG8这四个引脚,其分别对应P1.4到P1.7。
因为LED电路图为共阳,所以P1OUT=0时表示这四个LED灯全亮。
四、实验结果及代码分析控制LED灯依次闪烁可以用for语句来循环显示,这里有控制4个灯来显示,所以可以用for(i=0;i<3;i++) 循环四次。
控制第一个灯亮时,P1OUT=11101111。
所以,可以先定义一个temp=00010000来进行左移和右移,再将temp取反后赋值给P1OUT,既可以得到第一个灯亮的效果。
要使灯能够来回闪烁,我们需要定义两个for循环来分别控制从左到右闪烁和从右到左闪烁。
由于需要我们能看清楚LED灯是依次闪烁的,所以需要没闪一个灯都能停顿一下,以便观察,所以我们需要定义一个延迟函数void delay_ms(uint z),并将每次for循环一次就延迟,这样就可以达到没亮一个灯都能延迟一段时间再亮下一个灯。
#include <msp430x54x.h>#define uint unsigned int#define uchar unsigned charvoid delay_ms(uint z) //延迟程序{uint x,y;for(x=571;x>0;x--)for(y=z;y>0;y--);}void main (void){uint i;uchar temp;WDTCTL=WDTPW + WDTHOLD; //关闭看门狗P5DIR |= BIT4; //VCC PWRP5OUT |= BIT4;P7DIR |= BIT3; //LED PWRP7OUT &= ~BIT3;P1DIR=0XF0;P1OUT=0XF0;while(1){temp = 0X10;for(i=0;i<3;i++) //控制LED灯闪烁{P1OUT=~temp;delay_ms(300);temp=temp<<1;}for(i=0;i<3;i++) //控制LED灯闪烁(反向){P1OUT=~temp;delay_ms(300);temp=temp>>1;}}}五、实验结论与体会本次实验让我进一步接触到MSP430单片机的应用,这次实验也是我学习430单片机以来第一次编写的实用程序,刚接触到这个实验的时候,我感觉束手无策,脑海里一片混乱,但在老师和同学的指点下,我最终还是自己理清了思路,成功将程序编写完成,并在开发板上成功显示了流水灯。
430单片机实验心得体会7篇

430单片机实验心得体会7篇430单片机实验心得体会篇1很多人说,学单片机最好先学汇编语言,以我的经验告诉大家,绝对没有这个必要,初学者一开始就直接用c语言为单片机编程,既省时间,学起来又容易,提高速度会很快。
在刚开始学单片机的时候,千万不要为了解单片机内部结构而浪费时间,这样只能打击你的信心,当你学会编程后,自然一步步就掌握其内部结构了。
单片机的学习实践。
单片机提高重在实践,想要学好单片机,软件编程必不可少。
可是熟悉硬件对于学好单片机的也是十分重要的。
如何学习好硬件,动手实践是必不可少的。
我们能够经过自我动手做一个自我的电子制作,经过完成它,以提高我的对一些芯片的了解和熟练运用它。
这样我们就能够多一些了解芯片的结构。
我相信,你完成了一个属于自我的电子制作,你的单片机水平就会有一个质的提高。
这就是我学习单片机的心得体会,期望给单片机的爱好者学好单片机有所帮忙。
使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或c语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。
第一步:数字io的使用使用按钮输入信号,发光二极管显示输出电平,就能够学习引脚的数字io功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,可是能够学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。
每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
第二步:定时器的使用学会定时器的使用,就能够用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,能够用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。
数字集成电路能够实现时序电路,可编程逻辑器件(pld)能够实现时序电路,可编程控制器(plc)也能够实现时序电路,可是仅有单片机实现起来最简单,成本最低。
msp430 实验报告

msp430 实验报告MSP430 实验报告引言:MSP430是一款低功耗、高性能的微控制器,广泛应用于嵌入式系统开发领域。
本实验报告将介绍我对MSP430进行的一系列实验,包括基本的GPIO控制、定时器应用、模拟信号采集和通信接口应用等。
实验一:GPIO控制在本实验中,我使用MSP430的GPIO引脚控制LED灯的亮灭。
通过配置引脚的输入/输出模式以及设置引脚电平,我成功地实现了对LED灯的控制。
这为后续实验奠定了基础,也让我更加熟悉了MSP430的寄存器配置。
实验二:定时器应用在本实验中,我探索了MSP430的定时器功能。
通过配置定时器的时钟源和计数模式,我实现了定时器中断功能,并利用定时器中断实现了LED灯的闪烁。
这个实验让我更加深入地了解了MSP430的定时器模块,并学会了如何利用定时器进行时间控制。
实验三:模拟信号采集在本实验中,我使用MSP430的模拟信号输入引脚和模数转换模块,成功地将外部的模拟信号转换为数字信号。
通过配置ADC模块的采样速率和精度,我实现了对模拟信号的准确采集,并将采集到的数据通过串口输出。
这个实验让我对MSP430的模拟信号处理有了更深入的了解。
实验四:通信接口应用在本实验中,我使用MSP430的串口通信模块,实现了与外部设备的数据传输。
通过配置串口的波特率和数据格式,我成功地实现了与计算机的串口通信,并通过串口发送和接收数据。
这个实验让我掌握了MSP430与外部设备进行数据交互的方法。
结论:通过一系列的实验,我对MSP430的基本功能和应用有了更深入的了解。
MSP430作为一款低功耗、高性能的微控制器,具备丰富的外设和强大的处理能力,适用于各种嵌入式系统的开发。
通过学习和实践,我掌握了MSP430的GPIO控制、定时器应用、模拟信号采集和通信接口应用等基本技能,为以后的嵌入式系统开发打下了坚实的基础。
未来展望:MSP430作为一款成熟的微控制器,具备广阔的应用前景。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
430单片机点亮LED实验报告
一.安装实验软件IAR
二.编写点亮LED灯程序
1.使P1.0口LED灯会不停的闪烁着,程序
#include <msp430x14x.h>
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;
}
我编写这段程序的现象是一个灯先亮,另一个后亮,一个灯先灭,后一个再灭。
就是两个灯的状态没有做到相反。
后来我在我程序上做了一些改动。
#include"msp430g2553.h"
void main(void) {
void Blink_LED();
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
P1DIR=BIT6;
P2DIR=BIT0;
P1OUT |= BIT6;
P2OUT &= ~BIT6;
while(1)
{
Blink_LED();
}
}
void Blink_LED()
{
_delay_cycles(1000000); //控制第二个LED
P1OUT^=BIT6;
P2OUT^=BIT0;
}
3.LED灯逆循环点亮程序
#include <reg52.h>
typedef unsigned char uint8; typedef unsigned int uint16; sbit ENLED1=P1^4;
sbit ENLED2=P1^3;
sbit ADDR0 =P1^0;
sbit ADDR1 =P1^1;
sbit ADDR2 =P1^2;
main()
{
uint16 i;
uint8 j;
ENLED1=0; ENLED2=1;
ADDR0=0; ADDR1=1; ADDR2=1; while(1)
{
P0=~(80>>j++);
for(i=1;i<20000;i++);
if(j==8)
j=0;
}
}
我写好程序了可是运行的时候结果不对),之后继续修改
程序while循环都没有对LED的串口做任何处理,把“P0=~(80>>j++); ”改成“P0=~(0x80>>j++); ”
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit ENLED1=P1^4;
sbit ENLED2=P1^3;
sbit ADDR0 =P1^0;
sbit ADDR1 =P1^1;
sbit ADDR2 =P1^2;
main()
{
uint16 i;
uint8 j;
ENLED1=0; ENLED2=1;
ADDR0=0; ADDR1=1; ADDR2=1;
while(1)
P0=~(0x80>>j++); //P0=~(80>>j++);
for(i=1;i<20000;i++);
if(j==8)
{
j=0;
}
}
四.实验总结
由于之前学过一段时间51单片机,所以有些东西比较清楚,但430和51一有很大不同,虽然内部结构很像,但430的寄存器的设置很麻烦,比如P1 P2口,那可真是麻烦得很,430这个IO口设置了如很多的功能,并且单独抽出了好几个设置的寄存器。
用430单片机点亮算是入门吧。