51单片机超声波测距并用1602液晶显示距离程序.docx
- 文档编号:8775916
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:3
- 大小:12.46KB
51单片机超声波测距并用1602液晶显示距离程序.docx
《51单片机超声波测距并用1602液晶显示距离程序.docx》由会员分享,可在线阅读,更多相关《51单片机超声波测距并用1602液晶显示距离程序.docx(3页珍藏版)》请在冰点文库上搜索。
#include
#include<2.h>
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitrs=P3^5;
sbitwr=P3^6;
sbitlcden=P3^4;
voiddelay()//100us
{
uchari,j;
for(i=0;i<1;i++)
for(j=0;j<30;j++);
}
voidwrite_command(ucharcommand)
{
rs=0;
wr=0;
lcden=0;
P0=command;
lcden=1;
delay();
lcden=0;
}
voidlcd_initial()
{
write_command(0x38);
write_command(0x0c);
write_command(0x06);
}
voidwrite_data(ucharlcd_data)
{
rs=1;
wr=0;
lcden=0;
P0=lcd_data;
lcden=1;
delay();
lcden=0;
}
ucharshi,ge,bai;
intjia=0;//如果计数器满,则保存满值
unsignedlongintnum=0;//注意数据类型
sbittrig=P2^0;//定义发送引脚
sbitecho=P3^6;//定义接受回响信号引脚
voidsend()//发送声波
{
trig=1;
delay();
trig=0;
}
voidmain()
{
while
(1)
{
TMOD=0x01;//定时器方式1
ET0=1;//允许T0中断
EA=1;//开启总中断
TH0=0;//装初值
TL0=0;
send();
while(!
echo);//如果回响变为高电平则执行下一步
TR0=1;//启动定时器
while(echo);//等待回响结束
TR0=0;//关闭定时器
num=TH0*256+TL0+jia;
jia=0;
num=num*0.017*12/11;
lcd_initial();//液晶初始化
bai=num/100;
shi=num/10%10;
ge=num%10%10;
write_command(0x80+0x02);//地址
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
}
}
voidTime0(void)interrupt1//计数器满时,进入中断,jia用来保存满值
{
jia=jia+65535;
TH0=0;
TL0=0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 超声波 测距 并用 1602 液晶显示 距离 程序