《超声波测距程序》word版

《超声波测距程序》word版

ID:25278892

大小:67.68 KB

页数:5页

时间:2018-11-19

《超声波测距程序》word版_第1页
《超声波测距程序》word版_第2页
《超声波测距程序》word版_第3页
《超声波测距程序》word版_第4页
《超声波测距程序》word版_第5页
资源描述:

《《超声波测距程序》word版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、#include#include#defineucharunsignedchar#defineuintunsignedintsbitlcdrs=P2^3;sbitlcdrw=P2^4;sbitlcden=P2^5;sbitTrig=P1^4;sbitEcho=P3^2;sbitbeef=P2^0;ucharcodenum1[]="distance:";ucharcodenum[]="0123456789";ucharsucceed_flag;longtime,timeH,

2、timeL;//教训time和timeH及timeL一定要定义为long型不然测得的距离有限floatdistance;voiddelay(uintz)//z毫秒{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddelay_50us(uintt){ucharj;for(;t>0;t--)for(j=19;j>0;j--);}voidlcd_write_com(ucharcom)//LCD写指令{lcdrs=0;lcdrw=0;P0=com;delay(1);lcd

3、en=1;delay(1);lcden=0;}voidlcd_write_data(uchardate)//LCD写数据{lcdrs=1;lcdrw=0;P0=date;delay(1);lcden=1;delay(1);lcden=0;}voidlcd_pos(ucharpos){//设定显示位置lcd_write_com(pos

4、0x80);}//***************************************************************//显示数据转换程序voiddisp

5、lay(uinttemp){lcd_pos(0x43);lcd_write_data(num[temp/1000]);lcd_write_data(num[temp/100%10]);lcd_write_data(num[temp/10%10]);lcd_write_data('.');lcd_write_data(num[temp%10]);lcd_write_data('c');lcd_write_data('m');}voiddisplay1(){uchari;lcd_pos(0x01);for(i=0;

6、i<9;i++)lcd_write_data(num1[i]);}voidlcd_init()//LCD初始化{lcden=0;lcdrw=0;lcd_write_com(0x38);lcd_write_com(0x0c);lcd_write_com(0x06);lcd_write_com(0x01);}voidtrans(){Trig=1;//超声波输入端_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(

7、);_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();Trig=0;//产生一个20us的脉冲}//***************************************************************voidmain(){Trig=0;//首先拉低脉冲输入引脚EA=0;//打开总中断0TR1=0;/

8、/IT0=0;TMOD=0x10;//定时器1,16位工作方式TH1=0;//定时器1清零TL1=0;//定时器1清零lcd_init();display1();while(1){trans();delay_50us(1);trans();delay_50us(1);//发送两个超声波while(Echo);TR1=0;while(!Echo);//如果Echo变为高电平马上启动定时器定时TR1=1;ET1=1;EA=1;EX0=1;if(succeed_flag==1){time=timeH*256+time

9、L;//定时的时间distance=(180*time)/10000;//温度补偿cmdisplay(distance*10);//扩大十倍便于显示if(distance>100)beef=~beef;delay(10);TH1=0;TL1=0;}if(succeed_flag==0){distance=1111;//没有回波则清零display(1111);//若测距失败就显示111

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

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

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