首页 PPM解码程序

PPM解码程序

举报
开通vip

PPM解码程序//PPM解码程序//用INT0接PPM信号//T0计数,用来测量脉宽//注意,这个不是标准的PPM信号,刚好和PPM信号相位相反//测得的PPM信号在LCD上显示//PPM信号取自天地飞6A接收机//时间:2012年2月15日0:22:31#include#include#defineDataPortP0sbitRS=P2^4;sbitRW=P2^5;sbitEN=P2^6;unsignedcharchannel=0,i=0;unsignedintxdataPPM_channel1[10],PPM_channel...

PPM解码程序
//PPM解码程序//用INT0接PPM信号//T0计数,用来测量脉宽//注意,这个不是 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的PPM信号,刚好和PPM信号相位相反//测得的PPM信号在LCD上显示//PPM信号取自天地飞6A接收机//时间:2012年2月15日0:22:31#include#include#defineDataPortP0sbitRS=P2^4;sbitRW=P2^5;sbitEN=P2^6;unsignedcharchannel=0,i=0;unsignedintxdataPPM_channel1[10],PPM_channel2[10],PPM_channel3[10],PPM_channel4[10],PPM_channel5[10],PPM_channel6[10];bitTimer0_OverFlowFlag=0;//定时器0的溢出标志,如果溢出,则有问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ;unsignedcharqian,bai,shi,ge;#defineRS_CLRRS=0;#defineRS_SETRS=1;#defineRW_SETRW=1;#defineRW_CLRRW=0;#defineEN_CLREN=0;#defineEN_SETEN=1;//和LCD显示有关的 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数定义voidLCD_Check_Busy(void);//查忙函数voidLCD_Clear(void);//清屏函数voidLCD_Init(void);//lcd初始化函数voidLCD_Write_Com(unsignedcharcom);//控制字写入函数voidLCD_Write_Data(unsignedcharData);//数据写入函数voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData);//写入单个字符voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s);//写入字符串unsignedintfilter(unsignedint*s);//中值平局滤波;voidDepartNum(unsignedinttemp);//用于分解要显示的数据voidDelayUs2x(unsignedchart);voidDelayMs(unsignedintt);voidmain(void){unsignedchar*InitIform;unsignedinttemp;InitIform="Init_is_OK";LCD_Init();DelayMs(10);LCD_Write_String(3,0,InitIform);//初始化Timer0TMOD=0x01;//timer0方式1ET0=1;//允许timer0中断//初始化INT0IT0=1;//负跳变触发中断;EX0=1;EA=1;DelayMs(10000);while(1){temp=filter(PPM_channel1);DepartNum(temp);LCD_Write_Char(0,0,'A');LCD_Write_Char(1,0,qian);LCD_Write_Char(2,0,bai);LCD_Write_Char(3,0,shi);LCD_Write_Char(4,0,ge);temp=filter(PPM_channel2);DepartNum(temp);LCD_Write_Char(5,0,'B');LCD_Write_Char(6,0,qian);LCD_Write_Char(7,0,bai);LCD_Write_Char(8,0,shi);LCD_Write_Char(9,0,ge);temp=filter(PPM_channel3);DepartNum(temp);LCD_Write_Char(10,0,'C');LCD_Write_Char(11,0,qian);LCD_Write_Char(12,0,bai);LCD_Write_Char(13,0,shi);LCD_Write_Char(14,0,ge);temp=filter(PPM_channel4);DepartNum(temp);LCD_Write_Char(0,1,'D');LCD_Write_Char(1,1,qian);LCD_Write_Char(2,1,bai);LCD_Write_Char(3,1,shi);LCD_Write_Char(4,1,ge);temp=filter(PPM_channel5);DepartNum(temp);LCD_Write_Char(5,1,'E');LCD_Write_Char(6,1,qian);LCD_Write_Char(7,1,bai);LCD_Write_Char(8,1,shi);LCD_Write_Char(9,1,ge);temp=filter(PPM_channel6);DepartNum(temp);LCD_Write_Char(10,1,'F');LCD_Write_Char(11,1,qian);LCD_Write_Char(12,1,bai);LCD_Write_Char(13,1,shi);LCD_Write_Char(14,1,ge);//DelayMs(1000);}}voidDelayUs2x(unsignedchart){while(--t);}voidDelayMs(unsignedintt){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}//查忙函数voidLCD_Check_Busy(void){unsignedchari=255;DataPort=0xff;RS_CLR;RW_SET;EN_SET;while(i--&&(DataPort&0x80));EN_CLR;}//控制字写入函数,入口参数是控制字voidLCD_Write_Com(unsignedcharcom){LCD_Check_Busy();RS_CLR;RW_CLR;DataPort=com;EN_SET;_nop_();EN_CLR;}//写入数据,入口参数是要写入的数据voidLCD_Write_Data(unsignedcharData){LCD_Check_Busy();RS_SET;RW_CLR;DataPort=Data;EN_SET;_nop_();EN_CLR;}//清屏函数voidLCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}//LCD显示字符串,入口参数是字符显示的位置X(0-15),显示的行数y(0,1),*S显示的字符串voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0)LCD_Write_Com(0x80+x);elseLCD_Write_Com(0xc0+x);while(*s){LCD_Write_Data(*s);s++;}}//LCD显示字符串,入口参数是字符显示的位置X(0-15),显示的行数y(0,1),Data显示的字符voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0)LCD_Write_Com(0x80+x);elseLCD_Write_Com(0xc0+x);DelayMs(1);//alittledelayforsimulationLCD_Write_Data(Data);}//lcd初始化函数voidLCD_Init(void){LCD_Write_Com(0x38);//setthedisplaymodelDelayMs(5);LCD_Write_Com(0x08);//turndownthedisplay//LCD_Write_Com(0x01);//clearthedisplayLCD_Clear();LCD_Write_Com(0x06);//setthe光标movingmodelDelayMs(5);LCD_Write_Com(0x0c);//显示开和光标设置}/****************************************用于显示的数位分解函数,把数据转化为ASCII码入口参数是要显示的数据****************************************/voidDepartNum(unsignedinttemp){qian=temp/1000+0x30;bai=temp%1000/100+0x30;shi=temp%100/10+0x30;ge=temp%10+0x30;}voidISIR_INT0(void)interrupt0{unsignedintPPM_temp;if(TR0){TR0=0;//停止计数;PPM_temp=TH0;PPM_temp=(PPM_temp<<8)|TL0;TH0=0;TL0=0;TR0=1;//给TH0和TL0赋初值后重新启动定时器}else{TH0=0;//如果是第一次启动中断,则启动timer0TL0=0;TR0=1;}if(PPM_temp>3000||Timer0_OverFlowFlag)//判断引导区{channel=0;Timer0_OverFlowFlag=0;i++;if(i==10)i=0;}switch(channel){case1:PPM_channel1[i]=PPM_temp;break;case2:PPM_channel2[i]=PPM_temp;break;case3:PPM_channel3[i]=PPM_temp;break;case4:PPM_channel4[i]=PPM_temp;break;case5:PPM_channel5[i]=PPM_temp;break;case6:PPM_channel6[i]=PPM_temp;break;case7:break;case8:break;default:break;}channel++;}voidISIR_Timer0(void)interrupt1{Timer0_OverFlowFlag=1;}unsignedintfilter(unsignedint*s){unsignedchark,j;unsignedintsum=0;unsignedinttemp;for(k=0;k<9;k++)for(j=k+1;j<10;j++)if(s[k]>s[j]){temp=s[k];s[k]=s[j];s[j]=temp;}for(k=1;k<9;k++)sum+=s[k];sum=sum/8;returnsum;}
本文档为【PPM解码程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_721103
暂无简介~
格式:doc
大小:29KB
软件:Word
页数:0
分类:
上传时间:2021-08-30
浏览量:18