传感器与传感网技术 课件 第38讲 搭建可燃气体监测系统-程序开发_第1页
传感器与传感网技术 课件 第38讲 搭建可燃气体监测系统-程序开发_第2页
传感器与传感网技术 课件 第38讲 搭建可燃气体监测系统-程序开发_第3页
传感器与传感网技术 课件 第38讲 搭建可燃气体监测系统-程序开发_第4页
传感器与传感网技术 课件 第38讲 搭建可燃气体监测系统-程序开发_第5页
全文预览已结束

下载本文档

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

文档简介

搭建可燃气体监测系统——程序开发新建工作区、工程和源文件,并对工程进行相应的配置搭建可燃气体监测系统——程序开发搭建可燃气体监测系统——程序开发/*包含头文件*/#include"ioCC2530.h"#include<stdio.h>#defineLED1P1_0//P1_0定义为P1_0led灯端口#defineuint16unsignedshort#defineuint32unsignedlongunsignedcharSprintfAsciiResult[20];//存放转换后的ASCII字符串unsignedcharProtocolBuff[9];//推送到网关的协议帧uint16counter=0;//统计溢出次数unsignedcharAsciiStr[8];//定义一个数组大小为8unsignedcharCHK(unsignedchar*buf,intlen);voidInitLED(){P1SEL&=~0x01;P1DIR|=0x01;LED1=0;}voidadc_Init(void){APCFG|=0x01;//使能P0模拟外设功能,指定P0_0P0SEL|=0x01; //设置P0_0为外设口

P0DIR&=~0x01; //设置p0_0为输入口}/*************************************************************名称get_adc*功能读取ADC通道0电压值*入口参数无*出口参数16位电压值,分辨率为10mV***************获取ADC通道0电压值************************/uint16get_adc(void){ uint32value; ADCIF=0;//清ADC中断标志ADCCON3=0x90;while(!ADCIF);value=ADCH;value=value<<8;value|=ADCL;value=(value*330);//返回分辨率为10mV的电压值

value=value>>15;//除以32768return(uint16)value;}/**********串口通信初始化************************/voidinitUART0(void){ PERCFG&=~0x01; P0SEL=0x3c; //由考生设置串口相关参数,要求波特率115200U0CSR|=0x80;U0BAUD=216;U0GCR=11;U0UCR|=0x80;

UTX0IF=0;//清零UART0TX中断标志

EA=1;//使能全局中断}/**************************************************函数名称:initTimer1*功能:初始化定时器T1控制状态寄存器******************定时器初始化*****************************/voidinitTimer1(){CLKCONCMD&=0x80;T1CTL|=0x0E;T1CCTL0|=0x04;T1CC0L=50000&0x00ff;T1CC0H=(50000&0xff00)>>8;T1IF=0;//清除timer1中断标志(同IRCON&=~0x02)T1STAT&=~0x01;//清除通道0中断标志

TIMIF&=~0x40;//不产生定时器1的溢出中断

//定时器1的通道0的中断使能T1CCTL0.IM默认使能

IEN1|=0x02;//使能定时器1的中断

EA=1;//使能全局中断}/**************单片机发送协议帧数据到串口******************/voidUART0SendData(unsignedchar*str,intlen){for(inti=0;i<=len;i++){U0DBUF=str[i];//将要发送的1字节数据写入U0DBUFwhile(!UTX0IF);//等待TX中断标志,即U0DBUF就绪

UTX0IF=0;//清零TX中断标志UART0SendByte(*str++);}}/**************构建发送电压值到物联网网关的协议帧******************/voidBuildProtocolFrame(uint16voltage){ProtocolBuff[0]=0xDD;ProtocolBuff[1]=0x03;ProtocolBuff[2]=0x00;ProtocolBuff[3]=0x01;ProtocolBuff[4]=0x09;ProtocolBuff[5]=0x04;ProtocolBuff[6]=voltage>>8;ProtocolBuff[7]=voltage&0xFF;ProtocolBuff[8]=CHK(ProtocolBuff,8);}/**************和校验函数******************/unsignedcharCHK(unsignedchar*buf,intlen){unsignedcharRX_CHX=0;while(len--){RX_CHX+=*buf;buf++;}returnRX_CHX&=0xff;}/**************获取电压值并处理数据******************/voidGet_AsciiValue(){uint16sensor_val;sensor_val=get_adc();AsciiStr[0]=sensor_val/100+'0';AsciiStr[1]='.';AsciiStr[2]=sensor_val/10%10+'0';AsciiStr[3]=sensor_val%10+'0';AsciiStr[4]='V';AsciiStr[5]='\n';}/*******************************************功能:定时器T1中断服务子程序************************************/#pragmavector=T1_VECTOR//中断服务子程序__interruptvoidT1_ISR(void){ EA=0;//禁止全局中断

counter++; T1STAT&=~0x01;//清除通道0中断标志

EA=1;//使能全局中断}//LED1闪烁时间延迟voiddelay(inttime){for(inti=0;i<=time;i++){for(intj=0;j<=240;j++);}}/*******************************************函数名称:main*功能:main函数入口*入口参数:无*出口参数:无*返回值:无**************************************************/voidmain(void){InitLED();initTimer1();//初始化Timer1initUART0();//UART0初始化

adc_Init();//ADC初始化

while(1) { if(counter>=10)//定时器每0.2S溢出中断计次

{ counter=0;//清标志位

LED1=1;//指示灯点亮

Get_AsciiValue();#ifdefdebugsprintf(SprintfAsciiResult,"传感器电压值:%s",AsciiStr);UART0SendData(SprintfAsciiResult,s

温馨提示

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

评论

0/150

提交评论