超声波测距正确程序文档格式.doc
《超声波测距正确程序文档格式.doc》由会员分享,可在线阅读,更多相关《超声波测距正确程序文档格式.doc(7页珍藏版)》请在冰豆网上搜索。
sbittrig=P1^0;
//发射端
sbitBeap=P2^3;
//蜂鸣器
sbitKey_Data=P2^4;
//按键发射
#defineRS_CLRRS=0
#defineRS_SETRS=1
#defineRW_CLRRW=0
#defineRW_SETRW=1
#defineEN_CLREN=0
#defineEN_SETEN=1
#defineDataPortP0
unsignedcharcodeASCII[15]={'
0'
'
1'
2'
3'
4'
5'
6'
7'
8'
9'
.'
-'
M'
};
unsignedchardisbuff[4] ={0,0,0,0,};
unsignedlongS=0;
unsignedcharFlag;
unsignedinttime;
unsignedintt=500;
/*------------------------------------------------
uS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下T=tx2+5uS
voidDelayUs2x(unsignedchart)
{
while(--t);
}
mS延时函数,含有输入参数unsignedchart,无返回值
0~255这里使用晶振12M,精确延时请使用汇编
voidDelayMs(unsignedchart)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
判忙函数
bitLCD_Check_Busy(void)
{
DataPort=0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return(bit)(DataPort&
0x80);
写入命令函数
voidLCD_Write_Com(unsignedcharcom)
{
while(LCD_Check_Busy());
//忙则等待
RW_CLR;
DataPort=com;
写入数据函数
voidLCD_Write_Data(unsignedcharData)
RS_SET;
DataPort=Data;
清屏函数
voidLCD_Clear(void)
LCD_Write_Com(0x01);
DelayMs(5);
写入字符串函数
voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s)
{
if(y==0)
{
LCD_Write_Com(0x80+x);
//表示第一行
}
else
{
LCD_Write_Com(0xC0+x);
//表示第二行
}
while(*s)
LCD_Write_Data(*s);
s++;
写入字符函数
voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData)
LCD_Write_Com(0x80+x);
}
LCD_Write_Data(Data);
LCD初始化函数
voidLCD_Init(void)
LCD_Write_Com(0x38);
/*显示模式设置*/
DelayMs(5);
LCD_Write_Com(0x08);
/*显示关闭*/
LCD_Write_Com(0x01);
/*显示清屏*/
LCD_Write_Com(0x06);
/*显示光标移动设置*/
LCD_Write_Com(0x0C);
/*显示开及光标设置*/
}
/*-------------------------------------------------
初始化超声波测距仪,定时器,中断
---------------------------------------------------*/
voidinit()
echo=0;
trig=0;
Flag=1;
LCD_Write_Char(7,0,'
o'
);
LCD_Write_Char(8,0,'
k'
TMOD=0x01;
//设T0为方式1
TH0=0;
TL0=0;
ET0=1;
//允许T0中断
TR0=0;
EA=1;
//开启总中断
定时器0中断函数
--------------------------------------------------*/
voidtimer0()interrupt1
TH0=0;
Flag=0;
//标志位,当检测超过65ms退出等待回波,继续下一次检测,非常必要
超声波测距仪触发模块
-------------------------------------------------*/
voidstartmodule()
trig=1;
//15us启动一次模块
_nop_();
trig=0;
键盘扫描函数
--------