资源描述:
《[论文精品] 超声波数码管显示_脉宽测量》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数码管接线方式原理图:超声波数码管显示脉宽测量:/***********************************************************************************************************///DYP-ME007超声波测距模块DEMO程序//晶振:11。0592//接线:模块TRIG接P0.2ECH0接P0.1//数码管:共阳数码管P1接数据口,P2.5P2.4P2.3接选通数码管/****************************************
2、*******************************************************************/#include//器件配置文件#include#defineRXP0_1#defineTXP0_2unsignedinttime=0;unsignedinttimer=0;unsignedcharposit=0;unsignedlongS=0;bitflag=0;unsignedcharconstdiscode[]={0xC0,0xF9,0xA4,0xB0,
3、0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};unsignedcharconstpositon[3]={0xdf,0xef,0xf7};unsignedchardisbuff[4]={0,0,0,0,};/********************************************************/voidDisplay(void)//扫描数码管{if(posit==0){P1=(discode[disbuff[posit]])&0x7f;}else{P1=discode
4、[disbuff[posit]];}P2=positon[posit];if(++posit>=3)posit=0;}/********************************************************/voidConut(void){time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.7)/100;//算出来是CMif((S>=700)
5、
6、flag==1)//超出测量范围显示“-”{flag=0;disbuff[0]=10;//“-”disbuff[1]=10;//“-”disb
7、uff[2]=10;//“-”}else{disbuff[0]=S%1000/100;disbuff[1]=S%1000%100/10;disbuff[2]=S%1000%10%10;}}/********************************************************/voidzd0()interrupt1//T0中断用来计数器溢出,超过测距范围{flag=1;//中断溢出标志}/********************************************************/voidz
8、d3()interrupt3//T1中断用来扫描数码管和计800MS启动模块{TH1=0xf8;TL1=0x30;Display();timer++;if(timer>=400){timer=0;TX=1;//800MS启动一次模块_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_no
9、p_();_nop_();TX=0;}}/*********************************************************/voidmain(void){TMOD=0x11;//设T0为方式1,GATE=1;TH0=0;TL0=0;TH1=0xf8;//2MS定时TL1=0x30;ET0=1;//允许T0中断ET1=1;//允许T1中断TR1=1;//开启定时器EA=1;//开启总中断while(1){while(!RX);//当RX为零时等待TR0=1;//开启计数while(RX);//当RX为1计
10、数并等待TR0=0;//关闭计数Conut();//计算}}