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

合集下载

msp430实验报告

msp430实验报告

msp430实验报告msp430实验报告引言:msp430是一种低功耗、高性能的微控制器,被广泛应用于嵌入式系统和物联网设备中。

本实验报告将介绍我对msp430微控制器进行的一系列实验,包括实验目的、实验过程、实验结果以及对实验的总结和展望。

实验目的:本次实验的主要目的是熟悉msp430微控制器的基本功能和使用方法,以及学习如何进行简单的控制程序设计。

通过实验,我希望能够掌握msp430的基本操作和编程技巧,并且能够运用所学知识解决实际问题。

实验过程:在实验开始之前,我首先对msp430微控制器进行了一些基本的了解。

我了解到,msp430具有低功耗、高性能和丰富的外设接口等特点,可以满足各种嵌入式系统的需求。

接着,我根据实验指导书的要求,准备好实验所需的硬件设备和软件工具。

第一部分实验是关于GPIO口的实验。

我按照实验指导书上的步骤,将msp430与LED灯连接起来,并编写了一个简单的程序,实现了对LED灯的控制。

通过这个实验,我学会了如何配置GPIO口和编写简单的控制程序。

第二部分实验是关于定时器的实验。

我学习了如何配置msp430的定时器,并编写了一个简单的程序,实现了定时闪烁LED灯的功能。

通过这个实验,我深入了解了定时器的工作原理和编程方法。

第三部分实验是关于ADC的实验。

我学习了如何配置msp430的ADC模块,并编写了一个简单的程序,实现了对外部模拟信号的采样和转换。

通过这个实验,我了解了ADC的基本原理和使用方法。

实验结果:通过一系列实验,我成功地掌握了msp430微控制器的基本功能和使用方法。

我能够独立完成GPIO口的配置和控制、定时器的配置和编程、ADC的配置和采样等任务。

实验结果表明,msp430具有强大的功能和灵活的编程能力,可以满足各种嵌入式系统的需求。

总结和展望:通过本次实验,我对msp430微控制器有了更深入的了解,并且掌握了一些基本的操作和编程技巧。

然而,由于实验时间和条件的限制,我还没有完全发挥出msp430的潜力。

430单片机点亮LED实验报告

430单片机点亮LED实验报告

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 resetP2DIR|=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); //控制第一个LEDP2OUT^=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); //控制第二个LEDP1OUT^=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口设置了如很多的功能,并且单独抽出了好几个设置的寄存器。

msp430课程报告

msp430课程报告

不知不觉中,时光如白驹过隙般飞逝,一转眼,单片机课程的学习结束了。

在本次单片机的学习过程中,我不仅学习了单片机的理论知识,并将理论知识很好地应用到实践当中去,而且我还增强了自我创新意识,提高了动手实践能力。

在本次课程的学习中,我意识到知识的学习固然重要,能力的培养也不能忽视。

随着电子科学技术的发展,特别是随着大规模集成电路的迅猛发展,人们的生活发生了巨大的变化,生活水平显著提高,生活方式也逐步改变,使人们的生活更加便捷、舒适。

如果说微型计算机的出现给现代科学研究带来了质的飞跃,那么可编程控制器的出现则是现代工业控制测控领域的一次新的革命。

其中,单片的作用不容忽视。

单片机的应用范围很广,在工业自动化中应用有数据采集、测控技术等。

在智能仪器仪表中应用有数字示波器、数字信号源、自动取款机等。

在消费类电子产品中应用有空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。

在通讯方面应用有手机、小灵通等。

在武器装备方面应用有飞机、坦克、导弹、航天飞机、智能武器等。

单片机对现代生活的影响不言而喻了。

刚开始学习的时候,基本未接触过单片机,对单片机没有什么了解,不知道什么是单片机,更不知道它有什么作用。

通过本次课程的学习才大体了解了单片机的一些知识与应用。

知道了由中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等集成在一块芯片上,构成了一个单片微型计算机,简称为单片机。

了解了什么是单片机以后,就开始接触硬件设备。

我学习了下列几个外设。

1.WDT俗称看门狗,是单片机非常重要的一个片内外设。

