標題: 12單片機寫超聲波程序 [打印本頁]

作者: xiaoruan    時間: 2015-11-19 08:09
標題: 12單片機寫超聲波程序
#include <12.h>
#include <stdio.h>
#include <math.h>
#include "1602.h"
#include "delay.h"

sbit TRIG = P1^0 ;
sbit ECHO = P1^1 ;

unsigned char DisTempData[16];

/*------------------------------------------------
                    定時器0初始化
------------------------------------------------*/
void TIM0init(void)
{

  TMOD|= 0x01;//定時器0工作方式1
  TH0=0x00;   
  TL0=0x00;
  ET0=1;
  EA=1;
}
/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
main()
{
  float S;       //距離變量
  TIM0init();    //初始化定時器0
  LCD_Init();    //初始化LCD
  LCD_Write_String(0,1,"LY-UR04 demo");
  while(1)
  {

   TRIG=1;       //觸發(fā)信號是高電平脈沖,寬度大于10us
   DelayUs2x(10);
   TRIG=0;
   while(!ECHO); //等待高電平
   TR0=1;
   while(ECHO);  //等待低電平
   TR0=0;
   S=TH0*256+TL0;//取出定時器值高8位和低8位合并
   S=S/58;       //為什么除以58等于厘米,  Y米=(X秒*344)/2
                             // X秒=( 2*Y米)/344 -> X秒=0.0058*Y米 -> 厘米=微秒/58
   TH0=0;
   TL0=0;        //清除定時器0寄存器中的值
   sprintf(DisTempData,"S=%6.2f CM     ",S);//打印輸出結(jié)果
   LCD_Write_String(0,0,DisTempData);       //在液晶屏上顯示
   DelayMs(250);                            //延時決定采樣速度

  }
}

/*------------------------------------------------
                 定時器中斷子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
ECHO=0;
}






不知道  為何一移植到12單片機后  就會卡一個數(shù)據(jù)不動了   大神求幫忙







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1