单片机原理及应用_第十讲_MSP430单片机的ADC实验报告

合集下载

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的潜力。

MSP430单片机之ADC

MSP430单片机之ADC

一张图看懂MSP430单片机之ADC原创一,基础知识ADC即Analog to Digital Converter模数转换,把模拟信号进行量化,转换为数字量。

对于软件工程师来说,ADC内部的转换原理可以忽略,只需要了解其对外呈现的接口。

AD输入与输出之间的关系为:MSP430的ADC12内核模块是12位的,其最大输出为2^12 – 1 = 4095。

以VR-为参考点,当VIN小于或者等于VR-时得到的AD码值为0,当VIN大于或者等于VR+时,得到的AD码值为4095,当VIN处于VR-和VR+之间时,按线性比例转换。

这样,从MCU中读出AD码值,即可根据公式倒推回去计算出输入的模拟量电压。

二,ADC总体框图再补一张中文版的:三,分块解释1,ADC内核先来看看ADC最核心的部分。

当然少不了电压参考源VR+和VR-,以及模拟量输入部分。

模拟量输入部分是和“采样保持”电路连在一起的,这一部分后面再细说。

除此之外,与ADC内核相关的,还有以下几个信号:1,ADC12CLK。

在MCU中,任何模块都少不了时钟,ADC模块也不例外,必须有时钟信号它才能工作。

它有4个时钟源可以选择,并且可以1~8分频。

2,ADC12ON,这个是ADC内核的总开关,只有当ADC12ON这一位为1时,ADC内核模块才工作。

如果想要关闭ADC内核以降低功耗,可以将ADC12ON置为0.3,SAMPCON,采样控制信号。

该信号接至Convert,当SAMPCON为低电平时,ADC内核进行AD转换。

4,BUSY,用于指示内核模块是否正处于AD转换过程中。

2,采样保持。

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

msp430ADDA实验

