标题: AJ-SR04M一体化超声波51单片机测试程序 [打印本页]

作者: sorry199525    时间: 2018-1-18 15:41
标题: AJ-SR04M一体化超声波51单片机测试程序
亲测可用,51单片机测试超声波模块

单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. typedef unsigned char uint8;
  4. typedef unsigned int uint16;
  5. sbit Trig=P3^3;//触发引脚定义
  6. sbit Echo=P3^2;//测量引脚定义
  7. uint16 distance;//定义全局变量
  8. /******************************************
  9. 延时让Trig引脚产生大于10us的脉冲
  10. ********************************************/
  11. void delay()
  12. {
  13. uint8 i;
  14. for(i=0;i<100;i++);
  15. }
  16. //初始化
  17. void init()
  18. {
  19. EA=1;//开总中断
  20. IT0=0;//外部中断0,低电平触发
  21. TMOD|=0x01;//定时器0 工作模式1
  22. TH0=0;
  23. TL0=0;
  24. TR0=0;
  25. }
  26. //串口设置
  27. void UART_init()
  28. {
  29. SCON=0x50;
  30. TMOD=0x20;
  31. TH1=0xFD;
  32. TL1=0xFD;
  33. TR1=1;
  34. }
  35. //发送一个字节
  36. void UART_send_byte(uint8 dat)
  37. {
  38. SBUF=dat;
  39. while(TI==0);
  40. TI=0;
  41. }
  42. //发送一组测得的distance
  43. void UART_send_dat(uint16 temp)
  44. {
  45. UART_send_byte((temp/10000)%10 + '0');
  46. UART_send_byte((temp/1000)%10 + '0');
  47. UART_send_byte((temp/100)%10 + '0');
  48. UART_send_byte((temp/10)%10 + '0');
  49. UART_send_byte('.');
  50. UART_send_byte(temp%10 + '0');
  51. UART_send_byte('c');
  52. UART_send_byte('m');
  53. }
  54. //主函数
  55. main()
  56. {
  57. UART_init();//初始化
  58. init();        //初始化
  59. Trig=0;//先把引脚拉低
  60. while(1)//进入循环
  61. {
  62. Trig=1;
  63. delay();//产生脉冲
  64. Trig=0;
  65. while(Echo==0);//等待引脚被拉高
  66. TR0=1;//打开定时器0
  67. EX0=1;//打开中断
  68. while(TH0<250);//正在测量数据,需要等待
  69. TR0=0;
  70. TL0=0;
  71. TH0=0;
  72. UART_send_dat(distance);//向串口发送测得的distance
  73. UART_send_byte('\r');
  74. UART_send_byte('\n');
  75. }
  76. }
  77. void extra_interrupt() interrupt 0        //外部中断0
  78. {
  79. distance=(256*TH0+TL0)*0.184;//测得最小精度位mm(晶振为11059200Hz)
  80. //P0=Echo;
  81. EX0=0;//关闭中断
  82. }
复制代码


所有资料51hei提供下载:
AJ-SR04M测试程序(51).zip (24.05 KB, 下载次数: 60)



作者: devcang    时间: 2018-1-18 21:55

配置直接输出串口的,很方便

~
作者: ljy棉花糖    时间: 2018-10-28 15:50
大神,请问一下,为何我的AJ-SR04M模块用这程序,指示灯不亮,串口接到的都是些p483n0什么什么的    这是没驱动成功的原因吗




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