精华内容
下载资源
问答
  • 51单片机超声波避障
    2021-05-23 02:05:41

    /***********************************************************************************************************/

    //5路超声波避障实验:51单片机 + HC-SR04超声波

    //

    /***********************************************************************************************************/

    #include //器件配置文件

    #include

    #define RX1 P3_6 //小车左侧超声波HC-SR04接收端

    #define TX1 P1_7 //发送端

    #define RX2 P3_3 //左前方超声波

    #define TX2 P0_2

    #define RX3 P2_4 //正前方超声波

    #define TX3 P2_5

    #define RX4 P3_5 //右前方超声波

    #define TX4 P3_4

    #define RX5 P3_7 //右侧超声波

    #define TX5 P1_6

    #define Left_moto_pwm P1_5 //PWM信号端

    #define Right_moto_pwm P1_4 //PWM信号端

    //定义小车驱动模块输入IO口

    sbit IN1=P1^0;

    sbit IN2=P1^1;

    sbit IN3=P1^2;

    sbit IN4=P1^3;

    sbit EN1=P1^4;

    sbit EN2=P1^5;

    bit Right_moto_stop=1;

    bit Left_moto_stop =1;

    #define Left_moto_go {IN1=0,IN2=1,EN1=1;} //左电机向前走

    #define Left_moto_back {IN1=1,IN2=0,EN1=1;} //左边电机向后走

    #define Left_moto_Stop {EN1=0;} //左边电机停转

    #define Right_moto_go {IN3=1,IN4=0,EN2=1;}//右边电机向前走

    #define Right_moto_back {IN3=0,IN4=1,EN2=1;}//右边电机向后走

    #define Right_moto_Stop {EN2=0;}//右边电机停转

    unsigned char pwm_val_left =0;//变量定义

    unsigned char push_val_left =0;// 左电机占空比N/20

    unsigned char pwm_val_right =0;

    unsigned char push_val_right=0;// 右电机占空比N/20

    unsigned int time=0;

    unsigned int timer=0;

    unsigned long S1=0;

    unsigned long S2=0;

    unsigned long S3=0;

    unsigned long S4=0;

    unsigned long S5=0;

    void delay_1ms(unsigned char x) //1ms延时函数,100ms以内可用

    {

    unsigned char i;

    while(x--)

    for(i=124;i>0;i--);

    }

    /********************************************************/

    void Count1() //计算左侧超声波距离的函数

    {

    while(!RX1);//当RX1为零时等待

    TR0=1; //开启计数

    while(RX1);//当RX1为1计数并等待

    TR0=0;//关闭计数

    time=TH0*256+TL0;

    TH0=0;

    TL0=0;

    S1=(time*1.7)/100; //算出来是CM

    }

    void Count2() //计算函数

    {

    w

    更多相关内容
  • 超声波避障程序随处可见,基于51单片机超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。 这次主要给大家分享其Proteus仿真部分。 涉及到的模块有:超声波模块(hc-sr04)、L293D电机驱动器和...
  • 超声波避障程序随处可见,基于51单片机超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。这次主要给大家分享其Proteus仿真部分。涉及到的模块有:超声波模块(hc-sr04)、L293D电机驱动器和...
  • 本程序配套基于51单片机超声波避障小车(含Proteus仿真)博客,现分享给大家学习使用,如有错误,希望批评指正,多多指教。
  • /* Main.c file generated by New Project wizard** Created: 周五 4月 3 2020* Processor: AT89C52* Compiler:Keil for 8051*/#include #include #include #defineTXP1_3#defineRXP1_2#define Forward_L_D...

    /* Main.c file generated by New Project wizard

    *

    * Created:   周五 4月 3 2020

    * Processor: AT89C52

    * Compiler:  Keil for 8051

    */

    #include

    #include

    #include

    #define  TX  P1_3

    #define  RX  P1_2

    #define Forward_L_DATA  180

    #define Forward_R_DATA  180

    /*****°′???-í??ó???¨ò?******/

    sbit L293D_IN1=P0^0;

    sbit L293D_IN2=P0^1;

    sbit L293D_IN3=P0^2;

    sbit L293D_IN4=P0^3;

    sbit L293D_EN1=P0^4;

    sbit L293D_EN2=P0^5;

    sbit BUZZ=P0^6;

    void Delay400Ms(void);

    unsigned char disbuff[4]={0,0,0,0};

    void Count(void);

    unsigned int  time=0;

    unsigned long S=0;

    bit  flag =0;

    bit  turn_right_flag;

    //**********************************************************

    //oˉêy??3?:Delay1ms(unsigned int i)

    //oˉêy1|?ü:?óê±i*1msμ?×ó3ìDò(??ó|óú22.1184Mhz?§??)

    //D?ê?2?êy:unsigned int i

    //DD2??μ?÷:?T

    //·μ??2?êy:?T

    //ê1ó??μ?÷:i?aòa?óê±μ?ê±??3¤?è£?μ¥??ê?MS£?×?′ó?éò??óê±65536 ms

    //**********************************************************

    void Delay1ms(unsigned int i)

    {

    unsigned char j,k;

    do{

    j = 10;

    do{

    k = 50;

    do{

    _nop_();

    }while(--k);

    }while(--j);

    }while(--i);

    }

    //**********************************************************

    //oˉêy??3?:Delay10us(unsigned char i)

    //oˉêy1|?ü:?óê±i*10usμ?×ó3ìDò(??ó|óú22.1184Mhz?§??)

    //D?ê?2?êy:?T

    //DD2??μ?÷:?T

    //·μ??2?êy:?T

    //ê1ó??μ?÷:i?aòa?óê±μ?ê±??3¤?è£?μ¥??ê?US£?×?′ó?éò??óê±250 ms

    //**********************************************************

    void Delay10us(unsigned char i)

    {

    unsigned char j;

    do{

    j = 10;

    do{

    _nop_();

    }while(--j);

    }while(--i);

    }

    //=========================================================================================================================

    void Forward()//           ?°??

    {

    L293D_IN1=1;

    L293D_IN2=0;

    L293D_IN3=1;

    L293D_IN4=0;

    //     PWM_Set(255-Speed_Right,255-Speed_Left);

    }

    void Stop(void)        //é23μ

    {

    L293D_IN1=0;

    L293D_IN2=0;

    L293D_IN3=0;

    L293D_IN4=0;

    //         PWM_Set(0,0);

    }

    void Turn_Retreat()         //oó

    {

    L293D_IN1=0;

    L293D_IN2=1;

    L293D_IN3=0;

    L293D_IN4=1;

    //        PWM_Set(255-Speed_Right,255-Speed_Left);

    }

    void Turn_left()         //×ó

    {

    L293D_IN1=0;

    L293D_IN2=1;

    L293D_IN3=1;

    L293D_IN4=0;

    //        PWM_Set(255-Speed_Right,255-Speed_Left);

    }

    //=========================================================================================================================

    /********?àà?????3ìDò***************/

    void Conut(void)

    {

    time=TH1*256+TL1;

    TH1=0;

    TL1=0;

    S=time*2;

    S=S*0.17;

    if(S<=300)

    {

    if(turn_right_flag!=1)

    {

    Stop();

    Delay1ms(5);

    }

    turn_right_flag=1;

    P1_7=0;

    P2_0=0;

    P0_6=0;

    Delay1ms(10);

    P1_7=1;

    P2_0=1;

    P0_6=1;

    Delay1ms(5);

    Turn_left();

    Delay1ms(10);

    }

    else

    {

    turn_right_flag=0;

    Forward();

    }

    if((S>=5000)||flag==1)

    {

    flag=0;

    }

    else

    {

    disbuff[0]=S%10;

    disbuff[1]=S/10%10;

    disbuff[2]=S/100%10;

    disbuff[3]=S/1000;

    }

    }

    /********************************************************/

    void zd0() interrupt 3

    {

    flag=1;

    RX=0;

    }

    /********3?éù2¨??μ?????3??í?è????3ìDò***************/

    void Timer_Count(void)

    {

    TR1=1;

    while(RX);

    TR1=0;

    Conut();

    }

    /********************************************************/

    void  StartModule()

    {

    TX=1;

    Delay10us(2);

    TX=0;

    }

    /********************************************************/

    /*************?÷3ìDò********************/

    void main(void)

    {

    unsigned char i;

    unsigned int a;

    Delay1ms(400);

    //        LCMInit()

    Delay1ms(5);

    TMOD=TMOD|0x10;

    EA=1;

    TH1=0;

    TL1=0;

    ET1=1;

    turn_right_flag=0;

    BUZZ=0;

    Delay1ms(50);

    BUZZ=1;

    while(1)

    {

    RX=1;

    StartModule();

    for(a=951;a>0;a--)

    {

    if(RX==1)

    {

    Timer_Count();

    }

    }

    }

    }

    }

    展开全文
  • 51单片机小项目--超声波避障小车

    超声波模块

    电路连接

    超声波HCSR04模块有四个引脚,VCC,GND,TRIG和ECHO。

    VCC接5V即可。

    TRIG引脚负责发射超声波信号的信号引脚。这个引脚需要用超过10us的高电平来启动,所以写了一个20us的函数。每一点HCSR04会发射8个40khz的方波。方波发射后,ECHO引脚会输出高电平。

    ECHO引脚是用来测量距离的数据引脚。当一个超声波信号发射后,ECHO引脚会输出高电平。当ECHO引脚直到检测到超声波信号回来的时,ECHO引脚输出低电平。

    //以定时器0和定时器1为例
    #define uint unsigned int
    uint PWM=0;  //定义PWM值,控制电机转速
    unit pwm=0;
     
    sbit IN11 = P1^0; //定义逻辑口
    sbit IN21 = P1^1;    
     
    sbit IN31 = P1^2;                                      
    sbit IN41 = P1^3;
     
    sbit a1=P2^1; //定义驱动使能口a1
    sbit b1=P2^32 //定义驱动使能口b1
        
    sbit RX=P1^6;//定义超声波接收端Echo
    sbit TX=P1^7;//定义超声波控制端Trig
    
    uint i=0,j=0;
     
    void Time() //定时器0和1初始函数
    { 
        TMOD |= 0x11;  //设置定时器0方式为1 定时器1为方式1
    //  TMOD |= Ox01;  //设置定时器0方式为1
        EA=1;          //打开总中断
        TH0 = 0xfc;    //设置定时器处置为高四位,定时1ms
        TL0 = 0x18;    //设置定时器设置为低四位
        ET0 = 1;	  //打开定时器0中断允许
        TR0 = 1;   	  //打开定时器0
        
        TH1 = 0xfc;    //设置定时器处置为高四位,定时1ms
        TL1 = 0x18;    //设置定时器设置为低四位
        ET1 = 1;	  //打开定时器1中断允许
        TR1 = 1;   	  //打开定时器1
        
    }
     
    void Timer0() interrupt 1
    {
        TH0=0xfc; 
    	TL0=0x18;		
    	if(i>PWM)a1=1;else a1=0;			
    	i++;
    	if(i>=100)i=0;
    }
    void Timer1() interrupt 3
    {
        TH1=0xfc; 
    	TL1=0x18;		
    	if(j>pwm)b1=1;else b1=0;		
    	j++;
    	if(j>=100)j=0;
    }
     
    void delay_20us()  //超声波延时20微秒
    {
    	TX=1;			                
    	_nop_();_nop_();_nop_();_nop_(); 
    	_nop_();_nop_();_nop_();_nop_();
    	_nop_();_nop_();_nop_();_nop_();
    	_nop_();_nop_();_nop_();_nop_();	   
    	_nop_();
    	TX=0;
    }
    
    void forward_move()  //电机正转函数,速度50,最大速度100
    {
        PWM = 50;
        pwm = 50;
     
        IN11 = 0; 
        IN21 = 1;    
     
        IN31 = 0;                                      
        IN41 = 1;					
    }
     
    void stop()  //电机停止
    {
        PWM = 0;
        pwm = 0;
     
        IN11 = 0; 
        IN21 = 0;    
     
        IN31 = 0;                                      
        IN41 = 0;					
    }
    
    void count_distence()  //定义超声波测距函数
    {
    	time=TH0*256+TL0;
    	TH0=0;
    	TL0=0;
        //s = 340m/s * time us /2 = 170*time *10^-6 m = 0.17*time mm
    	S= (long)(time*0.17);  
    	if(S<100)
    	{
    		stop();
    	}
    	if(S>=100)
    	{
    		forward_move(); 
    	}	
    }
    
    void main()
    {
        Timer();
        while(1)
        {
        	delay_20us();
            while(!RX);//等待TX发出
            TR0=1;     //开始计时
            while(RX); //当TX发出时,RX为高电平
            TR0=0;     //终止计时
            count_distence();
        }
    }

    展开全文
  • 超声波避障程序随处可见,基于51单片机超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。这次主要给大家分享其Proteus仿真部分。涉及到的模块有:超声波模块(hc-sr04)、L293D电机驱动器和...
  • 智能小车-51单片机-智能小车超声波避障 智能小车-51单片机-智能小车超声波避障
  • 基于51单片机避障小车

    千次阅读 2021-09-15 11:33:45
    标签:51单片机、LCD1602、超声波避障、红外避障 题目扩展:小车、避障 资料预览 效果图: 总体资料: 原理图: 软件设计流程: 系统框图: 本设计以STC89C52单片机为核心控制器,...

    设计简介:

    本设计是基于单片机的防碰撞小车,主要实现以下功能:

    • LCD1602显示小车状态以及超声波测距值
    • 通过手机控制小车动作(前进、后退、左转、右转、停止)
    • 前进为超声波避障、后退为红外避障

    标签:51单片机、LCD1602、超声波避障、红外避障

    题目扩展:小车、避障

    防碰撞小车-实物设计 - 电子校园 编号: HJJ-51-2021-020-SW 仿真链接: 防碰撞小车-仿真设计 软件安装: Proteus...https://www.mcude.com/mcudesign/505/

    更多设计可以在特纳斯电子校园网下载

    电子校园 - 特纳斯电子专注于单片机毕业设计参考、单片机课程设计参考、毕业答辩PPT模板、单片机设计与开发的电子校园设计网站特纳斯电子专注于单片机、电子嵌入式、物联网设计,打造入门开发者学习开发新天地,毕业设计代做、单片机课程设计代做、单片机设计与开发的电子校园设计网站https://www.mcude.com/

    效果图:

    总体资料:

    原理图:

    软件设计流程:

    系统框图:

    本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成无人车防碰撞控制的整个系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STC89C52单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。输入由三部分组成,第一部分是HC-SR04超声波测距模块,通过该模块可检测到障碍物的距离;第二部分是红外避障模块,通过两个红外避障模块检测前后是否有障碍物;第三部分是供电电路,给整个系统进行供电。输出由六部分组成,第一部分是LCD1602显示模块, 通过该模块显示小车行驶状态;第二部分是MX1508直流电机及驱动模块,通过该模块控制车轮的转动;第三部分是JDY-31蓝牙模块,通过该模块连接手机,通过手机控制小车的行驶状态;第四部分是舵机,通过两个舵机控制红外避障模块的左转和右转;第五部分是LED指示灯,第六部分是蜂鸣器,当到障碍物的距离大于25cm时,LED亮,蜂鸣器进报警。

    展开全文
  • 51单片机三路超声波避障

    千次阅读 2020-06-12 08:28:25
    第一次做,这个是麦克纳姆轮轮的程序,...REGX51.H> #define uint unsigned int #define uchar unsigned char uint PWM = 5; //最大20,pwm调速 uchar time = 0; uint Shi_Jian; uint a,b,c,FJL,LJL,RJL; void Del
  • 基于单片开机的超声波避障小车,能实现自动避障,显示行驶过的路程 源程序
  • 一、设计要求 1、提供2cm—400cm的非...因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,系统的测量精度理论上可以达到毫米级。 【资源下载】下载地址如下:https://docs.qq.com/doc/DTlRSd01BZ
  • 使用51单片机+超声波传感器来设计一台能实现避障功能的小车,使小车对其运动方向受到的阻碍作出各种躲避障碍的动作。
  • 该程序源代码用于51单片机智能小车超声波避障+PM2.5监测实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、电机驱动芯片型号:L293D。 4、液晶模块型号:1602(5V)。 5、电机型号:直流减速电机...
  • 该程序源代码用于51单片机智能小车超声波避障+温湿度监测实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、电机驱动芯片型号:L293D。 4、液晶模块型号:LCD1602(5V)。 5、电机型号:直流减速...
  • 该程序源代码用于51单片机智能小车超声波避障+可燃性气体监测实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、电机驱动芯片型号:L293D。 4、液晶模块型号:1602(5V)。 5、电机型号:直流减速...
  • 该程序源代码用于51单片机智能小车超声波避障实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、电机驱动芯片型号:L293D。 4、液晶模块型号:1602(5V)。 5、电机型号:直流减速电机。 6、需要...
  • //超声波测距模块Trig sbit echo=P1^1; //超声波测距模块Echo sbit trig2=P1^3; //超声波测距模块2Trig sbit echo2=P1^4; //超声波测距模块2Echo sbit in1=P2^1; sbit in2=P2^2; sbit in3=P2^3; sbit in4=P2^4; ...
  • 单片机技术
  • MCU采用STC89C516,超声波模块为HC-SR04,利用单片机的定时器中断功能,测量前方距离返回数据到单片机。亮灯并且产生转向标志flag。(可用于避障小车) #include"reg51.h" #include <intrins.h> sbit Echo=P2...
  • 可不可以再给个连接,那个百度网盘链接失效了,想自己试一下可不可以做出来这个东西。
  • 51单片机智能小车 红外循迹+led+蜂鸣器+超声波避障

    千次阅读 多人点赞 2021-11-22 13:56:26
    学院比赛章程规定了要用的器件有:89c52rc单片机,l298n四路电机驱动,四路红外传感器,HC-SR04超声波模块,SG90舵机,蓝牙模块等。 要求要用一个单片机完成蓝牙手动操作,红外循迹,超声波避障三个赛道..
  • 148【毕设课设】基于51单片机超声波红外避障语音导盲仪设计(电路图+程序+论文) 【资源下载】下载地址如下:https://docs.qq.com/doc/DTlRSd01BZXNpRUxl 基于51单片机的超声波红外避障语音导盲仪设计-(电路图+...
  • 超声波避障.zip

    2019-06-10 00:04:11
    基于单片机STC89C52的智能小车避障系统是一种利用超声波测距然后自动避障的系统,其启动后自动检测到小于某一距离后自动避开障碍物,广泛应用于探测避障等场合,通过超声波传感器,由单片机超声波传感器发送命令,...
  • 该程序源代码用于51单片机步进电机智能小车超声波避障+PM2.5监测实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、步进电机驱动芯片型号:ULN2003。 4、液晶模块型号:1602(5V)。 5、步进电机...
  • 该程序源代码用于51单片机步进电机智能小车超声波避障+温湿度监测实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、步进电机驱动芯片型号:ULN2003。 4、液晶模块型号:1602(5V)。 5、步进电机...
  • 该程序源代码用于51单片机步进电机智能小车超声波避障+可燃性气体监测实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、步进电机驱动芯片型号:ULN2003。 4、液晶模块型号:1602(5V)。 5、步进...
  • 可以作为入门级别的代码,具有蓝牙遥控、超声波自动避障功能
  • 该程序源代码用于51单片机智能小车红外循迹+超声波避障实验。 1、采用KEIL软件开发。 2、程序对应处理器:STC15W4K56S4。 3、电机驱动芯片型号:L293D。 4、液晶模块型号:1602(5V)。 5、电机型号:直流减速电机。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 657
精华内容 262
关键字:

51单片机超声波避障