找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3021|回复: 1
打印 上一主题 下一主题
收起左侧

能用的超声波测距程序

[复制链接]
跳转到指定楼层
楼主
这是一款能用的超声波测距程序,三位共阴数码管显示测量结果,主电路较为简单,发送接收电路这里没有具体给出,可使用运放电路,也可以使用CX20106电路等,程序打包下放在百度网盘上,需要的可以自己下载。下载链接: http://pan.baidu.com/s/1kUV8MCR 密码: 5kg8 同时这里也贴出一份。 可用的超声波测距程序.rar (216.8 KB, 下载次数: 33)


#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char code WE0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};
unsigned char temp[3];
sbit RX=P3^2; //
sbit TX=P2^5; //
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
bit flag=0;
uint time=0;
uint s=0;
void delay(int xms)//延时大概x毫秒
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void start() //给至少10us的高电平,启动模块
{
uint n;
n=10;
while(n--)
TX=~TX;
}
uchar count()
{
time=TH0*256+TL0;
TH0=0;
TL0=0; //清零
s=(time*1.72)/100;//厘米
return s;
}
void dispros()//数据分割
{
temp[0]=s%1000/100;//百位
temp[1]=s%1000%100/10; //十位
temp[2]=s%100%100%10; //个位
}
void display() //显示函数
{


led1=1;led2=0;led3=0;
P0= ~WE0[temp[0]]; delay(2);
led1=0;led2=1;led3=0;
P0= ~WE0[temp[1]]; delay(2);
led1=0;led2=0;led3=1;
P0= ~WE0[temp[2]]; delay(2);
led1=0;led2=0;led3=0;
}
void main()
{
TMOD=0X01; //定时器工作方式0
TH0=0;
TL0=0;
EA=1; //开总中断
ET0=1;//开定时器中断
TX=1;
while(1)
{
start();//启动模块
while(!RX); //当RX为零时等待
TR0=1; //启动计数
while(RX); //当RX为1时计数并等待
TR0=0; //关闭计数器
count(); //计数
dispros(); //处理,分割数据
display(); //显示
delay(2);
}
}
void t0() interrupt 0
{
flag=1; //溢出标志
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:63317 发表于 2016-8-11 14:58 | 只看该作者
谢谢分享资料
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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