| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:灭火小车程序,能指点我一下流程图思路不,谢谢。
只看楼主 加入收藏
阿梅237
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
灭火小车程序,能指点我一下流程图思路不,谢谢。
#include "STC12C5A.h"   
#include "Cartest.h"

#define BIT0  0x01
#define BIT1  0x02
#define BIT2  0x04
#define BIT3  0x08
#define BIT4  0x10


sbit Flame1=P0^0;    //从左到右 依次为1--5;
sbit Flame2=P0^1;
sbit Flame3=P0^2;
sbit Flame4=P0^3;
sbit Flame5=P0^4;
sbit SPK=P0^7;




volatile  int BeepTime;     //全局变量控制时间
volatile  int Half_BeepTime;     //全局变量控制时间

/*------------------------------------------------
             设定蜂鸣器发声时间长度
------------------------------------------------*/
 void Set_Beep( int Time)
 {
 BeepTime=Time;//设定时间长度
 Half_BeepTime=    Time/4*3;
 }

/*------------------------------------------------
             初始化定时器
------------------------------------------------*/

 void InitTimer()
 {
    TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
    TL0 = 0;                         //initial timer0 low byte
    TH0 = 0xff;                        //initial timer0 high byte
    TR0 = 1;                           //timer0 not start running
    ET0 = 1;                        //enable timer0 interrupt
    EA  = 1;                         //open global interrupt switch
 }


/***********************************************************************/
//                    函数名称      void main (void)                       //
//                  返回值:                                         //
//                    功能:        小车寻找火源                           //
//                    使用资源:    电机控制  定时器 蜂鸣器  火焰传感器  //
//                  作者:南京雍异电子科技有限公司 刘江凯               //
/***********************************************************************/

 void main (void)
 {     
    char  FlameConter1=0,FlameConter2,FlameConter3,FlameConter4,FlameConter5;
    P1=0xff;   //电机使能部分

    Set_Beep(7000);//发声的频率
    InitTimer();

    while(1)
    {
    CarLittleLeft();
    while(((Flame1)|(Flame2)|(Flame3)|(Flame4)|(Flame5))==1) //只要有火1
    {   

    /***********************************************************************
                         1偏离火焰纠正航向                                    
    **********************************************************************/   

         //最两边的有火 调整头朝向蜡烛
         if(Flame1==1)//发现火焰在最左边  
         {   
             while((Flame3|Flame2)==0)        CarTurnLeft(); //向左转 直至中间看到
         }            
         if(Flame5==1) // 发现火焰在最右边
         {
             while((Flame3|Flame4)==0)      CarTurnRight();// 向右转 直至中间看到
         }

          //靠近中间的侧面有火
          if(Flame2==1)//发现火焰在左边  
         {   
             while((Flame3|Flame4)==0)        {CarLittleLeft(); } //向左转 直至中间看到
         }            
         if(Flame4==1)// 发现火焰在右边
         {
             while((Flame3|Flame2)==0)        {CarLittleRight(); }// 向右转 直至中间看到
         }

         //侧面有火
         while (((Flame1&Flame2)==1)&&((Flame4|Flame5)==0) ) {CarTurnLeft(); }
         while (((Flame4&Flame5)==1)&&((Flame1|Flame2)==0) ) {CarTurnRight(); }

    /***********************************************************************
                         2前进                                    
    **********************************************************************/   
        CarGo();//发现火焰在中间    前进
        Delayms(50);

    /***********************************************************************
                        3修正蜂鸣器部分                                
    **********************************************************************/   
        
        {
        FlameConter1=Flame1;FlameConter2=Flame2;FlameConter3=Flame3;
        FlameConter4=Flame4;FlameConter5=Flame5;
        }//便于数值计算 赋值

        //控制蜂鸣器发声的频率            
        switch (FlameConter1+FlameConter2+FlameConter3+FlameConter4+FlameConter5)
        {
        case 0:          Set_Beep(7000); break;
        case 1:         Set_Beep(6000);  break;
        case 2:         Set_Beep(5000); break;
        case 3:         Set_Beep(4000); break;
        case 4:         Set_Beep(3000); break;
        case 5:      Set_Beep(900); break;//找到火了报警
        default:     break;
        }
    /***********************************************************************
                         4发现火源                                          
    **********************************************************************/
        if(((Flame2&Flame3&Flame4&Flame5&Flame1)==1))  
         {
         CarGo();
         Delayms(100);
         CarStop();          //找到火了报警
         while(1);
         }

    }   
  }      
}





 /*------------------------------------------------
     定时器中断函数  如果 时间没有到
     就将喇叭每隔250us取反一次(频率)重装定时器  
     发声时间长度为BeepTime*250us
------------------------------------------------*/

 void tm0_isr() interrupt 1 using 1
{

   static  int Counter=0,Half_Counter;

     Counter--;
    if(Counter>Half_Counter)
    {
    TL0 = 0;                     //reload timer0 low byte
    TH0 = 0xff;                //reload timer0 high byte
    SPK=!SPK;
    }

    else if(Counter>0)   //响完了 该沉默了
    {
    TL0 = 0;                     //reload timer0 low byte
    TH0 = 0xff;                //reload timer0 high byte
    SPK=0;
    }
    else   {Counter=BeepTime; Half_Counter=Half_BeepTime;}
}
搜索更多相关主题的帖子: include 流程图 蜂鸣器 
2014-05-05 13:43
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:10 
主要是对这个东西不了解,也就是说,没有一个对“灭火小车”的全面描述,无从下手。
2014-05-05 14:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
单片机    游戏  

DO IT YOURSELF !
2014-05-05 14:16
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:5 
没明白是要干嘛

我不是砖家,要努力成为砖家。
2014-05-05 14:48
阿梅237
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 3 楼 wp231957
求流程图,谢谢啊。
2014-05-05 17:03
阿梅237
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 2 楼 top398
流程图就行,按你理解的,我参考,谢啦。
2014-05-05 17:03
阿梅237
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 3 楼 wp231957
单片机运用啊,不是游戏;我画了半天流程图没画明白啊。
2014-05-05 17:04
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
你至少要说明你这个“小车”处于怎样的环境,要完成怎样的功能。
大而化之,比如说:
1、检测到何处有火。
2、赶往起火地点。
3、开始救火。
4、救火完成(或失败)。
如果这样理解是正确的,再细分每一步该怎样做。
2014-05-05 17:12
阿梅237
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 8 楼 top398

寻找火源,发现火源大体位置
1偏离火焰纠正航向   
2前进
3修正蜂鸣器
4发现火源
差不多是 这样,流程图我不会啊,求帮忙。
2014-05-06 12:07
快速回复:灭火小车程序,能指点我一下流程图思路不,谢谢。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018180 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved