10504231114实验五.docx

上传人:b****6 文档编号:3877428 上传时间:2022-11-26 格式:DOCX 页数:13 大小:98.25KB
下载 相关 举报
10504231114实验五.docx_第1页
第1页 / 共13页
10504231114实验五.docx_第2页
第2页 / 共13页
10504231114实验五.docx_第3页
第3页 / 共13页
10504231114实验五.docx_第4页
第4页 / 共13页
10504231114实验五.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

10504231114实验五.docx

《10504231114实验五.docx》由会员分享,可在线阅读,更多相关《10504231114实验五.docx(13页珍藏版)》请在冰豆网上搜索。

10504231114实验五.docx

10504231114实验五

实验五AD实验

小组成员:

别志坚彭志华

报告撰写人:

别志坚

实验题目:

AD实验

实验目的:

学习使用CC2430实现模数转换

实验内容及步骤:

(一)模拟电压转换

(1)启动IAREmbeddedWorkbench,打开工程forj11-1-3avdd.eww;

(2)连好实验设备,打开电源,将程序下载到目标板上。

改变跳线帽的设置,如图所示,在做完该实验后请务必改回到原来的设置。

注:

跳线J3,J4连接为TX-2430连接TX-USB,RX-2430连接RX-USB。

(3)重启传感节点模块,按下仿真器复位键,打开串口调试工具。

配置好相应设置后。

点击“连接

(4)调节RP1-2430,可以观察到显示出的数据值在不停的变化。

(二)片内温度转换

(1)参与“片内温度.doc”文档,修改程序实现片内温度转换的转换输出。

 

实验完成的程序及实现的效果:

(一)模拟电压转换

#include"ioCC2430.h"

#include"stdio.h"

#defineuintunsignedint

#defineConversionNum20

//定义控制灯的端口

#defineled1P1_0

#defineled2P1_1

voidDelay(uint);

voidinitUARTtest(void);

voidInitialAD(void);

voidUartTX_Send_String(char*Data,intlen);

charadcdata[]="0.0V";

/****************************************************************

*函数功能:

延时*

*入口参数:

定性延时*

*返回值:

无*

*说明:

*

****************************************************************/

voidDelay(uintn)

