自学内容网 自学内容网

基于单片机语音智能导盲仪仿真设计


前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
单片机设计精品实战案例
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

资料获取

文章底部名片,详细资料联系我。

设计介绍

基于单片机语音智能导盲仪的仿真设计是一个结合了多种技术的创新项目,旨在帮助视障人士更好地感知周围环境,提高出行的安全性和便利性。以下是对该设计的一个详细介绍:

一、设计概述
该设计以单片机为核心控制器,结合超声波传感器、语音芯片、电源模块等硬件设备,通过软件算法实现障碍物的检测与语音导航功能。设计目标是为视障人士提供一款安全、便捷的出行辅助设备。

二、硬件设计
单片机:作为系统的核心控制器,负责接收传感器数据、处理信息并控制语音播报。常用的单片机型号包括51/52系列、STM32等。
超声波传感器:用于检测前方的障碍物,通过发射超声波并接收其反射波来测量障碍物的距离,然后将距离信息传输给单片机。
语音芯片:接收单片机的指令,将导航信息、障碍物距离等以语音形式播报给使用者。常用的语音芯片如WT588D等。
电源模块:为整个系统提供稳定的电力供应,同时监控电源电压,确保系统稳定可靠运行。
其他辅助设备:包括震动马达(用于触觉提示)、数码管(显示障碍物距离)、光敏传感器(检测光照强度,控制警示灯)等。

设计程序

//宏定义
#define uchar unsigned char 
#define uint unsigned int
#define ULint unsigned long int 
//温度零上与零下的标志位
char flag=0;
//超声波
char flags=0;
//超声波距离
char flag1s=0;
//计算定时间
uint time=0;
//计算距离
ULint L_=0;
//温度
uint t_=0;
//显示模式  0正常  1最大值调整  2最小值调整
uchar mode=0;

uint Max=60;
uint Min=10;
//按键标志
uchar k=0;
//数值有误
uchar FW=0;
//头函数
#include <reg52.h>
#include <intrins.h>
#include "BJ_Key.h"    //报警按键
#include "display.h" //显示头函数
#include "ultrasonic_wave.h"//超声波头函数
#include "DS18B20.h"    //温度传感器头函数


//函数声明
void delayms(uint ms);
//主函数
void main()
{
Init_ultrasonic_wave();
//屏幕初始化
Init1602();
//温度初始化
tmpchange(); 
t_=tmp();
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();

//循环显示
while(1)
{
Key();
//正常显示
if(mode==0)
{
StartModule();//启动超声波
while(!RX);  //当RX为零时等待
TR0=1;  //开启计数
while(RX);  //当RX为1计数并等待
TR0=0;  //关闭计数

delayms(20);  //20MS
tmpchange();  //温度转换
t_=tmp();     //度温度
Conut(t_/10); //计算距离
if(L_>Max||L_<Min)
{
Feng_Start();
}
else
{
if(FW!=1)
Feng_Stop();
}
Display_1602(t_/10,L_);
}
//调整显示
else if(mode!=0)
{
//最大最小值
Init_MaxMin();
while(mode!=0)
{

Key();
if(k==1&&mode==1)
{
Init_MaxMin();
   write_com(0x8d);//设置位置
}
else if(k==1&&mode==2)
{
Init_MaxMin();
   write_com(0x8d+0x40);//设置位置
}
k=0;
}
//界面初始化
Init1602();
}
}
}

void delayms(uint ms)
{
uchar i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}


//T0中断用来计数器溢出,超过测距范围
void CJ_T0() interrupt 1
{
    flags=1; //中断溢出标志
}


          


具体实现截图

请添加图片描述
在这里插入图片描述

请添加图片描述
在这里插入图片描述

设计获取

文章下方名片联系我即可~

精彩专栏推荐订阅:在下方专栏👇🏻

毕业设计精品实战案例

收藏关注不迷路!!

🌟文末获取设计🌟


原文地址:https://blog.csdn.net/QQ1928499906/article/details/142618092

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!