430单片机点亮LED实验报告

合集下载

msp430 实验报告

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单片机实验报告
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

实验一用单片机点亮一只发光二极管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单片机实验报告

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

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单片机实验心得体会7篇430单片机实验心得体会篇1很多人说,学单片机最好先学汇编语言,以我的经验告诉大家,绝对没有这个必要,初学者一开始就直接用c语言为单片机编程,既省时间,学起来又容易,提高速度会很快。

在刚开始学单片机的时候,千万不要为了解单片机内部结构而浪费时间,这样只能打击你的信心,当你学会编程后,自然一步步就掌握其内部结构了。

单片机的学习实践。

单片机提高重在实践,想要学好单片机,软件编程必不可少。

可是熟悉硬件对于学好单片机的也是十分重要的。

如何学习好硬件,动手实践是必不可少的。

我们能够经过自我动手做一个自我的电子制作,经过完成它,以提高我的对一些芯片的了解和熟练运用它。

这样我们就能够多一些了解芯片的结构。

我相信,你完成了一个属于自我的电子制作,你的单片机水平就会有一个质的提高。

这就是我学习单片机的心得体会,期望给单片机的爱好者学好单片机有所帮忙。

使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或c语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。

第一步:数字io的使用使用按钮输入信号,发光二极管显示输出电平,就能够学习引脚的数字io功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,可是能够学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。

每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。

第二步:定时器的使用学会定时器的使用,就能够用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,能够用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。

数字集成电路能够实现时序电路,可编程逻辑器件(pld)能够实现时序电路,可编程控制器(plc)也能够实现时序电路,可是仅有单片机实现起来最简单,成本最低。

msp430 实验报告

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作为一款成熟的微控制器,具备广阔的应用前景。

单片机实验--实验报告-LED灯闪烁实验

单片机实验--实验报告-LED灯闪烁实验

单片机实验--实验报告-LED灯闪烁实验
为了深入了解单片机,本次实验我们选取LED灯闪烁实验,研究单片机控制LED闪烁
的原理。

经过这次实验,初步了解了单片机实验的基本设备及操作步骤,掌握了单片机语
言操控LED进行简单应用。

实验做法如下:
一、设计流程:
1.实验目的
本次实验的目的是了解单片机的原理,掌握单片机语言的基本使用方法,编制可控制LED灯闪烁的程序,完成LED灯闪烁的控制。

2.实验设备
实验设备主要包括:单片机51系列主控板,51单片机芯片,备有LED等硬件。

3.原理描述
本次实验主要是利用单片机来实现LED灯发出的闪烁效果,将单片机的P0作为一个
数据口出口实现闪烁的控制,这里使用一个定时器定时,通过程序实现数据口的翻转,可
以实现LED的闪烁效果。

二、实验步骤:
1.硬件的准备及接线
准备所需要的硬件,将单片机的芯片插入51系列主控板,将LED灯接线到主控板上。

2.软件编译
打开Keil软件,创建一个单片机工程文件,然后调用单片机库函数,建立用于控制LED灯闪烁的相关函数。

3.程序下载
编译、链接生成hex文件,将hex文件下载到单片机芯片上,运行程序(此处使用51编程器),完成LED的闪烁控制。

4.程序调试
完成程序的编写、下载即可实现LED的闪烁,对程序做个完整的测试,保证程序的可
靠性。

430单片机课程设计报告

430单片机课程设计报告

430单片机课程设计报告(步进电机驱动和键盘输入程序)学号:班级:姓名:此处放学校Logo一、设计思想在步进电机驱动方面,利用课程设计实验板上2003驱动接口电路,通过编程完成步进电机驱动功能。

系统初始化后,通过定时器B产生脉冲通过MC1413对步进电机进行驱动,同时满足初始设定值是步进电机的转速为每转5秒钟,正转2圈之后再反转2圈,循环进行。

并加入键盘模块,可以修改步进电机的运行参数。

在键盘输入程序方面,我设定了三个模式,一个模式用来输入单个字符,一个模式用来输入字符串,一个模式用来修改步进电机的运行参数(左右转圈数、周期)。

二、参数计算1、步进电机驱动实验使用型号为XY39ST20的四相步进电机,采用四相八拍控制方式工作。

步进电机的转角和转动方向取决于各相中通电脉冲的个数和顺序。

控制相序如表。

当按A-AB-B-BC-C-CD-D-DA顺序通电时步进电机正转,反之按相反顺序通电时步进电机反转。

