【TI 技术资料分享】MSP430单片机控制超声波测距

2019-07-30 17:42发布

使用MSP430单片机控制超声波测距并使用5110显示 1使用MSP430单片机控制超声波测距并使用5110显示.zip (68.26 KB, 下载次数: 16) 2015-3-9 21:38 上传 点击文件名下载附件

  1. #include "MSP430X14X.H"
  2. #include "cry1602.h"
  3. #include "ds18b20.h"
  4. #include "SR04.H"
  5. #define uint  unsigned int
  6. #define uchar  unsigned char
  7. #define CPU          (8000000)
  8. #define delay_us(x)   (__delay_cycles((double)x*CPU/1000000.0))
  9. #define delay_ms(x)   (__delay_cycles((double)x*CPU/1000.0))
  10. #define dely_s(x)     (__delay_cycles((double)x*CPU/1.0))
  11. extern unsigned char Ds_Temp[6];
  12. unsigned char SR_Temp[6];

  13. void Display_DS18b20()
  14. {
  15.      Disp1Char(0,0,'T');
  16.      Disp1Char(1,0,'E');
  17.      Disp1Char(2,0,'M');
  18.      Disp1Char(3,0,'P');
  19.      Disp1Char(4,0,':');
  20.      Disp1Char(10,0,0xDF);
  21.      Disp1Char(11,0,'C');
  22. }
  23. void Display_LCD1602()
  24. {
  25.      Disp1Char(0,1,'S');
  26.      Disp1Char(1,1,'p');
  27.      Disp1Char(2,1,'e');
  28.      Disp1Char(3,1,'e');
  29.      Disp1Char(4,1,'d');
  30.      Disp1Char(5,1,':');
  31. }
  32. void main( void )
  33. {   
  34.     unsigned char i;
  35.    /// long SR_Long;
  36.     float DS_Temp;
  37.     WDTCTL=WDTPW+WDTHOLD;
  38.     /*------选择系统主时钟为8MHz-------*/
  39.     BCSCTL1 &= ~XT2OFF;             //打开XT2高频晶体振荡器
  40.     do
  41.     {
  42.         IFG1 &= ~OFIFG;                 //清除晶振失败标志
  43.         for (i = 0xFF; i > 0; i++);     //等待8MHz晶体起振
  44.     }
  45.     while ((IFG1 & OFIFG));             //晶振失效标志仍然存在?
  46.     BCSCTL2 |= SELM_2 + SELS;    //MCLK和SMCLK选择高频晶振
  47.    
  48.    // TACTL |= TASSEL_2 + ID_3;    //选择SMCLK为时钟,并且8分频
  49.     SR_Init();
  50.     LcdReset();                   //初始化1602;
  51.     Init_18B20();                //初始化DS10B20;
  52.    
  53.     Display_DS18b20();
  54.     Display_LCD1602();
  55.     while(1)
  56.     {  
  57.       
  58.       SR_Start();
  59.       DS_Temp=DoTransform();
  60.       DispStr(5,0,Ds_Temp);
  61.      /* SR_Long=SR_DoTrans(DS_Temp);
  62.       if(SR_Long!=SR_ERROR)
  63.       {
  64.       SR_Temp[0]=SR_Long/100+0x30;
  65.       SR_Temp[1]='.';
  66.       SR_Temp[2]=(SR_Long/10)%10+0x30;  
  67.       SR_Temp[3]=(SR_Long)%10+0x30;
  68.       SR_Temp[4]='M';
  69.       SR_Temp[5]='';
  70.       DispStr(6,1,SR_Temp);
  71.       }*/
  72.      // SR_Start();
  73.      // SR_DoTrans();
  74.       //DelayNus(40000);
  75.       // DelayNus(40000);
  76.       }     
  77. }







复制代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。