51单片机超声波模块数码管程序编写.doc

51单片机超声波模块数码管程序编写.doc

ID:27465714

大小:55.50 KB

页数:8页

时间:2018-12-04

51单片机超声波模块数码管程序编写.doc_第1页
51单片机超声波模块数码管程序编写.doc_第2页
51单片机超声波模块数码管程序编写.doc_第3页
51单片机超声波模块数码管程序编写.doc_第4页
51单片机超声波模块数码管程序编写.doc_第5页
资源描述:

《51单片机超声波模块数码管程序编写.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、51单片机超声波模块数码管程序编写  超声波原理简单测距准确,应用广泛下面贴一个自己写的数码管程序,显示部分需要改,写的是我使用的是慧净开发板,共阴数码管    //超声波模块程序  //Trig=P2  //Echo=P3  #include  #defineucharunsignedchar  #defineuintunsignedint  unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,  0x6d,0x7d,0x07,0x7f,0x6f};//0-9的码表  uinttime=0;  uintTIme

2、H=0;  uintTImeL=0;  uintsucceed_flag;  sbitdula=P2;//段选信号的锁存器控制  sbitwela=P2;//位选信号的锁存器控制  sbitTrig=P2;  sbitEcho=P3;  //  voiddelay(uintz)  {  uintx,y;  for(x=z;x》0;x--)  for(y=125;y》0;y--);  }  //  voiddelay_20us()  {  uchara;  for(a=0;a《100;a++);  }  //*************************

3、**************************************  //显示数据转换程序  voiddisplay(uinttemp)  {  ucharqian,ge,shi,bai;  qian=temp/1000;  bai=temp/100%10;  shi=temp%100/10;  ge=temp%10;  wela=1;  //P0=0xf7;  P0=0xfe;  wela=0;  dula=1;  P0=table[qian];  dula=0;  delay(5);  wela=1;  //P0=0xf7;  P0=0xfd;  w

4、ela=0;  dula=1;  P0=table[bai];  dula=0;  delay(5);  dula=1;  P0=0x00;//关位码  dula=0;  wela=1;  //P0=0xef;  P0=0xfb;  wela=0;  dula=1;  P0=table[shi];  dula=0;  delay(5);  dula=1;  P0=0x00;//关位码  dula=0;  dula=1;  P0=table[ge];  dula=0;  wela=1;  //P0=0xdf;  P0=0xf7;  wela=0;  delay(5)

5、;  dula=1;  P0=0x00;//关位码  dula=0;  }  //***************************************************************  voidmain()  {  uintdistance;  uinttest=0;  Trig=0;//首先拉低脉冲输入引脚  EA=1;//打开总中断0  TMOD=0x10;//定时器1,16位工作方式  while(1)  {  EA=0;//关总中断  Trig=1;//超声波输入端  delay_20us();//延时20us  Trig=0;/

6、/产生一个20us的脉冲  while(Echo==0);//等待Echo回波引脚变高电平  succeed_flag=0;//清测量成功标志  EA=1;  EX0=1;//打开外部中断0  TH1=0;//定时器1清零  TL1=0;//定时器1清零  TF1=0;//计数溢出标志  TR1=1;//启动定时器1  delay(20);//等待测量的结果  TR1=0;//关闭定时器1  EX0=0;//关闭外部中断0  if(succeed_flag==1)  {  TIme=TImeH*256+timeL;  distance=time*0.172;//厘

7、米  display(distance);  }  if(succeed_flag==0)  {  distance=0;//没有回波则清零  test=!test;//测试灯变化  }  }  }  //***************************************************************  //外部中断0,用做判断回波电平  voidexter()interrupt0//外部中断0是0号  {  timeH=TH1;//取出定时器的值  timeL=TL1;//取出定时器的值  succeed_flag=1;//至成功测

8、量的标志 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。