CT107D单片机超声波代码

#include "STC15F2K60S2.h"
#include "intrins.h"

#define TX P10
#define RX P11

#define u8 unsigned char
#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}


u8 code smg_duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
u8 code smg_wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void send_wave()
{
  TX=1;
  somenop;somenop;somenop;somenop;somenop;
  somenop;somenop;somenop;somenop;somenop;
  TX=0;
}


unsigned int get_distance(void)
{
  unsigned int dis;
  TR1=1;
  send_wave();
  while((TF1==0)&&(RX==1));
  TR1=0;
  if(TF1==1)
  {
    TF1=0;
	dis=999;
  }
  else
  {
    dis=(TH1<<8)|TL1;
	dis*=0.017;
  }
  TH1=TL1=0;
  return dis;
}




void Timer0Init(void)		//1毫秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0xCD;		//设置定时初值
	TH0 = 0xD4;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0 = 1;
	EA = 1;
}


void Timer1Init(void)		//1毫秒@11.0592MHz      sonic
{
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xCD;		//设置定时初值
	TH1 = 0xD4;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
}



bit sonic_flag;

unsigned int distance;
u8 dis_table[8];

void main()
{
  P2=0x80;P0=0xff;P2=0;
  P2=0xa0;P0=0;P2=0;
  Timer0Init();
  Timer1Init();
  while(1)
  {
    if(sonic_flag)
	{
	  sonic_flag=0;
	  distance=get_distance();
	  dis_table[5]=smg_duan[distance/100];
	  dis_table[6]=smg_duan[distance%100/10];
	  dis_table[7]=smg_duan[distance%10];	  
	}
  }
}


void timer0() interrupt 1
{
  static unsigned int key_count=0,smg_count=0,i=0,sonic_count=0;
  smg_count++;
  sonic_count++;
  if(sonic_count==200)
  {
    sonic_count=0;
	sonic_flag=1;
  }
  if(smg_count==3)
  {
    smg_count=0;
	P2=0xc0;P0=0;P2=0;
	P2=0xe0;P0=~dis_table[i];P2=0;
	P2=0xc0;P0=smg_wei[i];P2=0;
	i++;
	if(i==8)i=0;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值