超声波测距C程序.docx

上传人:牧羊曲112 文档编号:3131583 上传时间:2023-03-11 格式:DOCX 页数:3 大小:37.11KB
返回 下载 相关 举报
超声波测距C程序.docx_第1页
第1页 / 共3页
超声波测距C程序.docx_第2页
第2页 / 共3页
超声波测距C程序.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《超声波测距C程序.docx》由会员分享,可在线阅读,更多相关《超声波测距C程序.docx(3页珍藏版)》请在三一办公上搜索。

1、超声波测距C程序#include STC12C.H #include 1602.H #include STDIO.H #include #define NOP _nop_ #define Echo P3_2 #define Trig P1_1 char buff2; sbit test = P20; /检测是否收到回波 char succeed_flag; int timeH; int timeL; /*/ void Ult_wave_init; void delay_10us(void) ; void time0_init; void main float distance; float t

2、ime; test =0; /测试灯 初始为亮 Trig=0; /首先拉低脉冲输入引脚 LCD_init; EA=1; /打开总中断0 TMOD=0x10; /定时器1,16位工作方式 while(1) EA=0; /关总中断 Trig=1; /超声波输入端 delay_10us; /延时20us delay_10us; Trig=0; /产生一个20us的脉冲 while(Echo=0); /等待Echo回波引脚变高电平 succeed_flag=0; /清测量成功标志 EA=1; EX0=1; /打开外部中断0 TH1=0; /定时器1清零 TL1=0; /定时器1清零 TF1=0; /计

3、数溢出标志 TR1=1; /启动定时器1 delay_ms(20); /等待测量的结果 TR1=0; /关闭定时器1 EX0=0; /关闭外部中断0 if(succeed_flag=1) time=timeH*256+timeL; distance=time*0.172; /厘米 sprintf(buff,S=%5.2fCM ,distance);/打印输出结果 dis_str(0,0,buff); /在液晶屏上显示 delay_ms(500); /延时决定采样速度 if(succeed_flag=0) distance=0; /没有回波则清零 test = !test; /测试灯变化 /*

4、/外部中断0,用做判断回波电平 void exter interrupt 0 / 外部中断0是0号 timeH =TH1; /取出定时器的值 timeL =TL1; /取出定时器的值 succeed_flag=1;/至成功测量的标志 EX0=0; /关闭外部中断 /* /定时器1中断,用做超声波测距计时 void timer1 interrupt 3 / TH1=0; TL1=0; void Ult_wave_init / 超声波初始化 Trig=1; /触发信号是高电平脉冲,宽度大于10us delay_10us; delay_10us; /延时20 US Trig=0; void delay_10us(void) /误差 0us unsigned char a,b; for(b=13;b0;b-) for(a=3;a0;a-); void time0_init TH0=0; TL0=0; TR0 = 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号