msp430f6638单片机实验程序Word格式.docx
- 文档编号:13373672
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:28
- 大小:22.67KB
msp430f6638单片机实验程序Word格式.docx
《msp430f6638单片机实验程序Word格式.docx》由会员分享,可在线阅读,更多相关《msp430f6638单片机实验程序Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
{P1OUT|=BIT0;
//正转
P1OUT|=BIT6;
}
case2:
{P1OUT|=BIT0;
P1OUT|=BIT7;
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);
BIT0)==0){
flag=2;
}}
BIT4)==0){//按键S3
BIT4)==0){
flag=1;
DCmotor(flag);
设计性试验
intmain(void)
{WDTCTL=WDTPW+WDTHOLD;
P4REN|=BIT0+BIT2+BIT4;
P4OUT|=BIT0+BIT2+BIT4;
P1DIR|=BIT0+BIT6+BIT7;
{if((P4IN&
BIT0)==0)
{__delay_cycles(160000);
{P1OUT|=BIT0;
P1OUT|=BIT6;
=~BIT7;
BIT4)==0)
=~BIT6;
P1OUT|=BIT7;
BIT2)==0)
{P1OUT&
=~BIT0;
1、验证性实验:
利用MSP430F6638开发板上的拨盘电位器,控制改变AD转换的输入电压值,转换后的数字量显示在段式液晶上面。
使用万用表测得当前输入电压,通过计算得到转换后的理想
的数字量与液晶显示的数字量进行比较。
/*
*main.c
*/
stdint.h>
stdio.h>
string.h>
#include"
dr_lcdseg.h"
//调用段式液晶驱动头文件
#defineXT2_FREQ4000000
#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引脚功能选择
=~XT2OFF;
//启动XT2
while(SFRIFG1&
OFIFG)//等待XT1、XT2与DCO稳定
UCSCTL7&
=~(DCOFFG+XT1LFOFFG+XT2OFFG);
SFRIFG1&
=~OFIFG;
UCSCTL4=SELA__XT1CLK+SELS__XT2CLK+SELM__XT2CLK;
//避免DCO调整中跑飞
UCSCTL1=DCORSEL_5;
//6000kHz~23.7MHz
UCSCTL2=MCLK_FREQ/(XT2_FREQ/16);
//XT2频率较高,分频后作为基准可获得更高的精度
UCSCTL3=SELREF__XT2CLK+FLLREFDIV__16;
//XT2进行16分频后作为基准
UCSCTL5=DIVA__1+DIVS__1+DIVM__1;
//设定几个CLK的分频
UCSCTL4=SELA__XT1CLK+SELS__XT2CLK+SELM__DCOCLK;
//设定几个CLK的时钟源
voidmain(void)
//停止看门狗
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口连接如下图所示。
intmain(void)
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;
=2048)
=~(BIT6+BIT5);
P4OUT|=BIT7;
=1365)
=~(BIT5+BIT6+BIT7);
=683)
P5OUT&
0)
P8OUT&
实验四Zigbee无线通信及RS232串口通信实验
1、验证性实验
利用两个Zigbee模块通信,一个模块作发射,一个作接收。
发射模块所在实验箱按下按键控制接收模块所在实验箱上LED1的亮灭,从而实现无线点灯的功能。
typedefunsignedcharuint8;
//无符号8位整型变量typedefsignedcharint8;
//有符号8位整型变量typedefunsignedshortuint16;
//无符号16位整型变量typedefsignedshortint16;
//有符号16位整型变量typedefunsignedlonguint32;
//无符号32位整型变量typedefsignedlongint32;
//有符号32位整型变量
typedeffloatfp32;
//单精度浮点数(32位长度)
typedefdoublefp64;
//双精度浮点数(64位
长度)
#defineTRUE1
#defineFALSE0
#defineNULL0
//----------------------------------CC2520引脚定义
------------------------------
#defineRESET_ON()P4OUT|=BIT1#defineRESET_OFF()P4OUT&
=~BIT1#defineSCLK_ON()P2OUT|=BIT4#defineSCLK_OFF()P2OUT&
=~BIT4#defineMOSI_ON()P2OUT|=BIT5#defineMOSI_O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- msp430f6638 单片机 实验 程序