您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C8051F410超声波测距程序
//=====测控硬件设计超声波测距=================#includec8051f410.h#includestdio.h#defineucharunsignedchar#defineuintunsignedint//================================================ucharDM1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码0—9ucharDM2[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管段码0—9ucharWM[]={0x80,0x40,0x20,0x10};//================================================uintt=0,a=0,n=0,m=0;uintave=0,tt=0;floats=0;ucharsj[10]=0;ucharbuf[4]=0;//===============================================sbitLED=P1^7;sbitCSB=P1^6;//====================延时函数====================voiddelay(uinti){while(i--);}//======================初始化IO口================voidCSH_IO(){PCA0MD=0x00;P1MDOUT=0xff;//P1口配置为数字输出P0MDIN=0xff;//P0口配置为数字输入XBR0=0x00;XBR1=0x40;//交叉开关使能}//====================初始化时钟==================voidCSH_CLC(){CLKSEL=0x00;OSCICN=0x87;//振荡器不分频RSTSRC=0x04;//丢失时钟检测}//=================初始化定时器T0=================voidCSH_T0(){TMOD=0x01;//选择定时器0工作方式1TH0=(65536-24500)/256;TL0=(65536-24500)%259;//定时器初值设置10msET0=1;}//================初始化外部中断INT01=============voidCSH_INT01(){TCON=0x05;//INT01配置为边沿触发IT01CF=0x18;//INT0配置为上升沿触发对应IO为P0.0//INT1配置为下降沿触发对应IO为P0.1EX0=1;EX1=1;}//==================T0_S==========================voidT0_S()interrupt1{TH0=(65536-24500)/256;TL0=(65536-24500)%259;//定时器初值设置10mst++;}/*==============超声波接受程序==================*///===================INT0_S=======================voidINT0_S()interrupt0{TR0=1;a++;tt=t;sj[a]=tt;if(a==10){a=0;}}//===================INT1_S=======================voidINT1_S()interrupt2{TR0=0;t=0;}//================超声波发射程序==================voidfashe(){CSB=!CSB;delay(25);}//===================时间处理=====================voidshijian(){sj[0]=sj[1];sj[1]=sj[2];sj[2]=sj[3];sj[3]=sj[4];sj[4]=sj[5];sj[5]=sj[6];sj[6]=sj[7];sj[7]=sj[8];sj[8]=sj[9];sj[9]=sj[10];ave=(sj[0]+sj[1]+sj[2]+sj[3]+sj[4]+sj[5]+sj[6]+sj[7]+sj[8]+sj[9])/10;}//==================距离计算======================voidjuli(){shijian();s=17*ave;}//=================数码管译码程序=================voidyima(){buf[0]=s/1000;buf[1]=s/100;buf[2]=s/10;buf[3]=s/1;}//===================动态扫描=====================/*==============P1控制位码P2控制段码============*/voiddisplay(){P1=WM[m];P2=DM1[buf[m]];m++;if(m==4){m=0;}}//====================主函数======================voidmain(){CSH_IO();CSH_CLC();CSH_T0();CSH_INT01();EA=1;while(1){fashe();juli();yima();display();}}
本文标题:C8051F410超声波测距程序
链接地址:https://www.777doc.com/doc-4305608 .html