重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4855|回复: 5
打印 上一主题 下一主题

【实验室培训_201810期】 余超 第五周任务

[复制链接]

3

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
跳转到指定楼层
楼主
发表于 2018-12-15 14:56:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 余超 于 2018-12-16 13:52 编辑

一、任务要求:
用超声波测距模块测量物体距离,并通过蓝牙模块将距离信息发送给手机。
二、工作环境:
开发环境:keil C51  使用芯片:STC89C52   外设:超声波测距模块、蓝牙模块。
三、实现步骤:
编写一个超声波测距函数,通过定时器0来实现脉冲宽度的测量,在main函数循环体
中每隔一秒钟读取一次测距结果,并通过蓝牙将距离信息发送到手机上。

源码:
   
[C] syntaxhighlighter_viewsource syntaxhighlighter_copycode
#include<reg52.h> 
#include<intrins.h>
#include<stdio.h>
sbit TrigPin = P1^1;//发送引脚
sbit EchoPin = P1^2;//接收引脚
typedef unsigned int uint;
typedef unsigned char uchar;
uint num=0;
void delay(unsigned int ms)
{
	unsigned int x;
	for(;ms>0;ms--)
	for(x=114;x>0;x--)
	;
}
void delayMicroseconds()//延迟12微秒
{
	_nop_();	
	_nop_();	
	_nop_();	
	_nop_();	
	_nop_();	
	_nop_();	
	_nop_();	
	_nop_();	
}
void UART_INIT()
{
	SM0 = 0;
	SM1 = 1;//串口工作方式1
	REN = 0;//允许串口接收
	EA = 1;//开总中断
	ET0=1;//开启定时器0中断
	TMOD = 0x29;//定时器1_8位自动重装模式,定时器0_16位定时器,开启门控
	TH1 = 0xfd;
	TL1 = 0xfd;//9600波特率
	TR1 = 1;//启动定时器1
	TR0=1;//启动定时器0
}

float sr04_read(void)
{
 float distance;
	num=0;
	TH0=0x4c;//定时器复位
	TL0=0x02;
    TrigPin=0;//拉低发送端
	_nop_();//延迟3微秒
	_nop_();
	_nop_();
    TrigPin=1;//拉高发送端
	delayMicroseconds();//延迟十二微秒
	TrigPin=0;//拉低发送端
	while(!EchoPin);//等待接收端电平变高
	while(EchoPin);//等待接收端电平变低
	distance=num*50+((TH0-0X4c)*256+(TL0-0x02))*1.085/1000;//正脉冲时间(毫秒)
 distance = distance*340/2000;//距离(M)
 distance = distance*100;//距离(CM)
 return distance;
 }
void main()
{
	float distance;
	UART_INIT();//串口初始化
	while(1)
	{
		distance = sr04_read();//读出距离
		TI=1;
    printf("distance:%.2f CM\n",distance);//串口发送距离
		TI=0;
    delay(1000);//延迟1秒 
	}
}
void timer0() interrupt 1//定时器0中断服务程序
{ 
    TH0=0x4c;
	TL0=0x02;
	num++;
	if(num==20)
	{
		num=0;
	}
}
}


工程文件.zip (33.01 KB, 下载次数: 0)

四、实现效果及问题:
初期通过51单片机通过了测试,不过当我用stm32开发板做的时候,发现超声波模块发送端引脚似乎出现了问题,
不知道是不是被烧坏了,连最初成功的51开发板也测试失败了。然而其他引脚都OK,讲道理在百分之99以上时间里,
发送端的电平都应该是低电平,然而我通过杜邦线将超声波发送端与单片机定义的发送端(连接有外设LED灯,低电平点亮)
连在一起后,之前成功的时候本来是比较亮的,结果灯变得特别暗(两端压差太小?),不言而喻,功能实现不了,
不知道是什么原因,姑且认为模块坏了吧。。。
成功的结果:


失败的结果:(右边的灯特别暗,因此被识别为常高电平,而不能驱动接收端产生正脉冲?)功能无法实现




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

3

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
沙发
 楼主| 发表于 2018-12-15 14:58:07 | 只看该作者
最后一张图片发错了,那是上次的任务
回复 支持 反对

使用道具 举报

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
板凳
发表于 2018-12-16 02:58:49 | 只看该作者
余超 发表于 2018-12-15 14:58
最后一张图片发错了,那是上次的任务

可以编辑帖子,修改内容
回复 支持 反对

使用道具 举报

14

主题

69

帖子

485

积分

学生管理组

Rank: 8Rank: 8

积分
485
QQ
地板
发表于 2018-12-18 15:44:01 | 只看该作者
自学了51和32,可以嘛,一会培训完来我这里领奖
回复 支持 反对

使用道具 举报

3

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
5#
 楼主| 发表于 2018-12-19 15:00:05 | 只看该作者
鲁亮 发表于 2018-12-18 15:44
自学了51和32,可以嘛,一会培训完来我这里领奖

忘了看帖子了,下次培训可不可以领取小东西
回复 支持 反对

使用道具 举报

14

主题

69

帖子

485

积分

学生管理组

Rank: 8Rank: 8

积分
485
QQ
6#
发表于 2018-12-20 18:50:19 | 只看该作者
余超 发表于 2018-12-19 15:00
忘了看帖子了,下次培训可不可以领取小东西

回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-12-22 00:16 , Processed in 0.226729 second(s), 31 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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