[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超声波测距仪 基础代码

时间: 2024-12-15 18:51:30

[51单片机] HC-SR04超声波测距仪 基础代码的相关文章

[51单片机] EEPROM 24c02 [I2C代码封装-保存实现流水灯]

这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC >_<:i2c.c 1 /*----------------------------------------------- 2 名称:IIC协议 3 内容:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 4 周期,即晶振频率要小于12MHZ) 5 ---------------------------------------

51单片机入门基础教程,视频、课件、源码免费下载

今天也是分享资料,不过是很大量的学习资料,足够您国庆七天在家闭关学习了,4G的51单机片开发学习视频和资料,包括每一节的视频.课件和源码!内容很大,想要更多的单机片学习.交流和实战的机会,可以上闯客网论坛,和同行并肩同行,一起学习 图一 下面就给大家分享单片机的基础知识PCB的种类1. 单面板(只在一个面走线)2. 双面板(在两个面都走线)3. 多层板(4.6.8.10......)(出两个面外还有内层)4. 柔性PCB(触摸屏等的连接) 图二 PCB的制作步骤(工业企业环境下的PCB制作步骤)

51单片机蓝牙模块

51单片机的蓝牙模块,是在蓝牙通讯的基础上,进行蓝牙51模块与外部蓝牙发射接收设备之间,相互收发数据.并且其引脚为VCC,GND,TXD,RXD,可以通过串口通信与外部上位机或单片机通信. 代码如下(注意蓝牙模块是5V供电) #include<reg52.h> void init();void delay(unsigned int ms); unsigned char input;void display(unsigned char num_decimal);unsigned char cod

51单片机-PC数据传输 温度 距离 监控系统设计

>_<:功能概述: 通过串口PC和单片机通信,可以询问单片机测得的温度,可以询问声呐测距的测量距离,同时把测量温度显示在数码管上. >_<:PC部分 这里com.cpp和com.h是串口通信的函数封装,在主函数中: 刚开始调用封装好的串口通信函数,设置打开串口COM4,波特率设置为9600,超时设置: 1 if(openport("com4")) 2 printf("open comport success\n"); 3 if(setupdc

单片机(simple chip microcomputer)概论、51单片机、MCS-51单片机、STM32、ARM

catalogue 1. 单片机概论 2. 51单片机 3. MCS-51单片机 4. QX-MINI51开发板(STC89C52芯片) 5. STM32单片机 6. stm32f103zet6开发板实验 1. 单片机概论 0x1: 仿真器 单片机应用系统的软硬件调试需要专门的开发工具,称为"单片机开发系统"或"仿真机".常用的开发方式是把开发系统(例如PC)中的CPU和RAM暂时出借给用户系统,利用开发系统对用户系统的软硬件进行调试(又称仿真),然后将调试好的程序

[51单片机] Keil C51中变量的使用方法详解

引言    8051内核单片机是一种通用单片机,在国内占有较大的市场份额.在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功.由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用与标准C有所不同.正确地使用变量,有利于获得高效的目标代码.下面详细介绍Keil C51中变量的使用方法. 1 CPU存储结构与变量的关系    变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同.    标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CP

[51单片机] nRF24L01 无线模块 串口法命令 通过无线控制另一个的灯

>_<!概述: 这是在上一个的基础上通过按键发送4种不同命令来控制接收端的LED灯亮的改进版(上一个:http://www.cnblogs.com/zjutlitao/p/3840013.html),这里俺把按键发命令给去掉,然后加入一个串口通信的功能,PC通过串口给发送端发送命令,然后发送端通过无线将命令发给接收端来实现控制,这里接收端和上一个例程中的一样,只是在发送端的代码里去除了按键控制,变成了串口控制. >_<!发送端电路: >_<!接收电路图: >_&l

[原创]基于51单片机的红外遥控课程设计

[注]: 一眨眼,大学接近尾声,具有找工作需要,所以把大学做的电子设计“劣作”放上来.希望考研失意,还能赶上“好工作”的春招班车.如果大伙有什么工作推荐也可以联系我哦,因为一年考研少接触了这方面,所以难免有些生疏.但请相信我!给我机会我会很认真学的! 邮箱:[email protected] 转载请注明出处呀! 基于51单片机的红外遥控课程设计 目录 第一章 设计简介... 3 第二章 系统方案... 3 一.设计方案对比... 3 二.方案设计... 4 第三章 硬件设计... 5 一.红外遥

老工程师对嵌入式学习之51单片机的一些心得体会

很多人问我嵌入式发展如何,单片机应该如何学习,今天就给大家带来我的一个朋友心得和经历.本人还是学生,现在大三,接触单片机一年多以来,从最基础的51开始,到更高级点的MSP430,一直到现在刚开始上手的STM32,编过的程序不算多,但加起来怎么也有上百个了,做过的东西仔细数数,能拿出手来算算的上是个样的也不下十个,算是小有所成吧. 但今天,我却发现,这一年我一直在走一条歪路.先说一下情况吧,是这样的,最近同学几个合伙做个小项目,不算复杂,跟市面上的工程项目完全没法比,用难再需要使用的一个芯片是老师