超声波测距仪的设计_第1页
超声波测距仪的设计_第2页
超声波测距仪的设计_第3页
超声波测距仪的设计_第4页
超声波测距仪的设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

附录一:元件清单编号型号、规格描述数量编号型号、规格描述数量w17*9万用板1w2HC-SR04超声波模块超声波模块1w3AT89c51单片机1w440pIC座1w54p单排母座1a19012三极管5LEDHS310561K共阳数码管4R12.2K1/4W电阻器6R210K1/4W电阻器1BYBEEP5V有源蜂鸣器1c310uF电解电容1C530pF瓷片电容器1c6100uf电解电容1C8104电解电容1Y112MHz晶振1USBUSBUSB接口1K1SW-0606按键1K2SW-0606按键1K3SW-0606按键1JP1DC电源插口电源插口1B7M-7.6高频变压器1TQ电池供电1附录二:高精度超声波测距报警系统电路图附录三:单片机c源程序代码#include<reg52.H>//器件配置文件#include<intrins.h>//按键声明sbitRX=P3^2;sbitTX=P3^3;sbitS1=P1^4;sbitS2=P1^5;sbitS3=P1^6;//蜂鸣器sbitFeng=P2^0;//变量声明unsignedinttime=0;unsignedinttimer=0;unsignedcharposit=0;unsignedlongS=0;unsignedlongBJS=50;//报警距离80CM//模式0正常模式1调整charMode=0;bitflag=0;unsignedcharconstdiscode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff/*-*/};unsignedcharconstpositon[4]={0xfd,0xfb,0xf7,0xfe};unsignedchardisbuff_BJ[4] ={0,0,0,0};//报警信息//延时100msvoiddelay(void)//误差0us{unsignedchara,b,c;for(c=10;c>0;c--)for(b=38;b>0;b--)for(a=130;a>0;a--);}//按键扫描voidKey_(){ //+ if(S1==0) { delay(); while(S1==0) { P1=P1|0x0f; } BJS++; if(BJS==151) { BJS=0; } } //- elseif(S2==0) { while(S2==0) { P1=P1|0x0f; } BJS--; if(BJS==0) { BJS=150; } } //功能 elseif(S3==0) { delay(); while(S3==0) { P1=P1|0x0f; } Mode++; if(Mode==2) { Mode=0; } }}/**********************************************************************************************************///扫描数码管voidDisplay(void) { //正常显示 if(Mode==0) { if(posit==0)//数码管的米标志 { P0=(discode[disbuff[posit]])|0x80; } else { P0=discode[disbuff[posit]]; } if(++posit>=3) posit=0; } //报警显示 else { if(posit==0)//数码管的米标志 { P0=(discode[disbuff_BJ[posit]])|0x80; } elseif(posit==3) { P0=0x76; } else { P0=discode[disbuff_BJ[posit]]; } P1=positon[posit]; }}/**********************************************************************************************************///计算voidConut(void){ time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100;//算出来是CM if(Mode==0) { if((S>=700)||flag==1)//超出测量范围显示“-” { Feng=0; flag=0; disbuff[0]=10; //“-” disbuff[1]=10; //“-” disbuff[2]=10; //“-” } else { //距离大于报警距 if(S<=BJS) { Feng=0; } else { Feng=1; } disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10%10; } } else { Feng=1; disbuff_BJ[0]=BJS%1000/100; disbuff_BJ[1]=BJS%1000%100/10; disbuff_BJ[2]=BJS%1000%10%10; }}/**********************************************************************************************************///定时器0voidzd0()interrupt1 //T0中断用来计数器溢出,超过测距范围{ flag=1; //中断溢出标志}/**********************************************************************************************************///定时器1voidzd3()interrupt3 //T1中断用来扫描数码管和计800MS启动模块{ TH1=0xf8; TL1=0x30; Key_(); Display(); timer++; if(timer>=400) { timer=0; TX=1; //800MS启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; }}/**********************************************************************************************************///主函数voidmain(void){ TMOD=0x11; //设T0为方式1,GATE=1; TH0=0; TL0=0; TH1=0xf8; //2MS定时 TL1=0x3

温馨提示

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

评论

0/150

提交评论