找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 927|回复: 5
打印 上一主题 下一主题
收起左侧

51单片机做的小车,红外遥控和超声波测距好像有冲突

[复制链接]
跳转到指定楼层
楼主
主函数如下,里面有超声波模块和红外遥控模块,注释一个测试另一个都可以,但一起运行就只能进行超声波测距,红外失效


void main()

{
                LCD_Init();
        
        init();        //????????0?????0
        EN1 = EN2 = 0;//?????????
        speed = 8;//???????8,8/40=0.2,?????20%???,speed???????,????????
        
        while(1)
        {
               
        Timer0Init();//??????,????????????
                TrigInit();//???????,??300ms
        Bc_Dis();//?????
                LCD_ShowNum(1,1,(unsigned int)dis,3);
               
               
                if(IRok)    //??????????                    
                {   
                        IRcordpro();//???????4??????
                        IRok = 0;        //????????
                        if(IRpro_ok) //????????  
                        {
                        switch(IRcord[2])
                                   {
                                      case 0x0C:   forward();                 break;  //??        
                                     case 0x18:   backward();                break;  //??
                                //         case 0x0c:  left();                                break;//??
                                         case 0x5A:  right();                                break;//??
                                                 case 0x16:  stop();                                break;//??
                                                 case 0x5E:  speed_up();                                break;//??
                                                 case 0x08:  speed_down();                                break;//??
                                           default:                break;
                                   }
                                IRpro_ok = 0;
                        }
                }
        
        
        if(dis <=010){
                                BUZZER = ON;
                                Delay2(30);
                                BUZZER = OFF;
                                Delay2(30);
        
                        }        
                        else if((010< dis) && (dis <= 020)){
                                BUZZER = ON;
                                Delay2(100);
                                BUZZER = OFF;
                                Delay2(100);
                        }
                        else if((020 < dis) && (dis <= 050)){
                                BUZZER = ON;
                                Delay2(150);
                                BUZZER = OFF;
                                Delay2(150);
        
               
                }
               
                }               
        
        }


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2022-11-17 09:28 | 只看该作者
代码给全一点
缩进弄整齐一点
代码可以放到代码格式里



回复

使用道具 举报

板凳
ID:224003 发表于 2022-11-17 10:25 | 只看该作者
估计是,超声波、红外共用了同一个定时器
回复

使用道具 举报

地板
ID:509408 发表于 2022-11-17 15:45 | 只看该作者
红外对时序要求挺高的吧。做好不同任务时间评估。格式不对当然解码不正确
回复

使用道具 举报

5#
ID:123289 发表于 2022-11-17 17:01 | 只看该作者
如果不能DELAY,问题就解决了。
回复

使用道具 举报

6#
ID:784227 发表于 2022-11-17 21:15 | 只看该作者
检查一下红外试试呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表