msp430f6638单片机实验程序..docx

上传人:b****9 文档编号:157015 上传时间:2022-10-04 格式:DOCX 页数:24 大小:24.42KB
下载 相关 举报
msp430f6638单片机实验程序..docx_第1页
第1页 / 共24页
msp430f6638单片机实验程序..docx_第2页
第2页 / 共24页
msp430f6638单片机实验程序..docx_第3页
第3页 / 共24页
msp430f6638单片机实验程序..docx_第4页
第4页 / 共24页
msp430f6638单片机实验程序..docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

msp430f6638单片机实验程序..docx

《msp430f6638单片机实验程序..docx》由会员分享,可在线阅读,更多相关《msp430f6638单片机实验程序..docx(24页珍藏版)》请在冰豆网上搜索。

msp430f6638单片机实验程序..docx

实验一

验证性试验

#includeintflag;

voidDCmotor(intp)

{

switch(p)

{

case0:

//停转

{

P1OUT&=~BIT0;P1OUT&=~BIT6;P1OUT&=~BIT7;

break;

}

case1:

//正转

{

P1OUT|=BIT0;

P1OUT|=BIT6;

P1OUT&=~BIT7;

break;

}

case2:

//反转

{

P1OUT|=BIT0;

P1OUT&=~BIT6;

P1OUT|=BIT7;

break;

}

}

}

intmain(void){

WDTCTL=WDTPW|WDTHOLD; //Stopwatchdogtimer

P4REN|=BIT0+BIT1+BIT2+BIT3+BIT4; //上下拉电阻使能

P4OUT|=BIT0+BIT1+BIT2+BIT3+BIT4; //设置为上拉电阻P4DIR|=BIT5+BIT6+BIT7; //LED管脚设置

P5DIR|=BIT7;

P8DIR|=BIT0;

P1DIR|=BIT0+BIT6+BIT7;

while

(1)

{

if((P4IN&BIT0)==0){ //按键S7

delay_cycles(160000);if((P4IN&BIT0)==0){

flag=2;}}

if((P4IN&BIT4)==0){ //按键S3

delay_cycles(160000);if((P4IN&BIT4)==0){

flag=1;}}

DCmotor(flag);

}

}

设计性试验

#includeintmain(void)

{ WDTCTL=WDTPW+WDTHOLD;P4REN|=BIT0+BIT2+BIT4;P4OUT|=BIT0+BIT2+BIT4;

P1DIR|=BIT0+BIT6+BIT7;

while

(1)

{ if((P4IN&BIT0)==0)

{ delay_cycles(160000);

if((P4IN&BIT0)==0)

{ P1OUT|=BIT0;

P1OUT|=BIT6;

P1OUT&=~BIT7;

}

}

if((P4IN&BIT4)==0)

{ delay_cycles(160000);

if((P4IN&BIT4)==0)

{ P1OUT|=BIT0;P1OUT&=~BIT6;P1OUT|=BIT7;

}

}

if((P4IN&BIT2)==0)

{ delay_cycles(160000);

if((P4IN&BIT2)==0)

{ P1OUT&=~BIT0;

}

}

}

}

1、验证性实验:

利用MSP430F6638开发板上的拨盘电位器,控制改变AD转换的输入电压值,转换后的数字量显示在段式液晶上面。

使用万用表测得当前输入电压,通过计算得到转换后的理想

的数字量与液晶显示的数字量进行比较。

/*

*main.c

*/

#include#include#include#include

#include"dr_lcdseg.h" //调用段式液晶驱动头文件#defineXT2_FREQ 4000000

#defineMCLK_FREQ16000000

#defineSMCLK_FREQ4000000

voidinitAdc()

{

ADC12CTL0|=ADC12MSC;//自动循环采样转换ADC12CTL0|=ADC12ON;//启动ADC12模块

ADC12CTL1|=ADC12CONSEQ1;//选择单通道循环采样转换ADC12CTL1|=ADC12SHP;//采样保持模式

ADC12MCTL0|=ADC12INCH_15;//选择通道15,连接拨码电位器ADC12CTL0|=ADC12ENC;

}

voidinitClock()

{

while(BAKCTL&LOCKIO)//解锁XT1引脚操作

BAKCTL&=~(LOCKIO);

UCSCTL6&=~XT1OFF;//启动XT1,选择内部时钟源P7SEL|=BIT2+BIT3;//XT2引脚功能选择

UCSCTL6&=~XT2OFF;//启动XT2

while(SFRIFG1&OFIFG)//等待XT1、XT2与DCO稳定

{

UCSCTL7&=~(DCOFFG+XT1LFOFFG+XT2OFFG);SFRIFG1&=~OFIFG;

}

UCSCTL4=SELAXT1CLK+SELSXT2CLK+SELMXT2CLK;//避免DCO调整中

跑飞

UCSCTL1=DCORSEL_5;//6000kHz~23.7MHz

UCSCTL2=MCLK_FREQ/(XT2_FREQ/16);//XT2频率较高,分频后作为基准可获得更高的精度

UCSCTL3=SELREFXT2CLK+FLLREFDIV16;//XT2进行16分频后作为基准

while(SFRIFG1&OFIFG)//等待XT1、XT2与DCO稳定

{

UCSCTL7&=~(DCOFFG+XT1LFOFFG+XT2OFFG);SFRIFG1&=~OFIFG;

}

UCSCTL5=DIVA1+DIVS1+DIVM1;//设定几个CLK的分频

UCSCTL4=SELAXT1CLK+SELSXT2CLK+SELMDCOCLK;//设定几个CLK的

时钟源

}

