10504231114实验五文档格式.docx

上传人:b****6 文档编号:16783662 上传时间: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

#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<

n;

i++);

}

初始化串口1*

57600-8-n-1*

voidinitUARTtest(void)

CLKCON&

=~0x40;

//晶振

while(!

(SLEEP&

0x40));

//等待晶振稳定

=~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<

len;

j++)

{

U0DBUF=*Data++;

while(UTX0IF==0);

UTX0IF=0;

}

主函数*

voidmain(void)

{

chartemp[2];

floatnum;

initUARTtest();

//初始化串口115200

InitialAD();

//初始化ADC

while

(1)

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]>

//数据处理

//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<

ioCC2430.h>

#defineled3P1_2

#defineled4P1_3

/*32M晶振初始化

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

voidxtal_init(void)

SLEEP&

=~0x04;

//都上电

//晶体振荡器开启且稳定

//选择32MHz晶体振荡器

/*LED灯初始化

voidled_init(void)

P1SEL=0x00;

//P1为普通I/O口

P1DIR|=0x0F;

//P1.0P1.1P1.2P1.3输出

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;

(U0CSR&

0x04));

//查询是否收到数据,否则继续等待

data=U0DBUF;

returndata;

/*延时函数

voidDelay(unsignedintn)

unsignedinti;

/*得到实际温度值

floatgetTemperature(void)

unsignedintvalue;

ADCCON3=(0x3E);

//选择1.25V为参考电压;

14位分辨率;

对片内温度传感器采样

ADCCON1|=0x30;

//选择ADC的启动模式为手动

ADCCON1|=0x40;

//启动AD转化

(ADCCON1&

0x80));

//等待ADC转化结束

value=ADCL>

2;

value|=(ADCH<

6);

//取得最终转化结果,存入value中

returnvalue*0.06229-311.43;

//根据公式计算出温度值

/*主函数

chari;

floatavgTemp;

unsignedcharoutput[]="

00.00"

xtal_init();

led_init();

Uart0Init(0x00,0x00);

//初始化串口:

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

Uart0SendString("

HelloCC2430-TempSensor!

\r\n"

);

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

℃\n"

//LED熄灭,表示转换结束,

Delay(20000);

实验心得体会:

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

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

当前位置:首页 > 人文社科 > 设计艺术

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

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