具有实时语音播报功能的超声波测距仪

上传人:桔**** 文档编号:546207421 上传时间:2022-07-16 格式:DOCX 页数:7 大小:16.50KB
返回 下载 相关 举报
具有实时语音播报功能的超声波测距仪_第1页
第1页 / 共7页
具有实时语音播报功能的超声波测距仪_第2页
第2页 / 共7页
具有实时语音播报功能的超声波测距仪_第3页
第3页 / 共7页
具有实时语音播报功能的超声波测距仪_第4页
第4页 / 共7页
具有实时语音播报功能的超声波测距仪_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《具有实时语音播报功能的超声波测距仪》由会员分享,可在线阅读,更多相关《具有实时语音播报功能的超声波测距仪(7页珍藏版)》请在金锄头文库上搜索。

1、include 调用单片机头文件define uchar unsigned char 无符号字符型 宏定义变量范I韦I 02 55#define umt unsigned mt 无符号整型 宏定义 变量范【韦I 065535 #iiiclude 数码管段选定义 0123456789uchar code smg_du=OxcO,Ox:D,0xa4,0xb0,0x99,0x92,0x82,0xfB.0x80,0x90,0x88,0x83,0xc6,0xaI,0x86,0x8e,0xff;/断码/数码管位选定义uchar code smg_we=0xe0.0xd0.0xb0,0x70);uchar

2、dis_smg8 =0xc0,0xM0xa4.0xb0,0x99,0x92,0x82,0xfB;sbit smg_wel = P3A4;sbit smg_we2 = P3A5;sbit smg_we3 = P3A6;sbit smg_we4 = P3A7;sbit c_send = P3A2;sbit c_recive = P3Z3;/数码管位选定义超声波发射超声波接收uchar smg_i = 3;bit flag_300ms ;/显示数码管的个位数long distance;umt set_d;uchar fla&csb 项】li;umt flag_tiineO;距离距离/超声波超出量程用

3、来保存定时器0的时候的,*左* 语音模块才空布 JQ | | 的定义 * 左 * 左 */sbit VRST = P2,、3;sbit VBUSY= P2A7;sbit VSDA = P2A6;sbit VCS =P2A5;sbit VSCL = P2A4;uchai yujing3;*:$:*语音地址的安排0-9 :对应数字0到9Ob点0c米Od已超出量程*/悻* 1ms 延时函数*/ void delay_lms(umt q)uint ij;for(i=O;iq;i-H-)foi(j=0j120j+);,性 * *、延日寸函数 * * void delay_us (unsigned int

4、 us)while(us)j_nop_();,性*三线发斤马子程序 * */void Send_tlueelines(unsigned chai addi)unsigned char i;VRST=0;delay_lnis(5);VRST=1;delay_lnis(20); /* 复位拉高 20ms*/VCS=0;delay_lnis(5); /* 片选拉低 5nis */fbr(i=0;ioldou oldou oldou oldou oldou oldou oldou oldou oldou 。dou()喜P p-.-*卷 *sODmsISJP Hid f3【E Ms源SmsOH】hamH

5、wqonoqssvoid send_waveQc_send = 1;delayO;c_send = 0;THO = 0;TLO = 0;TRO = 0;wlule(!c_recive);TRO=1;while(c_recive)/IOus的高电平触发给定时器0清零关定时器0定时当c_recive为零时等待当c.recive为1计数并等待flagtimeO = THO * 256 + TLO; if(flag_tiineO 40000)当超声波超过测量范闱时,显示3个888TRO = 0;flag_csbjuli = 2; distance = 888;break;)elseflag_csb_j

6、uli = 1;)if(flag_csbjuli = 1)fTR0=0:distance =flag_tuueO;distance *=0.017;米if(distance 500)distance = 888;)关定时器0定时读出定时器0的时间/ 0.017 = 340M/2 = 170M = 0.017M 算出来是/距离=速度*时间如果大于3.8m就超出超声波的量程伟*:$:*左*左* *:$:*本处理艮巨离函数*:$:* *左*左*左*左*左*左*左*/ void smg_display()dis_smgO = smg_dudistance % 10;距离取出来放在缓冲区了dis_smg

7、l = smg_dudistance /10 % 10;disusing=smg_du distance /100 % 10 & 0x7f;yujing0 = distance % 10;距离放到语音的变量里yujingl = distance /10 % 10;yujing2 = distance /100 % 10;j*定时器 、定时器初始化*voidEA =1;/开总中断TMOD = OXU;定时器0、定时器1工作方式1ET0 = 0;/关定时器0中断TR0 = l;允许定时器。定时ET1 = 1;/开定时器1中断TRI = 1;允许定时器1定时void main()static uch

8、ar value = 5;P0 = Pl=P2 = P3 = 0xff;/初始化单片机IO I】为高电平send_wave(); 测距离函数 smg_displayQ;/处理距离显示函数 tune_init();/定时器初始化程序send_wave(); 测距离函数 send_vave(); 测距离函数 wlule(l)if(flag_300ms = 1)(flag_300ms = 0;send_wave(); /测距离函数 smg_display(); 处理距离显示函数 value +;if(value 10)3秒钟自动播放一次value = 0;if(distaiice = 888)Sen

9、d_tlueelines(OxOd); 语音播放己超出量程else(Send_tlueelmes(yujmg );/语音播放Send_tlueelines(OxOb);Send_tlueelines(yujiiig 1 );Send_tlueelines(yujiiigO);Send_tlueelines(OxOc);)伟*左*左*定时器中断月艮务程序*左*却*左*/voidiiiternipt 3static uchar value;定时 2ms 中断一次TH1 =0xf8;TL1 = 0x30; /2nisdisplayO;数码管显示函数value+;if(value = 150)value = 0;flag_300nis = 1;

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

当前位置:首页 > 学术论文 > 其它学术论文

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