|
#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;
}
/*------------------------------------------------
主函數
------------------------------------------------*/
main()
{
float S; //距離變量
TIM0init(); //初始化定時器0
LCD_Init(); //初始化LCD
LCD_Write_String(0,1,"LY-UR04 demo");
while(1)
{
TRIG=1; //觸發信號是高電平脈沖,寬度大于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);//打印輸出結果
LCD_Write_String(0,0,DisTempData); //在液晶屏上顯示
DelayMs(250); //延時決定采樣速度
}
}
/*------------------------------------------------
定時器中斷子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
ECHO=0;
}
不知道 為何一移植到12單片機后 就會卡一個數據不動了 大神求幫忙
|
|