/***************************************** //by 虚幻代码 //名称:读取片内温度并通过串口显示 //说明:取片内温度传感器为AD源,通过串口在PC上显示出来。 //实验使用UART0,波特率为19200 *****************************************/ /*引用********************************************/ #include
【CC2530 ADC实验1(读取片内温度并通过串口显示)】/*主函数*******************************/ void main(void) {char i; char tempvalue[10]; initclock(); //初始化时钟inituart0(); //初始化串口IEN0=IEN1=IEN2=0X00; //关闭所有中断ATEST=0X01; //开启温度传感器TR0=0X01; //将温度传感器与ADC连接起来while(1){avgtemp=0; for(i=0; i<64; i++){avgtemp +=gettemperature(); //取得温度数,加上原平均值avgtemp>>=1; //除以2,取得平均值}sprintf(tempvalue,(char *)"%dC/r",(int)avgtemp); uarttx_send_string(tempvalue,4); delay(50000); } }
/* 本程序讲解AD控制(片内温度计) 主讲王加辉 */ #include
float recieve_AD(void)/*AD转换,读取片内温度计实时电压*/ { uint value=https://www.it610.com/article/0; /*无符号整型变量,用来储存AD转换值*/ ADCCON1|=0X30; /*选择AD转换启动的方式为手动启动*/ ADCCON3=0X3E; /*设置AD转换的信息源为片内温度传感器、选择内部参考电压为1.25V,设置单通道AD转换的分辨率为512dec,12位,此处要对照AD寄存器手册查看*/ ADCCON1|=0X40; /*手动启动AD转换*/ while(!(ADCCON1&0X80)); /*等待AD一次转换完成*/ value=ADCL>>4; /*CC2530的AD转换数据是由高到低存储的,ADCL低4位无效,所以我们要向右移动去掉无效四位, 这我也是在CC2430学校视频上看到的,暂时我不能给出确切解释,有懂得请补充一下,谢谢*/ value|=(uint)ADCH<<4; /*视频上解释高位数据向左移动4位是为了和低位对应,然后相加,我无法做出准确解释,我找到相关资料再做补充解释*/ return value*0.06229-303.3-4; /*温度的计算公式为:温度=((测量电压-某一电压)/温度系数)-温度的误差值*/ }
void init_tempurature()/*初始化温度传感器*/ { IEN0=IEN1=IEN2=0; /*因为AD转换会产生中断,所以此处我们先关掉所用中断,对于AD中断的使用大家可以参考手册,查看其中断源*/ CLKCONCMD&=~0X40; /*设置时钟频率,在前面的串口通信中我们也曾讲过*/ while(CLKCONSTA&0X40); CLKCONCMD&=~0X47; TR0=0X01; /*这里我让AD和温度传感器相连*/ ATEST=0X01; /*启动温度传感器*/ }
void data_UART0(char *character,int length)/*串口数据输出函数*/ { int i; for(i=0; i
推荐阅读
- Zstack杂乱笔记4
- Zigbee基础实验之ADC
- TI|ZigBee TI ZStack CC2530 4.18 绑定通信02-实验验证
- zigbee之PANID
- ZigBee学习笔记 -- 1.9 Device Roles
- zigbee学习重点资料的摘录2