[51单片机] HC-SR04超声波测距仪 基础代码
>_<:超声波测距仪模块:
>_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子:
>_<:代码:
1 /***********************************************************************************************************/ 2 //HC-SR04 超声波测距模块 DEMO 程序 3 //晶振:11。0592 4 //接线:模块TRIG接 P1.2 ECH0 接P1.1 5 //串口波特率9600 6 /***********************************************************************************************************/ 7 #include <AT89X51.H> 8 #include <intrins.h> 9 #include <STDIO.H> 10 11 #define uchar unsigned char 12 #define uint unsigned int 13 #define RX P1_1 14 #define TX P1_2 15 16 17 unsigned int time=0; 18 unsigned int timer=0; 19 float S=0; 20 bit flag =0; 21 22 23 /********************************************************/ 24 void Conut(void) 25 { 26 time=TH0*256+TL0; 27 TH0=0; 28 TL0=0; 29 S=(time*1.87)/100; //算出来是CM 30 if(flag==1) //超出测量 31 { 32 flag=0; 33 printf("-----\n"); 34 } 35 printf("S=%f\n",S); 36 } 37 /********************************************************/ 38 void delayms(unsigned int ms) 39 { 40 unsigned char i=100,j; 41 for(;ms;ms--) 42 { 43 while(--i) 44 { 45 j=10; 46 while(--j); 47 } 48 } 49 } 50 /********************************************************/ 51 void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围 52 { 53 flag=1; //中断溢出标志 54 } 55 /********************************************************/ 56 void StartModule() //T1中断用来扫描数码管和计800MS启动模块 57 { 58 TX=1; //800MS 启动一次模块 59 _nop_(); 60 _nop_(); 61 _nop_(); 62 _nop_(); 63 _nop_(); 64 _nop_(); 65 _nop_(); 66 _nop_(); 67 _nop_(); 68 _nop_(); 69 _nop_(); 70 _nop_(); 71 _nop_(); 72 _nop_(); 73 _nop_(); 74 _nop_(); 75 _nop_(); 76 _nop_(); 77 _nop_(); 78 _nop_(); 79 _nop_(); 80 TX=0; 81 } 82 /********************************************************/ 83 void main(void) 84 { 85 TMOD=0x21; //设T0为方式1,GATE=1; 86 SCON=0x50; 87 TH1=0xFD; 88 TL1=0xFD; 89 TH0=0; 90 TL0=0; 91 TR0=1; 92 ET0=1; //允许T0中断 93 TR1=1; //开启定时器 94 TI=1; 95 96 EA=1; //开启总中断 97 98 99 while(1) 100 { 101 StartModule(); 102 while(!RX); //当RX为零时等待 103 TR0=1; //开启计数 104 while(RX); //当RX为1计数并等待 105 TR0=0; //关闭计数 106 Conut(); //计算 107 delayms(10); //100MS 108 } 109 }
[51单片机] HC-SR04超声波测距仪 基础代码相关推荐
- 基于51单片机驱动HC-SR04超声波模块(LCD1602显示)
基于51单片机驱动HC-SR04超声波模块(LCD1602显示) 一.基本参数 二.通信时序 三.部分代码展示 四.实际效果 总结 一.基本参数 点击图片购买 HC- SR04+是一款宽电压工作的超声 ...
- 基于51单片机的智能超声波四轮遥控小车proteus仿真
硬件设计 下边讲一下遥控小车,同样是基于51单片机,利用超声波进行测距,利用蓝牙模块实现遥控(仿真里边没有蓝牙,所以采用的是RS485通信模拟) 仿真图: 由LCD1602作为显示器,具有蜂鸣器报警, ...
- 51单片机 | 数字电路与C语言基础 | 51单片机最小系统
文章目录 一.数字电路基础 1.电平特性 2.二进制与十六进制 2.1 二进制 2.2 十六进制 3.二进制的逻辑运算 二.C语言基础语法 三.51单片机最小系统 1. 51 单片机最小系统构成 1. ...
- 51单片机串口通信发送以及接收代码详解1
#include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...
- 51单片机串口通信发送以及接收代码详解2
#include <reg51.h> //实验现象:在电脑端没按下发送的时候,单片一直给电脑发送aaa字符串: //实验现象:在电脑端按下发送的时候,结束字符串aaa的发送代码,执行单片接 ...
- 基于51单片机的简易交通灯仿真代码讲解
J028 51单片机简易交通灯易懂版_仿真+代码+报告讲解 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 目录标题 工作状态 仿真图 程序 倒计时的产生 红黄 ...
- 【C51】基于51单片机的简易频率计(附代码、无需外设、小白简单易上手)
基于51单片机的简易频率计(无需外设.小白简单易上手) 代码较为简单,大概思路是通过定时器单位时间内外部中断上升沿触发的次数来计算实际频率. /基于51单片机的简易频率计#include<r ...
- 基于51单片机SJA1000 CAN通讯实现(代码+原理图)
STC89C52调试can总线-SJA1000记录(代码都测试过) can通信模块 51单片机系统板 最小系统板 另外一些需要注意点 最近调试51单片机的can总线,网上的资料相对而言实在是比较少,在 ...
- 51单片机的轮胎气压监测系统_SHT11传感器的温度、湿度采集系统,51单片机,Proteus仿真,C代码等...
设计要求 1.设计一套基于51单片机的温湿度Proteus仿真监控系统: 2.采用高精度的SHT11温湿度传感器模块: 3.LCD液晶实时显示当前环境温湿度值: 4.设计报警单元,实现对超限温湿度监控 ...
最新文章
- vim 的中文编码问题
- AI攻击AI,升级的网络安全战
- python查题_python 数据库连表查询习题
- vs账号状态异常_西甲第35轮直播:皇家马德里vs阿拉维斯 皇马气势汹汹欲冲连胜势头!...
- Windows下Eclipse+PyDev安装Python开发环境
- JavaScirpt类型检测函数总结
- Win10技巧:16个系统优化设置小技巧,大幅度提升你的电脑性能!
- java集合框架总结之思维导图
- python模拟猫狗大战_tensorflow实现猫狗大战(分类算法)-阿里云开发者社区
- aria-label及aria-labelledby应用//////////[信息无障碍产品联盟]
- Python精通-Python入门基础
- mysql-cacti-templates-1.1.2.tar.gz 免费下载 cacti MySQL添加监控
- gem install mysql2的时候出现的错误
- 中国内地、台湾、香港、澳门和国外DNS服务器地址列表
- 关于mybatis整合spring时报java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/Trasactionwar
- Python实现轮盘抽奖小程序(带界面)
- NVIDIA Jetson TK1学习与开发(三):图文详解Jetson TK1平台搭建
- 领带的打法10种——男士必看(图)
- html excel导出的路径,html 导出多个excel表格数据-如何将html页面中的表格导出到excel表格...
- MATLAB求复杂函数积分