标题:
AJ-SR04M一体化超声波51单片机测试程序
[打印本页]
作者:
sorry199525
时间:
2018-1-18 15:41
标题:
AJ-SR04M一体化超声波51单片机测试程序
亲测可用,51单片机测试超声波模块
单片机源程序如下:
#include<reg51.h>
#include<intrins.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit Trig=P3^3;//触发引脚定义
sbit Echo=P3^2;//测量引脚定义
uint16 distance;//定义全局变量
/******************************************
延时让Trig引脚产生大于10us的脉冲
********************************************/
void delay()
{
uint8 i;
for(i=0;i<100;i++);
}
//初始化
void init()
{
EA=1;//开总中断
IT0=0;//外部中断0,低电平触发
TMOD|=0x01;//定时器0 工作模式1
TH0=0;
TL0=0;
TR0=0;
}
//串口设置
void UART_init()
{
SCON=0x50;
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
}
//发送一个字节
void UART_send_byte(uint8 dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
//发送一组测得的distance
void UART_send_dat(uint16 temp)
{
UART_send_byte((temp/10000)%10 + '0');
UART_send_byte((temp/1000)%10 + '0');
UART_send_byte((temp/100)%10 + '0');
UART_send_byte((temp/10)%10 + '0');
UART_send_byte('.');
UART_send_byte(temp%10 + '0');
UART_send_byte('c');
UART_send_byte('m');
}
//主函数
main()
{
UART_init();//初始化
init(); //初始化
Trig=0;//先把引脚拉低
while(1)//进入循环
{
Trig=1;
delay();//产生脉冲
Trig=0;
while(Echo==0);//等待引脚被拉高
TR0=1;//打开定时器0
EX0=1;//打开中断
while(TH0<250);//正在测量数据,需要等待
TR0=0;
TL0=0;
TH0=0;
UART_send_dat(distance);//向串口发送测得的distance
UART_send_byte('\r');
UART_send_byte('\n');
}
}
void extra_interrupt() interrupt 0 //外部中断0
{
distance=(256*TH0+TL0)*0.184;//测得最小精度位mm(晶振为11059200Hz)
//P0=Echo;
EX0=0;//关闭中断
}
复制代码
所有资料51hei提供下载:
AJ-SR04M测试程序(51).zip
(24.05 KB, 下载次数: 60)
2018-1-18 15:40 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
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