名称:超声波测距

作者:Acebit本文引用地址:http://www.eepw.com.cn/article/201611/320529.htm

信息:STC10F08单片机,晶振11.0592MHZ;超声波模块HM55B,测距范围1米;

LCD1602,串行发送数据,显示单位mm;

#include "def.h" //定义管脚

#include "reg51.h"

#include#ifndef OSC110592

#define OSC110592

#endif

unsigned int qian,bai,shi,ge;

unsigned int k;

long result;

void init();

void PULSOUTus(unsigned int port);

bit Read_Port(unsigned int port);

void Write_Port(unsigned int port,bit state);

bdata unsigned char SBUF1;

sbit SBUF1_bit0 = SBUF1^0;

sbit SBUF1_bit1 = SBUF1^1;

sbit SBUF1_bit2 = SBUF1^2;

sbit SBUF1_bit3 = SBUF1^3;

sbit SBUF1_bit4 = SBUF1^4;

sbit SBUF1_bit5 = SBUF1^5;

sbit SBUF1_bit6 = SBUF1^6;

sbit SBUF1_bit7 = SBUF1^7;

void init() //initialization

{

TMOD=0x12;

PCON=00;

TR1=0;

TF1=0;

TR0=0;

TF0=0;

ET1=0;

ET0=0;

EA=0;

}

void delay_ms(unsigned int i)//延时子程序

{

unsigned int j;

for(;i>0;i--)

for(j=0;j<125;j++);

}

void putchar(char input) //模拟串口9600波特率,向LCD发送数据

{

SBUF1=input;

TL0=160;

TH0=160;

TF0=0;

TR0=1;

P26 = 0; //strat

while(!TF0);

TF0=0;

P26 = SBUF1_bit0; //0

while(!TF0);

TF0=0;

P26 = SBUF1_bit1; //1

while(!TF0);

TF0=0;

P26 = SBUF1_bit2; //2

while(!TF0);

TF0=0;

P26 = SBUF1_bit3; //3

while(!TF0);

TF0=0;

P26 = SBUF1_bit4; //4

while(!TF0);

TF0=0;

P26 = SBUF1_bit5; //5

while(!TF0);

TF0=0;

P26 = SBUF1_bit6; //6

while(!TF0);

TF0=0;

P26 = SBUF1_bit7; //7

while(!TF0);

TF0=0;

P26 = 1; //end

while(!TF0);

TF0=0;

TR0=0;

}

void PULSOUTus(unsigned int port)//HM55B启动脉冲

{

Write_Port(port,1);

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

Write_Port(port,0);

}

void Write_Port(unsigned int port,bit state)

{

switch (port)

{

case 0: P00=state;break;

case 1: P01=state;break;

case 2: P02=state;break;

case 3: P03=state;break;

case 4: P04=state;break;

case 5: P05=state;break;

case 6: P06=state;break;

case 7: P07=state;break;

case 8: P20=state;break;

case 9: P21=state;break;

case 10:P22=state;break;

case 11:P23=state;break;

case 12:P24=state;break;

case 13:P25=state;break;

case 14:P26=state;break;

case 15:P27=state;break;

}

}

//main program

void main()

{

init();

while(1)

{

TL1=0;

TH1=0;

Write_Port(15,0);

PULSOUTus(15);

Write_Port(15,1);

while(P27==0); //测回波时间

TR1=1;

while(P27==1);

TR1=0;

result=TH1*256+TL1;

result=result*0.187-150; //距离计算

k=(int)result;

putchar(22);//显示

putchar(12);

delay_ms(100);

qian=k/1000+48;

bai=(k00)/100+48;

shi=(k00)0/10+48;

ge=(k00)0+48;

putchar(qian);

putchar(bai);

putchar(shi);

putchar(ge);

putchar(m);

putchar(m);

delay_ms(500);

}

}

