EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 645|回复: 1

[资料共享] 能用的超声波测距程序

[复制链接]

21

主题

0

回帖

181

E币

技术员

Rank: 2

积分
42
发表于 2017-5-10 11:08:49 | 显示全部楼层 |阅读模式
这是一款能用的超声波测距程序,三位共阴数码管显示测量结果,主电路较为简单,发送接收电路这里没有具体给出,可使用运放电路,也可以使用CX20106电路等,程序下载:
可用的超声波测距程序.rar (216.8 KB, 下载次数: 0)

072224uxdxzontz720n0w0.jpg

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. unsigned char code WE0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};
  6. unsigned char temp[3];
  7. sbit RX=P3^2; //
  8. sbit TX=P2^5; //
  9. sbit led1=P2^0;
  10. sbit led2=P2^1;
  11. sbit led3=P2^2;
  12. bit flag=0;
  13. uint time=0;
  14. uint s=0;
  15. void delay(int xms)//延时大概x毫秒
  16. {
  17. int i,j;
  18. for(i=xms;i>0;i--)
  19. for(j=110;j>0;j--);
  20. }
  21. void start() //给至少10us的高电平,启动模块
  22. {
  23. uint n;
  24. n=10;
  25. while(n--)
  26. TX=~TX;
  27. }
  28. uchar count()
  29. {
  30. time=TH0*256+TL0;
  31. TH0=0;
  32. TL0=0; //清零
  33. s=(time*1.72)/100;//厘米
  34. return s;
  35. }
  36. void dispros()//数据分割
  37. {
  38. temp[0]=s%1000/100;//百位
  39. temp[1]=s%1000%100/10; //十位
  40. temp[2]=s%100%100%10; //个位
  41. }
  42. void display() //显示函数
  43. {


  44. led1=1;led2=0;led3=0;
  45. P0= ~WE0[temp[0]]; delay(2);
  46. led1=0;led2=1;led3=0;
  47. P0= ~WE0[temp[1]]; delay(2);
  48. led1=0;led2=0;led3=1;
  49. P0= ~WE0[temp[2]]; delay(2);
  50. led1=0;led2=0;led3=0;
  51. }
  52. void main()
  53. {
  54. TMOD=0X01; //定时器工作方式0
  55. TH0=0;
  56. TL0=0;
  57. EA=1; //开总中断
  58. ET0=1;//开定时器中断
  59. TX=1;
  60. while(1)
  61. {
  62. start();//启动模块
  63. while(!RX); //当RX为零时等待
  64. TR0=1; //启动计数
  65. while(RX); //当RX为1时计数并等待
  66. TR0=0; //关闭计数器
  67. count(); //计数
  68. dispros(); //处理,分割数据
  69. display(); //显示
  70. delay(2);
  71. }
  72. }
  73. void t0() interrupt 0
  74. {
  75. flag=1; //溢出标志
  76. }
复制代码


积分规则
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-19 21:49 , Processed in 0.057151 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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