找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机超声波测距系统电路+程序设计

[复制链接]
跳转到指定楼层
楼主
电路原理图如下:

程序代码
//超声波测距系统  12M晶振
//#include "REG2051.H"
#include <REGx51.H>
#include <intrins.h>
//#include "math.h"

#define uint  unsigned int
#define uchar unsigned char

#define LED_Data P0     //定义LED显示数据为P1口
#define OFF P3

sbit led_1H=P2^7;                //定义数码管百位 片选
sbit led_2H=P2^6;                //定义数码管十位 片选
sbit led_3H=P2^5;                //定义数码管个位 片选

sbit DQ=P3^4;                        //18b20定义端口


sbit bell=P2^2;                        
sbit Sout=P3^7;                        //定义超声波输出引脚

sbit k1=P1^0;                        //定义按键
sbit k2=P1^1;
sbit k3=P1^2;

bit r=0;                                //18b20存在标志位 0为不存在,1为存在
bit flag=0;                                //定义外部中断1标志位
bit TO=0;                                //定义T1中断1标志位
bit tu=0;                                //定义温度正、负标示位0为正1为负
bit show_temperature=0;        

uchar T_C;                                
uint i;
uint dis;                                //定义实形距离变量
float speed=346.50;     

uchar temp[3]={0xF7,0xF7,0xF7};//*- - -*/  定义显示暂存区
//显示段代码表
uchar code LED0[]={ 0x28,0xEE,0x32,0xA2,0xE4,0xA1,0x21,0xEA,0x20,0xA0,0xF7,};//0~9 -
//第一位数码管显示段码
uchar code LED1[]={0x08,0xCE,0x12,0x82,0xC4,0x81,0x01,0xCA,0x00,0x80,}; //0.~9.带小数点

//
void time_11uS(uint x);                                //延时11US
void LED_T_C(uint x);                                
uint Read_Temperature(void);               
void write(char wr);                                //写1820
uint read(void);                                        //读1820
uchar reset(void);                                        //复位1820
//--------------------------------------------测距部分涵数声明
void led_display(void);                                //LED显示函数
void time(uint x);                                        //延时1mS
void Send_40K(void);                                //输出20个40k方波函数
void LED_temp(uint x);                                //显示转换
void TT1(void);                                                //装入初值
uint C_speed(void);                  //根据温度查表取声速值
float Dis_count();                        //距离计算函数
//--------------------------------------------

//--------------------------------------------
//延时11us
void time_11uS(uint x)
{
  for(;x>0;x--);
}
//--------------------------------------------


完整代码请看附件
51单片机的超声波测距.doc (3.14 MB, 下载次数: 27)

评分

参与人数 2黑币 +65 收起 理由
tieq1952 + 15 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:253767 发表于 2019-3-24 07:34 | 只看该作者
很好。谢谢分享!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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