1回答

0收藏

基于STM32的无线监护手表

机智云GoKit 机智云GoKit 2527 人阅读 | 1 人回复 | 2015-04-01

/*
                                             MK 2014-7-25 ???÷.????
                                        ???÷?í?¤?§??2014?ê??×??è?????ü
                                                                                                                                          ×?????????????(E??)?¨1??--??????????·?
                                                                                                                                                                ???????¨???ù??STM32f103RB×???????
*/                                                                                                                                                                                 

#include "sys.h"
#include "usart.h"               
#include "delay.h"       
#include "led.h"   
#include "timer.h"
#include "lcd.h"
#include "key.h"
void RUN_RIGHT(u16 right_temp,u16 left_temp);
void RUN_LEFT(u16 right_temp,u16 left_temp);
void RUN_GO(u16 right_temp,u16 left_temp);
void RUN_GO_Steady(u16 go_temp);
void RUN_BACK(u16 right_temp,u16 left_temp);
void Init_LCD_ShowString(void);
void Init_LCD_ShowNum(void);
void Dis_count(void);
void Reback(void);

void Sound_Control(void);
void Light_Control(void);

extern u32 x;
extern u32 y;
  extern u32 flag;

u32 temp,Dis,Dis1,Dis2;
u16 t,i=1,zuo_ccr=470,you_ccr=470;
extern u8  TIM2CH1_CAPTURE_STA;                //????????×???                                                   
extern u16 TIM2CH1_CAPTURE_VAL;        //??????????
int main(void)
{                         

  Stm32_Clock_Init(9);                        //?????±???è??
        uart_init(72,9600);                                 //????????????9600
        delay_init(72);                                            //???±??????
        LED_Init(); //????????LED??????????????
        TIM2_Cap_Init(0XFFFF,36-1);                //??1Mhz?????????? .???ù?¨????????
        TIM3_PWM_Init(899,0);// ??·?????PWM????=72000/(899+1)=80Khz.???????ú????       
        TIM4_Int_Init(9999,7199);// ?±??????
//        LCD_Init();
        delay_ms(10);
//        Init_LCD_ShowString();
  delay_ms(20);
        RUN_GO_Steady(100);       
  while(1)
  {

                RUN_GO(570,560);
//                Trlg=0;  
//                delay_us(60);
//                Trlg=1;
//                delay_us(15);
//                Trlg=0;
//                         
//                if(TIM2CH1_CAPTURE_STA&0X80)//??????????????????????
//    {
//     temp=TIM2CH1_CAPTURE_STA&0X3F;
//     temp*=65536;                                        //?????±??×???
//     temp+=TIM2CH1_CAPTURE_VAL;                //????×??????????±??      
//     Dis_count();
//     Sound_Control();
////     Init_LCD_ShowNum();
////     delay_ms(50);
//     TIM2CH1_CAPTURE_STA=0;                        //??????????????
//     }

  Light_Control();
               
               

  }
}

/***********************************************Dis_count**********************************************/
void Dis_count(void)
{
          Dis=temp*340/4000+15;
                Dis2=Dis%10;
                Dis1=Dis/10;
    printf("HIGH:%d cm\r\n",Dis);        //?ò??×??????????±??
                if(Dis1>=400||Dis1<=2.5)   {Dis=-0;Dis2=-0;}
}


/***********************************************Sound_Control**********************************************/
void Sound_Control(void)
{
        //u32 Dis1;
        if(Dis1<=35)
                {
      if(Dis1<=17)
      {
        RUN_BACK(550,550);
        delay_ms(300);
      }
      else
      {
        RUN_RIGHT(570,560);
        delay_ms(400);
        RUN_GO(570,560);
                  }
    }
        else  RUN_GO(570,560);
}
/***********************************************Light_Control**********************************************/
void Light_Control(void)
{
               
    if((TCRT_IN1==1)&(TCRT_IN2==0)&(TCRT_IN3==0)&(TCRT_IN4==0))       RUN_RIGHT(570,560),delay_ms(5);
                else if((TCRT_IN1==0)&(TCRT_IN2==1)&(TCRT_IN3==0)&(TCRT_IN4==0))  RUN_RIGHT(520,510),delay_ms(5);
               
                else if((TCRT_IN1==0)&(TCRT_IN2==0)&(TCRT_IN3==0)&(TCRT_IN4==1))  RUN_LEFT(570,560),delay_ms(5);
                else if((TCRT_IN1==0)&(TCRT_IN2==0)&(TCRT_IN3==1)&(TCRT_IN4==0))  RUN_LEFT(520,510),delay_ms(5);
               
                else if((TCRT_IN1==0)&(TCRT_IN2==1)&(TCRT_IN3==1)&(TCRT_IN4==0))  RUN_GO(570,560),delay_ms(5);
                else if((TCRT_IN1==1)&(TCRT_IN2==1)&(TCRT_IN3==1)&(TCRT_IN4==1))  RUN_BACK(520,510),delay_ms(5);
               
                else if((TCRT_IN1==0)&(TCRT_IN2==0)&(TCRT_IN3==1)&(TCRT_IN4==1))  
                                                 {RUN_LEFT(570,560);delay_ms(30);}
                else if((TCRT_IN1==1)&(TCRT_IN2==1)&(TCRT_IN3==0)&(TCRT_IN4==0))  
                                                                   {RUN_RIGHT(570,560);delay_ms(30);}
}

