⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csb.c

📁 超声波程序分体式超声波发射接收对管 型号:TR40 频率:40K T是发射 R是接收
💻 C
字号:
//#include "STC12C5410AD.h"
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long


/*----------------------
分体式超声波发射接收对管
 型号:TR40
 频率:40K
 T是发射
 R是接收
----------------------*/

sbit k1 = P3^4;
sbit bg = P3^3;
sbit csbout = P3^5;                  //超声波发送
sbit csbint = P3^7;                  //超声波接收

ulong csbc = 0.034;


uchar csbds,opto,digit,buffer[3],xm1,xm2,xm0,key,jpjs;//显示标识
uchar convert[10]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9段码
uint s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;
bit cl;

void csbcj();
void delay(j);    //延时函数
void scanLED();    //显示函数
void timeToBuffer();  //显示转换函数
void keyscan();
void k1cl();
void k2cl();
void k3cl();
void k4cl();
void offmsd();


void main()                              //主函数
{
 EA=1;    //开中断
 TMOD=0x11;   //设定时器0为计数,设定时器1定时
 ET0=1;    //定时器0中断允许
 ET1=1;    //定时器1中断允许
 TH0=0x00;
 TL0=0x00;
 TH1=0x9E;
 TL1=0x57;
 csbds=0;
 csbint=1;
 csbout=1;
 cl=0;
 opto=0xff;
 jpjs=0;
 sj1=45;
 sj2=200;
 sj3=400;
 k4cl();
 TR1=1;
while(1)
 {
 keyscan();
 if(jpjs<1)
  {
  csbcj();
  if(s>sj3)
   {
   buffer[2]=0x76;
   buffer[1]=0x76;
   buffer[0]=0x76;
   }
  else if(s<sj1)
   {
   buffer[2]=0x40;
   buffer[1]=0x40;
   buffer[0]=0x40;
   }
  else
   timeToBuffer();
  }
 else
  timeToBuffer();   //将值转换成LED段码
 offmsd();
 scanLED();      //显示函数
 if(s<sj2)
 bg=0;
 bg=1;
 }
}


void scanLED()      //显示功能模块
{
digit=0x04;
for( i=0; i<3; i++)     //3位数显示
 {
 P3=~digit&opto;     //依次显示各位数
 P1=~buffer[ i];     //显示数据送P1口
 delay(20);      //延时处理
 P1=0xff;      //P1口置高电平(关闭)
 if((P3&0x10)==0)    //判断3位是否显示完
  key=0;
 digit>>=1;      //循环右移1位
 }
}

void timeToBuffer()     //转换段码功能模块
{
     xm0=s/100;
     xm1=(s-100*xm0)/10;
     xm2=s-100*xm0-10*xm1;
     buffer[2]=convert[xm2];
     buffer[1]=convert[xm1];
     buffer[0]=convert[xm0];
}

void delay(i)
{
    while(--i);
}

void timer1int (void)  interrupt 3  using 2
{
TH1=0x9E;
TL1=0x57;
csbds++;
if(csbds>=40)
 {
 csbds=0;
 cl=1;
 }
}

void csbcj()
{
if(cl==1)
 {
 TR1=0;
 TH0=0x00;
 TL0=0x00;
 i=10;
 while(i--)
  {
  csbout=!csbout;
  }
 TR0=1;
 i=mqs;       //盲区
 while(i--)
  {;}
 i=0;
 while(csbint)
  {
  i++;
  if(i>=2450)     //上限值
  csbint=0;
  }
 TR0=0;
 TH1=0x9E;
 TL1=0x57;
 t=TH0;
 t=t*256+TL0;
 s=t*csbc/2;
 TR1=1;
 cl=0;
 }
}

void keyscan()      //健盘处理函数
{
xx=0;
if(k1!=1)       // 判断开关是否按下
 {
 delay(400);      //延时去抖动
 if(k1!=1)      // 判断开关是否按下
  {
  while(!k1)
   {
   delay(30);
   xx++;
   }
  if(xx>2000)
   {
   jpjs++;
   if(jpjs>4)
   jpjs=0;
   }
  xx=0;
  switch(jpjs)
   {
   case 1: k1cl();break;
   case 2: k2cl();break;
   case 3: k3cl();break;
   case 4: k4cl();break;
   }
  }
 }
}


void k1cl()
 {
 sj1=sj1+5;
 if(sj1>100)
 sj1=30;
 s=sj1;
 }
void k2cl()
 {
 sj2=sj2+5;
 if(sj2>500)
 sj2=40;
 s=sj2;
 }

void k3cl()
 {
 sj3=sj3+10;
 if(sj3>500)
 sj3=100;
 s=sj3;
 }

void k4cl()
 {
 sx1=sj1-1;
 sx1=sx1/csbc;
 mqs=sx1/4.5;
 }

void offmsd()
 {
    if (buffer[0] == 0x3f)
    buffer[0] = 0x00;
 }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -