标题:
请教 stm32控制激光测距仪模块 串口通讯部分相关问题
[打印本页]
作者:
Foyn__
时间:
2017-2-14 20:50
标题:
请教 stm32控制激光测距仪模块 串口通讯部分相关问题
本人新手一只,刚接触
单片机
一个多月,目前在做一个项目是做激光测距仪,于是在淘宝上淘到一激光测距模块。
模块的
波特率9600bps, 8位数据位,1位起始位,一位停止位,无奇偶校验,买时自带ttl转USB串口
1.
我拿到模块开始用电脑测试,用串口调试助手直接发送上电代码,在发送单次测量即可返回测距距离的代码(以后只发送单次测量代码即可开始测量无需发送上电)
2.
随后我将供电线,地线,rxd和txd分别接入单片机
开发板
上,确定供电无问题,将读写线直接接到单片机的数据读写串口,并烧入以下程序(第一部只是为了测试模块在单片机控制下正常工作,所以没有编写写入程序),但无法使模块工作。
3.
已知程序中所编写十六进制的数据能正常发送给上位机的串口调试助手。
以下程序为我使用串口发送激光模块单次测距的命令的相关代码:
(
参数为出厂设置时,读取数据的命令:
单次测量:80 06 02 78
)
Usart.c中我定义了一个如下的简单的发送数据函数:
void send_data_yhr(void)
{
USART_ClearFlag(USART2,USART_FLAG_TC);
USART_SendData(USART2, 0x80);
while( USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET);
delay_ms(200);
USART_SendData(USART2, 0x06);
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
delay_ms(200);
USART_SendData(USART2, 0x02);
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
delay_ms(200);
USART_SendData(USART2, 0x78);
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
delay_ms(200);
}
在Main.c中我对此函数进行了调用:
#include "main.h"
int main(void)
{
USART2_Configuration();
while(1)
{
send_data_yhr();
delay_ms(200);
}
}
在Delay.c里:
void delay_ms(unsigned int t)
{
int i;
for( i=0;i<t;i++)
{
int a=10300;
while(a--);
}
}
作者:
WINGTECH
时间:
2017-2-14 20:50
可以,
1, 每个模块必须要有地址, 作为从机即可; 如果无法设置地址,则看下面
2, 自己用CD4052模拟开关, 将单片机的串口,通过该开关,动态切换.
作者:
冰糖雪梨
时间:
2017-3-29 20:16
楼主 弄懂了吗 求指教啊
作者:
imxuheng
时间:
2017-3-29 21:14
能否说一下激光测距仪的型号?
作者:
zhf123456
时间:
2017-3-30 10:42
有可能是激光模块的问题
作者:
liverpool
时间:
2017-6-11 17:21
请问一个单片机开发板能不能同时读取三到四个激光测距仪的数据
作者:
yangning
时间:
2018-5-17 22:19
能否说一下激光测距仪的型号?
作者:
jerning
时间:
2018-5-17 23:37
同样求指教
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1