《单片机技术与应用》课件-49.实现CC2530片内温度展示代码分析_第1页
《单片机技术与应用》课件-49.实现CC2530片内温度展示代码分析_第2页
《单片机技术与应用》课件-49.实现CC2530片内温度展示代码分析_第3页
《单片机技术与应用》课件-49.实现CC2530片内温度展示代码分析_第4页
《单片机技术与应用》课件-49.实现CC2530片内温度展示代码分析_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机技术与应用实现CC2530片内温度展示代码分析单片机技术与应用编写片内温度采集处理与简单展示掌握基础且重要的技能嵌入式系统开发中ADC应用的典型案例控制代码展示C语言的功能:控制代码#include<ioCC2530.h>#defineD3P1_0#defineD4P1_1#defineD5P1_3#defineD6P1_4//*****延时函数******voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++){for(j=0;j<500;j++);}}//*******采样温度函数**********floatgetTemperature(void){signedshortintvalue;ADCCON3=0x3E;//选择内部参考电压;512抽取率;对片内温度传感器采样

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

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

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

value=ADCL>>2;value|=((int)ADCH<<6);//8位转为16位,后补6个0,取得最终转化结果,存入value中

if(value<0)value=0;//若value<0,就认为它为0returnvalue*0.06229-348.2;//根据公式计算出温度值

}//*********温度测试函数******控制代码展示C语言的功能:控制代码voidDisplay_Temperature(floatavgTemp){if(avgTemp>25.0){//判断温度是否高于阈值D5=1;//点亮LED1}else{D5=0;//熄灭LED1}}//*********端口初始化函数******voidInit_Port(){//配置端口的功能P1SEL&=~0x1B;//配置端口方向P1DIR|=0x1B;//配置SW1按键引脚//关闭LED灯P1&=~0x1B;}//********主函数******voidmain(void){floatavgTemp;TR0=0X01;//连接温度传感器到SOC_ADCATEST=0X01;//使能温度传感器

Init_Port();while(1){avgTemp=getTemperature();Display_Temperature(avgTemp);delay(10000);//延时

}}单片机技术与应用#include<ioCC2530.h>直接操作寄存器是控制硬件的高效方式1.包含头文件在源代码中直接使用CC2530寄存器名称实现对寄存器的直接访问#defineD5P1_32.宏定义引脚通过宏定义将P1_3引脚命名为D5,方便后续代码对P1_3引脚的引用编写和阅读。单片机技术与应用3.软件延时函数delay()voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++){for(j=0;j<500;j++);}}代码分析delay()函数系统编程的首选语言通过循环嵌套实现软件延时,可以根据实际硬件性能进行调整,以达到所需的延时精度。在本代码中主要用于控制温度检测的间隔时间,确保温度数据的稳定读取。代码分析系统编程的首选语言4.I/O端口初始化函数Init_Port()voidInit_Port(){//配置端口的功能P1SEL&=~0x1B;//配置端口方向P1DIR|=0x1B;//配置SW1按键引脚//关闭LED灯P1&=~0x1B;}P1SEL是P1端口功能选择寄存器,用于配置P1端口各引脚功能P1DIR是P1端口方向寄存器,用于配置P1端口各引脚的输入/输出方向P1是P1端口寄存器,用于配置P1端口各引脚的电平值代码分析系统编程的首选语言5.采样温度函数getTemperature()floatgetTemperature(void){signedshortintvalue;ADCCON3=0x3E;//选择内部参考电压;512抽取率;对片内温度传感器采样

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

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

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

value=ADCL>>2;value|=((int)ADCH<<6);//8位转为16位,后补6个0,取得最终转化结果,存入value中

if(value<0)value=0;//若value<0,就认为它为0returnvalue*0.06229-348.2;//根据公式计算出温度值

}代码分析系统编程的首选语言丨signedshortintadc_value;整形变量adc_value用于存放ADC转换值丨ADCCON3=0x3E;选择ADC的工作模式为内部参考电压选择512抽取率代码分析系统编程的首选语言ADCCON1|=0x30;

即ADCCON1.STSEL配置为11,则选择ADC的启动模式为手动ADCCON1|=0x40;即ADCCON1.ST位操作为1,用于启动一个转换序列while(!(ADCCON1&0x80));等待ADC转化结束代码分析value=ADCL>>2;value|=((int)ADCH<<6);先将8位的ADCL值右移2位清除原ADCL中无用的末两位,再或运算8位转16位并左移6位的ADCH值,取得最终转化结果,赋值给变量value。代码分析if(value<0)value=0;

将value小于0的值置为0。returnvalue*0.06229-348.2;

最后返回根据公式计算出来的实际温度值。代码分析6.温度测试函数Display_Temperature()voidDisplay_Temperature(floatavgTemp){if(avgTemp>25.0){//判断温度是否高于阈值D5=1;//点亮LED1}else{D5=0;//熄灭LED1}}判断实际温度值avgTemp超过阈值(25度)voidmain(void){floatavgTemp;TR0=0X01;//连接温度传感器到SOC_ADCATEST=0X01;//使能温度传感器

Init_Port();while(1){avgTemp=getTemperature();Display_Temperature(avgTemp);delay(10000);//延时

}}7.主函数main()代码分析floatavgTemp;定义浮点型变量avgTemp,用于存放得到的实际温度值。C语言的功能:TR0=0X01;将温度传感器连接到芯片的ADC模块上。ATEST=0X01;使能温度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论