超声波测距程序

上传人:第*** 文档编号:38982803 上传时间:2018-05-10 格式:DOC 页数:4 大小:40.50KB
返回 下载 相关 举报
超声波测距程序_第1页
第1页 / 共4页
超声波测距程序_第2页
第2页 / 共4页
超声波测距程序_第3页
第3页 / 共4页
超声波测距程序_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《超声波测距程序》由会员分享,可在线阅读,更多相关《超声波测距程序(4页珍藏版)》请在金锄头文库上搜索。

1、/晶振=8M /MCU=STC10F04XE /P0.0-P0.6 共阴数码管引脚 /Trig = P10 /Echo = P32 #include /包括一个 52 标准内核的头文件 #define uchar unsigned char /定义一下方便使用 #define uint unsigned int #define ulong unsigned long sbit Trig = P10; /产生脉冲引脚 sbit Echo = P32; /回波引脚 sbit test = P11; /测试用引脚 sbit wei =P26; sbit duan=P27;uchar code SEG

2、710=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f; /,0x77,0x7c, /0x39,0x5e,0x79,0x71;/数码管 0-9 uint distance4; /测距接收缓冲区 uchar ge,shi,bai,qian,temp,flag,outcomeH,outcomeL,i; /自定义寄存器 bit succeed_flag; /测量成功标志 /*函数声明 void conversion(uint temp_data); void delay_20us(); void delay(uint m); void main(

3、void) / 主程序 uint distance_data,a,b;uchar CONT_1; i=0;flag=0; test =0; Trig=0; /首先拉低脉冲输入引脚 TMOD=0x11; /定时器 0,定时器 1,16 位工作方式 TR0=1; /启动定时器 0IT0=0; /由高电平变低电平,触发外部中断 ET0=1; /打开定时器 0 中断 EX0=0; /关闭外部中断 EA=1; /打开总中断 0while(1) /程序循环 EA=0;Trig=1;delay_20us();Trig=0; /产生一个 20us 的脉冲,在 Trig 引脚 while(Echo=0); /等

4、待 Echo 回波引脚变高电平succeed_flag=0; /清测量成功标志EX0=1; /打开外部中断TH1=0; /定时器 1 清零TL1=0; /定时器 1 清零TF1=0; /TR1=1; /启动定时器 1EA=1;while(TH1 =3) CONT_1=0;b=a;conversion(b); delay(150); /* /外部中断 0,用做判断回波电平INTO_() interrupt 0 / 外部中断是 0 号 outcomeH =TH1; /取出定时器的值outcomeL =TL1; /取出定时器的值succeed_flag=1; /至成功测量的标志EX0=0; /关闭外

5、部中断 /* /定时器 0 中断,用做显示 timer0() interrupt 1 / 定时器 0 中断是 1 号 TH0=0xfd; /写入定时器 0 初始值TL0=0x77; switch(flag) case 0x00:wei=1;P0=0xfe; wei=0; duan=1; P0=ge; duan=0; flag+; break;case 0x01:wei=1;P0=0xfd; wei=0; duan=1; P0=shi; duan=0; flag+; break;case 0x02: wei=1; P0=0xfb; wei=0; duan=1; P0=bai; duan=0; f

6、lag+; break;case 0x03: wei=1;P0=0xf7; wei=0; duan=1; P0=qian; duan=0; flag=0; break; /显示数据转换程序 void conversion(uint temp_data) uchar ge_data,shi_data,bai_data,qian_data ; qian_data=temp_data/1000; temp_data=temp_data%1000;bai_data=temp_data/100 ;temp_data=temp_data%100; /取余运算shi_data=temp_data/10 ;t

7、emp_data=temp_data%10; /取余运算ge_data=temp_data;qian_data=SEG7qian_data;bai_data=SEG7bai_data;shi_data=SEG7shi_data;ge_data =SEG7ge_data;EA=0; qian=qian_data;bai = bai_data;shi = shi_data;ge = ge_data ; EA=1; /* void delay_20us() uchar bt ;for(bt=0;bt100;bt+); void delay(uint m) uchar i,j; for(i=0;im;i+) for(j=0;j124;j+);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号