/***********************************************RUN_RIGHT**********************************************/
void RUN_RIGHT(u16 right_temp,u16 left_temp)
{
//  u16 i;
        L298_OUT1=1;
        L298_OUT3=0;
        L298_OUT2=0;
        L298_OUT4=1;   
                zuo_ccr=left_temp;
                you_ccr=right_temp;
                ZUO_CCR=899-zuo_ccr;
                YOU_CCR=899-you_ccr;

}
/***********************************************RUN_LEFT**********************************************/
void RUN_LEFT(u16 right_temp,u16 left_temp)
{
//  u16 i;
        L298_OUT1=0;
  L298_OUT3=1;
        L298_OUT2=1;
        L298_OUT4=0;

                zuo_ccr=left_temp;
                you_ccr=right_temp;
                ZUO_CCR=899-zuo_ccr;
                YOU_CCR=899-you_ccr;

}
/***********************************************RUN_GO**********************************************/
void RUN_GO(u16 right_temp,u16 left_temp)
{
//  u16 i;
        L298_OUT1=1;
  L298_OUT3=1;
        L298_OUT2=0;
        L298_OUT4=0;
  zuo_ccr=left_temp;
        you_ccr=right_temp;
  ZUO_CCR=899-zuo_ccr;
        YOU_CCR=899-you_ccr;
}
/***********************************************RUN_GO_Steady**********************************************/
void RUN_GO_Steady(u16 go_temp)
{
  u16 i;
        L298_OUT1=1;
  L298_OUT3=1;
        L298_OUT2=0;
        L298_OUT4=0;
for(i=0;i<go_temp;i++)//510??500 150
        {
                ZUO_CCR=899-zuo_ccr;
          YOU_CCR=899-you_ccr;   
                zuo_ccr++;
                you_ccr++;
    delay_ms(1);
        }       
}

/***********************************************RUN_BACK**********************************************/
void RUN_BACK(u16 right_temp,u16 left_temp)
{
        L298_OUT1=0;
        L298_OUT3=0;
        L298_OUT2=1;
        L298_OUT4=1;
  zuo_ccr=left_temp;
        you_ccr=right_temp;
  ZUO_CCR=899-zuo_ccr;
        YOU_CCR=899-you_ccr;
}

/***********************************************Init_LCD_ShowString**********************************************/
void Init_LCD_ShowString(void)
{
  POINT_COLOR=RED;  //?è??×??????? WHITE°×??BLACK??BLUE??RED??MAGENTA??GREEN??CYAN
  //(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)       
  LCD_ShowString(45,90,200,24,24,    "--MK-XinChi--");
  LCD_ShowString(70,130,200,12,24,"2014-7-18");
  LCD_ShowString(20,190,200,24,24,"SHOW TIME:");
  LCD_ShowString(170,190,200,24,24,":");
  LCD_ShowString(20,230,200,24,24,"SHOW Dis:");
  LCD_ShowString(195,230,200,24,24,"cm");
  LCD_ShowString(165,230,200,24,24,".");
}

/***********************************************Init_LCD_ShowNum**********************************************/
void Init_LCD_ShowNum(void)
{
// u32 x,y,Dis,Dis1,Dis2;     
        LCD_ShowNum(185,190,x,2,24);
        LCD_ShowNum(140,190,y,2,24);
        LCD_ShowNum(130,230,Dis1,3,24);
        LCD_ShowNum(180,230,Dis2,1,24);                 
//        LCD_ShowNum(130,260,Dis,5,24);
          LCD_ShowNum(60,260,zuo_ccr,4,24);
          LCD_ShowNum(130,260,you_ccr,4,24);
}



分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

MK_欣驰

发表于 2015-4-9 13:08:40 | 只看该作者

顶,!!!!!!!!!!
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条