基于stc15f2k60s2芯片单片机编程(超声波测距程序)

超声波测距程序

#include <stc15f2k60s2.h>
#include <intrins.h>
void shumaguan();
void Timer0Init();
void Delay500ms();

unsigned char abile[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char saomiao[]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
unsigned int distance;
void Send_Wave();
sbit TX=P1^0;
sbit RX=P1^1;
unsigned int time=0;
void mdistance();
void main()
{	
	P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;P2=0XA0;P0=0X00;
	Timer0Init();

while(1){
   
			mdistance();
 if(distance ==999)
		 {
			saomiao[0]=0x8e;
			 saomiao[1]=0x8e;
		 
			 Delay500ms();
		 }
		 else{
	
		saomiao[0]=abile[(distance%100)/10];
		saomiao[1]=abile[distance%10];
    Delay500ms();

}
}
}
void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}



void weixuan() interrupt 1
{
	unsigned char i;
	 P2=P2&0x1f|0xe0;
	P0=0xff;
	P2=0x1f;
  P2=P2&0x1f|0xc0;
	P0=1<<i;
	P2=0x1f;
  P2=P2&0x1f|0xe0;
	P0=saomiao[i];
	P2=0x1f;
	i++;
	if(i==8) i=0;
}
void Timer0Init()		//[email protected]
{
	AUXR |= 0x80;		//?????1T??
	TMOD &= 0xF0;		//???????
	TL0 = 0x9A;		//??????
	TH0 = 0xA9;		//??????
	TF0 = 0;		//??TF0??
	TR0 = 1;		//???0????	
	EA=1;
	ET0=1;
}


void Send_Wave()
{
		TX=1;
		_nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
		TX=0;
}
void mdistance()
{	
unsigned int time=0;
	   TMOD&=0X0F;                 //定时器1模式
	   TL1=0;                        //初始化
	   TH1=0; 
	    Send_Wave();
			TR1=1;            //启动定时器
			while((RX==1)&&(TF1==0));      //等待超声波信号返回,或者超出值
			TR1=0;                   //关闭定时器
			if(TF1==1)
			{
				TF1=0;                   //超出距离
				distance = 99;
			}
			else 
			{
				time=TH1*256+TL1;
				distance=time*0.017;
				TH1 = 0;             //
				TL1 = 0;
			}
		}
发布了10 篇原创文章 · 获赞 1 · 访问量 435

猜你喜欢

转载自blog.csdn.net/lymtics1111/article/details/103320555