标题: STC12C5A60S2超声波测距源程序 [打印本页]

作者: beibeixin    时间: 2017-10-13 00:21
标题: STC12C5A60S2超声波测距源程序
单片机源程序如下:
  1. /*
  2. 超声波测距原理:
  3. 本产品使用方法简单,一个控制口发一个10US以上的高电平,
  4. 就可以在接收口等待高电平输出.一有输出就可以开定时器计时,
  5. 当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,
  6. 方可算出距离.如此不断的周期测,就可以达到你移动测量的值了~~
  7. */

  8. // 操作方法一:在触发口发过20us高电平脉冲后,接收口打开高电平检测中断,一旦进入检测中断就打开定时中断和开定时器,开始计时,检测中断关闭,在定时中断里需要判断接收口是否为低电平


  9. #include <STC12C5A60S2.h>
  10. #include <string.h>

  11. unsigned char abc;

  12. sbit pulse=P2^5;
  13. sbit RXD2_MCU=P4^2;          //trig触发信号
  14. sbit TXD2_MCU=P4^3;          //echo回应信号

  15. void delay(void)           //m给定多少,大致就是多少us延迟
  16. {
  17.         unsigned int m;
  18.         for(m=1;m<=200;m++)
  19.         {;}
  20. }
  21. void delay2s(void)           //m给定多少,大致就是多少us延迟
  22. {
  23.         unsigned int m,n,k;
  24.         for(k=1;k<=40;k++)
  25.                 for(m=1;m<=200;m++)
  26.                         for(n=1;n<=200;n++);
  27. }

  28. void delay100us(void)           //m给定多少,大致就是多少us延迟
  29. {
  30.         unsigned int m;
  31.         for(m=1;m<=10;m++)
  32.         {;}
  33. }

  34. void main(void)
  35. {
  36.         RXD2_MCU=0;       
  37.         delay2s();
  38.         delay2s();
  39.         delay2s();
  40.         delay2s();
  41.         delay2s();       
  42.         RXD2_MCU=1;       
  43.         delay100us();
  44.         RXD2_MCU=0;
  45.        
  46.         while(1)
  47.         {

  48. #if 0
  49.                 pulse=1;
  50.                 delay();
  51.                 pulse=0;
  52.                 delay();
  53. #endif

  54.         }
  55. }
复制代码

所有资料51hei提供下载:
http://www.51hei.com/bbs/dpj-95918-1.html



作者: mountain46    时间: 2017-10-14 11:51
楼主,你这是抄我的啊,。。。。算了,你展示吧。。。
作者: 旧城以西的故事    时间: 2018-3-5 11:08
代码注释明显有问题,抄的时候注意。要对代码理解完善。最好加上自己的想法。
作者: 黑大哥    时间: 2019-7-31 18:28
不行啊你这个,有一点坑,只有延时了,定时器清零还有计算公式呢?
作者: duyes    时间: 2019-8-1 17:24
那这个原创帖在哪里呢?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1