什么是看门狗呢?看门狗实际就是一个定时器,只不过在定时到达时,可以复位单片机。

这个功能对于实际工程应用中的产品非常有用。

2.JLX12864G-086 型液晶模块是晶联讯电子研发和制造的液晶屏模块。

该型液晶模块由于使用方便、显示清晰,广泛应用于各种人机交流面板。

该模块可选择带中文字库IC 与不带中文字库IC 两种。

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

msp430实验与程序

msp430实验与程序

[ 实验目的]学会使用ADC12,DMA,TIMERB模块了解语音采集,以及PWM-DA工作原理。

[ 实验要求]1、编程要求:IAR4.11B C语言。

2、实现功能:录/放音。

3、实验现象:可进行17秒左右录/放音。

[ 实验原理]该实验的基本原理是:利用MIC 将声音信号转换成模拟的电信号,通过功放将该信号放大,利用ADC12 进行采集、转换成数字量,并且通过DMA 直接将转换数据送入FLASH 中进行存放。

在存放过程中通过LCD进行一定的信息提示,这就完成了整个录音过程。

放音过程中,则是通过提取存放在FLASH中的数据,通过计算得出PWM波占空比,利用TIMERB 输出PWM 波,再通过1 阶带通滤波器进行滤波,模拟出采集进来的模拟电信号,通过语音输出功放TPA301进行放大送给耳机输出接口。

因此整个的过程的基本框图如图4-4:图 4-4 语音基本框图在该实验中最需要注意的是,采样频率的设置。

根据奈奎斯特采样定理,采样频率必须大于被采样信号中最大频率分量频率的两倍,否则不能从信号采样中回复原始信号。

由于人耳听觉范围通常为20Hz到20KHz,如果要将所有声音都做一个非常精确的记录以及播___________放,很显然MCU的速度上无法支持。

但是做一个相对清晰语音记录的话,则采样频率仅仅需要11KHz(电话音质)。

为了采样数据的存放的方便,也由于采样频率本身就被限制在了11KHz,因此ADC12 在进行转换的时候精度要求就不那么高了,通过设置我们将ADC12DC 的转换精度改成8 位。

则每次进行采样的数据仅仅就是8 位,一个字节而已。

在采样的时候进行处理将两次采样的数据整合成一个字,存入FLAH中。

而MSP430F5438系列有256K的FLASH ROM,扣去一些预留空间,则有192K的空间来进行语音数据的存取。

则总共可记录语音时间:T = 192Kbyte/(11K/S*1byte)=17S电信号电信ADC 号FLASHTIMEBPWM波电信号DMA TB 带通1第131页共179页如果采样 12 位精度的AD 转换,则时间会大大减少而音质并不会因此而有太大的提高。

MSP430系列16位超低功耗单片机原理与实践

MSP430系列16位超低功耗单片机原理与实践

MSP430系列16位超低功耗单片机原理与实践MSP430系列单片机采用了哈佛结构,具有16位的数据宽度,可以实现更高的数据处理速度。

它的主频范围从1MHz到25MHz,能够满足不同应用的需求。

同时,MSP430系列单片机具有多种低功耗模式,例如待机模式、休眠模式和独立模式,可以有效地降低功耗,延长电池寿命。

MSP430系列单片机具有丰富的外设接口,包括多个串口通信接口、通用输入输出口、模拟输入输出口以及定时器和计数器等。

这些外设接口使MSP430系列单片机可以与其他外部设备进行通信,实现数据的输入和输出。

此外,MSP430系列单片机还具有多个中断源,可以实现实时中断处理,提高系统的响应能力。

使用MSP430系列单片机进行开发,首先需要选择合适的开发板和编程工具。

德州仪器公司提供了MSP430 LaunchPad开发板,可以方便地进行程序的编写和调试。

同时,德州仪器还提供了MSP430编程工具链,包括编译器、调试器和仿真器等,在开发过程中能够提高开发效率。

在实际开发中,可以利用MSP430系列单片机的低功耗特性,实现一些需要长时间运行的应用。

例如,可以将MSP430系列单片机用于物联网中的传感器节点,采集和传输环境数据。

由于MSP430系列单片机的低功耗特性,可以通过电池供电,从而实现长时间的无线监测。