{

uinti;

for(i=0;i

for(i=0;i

for(i=0;i

for(i=0;i

for(i=0;i

}

/****************************************************************

*函数功能:

初始化串口1*

*入口参数:

无*

*返回值:

无*

*说明:

57600-8-n-1*

****************************************************************/

voidinitUARTtest(void)

{

CLKCON&=~0x40;//晶振

while(!

(SLEEP&0x40));//等待晶振稳定

CLKCON&=~0x47;//TICHSPD128分频,CLKSPD不分频

SLEEP|=0x04;//关闭不用的RC振荡器

PERCFG=0x00;//位置1P0口

P0SEL=0x3c;//P0用作串口

U0CSR|=0x80;//UART方式

U0GCR|=11;//baud_e=11;

U0BAUD|=216;//波特率设为115200

UTX0IF=1;

U0CSR|=0X40;//允许接收

IEN0|=0x84;//开总中断,接收中断

}

/****************************************************************

*函数功能:

初始化ADC*

*入口参数:

无*

*返回值:

无*

*说明:

参考电压AVDD,转换对象是1/3AVDD*

****************************************************************/

voidInitialAD(void)

{

//P1out

P1DIR=0x03;//P1控制LED

led1=1;

led2=1;//关LED

ADCH&=0X00;//清EOC标志

ADCCON3=0xb1;//单次转换,参考电压为AVDD_SOC引脚电压,对P0.1进行A/D转换

//14位分辨率

ADCCON1=0X30;//停止A/D

ADCCON1|=0X40;//启动A/D

}

/****************************************************************

*函数功能:

串口发送字符串函数*

*入口参数:

data:

数据*

*len:

数据长度*

*返回值:

无*

*说明:

*

****************************************************************/

voidUartTX_Send_String(char*Data,intlen)

{

intj;

for(j=0;j

{

U0DBUF=*Data++;

while(UTX0IF==0);

UTX0IF=0;

}

}

 

/****************************************************************

*函数功能:

主函数*

*入口参数:

无*

*返回值:

无*

*说明:

无*

****************************************************************/

voidmain(void)

{

chartemp[2];

floatnum;

initUARTtest();//初始化串口115200

InitialAD();//初始化ADC

led1=1;

while

(1)

{

InitialAD();

if(ADCCON1>=0x80)

{

led1=1;//转换完毕指示

temp[1]=ADCL;

temp[0]=ADCH;

temp[1]=temp[1]>>2;

//temp[1]|=temp[0]<<6;

//temp[0]=temp[0]>>2;//数据处理

//temp[0]&=0x3f;

num=(temp[0]*256+temp[1])*3.3/8192;//有一位符号位,取2^13;

num/=4;

//定参考电压为3.3V。

14位精确度

//adcdata[0]=(char)(num)/10+48;

adcdata[1]=(char)(num)%10+48;

//adcdata[2]='.';

adcdata[3]=(char)(num*10)%10+48;

UartTX_Send_String(adcdata,6);//串口送数

//包括空格

Delay(30000);

led1=0;//完成数据处理

Delay(30000);

}

}

}

该实验效果如图:

(二)片内温度转换

/*

实验说明:

片内温度采集实验,通过串口0将数据发送到PC机

*/

#include

#defineled1P1_0

#defineled2P1_1

#defineled3P1_2

#defineled4P1_3

/*32M晶振初始化

-------------------------------------------------------*/

voidxtal_init(void)

{

SLEEP&=~0x04;//都上电

while(!

(SLEEP&0x40));//晶体振荡器开启且稳定

CLKCON&=~0x47;//选择32MHz晶体振荡器

SLEEP|=0x04;

}

/*LED灯初始化

-------------------------------------------------------*/

voidled_init(void)

{

P1SEL=0x00;//P1为普通I/O口

P1DIR|=0x0F;//P1.0P1.1P1.2P1.3输出

led1=1;

led2=1;

led3=1;

led4=1;

}

/*UART0初始化

-------------------------------------------------------*/

voidUart0Init(unsignedcharStopBits,unsignedcharParity)

{

P0SEL|=0x0C;//初始化UART0端口

PERCFG&=~0x01;//选择UART0为可选位置一

U0CSR=0xC0;//设置为UART模式,而且使能接受器

U0GCR=11;

U0BAUD=216;//设置UART0波特率为115200bps

U0UCR|=StopBits|Parity;//设置停止位与奇偶校验

}

/*UART0发送字符

-------------------------------------------------------*/

voidUart0Send(unsignedchardata)

{

while(U0CSR&0x01);//等待UART空闲时发送数据

U0DBUF=data;

}

/*UART0发送字符串

-------------------------------------------------------*/

voidUart0SendString(unsignedchar*s)

{

while(*s!

=0)

Uart0Send(*s++);

}

/*UART0接收数据

-------------------------------------------------------*/

unsignedcharUart0Receive(void)

{

unsignedchardata;

while(!

(U0CSR&0x04));//查询是否收到数据,否则继续等待

data=U0DBUF;

returndata;

}

/*延时函数

-------------------------------------------------------*/

voidDelay(unsignedintn)

{

unsignedinti;

for(i=0;i

for(i=0;i

for(i=0;i

for(i=0;i

for(i=0;i

}

/*得到实际温度值

-------------------------------------------------------*/

floatgetTemperature(void)

{

unsignedintvalue;

ADCCON3=(0x3E);//选择1.25V为参考电压;14位分辨率;对片内温度传感器采样

ADCCON1|=0x30;//选择ADC的启动模式为手动

ADCCON1|=0x40;//启动AD转化

while(!

(ADCCON1&0x80));//等待ADC转化结束

value=ADCL>>2;

value|=(ADCH<<6);//取得最终转化结果,存入value中

returnvalue*0.06229-311.43;//根据公式计算出温度值

}

/*主函数

-------------------------------------------------------*/

voidmain(void)

{

chari;

floatavgTemp;

unsignedcharoutput[]="00.00";

xtal_init();

led_init();

led1=0;

Uart0Init(0x00,0x00);//初始化串口:

无奇偶校验,停止位为1位

Uart0SendString("HelloCC2430-TempSensor!

\r\n");

while

(1)

{

led1=0;

avgTemp=0;

for(i=0;i<64;i++)

{

avgTemp+=getTemperature();

avgTemp=avgTemp/2;//每采样1次,取1次平均值

}

output[0]=(unsignedchar)(avgTemp)/10+48;//十位

output[1]=(unsignedchar)(avgTemp)%10+48;//个位

output[2]='.';//小数点

output[3]=(unsignedchar)(avgTemp*10)%10+48;//十分位

output[4]=(unsignedchar)(avgTemp*100)%10+48;//百分位

output[5]='\0';//字符串结束符

Uart0SendString(output);

Uart0SendString("℃\n");

led1=1;//LED熄灭,表示转换结束,

Delay(20000);

Delay(20000);

Delay(20000);

Delay(20000);

Delay(20000);

Delay(20000);

Delay(20000);

Delay(20000);

Delay(20000);

Delay(20000);

}

}

该实验效果如图:

 

实验心得体会:

本节课我们学习使用了CC2430实现模数转换,实现了电压与温度的转换,深入的了解了其工作原理,对物联网这门课程有了更加深入的了解。

 

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

当前位置:首页 > IT计算机 > 计算机软件及应用

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

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