基于51单片机的智能导盲拐杖Proteus仿真设计(程序+原理图+仿真+设计报告等等)

基于 51 单片机的智能导盲拐杖毕业论文

摘要:本文设计并实现了一种基于 51 单片机的智能导盲拐杖系统。该系统利用 HC - SR04 超声波模块测量前方障碍物距离,通过 LCD1602 显示当前测量的障碍物距离和温度信息,允许用户在 LCD 上设置障碍物警报的阈值,并根据测量的障碍物距离控制蜂鸣器发出不同节奏的报警声,旨在为盲人提供有效的障碍物检测和提示,提高盲人的出行安全。

关键词:51 单片机;智能导盲拐杖;超声波测距;报警阈值;温度显示

一、引言

(一)研究背景与意义

盲人在日常生活中面临着诸多出行困难,障碍物检测是他们出行安全的重要保障。传统的导盲工具功能单一,无法满足盲人对周围环境信息的全面获取需求。智能导盲拐杖作为一种新型的辅助工具,能够实时检测前方障碍物距离,并通过声音和显示等方式为盲人提供有效的提示,具有重要的研究意义和应用价值。

(二)国内外研究现状

国外在智能导盲设备领域起步较早,技术相对成熟,已经有一些商业化的智能导盲产品问世。国内近年来也在该领域取得了显著的进展,但与国外相比,在产品的智能化程度、稳定性和可靠性等方面仍存在一定的差距。

(三)论文研究内容

本文主要研究基于 51 单片机的智能导盲拐杖系统的设计与实现。具体包括系统的硬件设计、软件设计以及系统的测试与调试。

二、系统总体设计

(一)系统需求分析

系统需要能够准确测量前方障碍物的距离,并将距离信息实时显示在 LCD1602 上;允许用户设置障碍物警报的阈值;根据测量的障碍物距离控制蜂鸣器发出不同节奏的报警声,距离越近,报警节奏越急促;同时,系统还需要显示当前的温度信息,为盲人提供更全面的环境信息。

(二)系统架构设计

本系统采用模块化设计,主要由 51 单片机主控模块、HC - SR04 超声波测距模块、LCD1602 显示模块、按键设置模块、蜂鸣器报警模块和 DS18B20 温度传感器模块组成。系统架构如图 1 所示。

<img src="https://example.com/system_architecture.png" />
图 1 系统架构图

(三)系统硬件选型

  1. 51 单片机:选择 AT89C51 单片机作为主控芯片,它具有成本低、性能稳定、易于编程等优点。
  2. HC - SR04 超声波测距模块:用于测量前方障碍物的距离,具有测量精度高、响应速度快等特点。
  3. LCD1602 液晶显示屏:用于显示障碍物距离和温度信息。
  4. 按键:用于设置障碍物警报的阈值。
  5. 蜂鸣器:根据测量的障碍物距离发出不同节奏的报警声。
  6. DS18B20 温度传感器:用于测量当前的温度信息。

三、系统硬件设计

(一)51 单片机主控模块

51 单片机主控模块是整个系统的核心,它负责接收 HC - SR04 超声波测距模块和 DS18B20 温度传感器模块采集的数据,处理按键输入信号,控制 LCD1602 显示屏的显示,以及根据设定的阈值和测量的距离控制蜂鸣器的动作。

(二)HC - SR04 超声波测距模块

HC - SR04 超声波测距模块通过 Trig 和 Echo 引脚与 51 单片机连接。单片机通过向 Trig 引脚发送一个至少 10μs 的高电平信号来触发测距,然后等待 Echo 引脚返回高电平信号,通过测量高电平信号的持续时间来计算障碍物的距离。

(三)LCD1602 显示模块

LCD1602 液晶显示屏通过 8 位数据总线与 51 单片机连接,同时还需要连接控制引脚(RS、RW、E)。单片机通过向 LCD1602 发送控制指令和数据,实现障碍物距离和温度信息的显示。

(四)按键设置模块

按键设置模块由多个按键组成,用于设置障碍物警报的阈值。按键的一端接地,另一端通过上拉电阻与单片机的 I/O 口相连。当按键按下时,对应的 I/O 口电平发生变化,单片机通过检测电平变化来判断按键是否按下。

(五)蜂鸣器报警模块

蜂鸣器的一端接地,另一端通过限流电阻与单片机的某个 I/O 口相连。单片机根据测量的障碍物距离和设定的阈值,控制该 I/O 口的电平变化,从而控制蜂鸣器发出不同节奏的报警声。

(六)DS18B20 温度传感器模块

DS18B20 温度传感器通过单总线与 51 单片机连接。单片机通过特定的时序与 DS18B20 进行通信,读取温度数据。

四、系统软件设计

(一)软件开发环境

本系统采用 Keil uVision 作为软件开发环境,使用 C 语言进行编程。Keil uVision 是一款功能强大的单片机开发软件,提供了丰富的库函数和调试工具,方便用户进行程序开发和调试。

(二)系统主程序设计

系统主程序主要完成系统的初始化、数据采集、数据处理、显示、按键扫描和控制输出等功能。主程序流程图如图 2 所示。


图 2 主程序流程图

系统初始化包括单片机初始化、HC - SR04 超声波测距模块初始化、LCD1602 显示屏初始化、按键初始化、DS18B20 温度传感器初始化等。然后,主程序进入主循环,不断采集障碍物距离和温度数据,将数据显示在 LCD1602 上,扫描按键输入,根据按键输入设置阈值,并判断障碍物距离是否超出阈值,若超出则控制蜂鸣器发出报警声。