XY39ST20步进电机正转时控制顺序及数学模型步序 1 2 3 4 5 6 7 8控制位P7.7 1 1 1 0 0 0 0 0P7.6 0 0 1 1 1 0 0 0P7.5 0 0 0 0 1 1 1 0P7.4 1 0 0 0 0 0 1 1控制模型0x90 0x80 0xc0 0x40 0x60 0x20 0x30 0x10由于MSP430每一种器件中都含有低速晶体振荡器(LFXT1),默认工作在低频模式32768Hz,捕获/比较寄存器CCR0经常用来用作周期寄存器,因为CCR0为16位寄存器,所以该模式适用于定时周期小于65536的连续计数情况,计数器TAR可以增计数到CCR0的值,当计数器与CCR0的值相等(定时器值大于CCR0的值时),定时器值复位并从0重新开始计数。

所以初始化TACCR0=32768,计数一次的时间便是32768/32768=1s,初始化TBCCR0 =328,计数一次时间约为4s,程序由步进电机为四相八拍,所以每步为0.9°,一圈为360°,故转一圈需走360/0.9=400次的正转数组,用时4s。

单片机MSP430实验报告

单片机MSP430实验报告

实验二一、示例:按S1,LED1改变状态#include <msp430f5529.h>void Delay(void) //延迟子程序{int i;for(i = 100;i--;i > 0) ;//延时一点时间}void main(void){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗P1DIR=0x7f;//P1DIR,置1为输出,置0为输入。

0x7f=0111 1111,p1.7为输入,p1.0~p1.6为输出P1REN |= BIT7;//P1.7开启上拉电阻。

|= 为与或,BIT7为1000 0000,P1.7的REN置1,开启端口拉电阻。

P1OUT=0xff; //P1输出高电平。

