智能仪表实验.docx
《智能仪表实验.docx》由会员分享,可在线阅读,更多相关《智能仪表实验.docx(9页珍藏版)》请在冰豆网上搜索。
智能仪表实验
智能仪表开发
实验报告
学生姓名:
李聪
学号:
12054224
专业班级:
测控1202
2015.6.9
实验一I/O端口及操作实验
【实验目的】
1、学会操作MSP430F5438一般端口,了解端口寄存器的组成。
2、了解MSP430F5XX单片机与以前系列单片机的区别。
【实验内容】
1、要求:
运用C语言编程完成对智能仪表多功能实验箱系统流水灯模块的
控制。
2、功能:
通过单片机I/O口线实现对发光二极管亮灭的控制,可通过按键控制发光二极管的亮灭。
3、现象:
8个红色发光可根据程序控制点亮或者熄灭,通过按键操作实现发=]光二极管亮灭状态的切换。
【实验原理】
1、单片机模块原理
MSP430F5XX单片机端口引入上拉下拉电阻,通过PXREN,RXDIR,PXOUT可以设置端口各引脚的状态.通过选择内部上/下拉使能,就不需要再外部接上拉电阻,选择对应的边沿触发方式就可以很方便的进出中断,其中只有P1,P2具有端口中断能力。
P1,P2均是多元中断,因此引入P1IVP2IV,各引脚中断只有访问对应PXIV后才可以进行自动清除中断标志位。
否则就不能清除中断标志,就会反复进入中断程序,如果不访问PXIV可以软件清除中断标志位。
2、I/O端口寄存器配置
MSP430F5XX单片机端口通过PXREN(上/下拉使能),PXDIR(方向),PXOUT(输出/输入)这三个寄存器来配置单片机I/O口的使用状态。
3、硬件连接
智能仪表多功能实验箱系统为本次实验提供3个独立按键和8个发光二极管。
可由用户自由编程实现特定功能。
【实验步骤】
1、了解学习板相应端口管脚原理图。
2、进行C语言单片机程序编写。
3、利用JTAG口将程序烧写进入单片机中。
4、进行程序调试。
观察发光二极管亮灭变化情况以及按键操作对发光二极管亮灭变化的影响。
【程序代码】
#include"msp430x54x.h"
#defineCPU_F((double)12000000)
#definedelay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))
voidCLock_init(void);
voidLedLoop(void);
voids1(void);
intmain(void)
{
//Stopwatchdogtimertopreventtimeoutreset
WDTCTL=WDTPW+WDTHOLD;
P3DIR=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
P11DIR=BIT0+BIT1+BIT2;
P11SEL=BIT0+BIT1+BIT2;
CLock_init();
P3OUT&=0x00;
inti=0;
while
(1)
{
if(!
(P1IN&0x01))
{
delay_ms(500);
P3OUT=~P3OUT;
}
if(!
(P1IN&0x04))
{
P3OUT=~(BIT0<
i++;
if(i==9)
i=0;
delay_ms(500);
}
if(!
(P1IN&0x10))
{
P3OUT=(BIT0<
i++;
if(i==9)
i=0;
delay_ms(500);
}
}
return0;
}
voidCLock_init()
{
P5SEL|=0x0C;
UCSCTL6&=~XT2OFF;
UCSCTL3|=SELREF_2;
UCSCTL4|=SELA_2;
do
{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);
SFRIFG1&=~OFIFG;
}while(SFRIFG1&OFIFG);
UCSCTL4|=SELS_5+SELM_5;
}
voidLedLoop()
{
inti=0;
P3DIR|=0xFF;
P3OUT|=0xFF;
delay_ms(500);
for(i=0;i<7;i++)
{
P3OUT=~(BIT0<
delay_ms(500);
}
for(i=0;i<7;i++)
{
P3OUT=~(BIT0<
delay_ms(500);
}
P3OUT|=0xFF;
delay_ms(500);
P3OUT&=0x00;
delay_ms(500);
P3OUT|=0xFF;
delay_ms(500);
}
voids1()
{
P3DIR|=0xFF;
delay_ms(500);
P3OUT=~P3OUT;
}
【实验思考】
1、P1SEL端口上/下拉使能寄存器的作用是什么?
如果配置为高电平,能否产生端口中断?
上拉寄存器是控制对应端口上拉使能的。
当对应位为0时,设置对应引脚上拉使能为1时,禁止对应引脚上拉使能。
如果上拉寄存器使能,无论引脚功能寄存器如何设置(输入,输出,数据,中断等),对应引脚输出高电平;反之,同理。
如果配置为高电平,则不能产生端口中断。
2、若单片机P3口设置为上拉高电平,其驱动电流为多大?
是否可以这种方式对外部电路供电。
IO口高电平应该大于VCC-0.25(端口最大电流-1mA时)或VCC-0.6(端口最大电流-6mA时)
不可以这种方式对外部电路供电。
3、如果对不用的引脚采用一个下拉低电平,和直接输入一个低电平,在两种情况下端口电流变化情况是怎么样的?
用一个下拉低电平,电流不经过单片机;直接输入一个低电平,电流经过单片机。
如果现在端口配置是按上面程序配置成上拉,然后输入一个高电平,此时的端口电流消耗与直接输入一个高电平(没有上拉电阻)电流消耗有什么区别?
前一种情况电流消耗大。
实验二UCS时钟操作实验
【实验目的】
1、了解单片机MSP430F5438单片机时钟系统构成。
2、掌握单片机MSP430F5438时钟源配置方法。
3、了解单片机MSP430F5438一体化时钟系统与其他单片机时钟系统的区别。
【实验内容】
1、要求:
运用C语言编程完成对智能仪表多功能实验箱系统模块单片机MSP430F5438一体化时钟系统的配置。
2、功能:
通过设置单片机MSP430F5438时钟寄存器选择不同的时钟源,包括单片机内部压控振荡器和外部高速晶体振荡器。
3、现象:
去掉核心板上的外部晶振跳线帽,使用单片机内部压控振荡器,单片机正常工作,控制LED灯按一定间隔闪烁。
插上核心板上的外部晶振跳线帽,使用外部高速晶体振荡器,单片机正常工作,控制LED灯按一定间隔闪烁。
【实验原理】
1、一体化时钟模块原理
MSP430F5438单片机具有丰富的时钟系统。
它提供5个时钟源供用户选择使用,分别是:
VLOCLK:
内部10KHZ低功率、低频振荡器
REFOCLK:
内部32768HZ低频参考振荡器,作为FLL的参考晶振
DCOCLK:
内部数字控制振荡器,可被FLL稳定
XT1CLK:
有低频(LF)和高频(HF)模式,低频32768HZ的手表晶振、标准晶振、谐振器或者外部的4M~32MHZ的晶振
XT2CLK:
可选的高频振荡源,可选用标准晶振、谐振器或来自外部的4M~40MHZ的晶振同时MSP430F5438还提供3个不同的时钟信号,供不同外设使用,分别是:
ACLK:
辅助时钟,用于外围模块
MCLK:
主时钟,用于CPU和系统
SMCLK:
子时钟,用于外围独立的模块
2、一体化时钟模块配置相关寄存器
使用MSP430F5438单片机一体化时钟时UART通讯端口进行通讯时涉及到单片机MSP430F5438的9个寄存器,分别是UCSCTL0、UCSCTL1、UCSCTL2、UCSCTL3、UCSCTL4、UCSCTL5、UCSCTL6、UCSCTL7、UCSCTL8。
【实验步骤】
1、了解单片机MSP430F5438一体化时钟的配置方法。
2、进行C语言单片机程序编写。
3、利用JTAG口将程序烧写进入单片机中。
4、进行程序调试。
发光二极管的闪烁频率变化。
【实验思考】
1.如果在设置XT2工作时候,如果不将XINXOUT设置为特殊功能引脚,考虑会有什么影响?
答:
不设置则内部晶振无法正常启动,单片机将不能正常工作.
2.考虑为什么很少使用内部压控振荡器DCO,而是比较常用外部石英晶体振荡器?
答:
因为单片机的内部晶振不够稳定,容易产生比较大的误差.而外部的石英晶体振荡器由于受温度、湿度影响比较小,所以比单片机的内部晶振准确。
而且,外部振荡器可以根据需要适时停止并进入休眠状态,从而满足设计的低功耗要求,这点是内部压控振荡器所做不到的。
【练习】
1、配置MCLK=DCOCLK=8MHZSMCLK=DCODIV=4MHZACLK=XT2
N=122;D=2;n=1
P5SEL|=0x0C;//选择端口XT2
UCSTL6&=~XT2OFF;//XT2使能
UCSTL1=DOCARSEL_5;
UCSTL3|=SELREF_2;
UCSTL2|=FLLNO+FLLN6+FLLN5+FLLN4+FLLN3;
P7SEL|=BITO+BIT1;
UCSTL4|=SELM_3+SELA_5+SELS_4;
While(SFRIFG1&OFIFG)//测试震荡错误标志
{
UCSTL7&=~(XT2LFOFFG+DCOFFG);
SFRIFG1&=~OFIFG;
}
2、考虑下配置MCLK=DCOCLK=12MHZ会有什么不同?
N=91;D=4;n=1
将第一题的UCSTL2设置为183,UCSTL4=SELM_3=SELA_2=SELS_1