此外,MSP430系列单片机还可以用于电力管理系统、家庭自动化系统和医疗设备等领域。

它的低功耗特性和丰富的外设接口使其具有很高的适用性,能够满足各种不同应用的需求。

总结起来,MSP430系列单片机是一款16位超低功耗单片机,具有高性能和丰富的外设接口。

它的低功耗特性使得它在物联网、电力管理、家庭自动化和医疗设备等领域具有广泛的应用前景。

通过学习MSP430系列单片机的原理和实践,可以更好地应用它在实际开发中。

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); }。

msp430单片机实验报告

msp430单片机实验报告

实验报告课程名称:单片机原理及应用实验题目:实用多功能定时器学生姓名:**学号:**********专业班级:自动化二零一六年五月七日目录一、课程实验目的 (1)二、实验要求 (1)三、课程实验硬件电路 (2)3.1、硬件电路结构 (2)3.2、电路原理 (2)3.2.1、显示电路 (2)3.2.2、按键检测电路 (3)四、实验步骤 (6)五、软件设计 (6)5.1、倒计时主程序 (6)5.2、中断程序设计 (7)六、调试与结论 (7)七、附录 (8)一、目的(1)熟练运用CCS开发环境和Proteus仿真软件,巩固和加深单片机原理课程知识的理解和运用。

(2)综合本学期所学的按键检测以及液晶的动态显示原理,设计出以MSP430G2553为核心的以LCD1602为显示的倒计时系统。

(3)熟悉各元器件的性能和设置元件参数,进一步提高学生单片机应用系统的设计能力。

(4)培养学生综合分析问题、发现问题和解决问题的能力。

二、实验要求(1)设计一个倒计时器,定时范围99分60秒,用液晶作为显示器。

4个按键控制,分别是分钟加一、秒钟加一、清零和开始停止键。

按分钟加一键时,分钟显示值加1,最大99 ;按秒钟加一键时,秒钟显示值加1,最大60;按清零键时,分钟、秒钟显示值都清零;按开始键,则开始倒计时。

显示值为零时停止倒计时,且报警器报警,直到按停止键报警器停止报警。

按开始键后,分钟加一、秒钟加一、清零键不起作用。

按停止键可以暂停。

倒计时为零后,按停止键,显示值恢复设定值,按开始键又可以工作。

(2)总体要求如下:1、方案论证,确定总体电路原理图。

2、画硬件仿真电路图。

3、绘制程序流程图,编写C语言源程序。

4、安装调试,实现倒计时器的基本功能。

三、硬件电路3.1、电路结构图:多功能定时器主要由三个最基本模块组成,一是以LCD1602液晶为基础的显示电路,二是以四个按键为核心的控制电路,三是以MSP430G2553为核心的信号发生电路。

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

大学实习报告-msp430 (ADand定时器)

大学实习报告-msp430 (ADand定时器)

湖南大学本科生实习报告实习题目:MSP430单片机实习时间:2011.7.15---2011.7.24 专业:班级:学生姓名:指导教师:目录第1章调试平台-----------------------------------------------------------------------3 1.1 简介------------------------------------------------------------------------------3 1.2 下载指令------------------------------------------------------------------------3 1.3程序调试指令-------------------------------------------------------------------3 1.4 各种设置------------------------------------------------------------------------4第2章实验内容----------------------------------------------------------------------4 2.1 内容简介------------------------------------------------------------------------4 2.2 定时器时钟---------------------------------------------------------------------42.2.1 基本功能介绍--------------------------------------------------------------42.2.2 总体方案介绍--------------------------------------------------------------42.2.3 定时器时钟硬件图-------------------------------------------------------42.2.3.1 独立式键盘-----------------------------------------------------------42.2.3.2 LED显示模块-----------------------------------------------------52.2.3.3LCD显示模块----------------------------------------------------52.2.4 软件系统设计---------------------------------------------------------------62.2.4.1 主流程图----------------------------------------------------------------62.2.4.2 扫描函数流程图-------------------------------------------------------72.3 测试结果------------------------------------------------------------------------72.4 总结------------------------------------------------------------------------------73.1 ADC12----------------------------------------------------------------------------73.1.1基本功能介绍----------------------------------------------------------------73.1.2总体方案介绍----------------------------------------------------------------83.1.3 AD微处理器片内温度测量硬件图--------------------------------------83.1.3.1 MSP430芯片AD通道------------------------------------------------83.1.3.2 AD电压检测-滑动变阻器--------------------------------------------93.1.3.3 LCD模块--------------------------------------------------------------93.3.3.4 LED模块----------------------------------------------------------------93.1.4软件系统设计----------------------------------------------------------------103.1.4.1 程序流程图-------------------------------------------------------------103.1.5 测试结果---------------------------------------------------------------------103.1.6 总结---------------------------------------------------------------------------10 附录1---------------------------------------------------------------------------------------10 附录2---------------------------------------------------------------------------------------16第1章调试平台1 IAR调试平台1.1简介:IARsystems 是全球领先的嵌入式系统开发工具和服务的供应商,本次实验所用的IAREW430就是其产品之一。

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

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

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

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

