51单片机驱动超声波测距模块C51程序_第1页
51单片机驱动超声波测距模块C51程序_第2页
51单片机驱动超声波测距模块C51程序_第3页
51单片机驱动超声波测距模块C51程序_第4页
51单片机驱动超声波测距模块C51程序_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、51单片机驱动超声波测距模块C51程序#include;#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong*函数声明*voidinit_Total();/voidinit_T0();/voidinit_T1();/voidinit_inter0();/voidsend_T();voiddelay(uintz);/voiddelay_300us();/voiddelay_100us();/总初始化初始化定时器T0初始化定时器T1初始化外部中断1延时一段时间延时300us延时100us*sbitlcdrs=P

2、1A7;sbitlcdrw=P3A1;sbitlcden=P1A5;/1602液晶限制端sbitsend=P1A.;/sbitBEEP=P2A5;sbitwei=P2A6;sbitduan=P2A7;volatileucharCount_TH,Count_TL;/分别读计数器T1的高位TH1,低位TL1uchart0,flag;uinttime;ucharcodetable1="distance"ucharcodetable2=""/初始化显示voidwrite_com(ucharcom)/1602写指令函数(lcdrs=

3、0;P0=com;delay(5);lcden=1;delay(5);lcden=0;)写数据函数voidwrite_data(uchardatb)/1602(lcdrs=1;P0=datb;delay(1);lcden=1;delay(1);lcden=0;)voiddistance(ucharaddr,uintdatb)(ucharbai,shi,ge;bai=datb/100;shi=datb%100/10;ge=datb%10;write_com(0x80+0x40+addr);write_data(0x30+bai);write_data(0x30+shi);write_data(0

4、x30+ge);* 名称:voidinit_Total()* 功能:总初始化* 入口参数:NULL* 全局变量:NULL*返回值:NULL*/voidinit_Total()(init_T0();/初始化定时器T0为工作方式2init_T1();/初始化定时器T1为工作方式1init_inter0();/初始化外部中断1EA=1;/开总中断/* 名称:voidinit_T0()* 功能:初始化定时器T0为工作方式2* 入口参数:NULL* 全局变量:NULL*返回值:NULL*/voidinit_T0()(TMOD=0X12;TH0=0XE7;TL0=0XE7;EA=0;ET0=1;TR0=1

5、;/* 名称:voidinit_T1()* 功能:初始化定时器T1为工作方式1* 入口参数:NULL* 全局变量:NULL* 返回值:NULL*TMOD=0X12;TH1=0;TL1=0;EA=0;ET1=1;TR1=1;户* 名称:voidinit_inter1()* 功能:初始化外部中断1为低电平触发方式* 入口参数:NULL* 全局变量:NULL* 返回值:NULL*/voidinit_inter0()(IT0=0;/低电平触发EA=0;EX0=0;/关外部中断1)户*40KHz的方波* 名称:voidinter_T0()interrupt1* 功能:定时器T0中断函数产生* 入口参数:

6、NULL* 全局变量:NULL* 返回值:NULL* */voidinter_T0()interrupt1send=send;)/* 名称:voidinter_T1()interrupt3* 功能:定时器T1中断函数* 入口参数:NULL* 全局变量:NULL*返回值:NULL*/voidinter_T1()interrupt3(TR1=0;EX0=0;/关外部中断0TH1=0;TL1=0;flag=2;/* 名称:voidinter1()interrupt2* 功能:外部中断1函数* 入口参数:NULL* 全局变量:Count_TH,Count_TL* 返回值:NULL*voidinter0

7、()interrupt0(TR1=0;EX0=0;flag=1;)户* 名称:voidsend_T()* 功能:发送10个超声波脉冲* 入口参数:NULL* 全局变量:Count* 返回值:NULL* *;voidsend_T()(delay_100us();发送100us的方波TR0=0;/关定时器T0* 名称:voiddelay(uintz)* 功能:延时一段时间* 入口参数:z* 全局变量:NULL* 返回值:NULL*/*voiddelay(uintz)(uintx,y;for(x=z;x>0;x-)for(y=1000;y>0;y-);/* 名称:voiddelay_30

8、0us()* 功能:延时300us* 入口参数:NULL* 全局变量:NULL* 返回值:NULL*voiddelay_300us()uintx;for(x=75;x>0;x-);* 名称:voiddelay_100us()* 功能:延时100us* 入口参数:NULL* 全局变量:NULL* 返回值:NULL*voiddelay_100us()uintx;for(x=24;x>0;x-);)*voidmain()(uintt,s;init_Total();/总初始化while(1)(TR1=1;/启动定时器1TR0=1;/启动定时器0send_T();/发送100us超声波脉冲delay_300us();/延时300us跳过盲区EX1=1;/开外部中断1while(用ag);等待回波或定时器T1溢由if(flag=1)/回波(Count_TH=TH1;读计数器T1的高位TH1Count_TL=TL1;/读计数器T1的低位TL1t=Count_TH*256+Count_TL;s=(33140*t)/400000;dist

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论