注意:while (1){if ((P1IN & BIT7)==0)//按键S1被按下。

&位与,若S1按下,P1.7=0,位与操作后,P1IN&BIT7=0x00 {void Delay(void);if (!(P1IN & BIT7)) //按键S1被按下.!(P1IN & BIT7)等同(P1IN & BIT7)==0 {while(!(P1IN & BIT7)); //按键S1被松开P1OUT ^= 0x01; //P1.0输出状态翻转}}}}二、上机自编程序的要求:按下按键S1,控制LED1的亮和灭。

短按键,则小灯亮1秒,然后灭;长按键,小灯常亮。

//********************************************************************* *********// MSP430F552x Demo - Timer0_A5, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK //// Description: Toggle P1.0 using software and TA_1 ISR. Timer1_A is// configured for up mode, thus the timer overflows when TAR counts// to CCR0. In this example, CCR0 is loaded with 50000.// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~1.045MHz//// MSP430F552x// ---------------// /|\| |// | | |// --|RST |// | |// | P1.0|-->LED//// Bhargavi Nisarga// Texas Instruments Inc.// April 2009// Built with CCSv4 and IAR Embedded Workbench Version: 4.21//********************************************************************* #include<msp430f5529.h>unsigned int h,i;void Delay(void) //延迟子程序{int i;for(i = 100;i--;i > 0) ;//延时一点时间}void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTP1DIR=0x7f;//P1DIR,置1为输出,置0为输入。

430单片机实习报告8篇

430单片机实习报告8篇

430单片机实习报告8篇下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!写实习报告是记录我们实习收获的重要方式,实习报告的写作是可以让自己实习的过程都记录下来的,以下是小文学小编精心为您推荐的430单片机实习报告8篇,供大家参考。

430单片机实习报告篇1一、实习说明(1)实习时间:20xx.x-20xx.x(2)实习地点:xx科技有限公司(3)实习性质:顶岗实习(主要基于xx平台从事中小型企业管理软件定制开发,使用现在主流的一些框架,在开发中担当设计、编码角色。

)二、实习的性质、目的和意义毕业实习是教学过程中的重要组成部分,是使学生获取生产、经营实际知识和技能,巩固和加深对理论知识的理解,培养与提高能力的重要实践环节。

通过本次实习,学生将进一步加深对计算机理论知识的理解,进一步熟悉计算机文员的相关运作过程,为学生毕业后的实际工作打下良好基础。

xx在人事部门的广泛使用,改进了统计手段,改革了统计方法,提高了统计工计算机在人事部门的广泛应用,将为我国的人事管理工作,提供现代化的管理手段和科学的管理方法,并将为开创人事管理工作的新局面创造条件。

目前,计算机在我国的人事管理工作中,主要可用来进行报表处理,档案管理,文书编辑,信息查询,综合分析。

干部统计作为人事管理的一个重要组成部分,是通过对干部情况的调查,整理和分析,了解干部队伍的发展趋势,为各级领导机关制定干部工作的方针,政策,加强干部管理,改革干部制度提供准确数字的依据。

其工作除涉及到干部的基本情况统计之外,还包括干部的工资统计,干部编制情况统计,干部奖惩情况统计,军转干部安置情况统计,老干部情况统计等方面,其涉及的面之广,数据量之大可想而知,若利用手工进行干部的统计工作,大致要经过干部统计调查,干部统计资料的整理,干部统计分析三个过程,但这种手工统计过程,存在着几个明显的问题,比如说统计资料缺乏准确性,及时性,需要花费大量的人力,物力,财力等。

MSP430单片机定时器实验报告

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 <msp430f5529.h>void main(){WDTCTL = WDTPW + WDTHOLD; //关看门狗P1DIR |= BIT3; //设置P1.0口方向为输出。

TA0CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,//CCR0捕获/比较功能中断为允许。

TA0CCR0 = 32767; //捕获/比较控制寄存器CCR0初值为32767TA0CTL = 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){P1OUT ^= BIT3; //P1.0取反输出}实验现象:实验开始后,实验板上LED6亮灭闪烁,间隔为1s。

程序2:#include <msp430f5529.h>void main(void){WDTCTL = WDTPW + WDTHOLD; // 关狗P1DIR |= BIT1; // P1.1 设置为输出P1SEL |= BIT1; // P1.1 输出使能TA0CCR0 = 60000; // PWM PeriodTA0CCTL0 = OUTMOD_4; // CCR1 模式4TA0CCR1 = 30000; // CCR1 PWM duty cycleTA0CTL = TASSEL_1 + MC_1 + TACLR; // ACLK, up mode, clear TAR__bis_SR_register(LPM3_bits); // Enter LPM3__no_operation(); // For debugger}实验现象:实验开始后,实验板上LED4亮灭闪烁,间隔为1s。

MSP430单片机实验报告

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 <io430.h> // 头文件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,unsigned char seg7_data0); // 声明驱动8 位数码管函数const unsigned char decoder_seg7[]={0x92,0xa4,0xc0,0xf9,0xb0,0xf9,0x99,0x7f }; //数码管显示表【5201314.】int main(void) // 主函数{WDTCTL=WDTPW+WDTHOLD; // 关闭看门狗P5SEL&=~BIT1; // 设置P5.1 端口为并行数字输入/ 输出口P5DIR|=BIT1; // 设置P5.1 端口为输出口P5SEL&=~BIT3; // 设置P5.3 端口为并行数字输入/ 输出口P5DIR|=BIT3; // 设置P5.3 端口为输出口while(1) // 重复执行{seg7_8 (7,6,5,4,3,2,1,0); // 调用驱动8 位数码管函数delay ( ); // 延时}}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_data1,unsigned char seg7_data0)// 驱动8位数码管的同步串行数据接口驱动函数{seg7_1(seg7_data0); // 调用1 位数码管的同步串行数据接口驱动函数seg7_1(seg7_data1);seg7_1(seg7_data2);seg7_1(seg7_data3);seg7_1(seg7_data4);seg7_1(seg7_data5);seg7_1(seg7_data6);seg7_1(seg7_data7);}void seg7_1 (unsigned char seg7_data)// 驱动1 位数码管的同步串行数据接口驱动函数{unsigned char code_seg7; // 声明显示代码变量unsigned char a; // 声明循环变量unsigned char shift; // 声明串行数据位存储变量code_seg7=decoder_seg7[seg7_data]; // 显示数据译码P5OUT&=~BIT1; // P5.1 输出低电平P5OUT&=~BIT3; // P5.3 输出低电平shift=0x80; // 串行数据位指向8 位数据的最高位for(a=0; a<8; a++){if(code_seg7&shift) // 判断显示代码位的状态{P5OUT|=BIT1; // P5.1 输出高电平}else{P5OUT&=~BIT1; // P5.1 输出低电平}P5OUT|=BIT3; // P5.3 输出高电平P5OUT&=~BIT3; // P5.3 输出低电平shift=shift>>1; // 串行数据位指向数据位右移1 位}}void delay (void) //延时函数{unsigned char b;for(b=0xff;b>0;b--); }。

MSP430单片机编程与实践-实验报告

MSP430单片机编程与实践-实验报告
unsigned char aa,bb,b=0; unsigned char com_byte; unsigned char num; unsigned char key; unsigned char key_flag;
void key_scan(); void delay(unsigned x) {
实验二:使用基本定时器,通过 P1.0 口控制 LED 灯的亮灭,亮灭时间都为
2
1S。 实验原理如图 1 所示:
实验程序:
图 1:LED 灯控制电路
#include <msp430x44x.h>
void main()
{ WDTCTL=WDTPW+WDTHOLD; IE2|=BTIE;
//关闭看门狗定时器 //打开基本定时器中断
{
}
ADC12CTL0 |= ENC; _EINT();
//允许转换

while(1)
{ ADC12CTL0 |= ADC12SC;
//开始转换
_BIS_SR(LPM0_bits); DegC = ((((long)ADCresult-1615)*704)/4095);
}
#pragma vector=ADC_VECTOR
○3 掌握 LED 静态显示和动态扫描显示的原理与编程设计; ○4 掌握 LCD 显示的原理以及编程设计; ○5 掌握 ADC 工作的原理,熟悉使用 ADC12 的工作方式; ○6 熟悉独立键盘以及行列式键盘的设计方法,掌握键盘工作原理和一般的编 程设计; ○7 综合 MSP430 的各个功能模块,练习编写数字密码锁程序,实现基本的一 些条件,使学生的学习与社会发展同步,更接近生活实际;
ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_6; 采样周期

430单片机实验报告

430单片机实验报告
四、
1、建立工程
2、编写程序,编译、运行
3、把程序下载到单片机中
4、程序代码:
#include <msp430g2452.h>
int i=0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//P1SEL |= 0x06; // P1.1 - P1.2 option select
unsigned char temp;
P1OUT=0; //p1out全为0;等待按键输
temp=P1IN;
if((temp&0xf0)<0xf0) ; //如果有键按下;
{
delay();
Key_Scan();
switch(key_val)
{
case 0:P2DIR|=0xff;P2OUT=0x3f;break;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;
init_keyboard();
delay();
ctrlkey(1);
while(1)
{
key_event();
}
}
五、实验设备
计算机、IAR-FET集成开发环境、MSP430G2553单片机
六、问题分析
使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。
P2SEL=0X00;
key_val=0;
}
void Key_Scan(void) //扫描键盘获得键值

msp430点亮led

msp430点亮led

第二讲点亮LED一、配置具体配置和连接按照第一讲中进行。

由实验板上的标识可以看出,LED共有两个,LED1连接P1.0,LED2连接P1.6二、程序结构这是软件初始生成的程序其引入的头文件io430.h是一个通用头文件,它会根据所选用的device的不同,来调取不同芯片的具体头文件。

打开io430.h,即可看到它会根据define内容不同,加入其他头文件为方便使用和学习,我们直接使用msp430g2553.h由此,我们即可随时打开msp430g2553.h,查看此芯片相关寄存器可配置内容,方便学习和使用。

从下图所示的标准比特的定义中,我们可以看到因此,我们在程序编写的过程中,可以使用BITx来对每一位io进行操作。

另外,遇到不明白含义的定义,可以在头文件中搜索好了,这个先讲到这里,我们继续看程序。

这是程序中第一个语句,刚刚接触的同学确实不明白它的含义这时候,就在头文件里面搜索一下吧根据头文件的说明,这是看门狗定时器。

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,就有了看门狗。

由于我们此时不需要使用,就先把它关掉。

因为它的默认设置中,程序开始执行到一定时间就会自动复位,会影响我们的使用。

接下来到此,程序结束。

三、I/O介绍I/O,是INPUT/OUTPUT的简写,即输入输出。

我们使用的MSP430G2553共有两组I/O 口,即P1.0-P1.7,P2.0-P2.5。

如对于P1,它的输入输出值分别存储在P1IN和P1OUT两个8位寄存器中,其中P1.0对应最低位,P1.7对应最高位。

且对于8位寄存器,仅最高位为1时其值为0x80,仅最低位为1时其值为0x01。

当然,同一个I/O口不能同时进行输入、输出,每一时刻只能进行一项工作,并由P1DIR 寄存器控制,其中1为输出,0为输入。

430单片机实践报告

430单片机实践报告

void main (void )
{
unsigned i,k;
WDTCTL=WDTPW+WDTHOLD;
//利用看门口防止程序跑飞
P5DIR |= BIT1;
//设置端口,0为输入,1为输出
for (i=0; i<6000; i++)
{
for (k = 0; k<60000; k++);
// 通过判断外层循环次数的奇偶决定 P5.1 的电平高低
8
{ switch(j) { case 0: { P1OUT &=~0x80; P1OUT |= 0x04; P1OUT |= 0x02;
if(!(P1IN&BIT4)) num =10; else if (!(P1IN&BIT5)) num = 3; else if (!(P1IN&BIT6)) num = 2; else if (!(P1IN&BIT7)) num = 1;
__interrupt void Timer_A(void)
{
P5OUT ^= 0x02;
// P5.1 异或取反
CCR0 += 50000;
// 在已计数的50000基础上再计数50000 使 CCR0与TAR同步计数到 65535 在计数到65535-50000 产生中断使占空比为50%
}
3、 总结与分析
(1) 看门狗
[1] 作用:看门狗在语句中能够防止由于程序处理定期清零造成的错误,能使处 理器重新启动 [2] 代码实现:
停止模式:关闭看门狗 WDTCTL=WDTPW+WDTHOLD;
计时器模式:计数器溢出产生中断时执行看门狗中断函数 WDT_MDLY_8 或 WDTCTL = WDT_ADY_250

单片机原理及应用第四讲Msp430单片机的GPIO实验报告

单片机原理及应用第四讲Msp430单片机的GPIO实验报告

单片机原理及应用第四讲Msp430单片机的GPIO实验报告报告人:实验内容1、实验1 数字IO控制led灯闪烁分别控制端口、、输出到对应的LED灯实现灯的闪烁2、实验2 动动手,用Key2控制绿色LED通过按下KEY2控制绿色LED的亮灭3、实验3 更进一步,提高程序可读性与实验2类似,都是实现按键控制灯的亮灭,只是这里通过宏定义使得程序更加易懂、实验步骤三个实验的步骤都差不多,只是代码部分有所差异,这里先作统一描述,然后附上关键代码:共同步骤:(1) 将PC 和板载仿真器通过USB 线相连;(2) 打开CCS 集成开发工具,选择样例工程或自己新建一个工程,修改代码;(3) 选择对该工程进行编译链接,生成.out 文件。

然后选择,将程序下载到实验板中。

程序下载完毕之后,可以选择全速运行程序,也可以选择单步调试程序,选择F3 查看具体函数。

也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。

再按下实验板的复位键,运行程序。

(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。

关键代码:实验1:#include <>int main(void){volatile unsigned int i;WDTCTL = WDTPW+WDTHOLD; // Stop WDTP4DIR |= BIT1; // set as outputwhile(1) // continuous loop{P4OUT ^= BIT1; // XORfor(i=50000;i>0;i‐‐); // Delay}}如需实现和端口的控制只需将P4DIR |= BIT1和P4OUT ^= BIT1中BIT1改为BIT2、BIT3实验2:int main(void){WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timerP4DIR |= BIT1; // Set to output directionP2REN |= BIT6; // 脚上下拉电阻使能P2OUT |= BIT6; // 脚使用上拉电阻while (1) // Test{if (P2IN & BIT6)P4OUT |= BIT1; // if set, setelseP4OUT &= ~BIT1; // else reset}}实验3:#define LED1_BIT BIT0#define LED1_DIR P1DIR#define LED1_OUT P1OUT#define LED1_ON (LED1_OUT |= LED1_BIT)#define LED1_OFF (LED1_OUT &= ~LED1_BIT)#define BUTTON_BIT BIT7#define BUTTON_OUT P1OUT#define BUTTON_DIR P1DIR#define BUTTON_IN P1IN#define BUTTON_REN P1RENint main(void){WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer LED1_DIR |= LED1_BIT; // Set to output direction BUTTON_REN |= BUTTON_BIT;BUTTON_OUT |= BUTTON_BIT;while (1) // Test{if (BUTTON_IN & BUTTON_BIT)LED1_OUT |= LED1_BIT; // if set, set elseLED1_OUT &= ~LED1_BIT; // else reset }}实验现象分析实验1:烧写完毕后对应LED灯闪烁实验2:按下指定按键LED灯亮实验3:按下指定按键LED灯亮实验中遇到的问题无。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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单片机点亮算是入门吧。

相关文档
最新文档