⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 measure.c

📁 ME007+msp430
💻 C
字号:
#include "MSP430X44X.h"
#include "lcd12864.h"
#define uchar unsigned char
#define uint unsigned int
#define Trig_1 (P2DIR|=BIT2,P2OUT|=BIT2)
#define Trig_0 (P2DIR|=BIT2,P2OUT&=~BIT2)
#define Echo    P2DIR&=~BIT3
#define EchoIN  P2IN
float dis=0.0;
float k=0.0;
uint n1,n2,n3,n4,n5;
uchar tem[]="0123456789.cm   ";
void delay1(void)    
{
  /*TACTL=TASSEL_2+ID_3+TACLR;
  CCR0=n;
  TACTL=MC_1;
  while(!(TACTL&BIT0));
  TACTL|=~(MC1+MC0);
  TACTL&=~TAIFG;*/
  
 uchar i;
 for(i=11;i>0;i--);
}
void Get_distance(void)
{ uint i=20300;       //3.5m测距所需的时间
  Trig_1;           //触发
  delay1();
  Trig_0; //停止触发
  Echo;            //检测输入信号
 while(!(EchoIN&BIT3)&&i>0)
 {
   i--;
 }
    if (i>0)
   {
   TACTL=TASSEL_2+ID_0+MC_2+TACLR;     
  /*TACCTL2=CM_3+CCIS_1+CAP;             //捕获模式,捕获上升沿和下降沿,捕获内部ACLK
  TACTL=TASSEL_2+MC_2+TACLR;            //定时器时钟源为SMCLK,启动连续计数,清TAR
  TACCTL2 &=~CCIFG;                     //清CCR2的标志位  
  while(!(CCIFG&TACCTL2));              //查CCR2标志位
  first_value=TACCR2;                   //第一个捕获值存入first_value
  TACCTL2 &=~CCIFG;                     //清CCR2的标志位
  while(!(CCIFG&TACCTL2));              //查CCR2标志位
  second_value=TACCR2;                  //第二个捕获值存入second_value
  TACCTL2 &=~CCIFG;                     //清CCR2的标志位                      
  TACCTL2 &=~MC1;                       //关定时器A                                                                                                                                                                                                                                           
  dis=(second_value-first_value)/58.00; */  
 //注意:超声波的电平信号应该从P2.0口输入(第二功能为TA2)
  while(EchoIN&BIT3);
  TACTL&=~(MC0+MC1);
  //dis=(TAR)/58;       //得到距离(cm)
  //TACTL|=TACLR;
  //return dis;
   }
  //return (0);         //大于3.5m则返回0
}
void Show_distence(uchar S_line)
{  Get_distance(); 
   k=TAR/58.00; 
  n1=(uint) k/100;
  n2=(uint)((k-100*n1)/10);
  n3=(uint)(k)%10;
  n4=(uint)(k*10)%10;    
  n5=(uint)(k*100)%10;
  WR_data2_com(S_line*16,0x00,0x24);
  WR_com(0xb0);
  WR_data(tem[n1]-0x20);
  WR_data(tem[n2]-0x20);
  WR_data(tem[n3]-0x20);
  WR_data(tem[10]-0x20);
  WR_data(tem[n4]-0x20);
  WR_data(tem[n5]-0x20);
  WR_data(tem[11]-0x20);
  WR_data(tem[12]-0x20);
  WR_com(0xb2);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -