找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1952|回复: 5
收起左侧

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

[复制链接]
ID:1052146 发表于 2022-11-17 01:13 | 显示全部楼层 |阅读模式
主函数如下,里面有超声波模块和红外遥控模块,注释一个测试另一个都可以,但一起运行就只能进行超声波测距,红外失效


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);
        
               
                }
               
                }               
        
        }


回复

使用道具 举报

ID:161164 发表于 2022-11-17 09:28 | 显示全部楼层
代码给全一点
缩进弄整齐一点
代码可以放到代码格式里
2022-11-17_092719.png


回复

使用道具 举报

ID:224003 发表于 2022-11-17 10:25 | 显示全部楼层
估计是,超声波、红外共用了同一个定时器
回复

使用道具 举报

ID:509408 发表于 2022-11-17 15:45 | 显示全部楼层
红外对时序要求挺高的吧。做好不同任务时间评估。格式不对当然解码不正确
回复

使用道具 举报

ID:123289 发表于 2022-11-17 17:01 | 显示全部楼层
如果不能DELAY,问题就解决了。
回复

使用道具 举报

ID:784227 发表于 2022-11-17 21:15 | 显示全部楼层
检查一下红外试试呢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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