南理工王宏波MSP430F6638单片机实验报告

南理工王宏波MSP430F6638单片机实验报告

MSP430 单片机应用技术实验报告学号: XXXXXXXX姓名: XXX分组:第X 组同组同学 1 姓名: XXX同组同学 2 姓名: XXX南京理工大学2016年 12月 08日实验 1一、实验题目: UCS实验二、实验目的设置 DCO FLL reference =ACLK=LFXT1 = 32768Hz, MCLK = SMCLK = 8MHz,输出 ACLK、SMCLK,用示波器观察并拍照。

UCS初始状态: XT1关闭,默认为 LFXT1,ACLK选择 XT1源(时钟错误时自动切换至), MCLK、SMCLK选择 DCOCLKDIV源。

FLL 参考时钟源为XT1CLK,DCOCLK/DCOCLKDIV,=2N=32。

因此程序需要进行的操作有,启动LFXT1,待 XT1稳定工作后,设置锁频环将XT1分频为 8MHz的 DCOCLKDIV作为 MCLK和 SMCLK的时钟源,并分别通过 P1.0和P3.4 输出。

三、实验仪器和设备计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5四、实验步骤1 、用电缆连接开发板 USB2口和电脑 USB口,打开电源开关 SW1,电源指示灯 D5 点亮;2、运行CCSV5;3、新建工作空间workspace;4、新建工程project与源文件main.c;5、编写程序;6、编译、调试、下载程序到单片机;7、观察、分析、保存运行结果。

五、实验程序六、实验结果一、实验题目:FLL+应用实验二、实验目的检测P1.4输入,遇上升沿进端口中断,在中断服务程序内翻转P4.1状态。

三、实验仪器和设备计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5四、实验步骤1、用电缆连接开发板 USB2口和电脑 USB口,打开电源开关 SW1,电源指示灯 D5 点亮;2、运行CCSV5;3、新建工作空间workspace;4、新建工程project与源文件main.C;5、编写程序;6、编译、调试、下载程序到单片机;7、观察、分析、保存运行结果。

msp430 UCS实验报告资料

msp430 UCS实验报告资料

Msp430单片机第二次实验报告1.系统时钟--ACLK,SMCLK,MCLK的产生1.1 实验目标(1) 了解MSP430F6638 的时钟系统(2) 掌握配置MSP430F6638 时钟的方法(3) 了解MSP430F6638 的时钟系统与低功耗之间的关系1.2 实验原理MSP430F6638 具有灵活的时钟系统:(1) 外部时钟XT1,XT2;(2) 内置时钟DCO(锁相环FLL+);(3) 内置时钟VLO,12KHz 典型频率,内置REFO,典型频率32.768KHz;(4) 时钟检测系统,时钟不稳定或失效检测,可触发中断;(5) MCLK ----CPU 运行时钟(6) SMCLK---子系统运行时钟(7) ACLK -----辅助时钟本实验演示了基础的时钟配置。

UCS 模块包括5 个时钟源(1) XTICLK:低频/高频振荡器,可以使用32768Hz 外部晶振;(2) VLOCLK:内部低功耗、低频率振荡器,典型频率为10KHz;(3) REFOCLK:进过调整的内部振荡器,典型值为32768hz,可以用作FLL 的参考时钟;(4) DCOCLK:内部数字时钟,可以通过FLL 得到稳定的时钟信号;(5) XT2CLK:可选的高频振荡器。