(三)各功能模块程序设计

  1. HC - SR04 超声波测距程序
    HC - SR04 超声波测距程序负责触发测距和计算障碍物的距离。程序首先向 Trig 引脚发送触发信号,然后等待 Echo 引脚返回高电平信号,通过定时器测量高电平信号的持续时间,并根据声速计算出障碍物的距离。

  2. LCD1602 显示程序
    LCD1602 显示程序负责将障碍物距离和温度信息显示在显示屏上。程序根据 LCD1602 的控制指令,将数据逐行逐列地写入显示屏。

  3. 按键扫描程序
    按键扫描程序负责检测按键是否按下,并根据按键的不同执行相应的功能。程序采用轮询的方式不断扫描按键状态,当检测到按键按下时,执行相应的按键处理函数,实现阈值的设置。

  4. 蜂鸣器报警程序
    蜂鸣器报警程序根据测量的障碍物距离和设定的阈值,控制蜂鸣器发出不同节奏的报警声。距离越近,报警节奏越急促。程序通过定时器控制蜂鸣器的发声频率和持续时间。

  5. DS18B20 温度传感器程序
    DS18B20 温度传感器程序负责读取温度数据。程序按照 DS18B20 的通信协议,发送初始化命令、ROM 命令和功能命令,读取温度寄存器中的数据,并进行转换和处理。

五、系统测试与结果分析

(一)测试环境搭建

为了测试系统的各项功能,搭建了相应的测试环境。将 HC - SR04 超声波测距模块安装在导盲拐杖的前端,模拟盲人使用导盲拐杖的场景。通过按键设置不同的阈值,观察 LCD1602 显示屏的显示情况、蜂鸣器的报警情况以及温度测量的准确性。

(二)各功能模块测试

  1. HC - SR04 超声波测距模块测试
    在不同的距离下,测试 HC - SR04 超声波测距模块测量的距离是否准确。测试结果表明,该模块能够较为准确地测量障碍物的距离,误差在允许范围内。

  2. LCD1602 显示模块测试
    将测量的障碍物距离和温度信息显示在 LCD1602 显示屏上,观察显示是否清晰、准确。测试结果表明,LCD1602 显示屏能够正常显示信息。

  3. 按键设置模块测试
    通过按键设置障碍物警报的阈值,观察设置是否成功。测试结果表明,按键设置功能正常,能够准确设置阈值。

  4. 蜂鸣器报警模块测试
    当障碍物距离超出设定的阈值时,观察蜂鸣器是否发出不同节奏的报警声。测试结果表明,蜂鸣器报警功能正常,能够根据距离远近发出不同节奏的报警声。

  5. DS18B20 温度传感器模块测试
    在不同的温度环境下,测试 DS18B20 温度传感器测量的温度是否准确。测试结果表明,该传感器能够较为准确地测量温度。

(三)系统整体测试

在完成各个功能模块的测试后,对系统进行了整体测试。模拟盲人使用导盲拐杖的场景,观察系统是否能够根据障碍物距离和设定的阈值自动进行报警,并实时显示障碍物距离和温度信息。测试结果表明,系统能够正常工作,实现了智能导盲拐杖的各项功能。

六、结论与展望

(一)结论

本论文设计并实现了一种基于 51 单片机的智能导盲拐杖系统。该系统通过 HC - SR04 超声波模块测量前方障碍物的距离,通过 LCD1602 显示当前测量的障碍物距离和温度信息,允许用户在 LCD 上设置障碍物警报的阈值,并根据测量的障碍物距离控制蜂鸣器发出不同节奏的报警声。测试结果表明,系统各项功能均能够正常实现,具有一定的实用价值。

(二)展望

虽然本系统实现了基本的智能导盲拐杖功能,但仍存在一些不足之处。例如,系统的精度和稳定性可以进一步提高,可以采用更先进的传感器和算法;系统的智能化程度可以进一步提升,如增加语音提示功能、与上位机的通信功能等。在未来的研究中,可以针对这些不足之处进行改进和优化,使系统更加完善、智能和便捷。

以上论文仅供参考,你可以根据实际研究情况进行调整和修改。在撰写论文过程中,还需要进行更深入的实验和研究,确保论文内容的科学性和可靠性。

#include "lcd1602.h"   

void delay_uint(uint i)
{
	while(i--);
}
/********************************************************************
* 名称 : write_com(uchar com)
* 功能 : 1602命令函数
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
void write_com(uchar com)
{
	e=0;
	rs=0;
	rw=0;
	P0=com;
	delay_uint(20);
	e=1;
	delay_uint(20);
	e=0;
}

/********************************************************************
* 名称 : write_data(uchar dat)
* 功能 : 1602写数据函数
* 输入 : 需要写入1602的数据
* 输出 : 无
***********************************************************************/
void write_data(uchar dat)
{
	e=0;
	rs=1;
	rw=0;
	P0=dat;
	delay_uint(20);
	e=1;
	delay_uint(20);
	e=0;	
}

/********************************************************************
* 名称 : write_string(uchar hang,uchar add,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
	 	 write_string(1,5,"ab cd ef;")
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
		while(1)
		{
			if(*p == '\0')  break;
			write_data(*p);
			p++;
		}	
}

/********************************************************************
* 名称 : init_1602()
* 功能 : 初始化1602液晶 
* 输入 : 无
* 输出 : 无
***********************************************************************/
void init_1602()
{
	write_com(0x38);						//数据总线为8位,显示2行,5x7点阵
	write_com(0x0e);						//开显示,有光标,光标闪烁
	write_com(0x06);						//光标自动右移
	delay_uint(1000);						//等待设置完成
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科创工作室li

你的鼓励将是大学生的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值