voidmain(void)

{

WDTCTL=WDTPW|WDTHOLD; //停止看门狗

initClock(); //配置系统时钟

initLcdSeg(); //初始化段式液晶

initAdc(); //初始化ADC

volatileunsignedintvalue=0;//设置判断变量while

(1) //进入程序主循环

{

ADC12CTL0|=ADC12SC;//开始采样转换value=ADC12MEM0;//把结果赋给变量

LCDSEG_DisplayNumber(value,0); //显示六位数,从111111-999999

delay_cycles(MCLK_FREQ/2);//延时500ms

}

}

2、设计性实验:

AD转换结束会产生中断,编写AD中断服务程序。

利用信号发生器输出信号(例如正弦波、三角波信号)作为AD转换的输入,根据输入电压的大小控制LED灯的亮灭(例如随

着输入电压值的增大,LED1到LED5按顺序点亮;随着输入电压值减小,LED灯按顺序熄

灭),LED和单片机IO口连接如下图所示。

#include

intmain(void)

{ WDTCTL=WDTPW+WDTHOLD;P4DIR|=BIT5+BIT6+BIT7;P5DIR|=BIT7;

P8DIR|=BIT0;ADC12CTL0=ADC12MSC+ADC12ON+ADC12SHT1_8;ADC12CTL1=ADC12CONSEQ1+ADC12SHP;ADC12MCTL0=ADC12INCH_7;ADC12CTL0|=ADC12ENC;

ADC12IE|=BIT0;

ADC12CTL0|=ADC12SC;

_EINT();

}

#pragmavector=ADC12_VECTOR

interruptvoidADC12ISR(void)

{ if(ADC12MEM0>=3413)

{ P4OUT|=BIT5+BIT6+BIT7;P5OUT|=BIT7;P8OUT|=BIT0;

}if(ADC12MEM0>=2730)

{ P4OUT&=~BIT5;

P4OUT|=BIT7+BIT6;

P5OUT|=BIT7;

P8OUT|=BIT0;

}if(ADC12MEM0>=2048)

{ P4OUT&=~(BIT6+BIT5);P4OUT|=BIT7;P5OUT|=BIT7;P8OUT|=BIT0;

}if(ADC12MEM0>=1365)

{ P4OUT&=~(BIT5+BIT6+BIT7);P5OUT|=BIT7;

P8OUT|=BIT0;

}if(ADC12MEM0>=683)

{ P4OUT&=~(BIT5+BIT6+BIT7);P5OUT&=~BIT7;P8OUT|=BIT0;

}if(ADC12MEM0>0)

{ P4OUT&=~(BIT5+BIT6+BIT7);

P5OUT&=~BIT7;

P8OUT&=~BIT0;

}

}

实验四 Zigbee无线通信及RS232串口通信实验

1、验证性实验

利用两个Zigbee模块通信,一个模块作发射,一个作接收。

发射模块所在实验箱按下按键控制接收模块所在实验箱上LED1的亮灭,从而实现无线点灯的功能。

#include

typedef

unsigned

char

uint8;

//无符号8位整型变量

typedef

signed

char

int8;

//有符号8位整型变量

typedef

unsigned

short

uint16;

//无符号16位整型变量

typedef

signed

short

int16;

//有符号16位整型变量

typedef

unsigned

long

uint32;

//无符号32位整型变

typedef

signed

long

int32;

//有符号32位整型变

量typedef位长度)typedef长度)

floatdouble

fp32;fp64;

//单精度浮点数(32

//双精度浮点数(64位

#define#define

TRUEFALSE

1

0

#define

NULL

0

//----------------------------------CC2520引脚定义-------------------

-----------

#defineRESET_ON() P4OUT|=BIT1

#defineRESET_OFF() P4OUT&=~BIT1

#defineSCLK_ON() P2OUT|=BIT4

#defineSCLK_OFF() P2OUT&=~BIT4

#defineMOSI_ON() P2OUT|=BIT5

#defineMOSI_OFF() P2OUT&=~BIT5

#defineCSN_ON() P3OUT|=BIT5#defineCSN_OFF() P3OUT&=~BIT5#defineVREG_EN_ON()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1