msp430ADDA实验
caltmp = number; caltmp = (caltmp << 5) + number; //caltmp = Hex_Val * 33 // caltmp = (caltmp << 3) + (caltmp << 1); //caltmp = caltmp * 10 caltmp = (caltmp << 6) + (caltmp << 5) + (caltmp << 1); //caltmp = caltmp * 100 Curr_Volt = caltmp >> 12; //Curr_Volt = caltmp / 2^n=4096
P7SEL (BIT2+BIT3)
// LCD segment definitions. #define d 0x01 #define c 0x20 #define b 0x40 #define a 0x80 #define dp 0x10 #define g 0x04 #define f 0x08 #define e 0x02 uint8_t con[10] , trans_v[10]; const char char_gen[] = {
const char char_gen_dp[] = { board
a+b+c+d+e+f+dp, b+c+dp, a+b+d+e+g+dp, a+b+c+d+g+dp, b+c+f+g+dp, a+c+d+f+g+dp, a+c+d+e+f+g+dp, a+b+c+dp, a+b+c+d+e+f+g+dp, a+b+c+d+f+g+dp, a+b+c+e+f+g, c+d+e+f+g, a+d+e+f, b+c+d+e+g, a+d+e+f+g, a+e+f+g, a+b+c+d+f+g, c+e+f+g, b+c, b+c+d, b+c+e+f+g, d+e+f, a+b+c+e+f,

MSP430系列单片机16位ADC测试程序

MSP430系列单片机16位ADC测试程序
* 名 称:BT_ISR() BasicTimer 中断
* 功 能:1/16秒唤醒CPU一次。
* 入口参数:无
* 出口参数:无
****************************************************************************/
// W1 | |<----->| A1+ COM0-COM3|--->| 7.1Digit,4-Mux LCD |
// |_| | | +----------------------+
// +------->| A1- VREF |---+
以记录外部输入为0V和10.00V时,ADC2的实际读数,作为校准参考值。参
考《超低功耗电压表》程序。
本程序给出了多路ADC同时采样的程序处理方法,可供参考。
//=========================================================================
// 开启内部1.2V基准源, 开启缓冲器,ADC时钟选择为SMCLK/2(524KHz)
for (i = 0; i < 500; i++); // 略延迟,让基准电压稳定
SD16CCTL0 |= SD16DF+SD16GRP; // ADC0与ADC1编组,数据格式为有符号
{
while(ADC_Flag==0) LPM0; //CPU休眠,等待被采样结束唤醒
ADC_Flag=0;
ADC_Sum0+=ADC_Result0; //ADC0采样结果累加

MSP430单片机的原理与应用

MSP430单片机的原理与应用

MSP430单片机的原理与应用1. 简介MSP430单片机是德州仪器公司(Texas Instruments)推出的一款低功耗、高性能的16位单片机,广泛应用于各种嵌入式系统和物联网设备中。

本文将介绍MSP430单片机的基本原理和常见应用场景。

2. 基本原理MSP430单片机采用哈佛结构的架构,拥有16位的CPU,8到256KB的闪存和0.5到16KB的RAM。

其低功耗特点使得它在电池供电的嵌入式设备中得到广泛应用。

MSP430单片机的工作原理可以简单概括为以下几个步骤: - 程序存储器中的指令被取出并送入指令译码器。

- 指令译码器将指令解码,并执行相应的操作。

- 执行的结果被存储器读写单元读取或写入。

- 控制单元协调整个系统的操作,包括时钟、中断、输入输出等。

3. 应用场景3.1 智能家居MSP430单片机在智能家居领域中具有广泛的应用。

通过连接传感器、执行器和通信模块,MSP430单片机可以实现对温度、湿度、光照等环境参数的监控与控制。

并且,MSP430单片机能够通过无线通信和云平台实现智能家居设备的远程控制和监测。

3.2 工业自动化在工业自动化领域,MSP430单片机能够通过连接传感器和执行器实现对生产过程的监测和控制。

它能够实时采集温度、压力、流量等参数,并根据设定的逻辑进行自动控制。

同时,MSP430单片机的低功耗特性使得它适合在工业现场长时间运行。

3.3 物联网设备随着物联网的快速发展,MSP430单片机在物联网设备中的应用越来越广泛。

它可以用于连接各种传感器、执行器和通信模块,实现对环境、设备等的监测和控制。

而且,MSP430单片机的低功耗特性使得它非常适合在物联网设备中使用,能够延长电池寿命。

3.4 医疗设备在医疗设备领域,MSP430单片机能够实现对患者的生理参数的监测和控制。

它可以连接各种传感器,如心电传感器、体温传感器等,实时采集患者的生理数据,并可以根据需要进行报警和控制操作。

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为输入。

MSP430 ADC10讲解

MSP430 ADC10讲解

MSP430单片机拥有内置的ADC功能,在一些高级单片机系列上是ADC12,在低级单片机系列上是ADC10,两者的主要区别是分辨率的不同,我们的G2553内置的就是ADC10,所以Cloud就在这里和大家一起学习ADC10。

一、ADC10特性我们先来了解一下这个ADC10的特性,官方给出的:·高达200ksps的转换速率;·固定的10位转换;·具有采样保持功能,并可选采样周期;·可以通过软件代码或TimerA初始化转换;·可选的片内(1.5V或2.5V)或片外参考电压;·支持8个外部输入通道;·内部输入通道支持温度检测,VCC和外部参考(+、—);·可选的转换时钟源;·单通道单次/多次、序列通道单次/多次,共4种转换模式;·ADC内核和参考电压都可单独关闭;·具有一个支持自动存储转换结果的数据转换控制器(DTC);二、ADC10结构OK,我们来引入ADC10的内部结构图来初步认识这个ADC10的内部结构。

为了方便大家学习,Cloud将各部分用不同颜色区分开:1、ADC10内核-SAR和采样保持电路:首先我们看到中间两块橙色的区域,右边五边形的是一个“10-bit SAR”,翻译过来就是一个10位精度的逐次逼近比较型的ADC内核,也就是说,我们的ADC转换就是在这里完成的。

那么它的信号来源是哪里呢?就是左边橙色矩形区域的“Sample and Hold”即采样保持电路,它将外部或者内部的模拟信号进行保持以实现ADC转换过程中的信号稳定。

2、ADC10信号通道和转换模式:我们的采样保持电路可以将左边选择器(红色梯形区域)内的信号进行保持。

由于我们的SAR只有一个,要对里里外外这么多信号都进行AD转换就必须按顺序来,一个一个选择性地输入,这个选择器就是用来选择要输入的外部或者内部模拟信号。

上面绿色矩形框控制着选择器选择哪个信号以及是否自动按序列选择。

东南大学MSP430LCD+ADC实验报告

东南大学MSP430LCD+ADC实验报告
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
// LCD segment definitions.
#define d 0x01
#define c 0x20
#define b 0x40
#define a 0x80
#define dp 0x10
#define f 0x08
#define e 0x02
int sin_table[100];
int *sin_data_pr;
uint fre_term_pr;
int j;
double i=0;
#define CPU_F ((double)1000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define uint unsigned int
#define uchar unsigned char
#define PI 3.1416
#define d 0x01
#define c 0x20
#define b 0x40
#define a 0x80
#define dp 0x10
#define g 0x04
// changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx UG for
// optimization , 32 x 32 x 8 MHz / 32,768 Hz = 250000 = MCLK cycles for DCO to settle

430单片机实习报告8篇

430单片机实习报告8篇

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

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

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

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

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

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

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

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

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

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

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

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

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

单片机原理及应用第十讲 MSP430单片机的ADC实验报告报告人:学号:同组人员:实验内容实验1 AD采集输入电压并比较实验2 AD内部温度采集实验实验3 验收实验:温度采集与显示把实验2中的实测温度值以摄氏度数值显示在段码LCD上。

实验步骤步骤:(1) 将PC 和板载仿真器通过USB 线相连;(2) 打开CCS 集成开发工具,选择样例工程或自己新建一个工程,修改代码;(3) 选择对该工程进行编译链接,生成.out 文件。

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

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

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

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

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

关键代码:实验1 AD采集输入电压并比较#include<msp430.h>int main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 onADC12CTL1 = ADC12SHP; // Use sampling timerADC12IE = 0x01; // Enable interruptADC12CTL0 |= ADC12ENC;P6SEL |= 0x01; // P6.0 ADC option selectP4DIR |= BIT1; // P4.1 outputwhile (1){ADC12CTL0 |= ADC12SC; // Start sampling/conversion__bis_SR_register(LPM0_bits + GIE); // LPM0, ADC12_ISR will force exit __no_operation(); // For debugger}}#pragma vector = ADC12_VECTOR__interrupt void ADC12_ISR(void){switch(__even_in_range(ADC12IV,34)){case 0: break; // Vector 0: No interruptcase 2: break; // Vector 2: ADC overflowcase 4: break; // Vector 4: ADC timing overflowcase 6: // Vector 6: ADC12IFG0if (ADC12MEM0 >= 0x7ff) // ADC12MEM = A0 > 0.5AVcc?P4OUT |= BIT1; // P4.1 = 1elseP4OUT &= ~BIT1; // P4.1 = 0__bic_SR_register_on_exit(LPM0_bits); // Exit active CPUcase 8: break; // Vector 8: ADC12IFG1case 10: break; // Vector 10: ADC12IFG2case 12: break; // Vector 12: ADC12IFG3case 14: break; // Vector 14: ADC12IFG4case 16: break; // Vector 16: ADC12IFG5case 18: break; // Vector 18: ADC12IFG6case 20: break; // Vector 20: ADC12IFG7case 22: break; // Vector 22: ADC12IFG8case 24: break; // Vector 24: ADC12IFG9case 26: break; // Vector 26: ADC12IFG10case 28: break; // Vector 28: ADC12IFG11case 30: break; // Vector 30: ADC12IFG12case 32: break; // Vector 32: ADC12IFG13case 34: break; // Vector 34: ADC12IFG14default: break;}}实验2 AD内部温度采集实验#include<msp430.h>#define CALADC12_15V_30C *((unsigned int *)0x1A1A) // Temperature Sensor Calibration-30 C//See device datasheet for TLV table memory mapping#define CALADC12_15V_85C *((unsigned int *)0x1A1C) // Temperature Sensor Calibration-85 Cunsigned int temp;volatile float temperatureDegC;volatile float temperatureDegF;int main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTREFCTL0 &= ~REFMSTR; // Reset REFMSTR to hand over control to// ADC12_A ref control registersADC12CTL0 = ADC12SHT0_8 + ADC12REFON + ADC12ON;// Internal ref = 1.5VADC12CTL1 = ADC12SHP; // enable sample timerADC12MCTL0 = ADC12SREF_1 + ADC12INCH_10; // ADC i/p ch A10 = temp sense i/p ADC12IE = 0x001; // ADC_IFG upon conv result-ADCMEMO __delay_cycles(100); // Allow ~100us (at default UCS settings)// for REF to settleADC12CTL0 |= ADC12ENC;while(1){ADC12CTL0 &= ~ADC12SC;ADC12CTL0 |= ADC12SC; // Sampling and conversion start__bis_SR_register(LPM4_bits + GIE); // LPM0 with interrupts enabled__no_operation();// Temperature in Celsius. See the Device Descriptor Table section in the // System Resets, Interrupts, and Operating Modes, System Control Module // chapter in the device user's guide for background information on the // used formula.temperatureDegC = (float)(((long)temp - CALADC12_15V_30C) * (85 - 30)) / (CALADC12_15V_85C - CALADC12_15V_30C) + 30.0f;// Temperature in Fahrenheit Tf = (9/5)*Tc + 32temperatureDegF = temperatureDegC * 9.0f / 5.0f + 32.0f;__no_operation(); // SET BREAKPOINT HERE}}#pragma vector=ADC12_VECTOR__interrupt void ADC12ISR (void){switch(__even_in_range(ADC12IV,34)){case 0: break; // Vector 0: No interruptcase 2: break; // Vector 2: ADC overflowcase 4: break; // Vector 4: ADC timing overflow case 6: // Vector 6: ADC12IFG0temp = ADC12MEM0; // Move results, IFG is cleared__bic_SR_register_on_exit(LPM4_bits); // Exit active CPUcase 8: break; // Vector 8: ADC12IFG1case 10: break; // Vector 10: ADC12IFG2case 12: break; // Vector 12: ADC12IFG3case 14: break; // Vector 14: ADC12IFG4case 16: break; // Vector 16: ADC12IFG5case 18: break; // Vector 18: ADC12IFG6case 20: break; // Vector 20: ADC12IFG7case 22: break; // Vector 22: ADC12IFG8case 24: break; // Vector 24: ADC12IFG9case 26: break; // Vector 26: ADC12IFG10case 28: break; // Vector 28: ADC12IFG11case 30: break; // Vector 30: ADC12IFG12case 32: break; // Vector 32: ADC12IFG13case 34: break; // Vector 34: ADC12IFG14default: break;}}实验3 验收实验:温度采集与显示int main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTInit_TS3A5017DR(); // Configure TS3A5017DR IN1 and IN2Init_lcd(); // LCD初始化Backlight_Enable(); // 打开背光LcdGo(1); // 打开液晶模块LCD_Clear(); // 清屏REFCTL0 &= ~REFMSTR; // Reset REFMSTR to hand over control to// ADC12_A ref control registersADC12CTL0 = ADC12SHT0_8 + ADC12REFON + ADC12ON;// Internal ref = 1.5VADC12CTL1 = ADC12SHP; // enable sample timerADC12MCTL0 = ADC12SREF_1 + ADC12INCH_10; // ADC i/p ch A10 = temp sense i/p ADC12IE = 0x001; // ADC_IFG upon conv result-ADCMEMO __delay_cycles(100); // Allow ~100us (at default UCS settings)// for REF to settleADC12CTL0 |= ADC12ENC;while(1){ADC12CTL0 &= ~ADC12SC;ADC12CTL0 |= ADC12SC; // Sampling and conversion start__bis_SR_register(LPM4_bits + GIE); // LPM0 with interrupts enabled__no_operation();// Temperature in Celsius. See the Device Descriptor Table section in the // System Resets, Interrupts, and Operating Modes, System Control Module // chapter in the device user's guide for background information on the // used formula.temperatureDegC = (float)(((long)temp - CALADC12_15V_30C) * (85 - 30)) / (CALADC12_15V_85C - CALADC12_15V_30C) + 30.0f;i = (int)temperatureDegC/100;j = (int)(temperatureDegC-i*100)/10;k = (int)(temperatureDegC-i*100-j*10);LCDMEM[0] = char_gen[i];LCDMEM[1] = char_gen[j];LCDMEM[2] = char_gen[k];__delay_cycles(1000000); // Allow ~100us (at default UCS settings)// Temperature in Fahrenheit Tf = (9/5)*Tc + 32temperatureDegF = temperatureDegC * 9.0f / 5.0f + 32.0f;__no_operation(); // SET BREAKPOINT HERE}}实验现象分析:实验1 AD采集输入电压并比较旋转电位器RP1,改变AD6输入端的电压:当输入电压大于VCC/2时,P4.1的LED亮;当输入电压小于VCC/2时,P4.1的LED灭。

相关文档
最新文档