智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 20381|回复: 17
打印 上一主题 下一主题

51超声波测距

  [复制链接]

2

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
QQ
威望
250
贡献
29
兑换币
0
注册时间
2010-3-13
在线时间
3 小时
跳转到指定楼层
1#
发表于 2010-4-1 16:50:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <REG2051.H>
#define k1 P3_4
#define csbout    P3_5    //超声波发送
#define csbint    P3_7    //超声波接收
#define bg  P3_3
#define LED P1
#define LED1 P3_0 //LED控制
#define LED2 P3_1 //LED控制
#define LED3 P3_2 //LED控制
#define csbc=0.0347
unsigned char cl,mqzd,csbs,csbds,buffer[3],xm1,xm2,xm0,jpjs;//显示标识
unsigned char convert[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~9段码
unsigned int s,t,i,xx,j,sj1,sj2,sj3,mqs,sx1;
   
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;
csbout=1;
cl=0;
csbs=8;
jpjs=0;
sj1=50;
sj2=200;
sj3=580;
k4cl();
TR1=1;     //设定时值1为20ms
while(1)
   {
  keyscan();
  if(jpjs<1)
  {
   csbcj();  //调用超声波测距程序
   if(s>sj3)  //大于时显示“CCC”
   {
    buffer[2]=0xC6;
    buffer[1]=0xC6;
    buffer[0]=0xC6;
   }
   else if(s<sj1) //小于时显示“- - -”
   {
    buffer[2]=0xBF;
    buffer[1]=0xBF;
    buffer[0]=0xBF;
   }
   else timeToBuffer();
  }
  else timeToBuffer();  //将值转换成LED段码
  offmsd();
    scanLED();   //显示函数
  if(s<sj2)
  bg=0;
  bg=1;
}
}
void scanLED()        //显示功能模块
{
  LED=buffer[0];
LED3=0;
delay(200);
LED3=1;
LED=buffer[1];
LED2=0;
delay(200);
LED2=1;

LED=buffer[2];
LED1=0;
delay(200);
LED1=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=csbs;
  while(i--)
  {
   csbout=!csbout;
  }
  TR0=1;   
     i=mqs;     //盲区
  while(i--)
  {
  }
  i=0;
  while(csbint)
  {
   i++;
   if(i>=4000)   //上限值
   csbint=0;
  }
  TR0=0;
  TH1=0x9E;
  TL1=0x57;
  t=TH0;
  t=t*256+TL0;
  t=t-29;  
  s=t*csbc/2;
  TR1=1;
  cl=0;
  csbint=1;
  if(s<sj1)
  {
   if(csbs>6)
   {
    csbs=csbs-2;
    sj1=40;
   }
   sj1=sj1+2;
   k4cl();
  }
  else if(s>=sj3)
  {
   if(csbs<32)
   {
    csbs=csbs+2;
    sj1=sj1+10;
    k4cl();
   }
  }
}
}
void keyscan()    //健盘处理函数
{
xx=0;
if(k1!=1)     // 判断开关是否按下
{
  delay(100);    //延时去抖动
  if(k1!=1)     // 判断开关是否按下
  {  
   while(!k1)
   {
    delay(25);
    xx++;
   }
   if(xx>1000)  
   {
    jpjs++;
    if(jpjs>3)
    {
     k4cl();
     jpjs=0;
    }
   }
   xx=0;
   switch(jpjs)
   {
    case 1: k1cl();break;  
    case 2: k2cl();break;
    case 3: k3cl();break;
   }
  }
}
}
void k1cl()
{
sj1=sj1+1;
if(sj1>100)
sj1=50;
s=sj1;
}
void k2cl()
{
sj2=sj2+5;
if(sj2>500)
sj2=40;
s=sj2;
}
void k3cl()
{
sj3=sj3+10;
if(sj3>600)
sj3=600;
s=sj3;
}
void k4cl()
{
sx1=sj1-1;
sx1=sx1/csbc;
mqs=sx1/4.5;
}
void offmsd()           //小时数十位为0判断模块
{
    if (buffer[0] == 0xC0)        //如果值为零时小数十位不显示
    buffer[0] = 0xFF;
}

7

主题

168

帖子

0

精华

高级会员

Rank: 4

积分
796
威望
415
贡献
331
兑换币
10
注册时间
2010-10-19
在线时间
25 小时
2#
发表于 2010-12-27 10:37:24 | 只看该作者
看看
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
威望
179
贡献
41
兑换币
0
注册时间
2011-1-9
在线时间
2 小时
3#
发表于 2011-1-9 20:16:54 | 只看该作者
嗯  嗯 嗯 不错不错!!!顶一下!!!!
回复 支持 反对

使用道具 举报

24

主题

431

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4768

优秀会员奖章活跃会员奖章论坛元老奖章资源大师奖章

威望
1642
贡献
2832
兑换币
13
注册时间
2011-1-21
在线时间
147 小时
4#
发表于 2011-2-7 16:01:43 | 只看该作者
你去年做电子设计的程序??
回复 支持 反对

使用道具 举报

10

主题

111

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3326

优秀会员奖章

QQ
威望
1151
贡献
1845
兑换币
140
注册时间
2011-1-16
在线时间
165 小时
5#
发表于 2011-3-20 09:40:13 | 只看该作者
看看……………………………………………………
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
威望
267
贡献
91
兑换币
69
注册时间
2012-4-2
在线时间
39 小时
毕业学校
长春理工大学
6#
发表于 2012-8-3 10:56:03 | 只看该作者
回复 支持 反对

使用道具 举报

5

主题

370

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1534
QQ
威望
921
贡献
397
兑换币
68
注册时间
2011-11-26
在线时间
108 小时
7#
发表于 2012-8-31 20:49:10 | 只看该作者
mark
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
57
威望
41
贡献
10
兑换币
2
注册时间
2012-10-13
在线时间
3 小时
8#
发表于 2012-10-14 10:44:38 | 只看该作者
仔细看看
回复 支持 反对

使用道具 举报

27

主题

441

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2351

优秀会员奖章活跃会员奖章

威望
1251
贡献
584
兑换币
296
注册时间
2012-5-24
在线时间
258 小时
毕业学校
南昌航空大学
9#
发表于 2012-11-26 14:54:25 | 只看该作者
#include <REG2051.H>

大哥,有没有STC51单片机的程序啊???
回复 支持 反对

使用道具 举报

3

主题

696

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5361

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
3197
贡献
966
兑换币
631
注册时间
2012-8-11
在线时间
599 小时
10#
发表于 2012-12-3 11:17:02 | 只看该作者
顶下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-25 16:14 , Processed in 0.054497 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表