精华内容
下载资源
问答
  • /* 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单片机超声波避障小车(含Proteus仿真)博客,现分享给大家学习使用,如有错误,希望批评指正,多多指教。
  • 超声波避障程序随处可见,基于51单片机超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。这次主要给大家分享其Proteus仿真部分。涉及到的模块有:超声波模块(hc-sr04)、L293D电机驱动器和...
  • 超声波避障程序随处可见,基于51单片机超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。这次主要给大家分享其Proteus仿真部分。涉及到的模块有:超声波模块(hc-sr04)、L293D电机驱动器和...
  • 超声波避障程序随处可见,基于51单片机超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。 这次主要给大家分享其Proteus仿真部分。 涉及到的模块有:超声波模块(hc-sr04)、L293D电机驱动器和...
  • 基于单片机超声波避障小车,能实现自动躲避障碍物和显示行驶过的路程
  • cs-程序\避障\基于80C51单片机小车超声波避障技术设计
  • 基于51单片机智能小车超声波避障程序,希望有用
  • 148【毕设课设】基于51单片机超声波红外避障语音导盲仪设计(电路图+程序+论文) 【资源下载】下载地址如下:https://docs.qq.com/doc/DTlRSd01BZXNpRUxl 基于51单片机的超声波红外避障语音导盲仪设计-(电路图+...

    基于51单片机的超声波红外避障语音导盲仪设计

    本系统采用STC89C52单片机+4位高亮白色LED灯+红外避障传感器电路+超声波电路+光敏电阻模块+语音报警电路+震动电路+液晶1602电路+电源电路设计而成。

    1、通过红外避障传感器或者超声波模块检测前方障碍物,如果检测到障碍物,则语音且震动报警。通过按键进行超声波和避障红外模块的切换,并且有显示指示。

    可以通过1602液晶显示超声波的距离,并且可以通过按键设置报警距离。

    2、光敏电阻检测光线强弱,晚上LED灯闪烁,提醒他人!白天灯不亮。

    【资源下载】下载地址如下:
    https://docs.qq.com/doc/DTlRSd01BZXNpRUxl

    #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
    #include<stdio.h>
    #include "1602.h"
    #include "delay.h"
    #include "math.h"
    
    #define TRUE 0x01
    #define FALSE 0x00
    
    sbit Echo=P1^1;		//触发使用
    sbit Trip=P1^0;
    
    sbit key1=P2^0;		//触发使用
    sbit key2=P2^1;
    sbit key3=P2^2;		//触发使用
    sbit ligh=P1^2;	 //光照
    sbit mada=P1^4;	 //马达
    sbit yuyin=P1^5;	 //马达
    sbit LED = P1^3;
    sbit bizhang = P1^6;
    
    char chaoFlag = 'C';
    unsigned char rekey = 0;
    char displaytemp[16];
    unsigned long time_20ms;
    unsigned char DisFlag=FALSE
    展开全文
  • 智能小车-51单片机-智能小车超声波避障 智能小车-51单片机-智能小车超声波避障
  • 基于AT89S51单片机的智能超声波避障.doc
  • AT89S51单片机的智能超声波避障小车.doc
  • 基于AT89S51单片机的智能超声波避障小车,里面包括超声波避障原理等==
  • 基于AT89S51单片机的智能超声波避障小车.doc
  • 基于STC89C51单片机的智能超声波避障小车.doc
  • 基于at89c51单片机的智能超声波避障小车
  • 基于AT89S51单片机的智能超声波避障小车电路图.doc
  • 基于51单片机超声波避障小车,使用舵机控制方向,超声波采集障碍物距离,点击可变速,使用oled显示障碍物距离,有proteus仿真,代码附有详细注释
  • 第一次做,这个是麦克纳姆轮轮的程序,...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

    第一次做,这个是麦克纳姆轮轮的程序,看着是没有任何问题的,但是小车不会动,求大佬帮助.
    程序如下

    // An highlighted block
    
    #include <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 Delay (uint t)                //@11.0592MHz    100us
    {
            unsigned char i;
            while (t)
            {
                   
                    i = 43;
                    while (--i);
                    t--;
            }
    }
    
    
    void Timer_Init()   //定时器    @11.0592MHZ   0.1ms
    {
            TMOD = 0x11;
            TH0 = 0xFB;
            TL0 = 0xAF;
            TF0        = 0;         
            ET0 = 1;          //允许中断
            EA = 1;           //开启总中断
            TR0 = 1;          /开启定时器
            
            TF1        = 0;
            TH1 = 0;
            TL1 = 0;
    }
    
    
    
    void Timer0_Rountine() interrupt 1   //T0  中断
    {
            time++;
            TH0 = 0xFB;
            TL0 = 0xAF;
            if(time >= 20)
                    time = 0;
    }
    int Front_Ju_Li ()               //测前方距离
    {
            P2_0 = 1;                      //发送超声波
            Delay(1);                      //延时100us
            P2_0 = 0;                      //关闭超声波
            while (!P2_1);                 //未接收到超声波并等待
            TR1 = 1;                       //开启定时器
            while (P2_1);                  //接收到超声波并等待
            TR1 = 0;                       //关闭定时器1
            Shi_Jian = TH1*256 + TL1;
            TH1 = 0;
            TL1 = 0;
            FJL = (Shi_Jian*1.7)/100;      //单位  cm
            return FJL;
            
    }
    int Zuo_Ju_Li ()               //测左边距离
    {
            P2_2 = 1;                      //发送超声波
            Delay(1);                      //延时100us
            P2_2 = 0;                      //关闭超声波
            while (!P2_3);                 //未接收到超声波并等待
            TR1 = 1;                       //开启定时器
            while (P2_3);                  //接收到超声波并等待
            TR1 = 0;                       //关闭定时器1
            Shi_Jian = TH1*256 + TL1;
            TH1 = 0;
            TL1 = 0;
            LJL = (Shi_Jian*1.7)/100;      /单位  cm
            return LJL;
            
    }
    int You_Ju_Li ()               //测右边距离
    {
            P2_4 = 1;                      //发送超声波
            Delay(1);                      //延时100us
            P2_4 = 0;                      //关闭超声波
            while (!P2_5);                 //未接收到超声波并等待
            TR1 = 1;                       //开启定时器
            while (P2_5);                  //接收到超声波并等待
            TR1 = 0;                       //关闭定时器1
            Shi_Jian = TH1*256 + TL1;
            TH1 = 0;
            TL1 = 0;
            RJL = (Shi_Jian*1.7)/100;      //单位  cm
            
    }
    
    void Car_Stop ()   //停止
    {
                    P1_0=0,P1_1=0,P1_2=0,P1_3=0,P1_4=0,P1_5=0,P1_6=0,P1_7=0;
    }
    void Car_Run ()   //前进
    {
            if (time <= PWM)
                    P1_0=1,P1_1=0,P1_2=0,P1_3=1,P1_4=0,P1_5=1,P1_6=0,P1_7=1;
            else
                    Car_Stop ();
    }
    void Car_Zuozhuan ()   //左转
    {
            if (time <= PWM)
                    P1_0=0,P1_1=1,P1_2=0,P1_3=1,P1_4=1,P1_5=0,P1_6=0,P1_7=1;
            else
                    Car_Stop ();
    }
    void Car_Youzhuan ()   //右转
    {
            if (time <= PWM)
                    P1_0=1,P1_1=0,P1_2=1,P1_3=0,P1_4=0,P1_5=1,P1_6=1,P1_7=0;
            else
                    Car_Stop ();
    }
    
    void Car_Houtui ()   /后退
    {
            if (time <= PWM)
                    P1_0=0,P1_1=1,P1_2=1,P1_3=0,P1_4=1,P1_5=0,P1_6=1,P1_7=0;
            else
                    Car_Stop ();
    }
    
    
    
    
    
    void main()
    {
            Timer_Init();
            while (1)
            {
                    do
                    {
                            Car_Run ();
                            a = Front_Ju_Li ();
                    }while(a >= 20);
                    Car_Stop ();
                    b = Zuo_Ju_Li ();
                    Delay(100);
                    c = You_Ju_Li ();
                    Delay(100);
                   
                   
                            if (b <= 15 && c <= 15)      //进入狭小空间,后退
                                    Car_Houtui ();
                            if (b <= c)             //左边距离小于右边距离,右转
                                    Car_Youzhuan ();
                            if (c <= b)             /右边距离小于左边距离,左转
                                    Car_Zuozhuan ();
                            else
                                    Car_Stop ();
            
            }
    }
    
    展开全文
  • 自己写的简易版本的基于51单片机超声波避障小车的工程文件,包含输出的.hex文件。如有写的不好的地方还请多多包涵。
  • 基于单片开机的超声波避障小车,能实现自动避障,显示行驶过的路程 源程序
  • 基于51单片机的小车避障电路实现.基于51单片机的小车避障电路实现.基于51单片机的小车避障电路实现.基于51单片机的小车避障电路实现.基于51单片机的小车避障电路实现.
  • 标签: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单片机超声波智障(避障)小车

    万次阅读 多人点赞 2018-07-20 16:10:07
    51单片机制作的超声波智障(避障)小车 最近在学习51单片机,暑假闲着无聊,便从网上买了个51单片机和一些传感器模块,不知怎么的突然想起小时候对小车的痴迷,于是便准备利用暑假时间做一超声波避障小车,就算是对...
  • **51单片机智能小车(舵机云台超声波避障+循迹+蓝牙+红外跟随+遥控+TFT液晶显示屏) 本人由于使用的液晶显示屏,程序大于8K,所以更换为STC12C5A60S2芯片,与51芯片兼容。 功能比较多: 1舵机云台超声波避障 2....
  • 一、设计要求 1、提供2cm—400cm的非...因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,系统的测量精度理论上可以达到毫米级。 【资源下载】下载地址如下:https://docs.qq.com/doc/DTlRSd01BZ
  • 基于51单片机的小车避障电路实现,模型小车自适应行驶和避障,通过超声波传感器感知车辆行驶环境,实现小车的自适应环境。

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 320
精华内容 128
关键字:

51单片机超声波避障