精华内容
下载资源
问答
  • 51单片机超声波测距和报警+Proteus仿真
    千次阅读
    2022-03-20 12:03:14

    系统描述

    基于51单片机超声波测距和报警,采用HC-SR04测距,数码管显示测量距离。按键设置报警上下限,超限报警。
    源码下载地址:51单片机超声波测距和报警+Proteus仿真

    硬件设计

    仿真图1:
    在这里插入图片描述

    仿真图2:
    在这里插入图片描述

    程序设计

    部分程序

    #include "task.h"
    
    extern unsigned int S;	//声明距离缓存变量,在文件"task.c"中定义
    extern unsigned int dis_buf[4];	//声明显示缓存数组,在文件"task.c"中定义
    extern unsigned int code duan_ma[16];
    extern unsigned int S_H, S_L;	//S_H:报警上限值,默认400cm,S_L:报警下限值,默认10cm
    
    
    
    /* 主函数 */
    void main(void)
    {
    	digDuan = 0x40;		//显示"----"
    	digWei1 = 0;
    	digWei2 = 0;
    	digWei3 = 0;
    	digWei4 = 0;
    	delayms(1000);		//延时大约1s 
    	InitTimer0();		//定时器0初始化
    
    	while(1)
    	{
    		count();					//计算距离
    		if(S>=S_H || S<=S_L)		//如果超出设定的范围,则显示"---"
    		{
    			dis_buf[3] = 0x00;
    			dis_buf[2] = 0x40; 		//显示"---"
    			dis_buf[1] = 0x40;
    			dis_buf[0] = 0x40;	
    			BEEP = 0;			//蜂鸣器鸣叫
    			delayms(1000);
    		}
    		else
    		{
    			BEEP = 1;			//关闭蜂鸣器
    			dis_distance();		//显示距离
    		}
    
    		if(key_scan() == 1)		//如果按下设置键,则进入设置报警功能
    		{
    			BEEP = 0;			//按键提示音
    			delayms(50);
    			BEEP = 1;
    			delayms(100);
    		 	key_fuction();		//进入设置报警功能
    		}			
    	}
    }
    

    key.h

    #include "key.h"
    
    /* 按键延时函数,单位:ms */
    static void key_delayms(unsigned int ms)
    {
    	unsigned char a,b,c;
    	while(--ms)
    	{
    	    for(c=1;c>0;c--)
    	        for(b=142;b>0;b--)
    	            for(a=2;a>0;a--);
    	}
    }
    /* 按键扫描 */
    unsigned char key_scan(void)
    {
    	if(KEY1 == 0)			//如果按键1按下
    	{
    		key_delayms(10);	//延时10ms,去除按键抖动
    		if(KEY1 == 0)		//再判断一次按键按下
    		{
    			return 1; 		//输出键值1
    		}	
    	}
    	if(KEY2 == 0)		//如果按键2按下
    	{
    		key_delayms(10);	//延时10ms,去除按键抖动
    		if(KEY2 == 0)		//再判断一次按键按下
    		{
    			return 2; 		//输出键值2
    		}
    	}
    	if(KEY3 == 0)		//如果按键3按下
    	{
    		key_delayms(10);	//延时10ms,去除按键抖动
    		if(KEY3 == 0)		//再判断一次按键按下
    		{
    			return 3; 		//输出键值3
    		}
    	}
    
    	return 0;				//如果没有按键按下,则输出0
    }
    

    task.c

    #include "task.h"
    
    //全局变量定义
    //段码表,适用于共阴数码管
    unsigned int code duan_ma[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,		//0~9
    								 0x77,0x7c,0x39,0x5e,0x79,0x71};	//A~F
    unsigned int dis_buf[4];			//显示缓存
    
    unsigned int S = 0;					//距离缓存变量
    unsigned long time = 0;				//时间缓存变量 
    unsigned int S_H = 400, S_L = 10;	//S_H:报警上限值,默认400cm,S_L:报警下限值,默认10cm
    
    
    
    /* 延时,单位:ms */
    void delayms(unsigned int ms)
    {
    	unsigned char a,b,c;
    
    	while(--ms)
    	{
    	    for(c=1;c>0;c--)
    	        for(b=142;b>0;b--)
    	            for(a=2;a>0;a--);	
    	}
    }
    
    
    
    
    
    

    timer.c

    #include "timer.h"
    
    extern unsigned int dis_buf[4];
    
    /* 定时器0初始化,定时1ms */
    void InitTimer0(void)
    {
        TMOD = 0x11;	//配置定时器0为工作方式1,定时器1位工作方式1
    	TH0 = 0;
        TL0 = 0;
    	TH1 = 0x0EC;	//定时5ms
        TL1 = 0x78;
    	EA = 1;			//打开总中断
    	ET1 = 1;		//打开定时器0中断
    	TR1 = 1;		//打开定时器1
        TR0 = 0;		//打开定时器0
    }
    /* 定时器0中断服务函数,5ms进一次本中断,用于数码管扫描 */
    void Timer1Interrupt(void) interrupt 3
    {
    	TH1 = 0x0EC;		//定时5ms,重新赋值
        TL1 = 0x78;
    
    	dig_scan(dis_buf);	//数码管显示温度
    }
    
    
    
    
    
    
    更多相关内容
  • 本文为51单片机超声波测距程序代码,下面一起来学习一下
  • 本设计是利用STC89C52单片机超声波传感器完成测距报警系统的制作,以STC89C52为主控芯片,利用超声波对距离的检测,将前方物体的距离探测出来,然后单片机处理运算,与设定的报警距离值进行比较判断,当测得距离...
  • 基于低成本、高精度的目的提出了一种超声波测距系统的设计方案.设计硬件部分采用AT89S52单片机作为 主控MCU,电路部分主要有发射电路、接收电路、显示电路几部分组成.本文在分析了超声波测距原理的基础上指出了 设计...
  • 51单片机超声波测距轮廓,HC-SR04,串口上位机显示C语言代码+proteus仿真,本人编写,实测好用
  • 正在学习51单片机,想利用HC-SR04超声波模块做作品的同学,可以通过这套代码的理解逐渐对超声波上手
  • 基于51单片机超声波测距及proteus仿真,采用HC-SRO4传感器,经测试可完美运行
  • 单片机超声波测距

    2018-03-13 19:57:21
    压缩包内包含程序工程,实物图,使用1602显示超声波测距
  • 本仿真是对单片机系统及程序进行仿真,仿真时借用了NE555产生延迟信号,模拟超声波的发送出去遇障碍物后返回的过程。仿真时通过调节RV1值的大小,以改变延时长短,模拟出距离的远近。
  • 5l系列单片机为许多控制提供了高度灵活和低成本的解决办法。充分利用他的片内资源,即可在较少外围电路的情况下构成功能完善的超声波测距系统。
  • 1.本设计采用STC89C52单片机作为主控制器; 2.LCD1602液晶显示测量的距离和温度; 3.带有温度补偿功能(DS18B20传感器); 4.测量范围0.02m~4m,精度为0.01m; 5.带实时语音播报功能; 6.按键功能:按键2:加报警值...
  • 51单片机超声波测距程序
  • 51单片机超声波测距C程序:含有超声波检测原理、超声波测距的程序流程图、及相关程序。经测试可行。
  • 0012、51单片机超声波测距程序.zip
  • 51单片机超声波测距(LCD1602显示) 含程序和接线图
  • 采用HC-SR04传感器,经测试可完美运行
  • (内含源程序,原理图及PCB源文件,视频讲解,仿真,元件清单,开题报告,参考论文等--课设必下)
  • 51单片机超声波测距数码管显示,单片机连接 hc-sr04超声波测距模块 用定时器测量物体与模块之间的距离,代码清晰简单,有参考原理图。
  • 设计由51单片机最小系统、超声波测距模块、驱动显示电路、5伏直流稳压电路、温度传感器等组成的超声波测距仪。利用超声波测距模块HC-SR04测量距离,并对数据进行分析处理,传给51单片机,再通过1602 LCD显示出来,...
  • //初始化单片机IO口为高电平 send_wave(); //测距离函数 smg_display(); //处理距离显示函数 time_init(); //定时器初始化程序 init_eeprom(); //开始初始化保存的数据 send_wave(); //测距离函数 send_wave...
  • 基于52单片机超声波测距系统,数值通过数码管显示
  • 用51单片机做的超声波测距程序,附带温度补偿及1602液晶显示
  • 51单片机项目设计,超声波测距,C语言代码+仿真proteus7.8 注意:超声波模块仿真!超声波模块仿真!超声波模块仿真! 超声波模块原件库是没有的
  • 51单片机源代码,keil工程文件,超声波测距,数码管显示测距结果
  • 51单片机超声波测距1602显示
  • 使用单片机编程 基于STC的超声波测距 可通过外加超声波测距模块进行测距
  • 本文主要为超声波模块测距51程序,下面一起来学习一下
  • SL-SRF-25超声波传感器,还可以指定从单片机I/O端口上输出分段距离检测信号,可以直接装在双龙SL系列机器人上,作为寻物、避障探测等应用。LED发光二极管显示所测分段距离范围信号,可以用于机器人控制。
  • 基于单片机超声波测距系统的设计,单片机实时检测距离,并且在LCD1602实时显示检测到的距离。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,515
精华内容 1,406
关键字:

单片机超声波测距

友情链接: 3289-anqn.rar