51单片机c语言测距,超声波HM55B测距(STC10F08单片机C程序)相关推荐

  1. 8051单片机c语言编程模板,完美的8051单片机C语言编程模板.doc

    完美的8051单片机C语言编程模板.doc <8051单片机C语言编程模板> [程序开始处的程序说明] /***************************************** ...

  2. stc15系列c语言pwm编程,STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现.docx...

    STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现 STC单片机增强型PWM发生器原理及应用主 讲:何宾Email:hebin@mail.buct.edu.cn2016.03增强 ...

  3. 用51单片机c语言实现电磁炉功能,电磁炉控制系统单片机模拟

    电磁炉控制系统单片机模拟 目 录 引言--------------------------------3 加热原理------------------------------3 工作过程------- ...

  4. 单片机C语言数据存储原理,学习单片机C语言,必知的数据存储与程序编写知识!...

    一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...

  5. 单片机c语言彩灯依次点亮不灭,单片机说课(点亮彩灯).ppt

    <单片机应用技术>(中国劳动社会保障出版社),课题二点亮彩灯,,教材贯彻以任务驱动促进以学生为中心的教学方针,把激发学生的学习兴趣,培养学生思考问题.解决问题能力作为教学的根本目标.从实际 ...

  6. 单片机c语言编译软件6,eUIDE下载-单片机c语言编译器 v1.07.32.23 官方版 - 安下载...

    eUIDE是一款专业的单片机c语言编译器,EM78系列集成开发环境是面向项目的ELAN EM78系列微控制器的开发工具,它包括UICE开发在线仿真器和eUIDE软件工具:eUIDE是基于PC端的UIC ...

  7. 单片机c语言程序设计实训报告,(整理)单片机C语言程序设计实训100例.doc

    (整理)单片机C语言程序设计实训100例.doc .单片机C语言程序设计实训100例基于8051Proteus仿真案例第 01 篇 基础程序设计01闪烁的LED/* 名称闪烁的LED说明LED按设定的 ...

  8. stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

    STC单片机C语言指针 主讲:何宾 Email :hebin@mail.buct.edu.cn 2016.03 C51编译器中指针的分类 Cx51编译器支持使用字符"*"声明变量指 ...

  9. 软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...

    基于AT89C1单片机C语言编写的计算器 #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; ...

最新文章

  1. Base64编码算法
  2. 电脑配置java编译报错_java 编译错误
  3. 菜鸟学习数据科学家 5 大误区
  4. Apache的Mod_rewrite学习(RewriteRule重写规则的语法)
  5. 理论 | 分库分表需要考虑的问题及方案
  6. 51nod--1212 最小生成树
  7. 【C语言函数】 - 库函数、自定义函数、函数参数、函数调用、嵌套调用链式访问、递归与迭代、缓冲区
  8. Linux内核变迁杂谈——感知市场的力量
  9. Python-英文小说词频统计
  10. extjs4.0视频教程
  11. Linux的tar解压命令
  12. JAVA——【案例】实现计算机系信息管理系统(教师和学生信息管理)
  13. Linux之DNS篇
  14. C# 使用NPOI.XSSF对Excel进行操作
  15. 自动驾驶传感器---毫米波雷达原理(测距、测速、角速度测量),毫米波雷达系统构成
  16. Python绘制直方图(Histograms)—从文件中读取数据画图update@2017-05-17
  17. (Java实现) 美元汇率
  18. 数学建模学习17(最短距离、BP神经网络)
  19. Windows应急响应
  20. 8.前端JavaScript之数据类型

热门文章

  1. scala不可变和可变_Scala使期货变得轻松
  2. Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢
  3. python代码编辑工具pycharm的使用技巧
  4. 女神说不能每张照片P的一样,所以朋友圈开三天可见,用Python一步解决
  5. linux权限管理之用户和组管理
  6. Python实现二叉搜索树
  7. Python多任务——线程
  8. 神经网络为什么需要激活函数
  9. 我国四大常用坐标系及高程坐标系【转载】
  10. Matlab--存储和加载.mat文件形式的数据