• 51单片机导盲手杖_超声波测距+DS18B20测温设计


    51单片机导盲手杖_超声波测距+DS18B20测温设计

    (源码+原理图+PCB+仿真)

    原理图PAB:Altium Designer

    仿真原版本:proteus 7.8

    程序编译器:keil 4/keil 5

    编程语言:C语言

    设计编号:S0019

    设计要求

    导盲手杖主要用于帮助视觉有障碍的人解决行动不便问题,具有成本低,使用方便等特点。主要要求有:

    1.显示前方障碍物距离;

    2.实时测量距离,并通过蜂鸣器提醒距离过短,蜂鸣器蜂鸣发出预警;

    3.可以通过按键调整蜂鸣器预警的距离;

    4.附加要求,可以显示实际温度,根据温度调整传感器测试计算,减少误差。

    imgimg

    仿真电路

    可以通过按键调整蜂鸣器预警的距离,从而调整安全距离。

    img

    原理图

    img

    PCB图

    imgimg

    源程序

    img

    主程序

    /主函数
    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_
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71

    按键检测

    //按键检测
    void Key()
    {
    	//功能键按下
    	if(K1==0)
    	{
    		Feng_Start();//蜂鸣器开
    		delay_key(); //消抖
    		while(K1==0);//等待松手
    		Feng_Stop(); //蜂鸣器关闭
    		mode++;      //模式++
    		if(mode==2)	 //达到最大限度归为
    			mode=0;	
    		k=1;			 //按键标志位
    	}
    	//+键
    	else if(K2==0)
    	{
    		Feng_Start();//蜂鸣器开
    		delay_key(); //消抖
    		while(K2==0);//等待松手
    		Feng_Stop(); //蜂鸣器关闭
    		//最大值调整
    		/*if(mode==1)  //在最大值调整下
    		{
    			Max++;	 //调整最大值
    			if(Max==201)//到达201归为200
    			{
    				Max=200;
    			}	
    		}*/
    		//最小值
    	if(mode==1)//最小模式下调整
    		{
    			Min++;		//调整最小值
    			/*if(Min>Max) //最小值不能大于最大值
    			{
    				Min=Max;
    			}	
    				*/
    		}
    		k=1;
    	}
    	//-键
    	else if(K3==0)
    	{
    		Feng_Start();
    		delay_key();
    		while(K3==0);
    		Feng_Stop();
    		//最大值调整
    		/*if(mode==1)
    		{
    			Max--;
    			if(Max
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71

    资料清单

    下载

    img

  • 相关阅读:
    关于前端如何下载后端接口返回content-type为application/octet-stream的文件
    Word如何显示修改痕迹
    从技术创新到应用实践,百度智能云发起大模型平台应用开发挑战赛!
    ChatGPT帮助一名儿童确诊病因,之前17位医生无法确诊
    PSD95抗体研究丨SYSY PSD95抗体结果图展示
    MongoDB副本集配置和创建
    新技术应用塑造未来景展望
    「网页开发|前端开发|Vue」09 Vue状态管理Vuex:让页面根据用户登录状态渲染不同内容
    KMP算法小结
    【网络篇】第十六篇——再谈端口号
  • 原文地址:https://blog.csdn.net/weixin_52733843/article/details/126686901