可以用作FLL 的参考时钟。

UCS 模块提供的3 个可利用的时钟信号:(1) ACLK:辅助时钟。

可以通过软件选择XT1CLK, REFOCLK, VLOCLK, DCOCLK,DCOCLKDIV 或(在有可用的XT2CLK 的情况下)XT2CLK 作为辅助时钟。

DCOCLKDIV 是DCOCLK 通过FLL 模块经过1,2,4,8,16,32 分频获得的。

ACLK 可以为某些外围模块提供时钟。

ACLK 可以被1,2,4,8,16,32 分频。

ACLK/n 就是ACLK 经过1,2,4,8,16,32 分频获得的,同时也可以通过外部引脚输出;(2) MCLK:主时钟。

msp430实验报告

msp430实验报告

msp430实验报告Title: MSP430 Experiment ReportIntroductionThe MSP430 is a series of microcontroller units developed by Texas Instruments. It is widely used in embedded systems and has gained popularity due to its low power consumption and high performance. In this experiment report, we will discuss the results of our experiments with the MSP430 microcontroller. Experiment 1: Blinking LEDIn our first experiment, we programmed the MSP430 to blink an LED at a specific frequency. We used the MSP430 LaunchPad development kit, which provided us with a simple and easy-to-use platform for programming and testing the microcontroller. By writing a simple program in C using the Code Composer Studio IDE, we were able to control the LED and make it blink at different rates. This experiment helped us understand the basics of programming the MSP430 and how to interface with external components.Experiment 2: Analog-to-Digital ConversionIn our second experiment, we explored the analog-to-digital conversion (ADC) capabilities of the MSP430. We connected a potentiometer to one of the analog input pins of the microcontroller and wrote a program to read the analog voltage and convert it to a digital value. We then displayed the digital value on the LaunchPad's built-in LCD display. This experiment helped us understand how the MSP430 can be used to interface with analog sensors and convert theirreadings into digital values for further processing.Experiment 3: Serial CommunicationIn our final experiment, we used the MSP430's built-in UART module to establish serial communication with a computer. We wrote a program to send data from the microcontroller to the computer and receive data from the computer to the microcontroller. This experiment helped us understand how the MSP430 can be used to communicate with external devices and interfaces, opening up a wide range of possibilities for building complex embedded systems.ConclusionIn conclusion, our experiments with the MSP430 microcontroller have provided us with valuable insights into its capabilities and potential applications. We have learned how to program the MSP430, interface with external components, perform analog-to-digital conversion, and establish serial communication. We are excited to continue exploring the possibilities of the MSP430 and look forward to applying our knowledge to future projects and developments in the field of embedded systems.。

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; 采样周期

msp-430课程大作业实践报告

msp-430课程大作业实践报告

简易自行车速度计设计报告班级:二班姓名:王根胜学号: 02121187一、摘要该设计使用超低功耗MSP430单片机为控制处理器,并结合简单的硬件电路来实现自行车测速。

在自行车前轮上装有一个干簧管和一个磁铁,随着车轮每转一圈磁铁铁划过干簧管,都会吸合干簧管而接通电路,输出一个低电平脉冲信号,通过单片机计时器记录两次中断时间间隔,通过软件处理最终实现测速。

二、硬件设计自行车测速系统以MSP430单片机为处理器,通过安装在自行车前轮上的硬件系统产生周期性脉冲信号(即产生低电平信号),单片机对信号采集并计时(发生中断并记录两次中断的时间间隔),通过软件计算得到自行车的实时速度(用自行车轮周长除以周期即可的到速度),并在LCD上显示。

具体设计流程如图:图1-1 硬件设计流程图三、软件设计这个程序使用MSP430单片机的定时器来测量硬件信号的周期,给定时器设置溢出周期,通过软件计算定时器的溢出次数来测量信号的周期,进而测出自行车的行进速度。

1、主程序主程序主要包括各部件的初始化,定时器TimerA中断,I/O中断的定义等。

