单片机超声波模块的C语言程序Word格式文档下载.docx
- 文档编号:1453567
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:12.91KB
单片机超声波模块的C语言程序Word格式文档下载.docx
《单片机超声波模块的C语言程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机超声波模块的C语言程序Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。
0;
x--)
for(y=110;
y>
y--);
}
voiddelay_20us()
{
uchara;
for(a=0;
a<
100;
a++);
}
//***************************************************************
//显示数据转换程序
voiddisplay(uinttemp)
ucharge,shi,bai;
bai=temp/100;
shi=(temp%100)/10;
ge=temp%10;
P2=table1[2];
P0=table[ge];
delay
(1);
P2=table1[1];
P0=table[shi];
P2=table1[0];
P0=table[bai];
voidmain()
{
uintdistance;
//test=0;
Trig=0;
//首先拉低脉冲输入引脚
EA=1;
//打开总中断0
TMOD=0x10;
//定时器1,16位工作方式
while
(1)
{
EA=0;
//关总中断
Trig=1;
//超声波输入端
delay_20us();
//延时20us
Trig=0;
//产生一个20us的脉冲
while(Echo==0);
//等待Echo回波引脚变高电平
succeed_flag=0;
//清测量成功标志
EA=1;
EX0=1;
//打开外部中断0
TH1=0;
//定时器1清零
TL1=0;
TF1=0;
//计数溢出标志
TR1=1;
//启动定时器1
delay(20);
//等待测量的结果
TR1=0;
//关闭定时器1
EX0=0;
//关闭外部中断0
if(succeed_flag==1)
{
time=timeH*256+timeL;
distance=time*0.0172;
//厘米
}
if(succeed_flag==0)
{
distance=0;
//没有回波则清零
//test=!
test;
//测试灯变化
}
display(distance);
}
//外部中断0,用做判断回波电平
voidexter()interrupt0//外部中断0是0号
{
EX0=0;
//关闭外部中断
timeH=TH1;
//取出定时器的值
timeL=TL1;
succeed_flag=1;
//至成功测量的标志
//****************************************************************
//定时器1中断,用做超声波测距计时
voidtimer1()interrupt3//
TH1=0;
TL1=0;
}
1602液晶显示的超声波模块程序
接口程序里边都有、、
#include<
//#include<
delay.h>
intrins.h>
#defineuintunsignedint
sbitlcdrs=P2^3;
sbitlcden=P2^2;
sbittrig=P2^0;
//超声波发送
//sbitecho=P3^2;
//超声波接受
//P0____________DB0-DB7
uchardis[]="
Disp_HC-SR04"
;
ucharnum[]="
0123456789"
uintdistance;
uintx,y;
for(x=z;
for(y=121;
voidHC_init()
TMOD=0x09;
TR0=1;
TH0=0;
TL0=0;
uintHC_jisuan()
uintdist,timer;
timer=TH0;
timer<
<
=8;
timer=timer|TL0;
dist=timer/53;
//晶振11.0592MHz距离cm=微秒us/58
returndist;
//1个机器周期是12个时钟周期timer*12/(58*11.0592)=timer/53
}
voidHC_run()
uinttempH=0x00,tempL=0x00;
trig=0;
trig=1;
delay
(1);
while((TH0-tempH!
=0||TL0-tempL!
=0)||(TH0==0&
&
TL0==0))
{
tempH=TH0;
tempL=TL0;
}
voidlcd_write_com(ucharcom)//LCD写指令
lcdrs=0;
P0=com;
lcden=1;
lcden=0;
voidlcd_write_data(uchardate)//LCD写数据
lcdrs=1;
P0=date;
voidlcd_init()//LCD初始化
lcd_write_com(0x38);
lcd_write_com(0x0c);
lcd_write_com(0x06);
lcd_write_com(0x01);
voidlcd_display(uchartemp)
uinti;
lcd_write_com(0x82);
for(i=0;
i<
12;
i++)
lcd_write_data(dis[i]);
lcd_write_com(0x80+0x41);
lcd_write_data('
D'
);
i'
s'
t'
a'
n'
c'
e'
:
'
lcd_write_data(num[temp/100]);
lcd_write_data(num[temp/10%10]);
lcd_write_data(num[temp%10]);
m'
voidmain()
lcd_init();
HC_init();
while
(1)
{
HC_run();
distance=HC_jisuan();
lcd_display(distance);
delay(200);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 超声波 模块 语言 程序