欢迎来到天天文库
浏览记录
ID:8525647
大小:24.50 KB
页数:6页
时间:2018-03-31
《具有实时语音播报功能的超声波测距仪(c程序)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、#include//调用单片机头文件#defineucharunsignedchar//无符号字符型宏定义变量范围0~255#defineuintunsignedint//无符号整型宏定义变量范围0~65535#include//数码管段选定义0123456789ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//断码//数码管位选定义ucharcodes
2、mg_we[]={0xe0,0xd0,0xb0,0x70};uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};sbitsmg_we1=P3^4;//数码管位选定义sbitsmg_we2=P3^5;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;sbitc_send=P3^2;//超声波发射sbitc_recive=P3^3;//超声波接收ucharsmg_i=3;//显示数码管的个位数bitflag_300ms;longdistance;//距离uintset_d;//
3、距离ucharflag_csb_juli;//超声波超出量程uintflag_time0;//用来保存定时器0的时候的/***********************语音模块控制IO口的定义************************/sbitVRST=P2^3;sbitVBUSY=P2^7;sbitVSDA=P2^6;sbitVCS=P2^5;sbitVSCL=P2^4;ucharyujing[3];/***************************语音地址的安排0-9:对应数字0到90b:点0c:米0d:已超出量程*************
4、*************//***********************1ms延时函数*****************************/voiddelay_1ms(uintq){uinti,j;for(i=0;i5、*********************/voidSend_threelines(unsignedcharaddr){unsignedchari;VRST=0;delay_1ms(5);VRST=1;delay_1ms(20);/*复位拉高20ms*/VCS=0;delay_1ms(5);/*片选拉低5ms*/for(i=0;i<8;i++){VSCL=0;if(addr&0x01){VSDA=1;}elseVSDA=0;addr>>=1;delay_us(150);/*150us*/VSCL=1;delay_us(150);/*150us*/}VCS6、=1;delay_1ms(200);while(VBUSY==0);//忙等待}/***********************数码位选函数*****************************/voidsmg_we_switch(uchari){switch(i){case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break;case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break;case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_7、we4=1;break;case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break;}}/***********************数码显示函数*****************************/voiddisplay(){staticuchari;i++;if(i>=smg_i)i=0;smg_we_switch(i);//位选P1=dis_smg[i];//段选}/******************小延时函数*****************/voiddelay(){_nop_();//执行一8、条_nop_()指令就是1us_nop_();_nop_();_nop_();_
5、*********************/voidSend_threelines(unsignedcharaddr){unsignedchari;VRST=0;delay_1ms(5);VRST=1;delay_1ms(20);/*复位拉高20ms*/VCS=0;delay_1ms(5);/*片选拉低5ms*/for(i=0;i<8;i++){VSCL=0;if(addr&0x01){VSDA=1;}elseVSDA=0;addr>>=1;delay_us(150);/*150us*/VSCL=1;delay_us(150);/*150us*/}VCS6、=1;delay_1ms(200);while(VBUSY==0);//忙等待}/***********************数码位选函数*****************************/voidsmg_we_switch(uchari){switch(i){case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break;case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break;case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_7、we4=1;break;case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break;}}/***********************数码显示函数*****************************/voiddisplay(){staticuchari;i++;if(i>=smg_i)i=0;smg_we_switch(i);//位选P1=dis_smg[i];//段选}/******************小延时函数*****************/voiddelay(){_nop_();//执行一8、条_nop_()指令就是1us_nop_();_nop_();_nop_();_
5、*********************/voidSend_threelines(unsignedcharaddr){unsignedchari;VRST=0;delay_1ms(5);VRST=1;delay_1ms(20);/*复位拉高20ms*/VCS=0;delay_1ms(5);/*片选拉低5ms*/for(i=0;i<8;i++){VSCL=0;if(addr&0x01){VSDA=1;}elseVSDA=0;addr>>=1;delay_us(150);/*150us*/VSCL=1;delay_us(150);/*150us*/}VCS
6、=1;delay_1ms(200);while(VBUSY==0);//忙等待}/***********************数码位选函数*****************************/voidsmg_we_switch(uchari){switch(i){case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break;case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break;case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_
7、we4=1;break;case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break;}}/***********************数码显示函数*****************************/voiddisplay(){staticuchari;i++;if(i>=smg_i)i=0;smg_we_switch(i);//位选P1=dis_smg[i];//段选}/******************小延时函数*****************/voiddelay(){_nop_();//执行一
8、条_nop_()指令就是1us_nop_();_nop_();_nop_();_
此文档下载收益归作者所有