WDTCTL = WDTPW + WDTHOLD;TACTL=TASSEL_1+MC_2+TAIE+TACLR;//TA 清零并开始计时,ACLK,开中断LPM3;//进入低功耗模式三休眠,全部程序在中断内执行2、 数据处理子程序Period=TA_OverflowCnt*65536+TAR;//得到相邻两次中断之间相隔的时间Speed=(long)32768*Circle*36/(10*Period);//计算速度(km/h ),保留2位小数如以下程序图(图1-2)所示:3、 LCD 显示子程序void LCD_DisplayDigit(char Digit,char Location) void LCD_DisplayLetter(char Letter,char Location)void LCD_DisplayNum(unsigned int Number,charStartLocation)图1-2 数据处理子程序流程图图1-3 LCD 子程序设计流程图void LCD_DisplayDecimal(int Number,char DOT,charStartLocation)LCD_DispalyDecimal(Speed,2)如图所示设计程序:见图1-3四、测试结果对于程序的编译和调试都较为较为成功。

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
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <msp430x44x.h>
const unsigned char seg[]={0xd7,0x14,0xcd,0x5d,0x1e,0x5b,0xdb,0x15,0xdf,0x5f,0xcb,0x8b};
5
const unsigned char reg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; const unsigned char key_value[]={0x0b,0x09,0x08,0x07,0x00,0x06,0x05,0x04,0x0a,0x03,0x02,0x01};
FLL_CTL0|=XCAP14PF; BTCTL=BTDIV+BTIP1+BTIP2;
//选择定时时间 1S
P1DIR|=0X01; _EINT();
//开总中断
for(;;)
{ _BIS_SR(LPM3_bits);
//进入低功耗模式
_NOP();
}
}
#pragma vector=BASICTIMER_VECTOR //中断向量地址
if(0xf0!=(P1IN&0xf0)) {
delay(40); P1OUT&=~0x02; P1OUT&=~0x04; P1OUT&=~0x08; if(0xf0!=(P1IN&0xf0)) {
key_flag=1; P1OUT|=0x02; P1OUT|=0x04; P1OUT|=0x08; num=0x00; com_byte=0x02; for(aa=0;aa<3;aa++) {
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) {
实验步骤:
实验一、 1、IAR 编程环境创建工程: 在 IAR3.4 环境下,首先在“File”菜单中点击“New”选项,其子菜单中有 “Workplace”选项,点击即可生成工作区间,再选择“Project”菜单,找到“Create New Project”选项,点击后出现工程介绍界面,按“确定”进入创建工程名称界 面,输入名称后点击“保存”,此时工程已创建。接下来在“New”选项中点击 “File”则工程右侧 c 文件编写环境处出现光标闪烁,保存该文件并以“.C”为 其扩展名,则 C 文件已建立。最后把该 C 文件填加至工程,选择“Project”菜 单中的“Add Files”选项,弹出对话框后找到刚保存的 C 文件,将其添加至工程, 至此,工程建立完毕。 2、IAR 环境的硬件下载与调试: 当 C 程序编写完毕后,保存当前 C 文件,选择“Compile”选项编译当前文 件,通过后回到“Project”菜单中的“Options”选择“msp430F449”单片机型 号,并将“Debugger”选项中由“Simulator”改为“FET Debugger”,确定后推 出对话框,回到主界面单击“Debug”选项则可下载至开发板中。 下载完成后选择“Go”选项则全速运行,可在硬件中观察程序的运行结果。 此外,在 IAR SPY 调试器中又许多其他的调试方法,支持在线编程,如“单步 运行”、“运行到光标”、“设置断点”等。
#include <msp430x44x.h>
char digit[12] = {0x7b,0x12,0x4f,0x1f,0x36,0x3d,0x7d,0x13,0x7f,0x3F}; //LCD 显示编码
void maiDTCTL = WDTPW + WDTHOLD;
__interrupt void ADC12ISR (void)
{ ADCresult = ADC12MEM0; _BIC_SR_IRQ(LPM0_bits);
//存入转换结果 // 进入低功耗
}
实验五:行列式扫描当前按下的键值,通过数码管显示,并循环移位。 实验原理:数码管显示及行列式键盘电路连接原理分别如图 3、图 4 所示。 数码管显示中,P3.0-P3.7 既为 LED 的显示段码输出,又为 LED 的位选输出,通 过 F449 的 P4.1、P4.0 口控制 74HC373 的使能端来选择实现输出的有效数据,工 作方式为:当 P4.1 为高电平,P3.0-P3.7 为 LED 的显示段码输出,依次对应 LED 的 a、f、b、g、c、h、d、e.当 P4.0 为高电平,P3.0-P3.5 为 LED 位选输出,依 次对应 D5,D4,D3,D2,D1,D0。 行列式键盘中,键盘电路功能的选通与否是通过拨动开关 P_KEY 的开关来实 现的*拨动开关 P_KEY 的 P3、P4、P5 拨到 ON 的一端,此时,电路组成 4*3 行列 式键盘,P1.1-----P1.7 分别为键盘的行线和列线。拨动开关 P_KEY 的 P3、P4、 P5 拨到数字的一端,电路组成为独立式按键。拨动开关 P_KEY 的 P2 拨到 ON 的 一端,P1.6 作为比较器欠压检测电路的输入。 实验程序:
实验二:使用基本定时器,通过 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
key_scan();
P4OUT|=0x02; P3OUT=seg[key]; P4OUT&=~0x02;
P4OUT|=0x01; P3OUT=reg[bb]; P4OUT&=~0x01; delay(1); } }
6
void key_scan() {
P1DIR=0x0f; com_byte=0xff; P1OUT&=~0x02; P1OUT&=~0x04; P1OUT&=~0x08;
○3 掌握 LED 静态显示和动态扫描显示的原理与编程设计; ○4 掌握 LCD 显示的原理以及编程设计; ○5 掌握 ADC 工作的原理,熟悉使用 ADC12 的工作方式; ○6 熟悉独立键盘以及行列式键盘的设计方法,掌握键盘工作原理和一般的编 程设计; ○7 综合 MSP430 的各个功能模块,练习编写数字密码锁程序,实现基本的一 些条件,使学生的学习与社会发展同步,更接近生活实际;
#include "msp430x44x.h" static unsigned int ADCresult; static unsigned long int DegC;
//AD 转换结果存储位 //转换为当前温度
void main(void)
{
4
unsigned int i,j;
WDTCTL = WDTPW+WDTHOLD;
P1OUT&=~com_byte; if(!(P1IN&BIT4)) break; num++; if(!(P1IN&BIT5)) break; num++; if(!(P1IN&BIT6)) break; num++; if(!(P1IN&BIT7)) break; num++; com_byte=com_byte<<1; } key=key_value[num]; if(b<6) { bb=b++; } else {
ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_6; 采样周期
//确定工作方式及
ADC12CTL1 = SHP; ADC12MCTL0 = INCH_10+SREF_1; ADC12IE = 0x01; for (i=0; i<0x3600; i++)
//选择采样通道 //开启采样中断 //等待内部电压产生
unsigned int i,j; for(j=0;j<x;j++)
for(i=0;i<1000;i++); }
void main() {
WDTCTL=WDTPW+WDTHOLD; P4DIR=0x03; P3DIR=0xff; P4OUT|=0x01; P3OUT=reg[0]; P4OUT&=~0x01; P4OUT|=0x02; P3OUT=seg[0]; P4OUT&=~0x02; while(1) {
__interrupt void basic_timer(void)
//中断函数
{
P1OUT^=0X01;
}
实验三:用 LCD 显示数字“6543210”。 实验原理:段码 LCD 显示器型号为 LSD048,7 位半,其全码显示为 1+88888888。 采用 4MUX 方式,其 S0-----S14、COM0------COM3 分别与 449 的 S0-----S14、 COM0------COM3 相连,由于 MSP430F449 内部集成了 LCD 显示驱动模块,所 以 LCD 的显示操作非常简单,只需要在软件下设置相应的控制寄存器,把显示 码送入相应的 LCD 缓存寄存器即可。八段显示组合段显示代码字节组合格式为 h、e、f、c、d、g、b、a,顺序为 D7-------D0。 实验程序:
相关文档
最新文档