具有实时语音播报功能的超声波测距仪(C程序)

合集下载

9超声波测距程序超声波发射程序.c]

9超声波测距程序超声波发射程序.c]

1.#include<REG52.H>2.#include<INTRINS.H>3.#define uchar unsigned char4.#define uint unsigned int5.#define ulong unsigned long6.7.uint c;8.ulong l,time;9.char i=1,j=1,k=80;10.char t,tp=10,ts,tg,lb,ls,lg,lsf,fh,cb,cs,cg;11.sbit RW=P2^1;12.sbit RS=P2^0;13.sbit E=P2^2;14.sbit rece=P3^3;15.sbit tup=P1^1;16.sbit tdown=P1^0;17.sbit aj=P1^2;18.sbit reset=P1^3;19.20.sbit sg=P3^7;21.sbit DQ=P3^5;22.sbit ctl=P3^5;23.24.25.void delay(uint i)26.{while(i--);27. }28.29.//************液晶显示***************//30.31.void writercom(uchar q)32.{E=1;33. RS=0;34. RW=0;35. P0=q;36. E=0;37. delay(20);38. }39.40.void writerdata(uchar o)41.{42. E=1;43. RS=1;44. RW=0;45. P0=o;46. E=0;47. delay(20);48. }49.50.void writer_d(uchar *u)51.{while(*u)52. writerdata(*u++);53. }54.55.void xsinit(void)56.{writercom(0x01);57. writercom(0x38);//使用8位数据,显示两行,使用5*7的字型//58. writercom(0x0c);//显示设置,不显示光标,字符不显闪琐//59. writercom(0x06);//光标从左往右移,内容不移//60.61. }62.63.pdisplay()64.{writercom(0x80);65. writer_d("Press any key ");66. writercom(0xba);67. writer_d(" to continue...");68. delay(2000);69.70.}71.72.bdisplay()73.{writercom(0x80);74. writer_d("Ultrasonic ");75. writercom(0xba);76. writer_d(" range finder");77. delay(60000);78. }79.80.ipdisplay()81.{writercom(0x80);82. writer_d(" Please input ");83. writercom(0xba);84. writer_d("T(");85. writerdata(0xdf);86. writer_d("C) with K1,K2.");87. delay(2000);88. }90.91.92.//*************超声波测距*************************//93.94.void csbinit() //初始化程序,计数/定时器状态 //95.{TMOD=0x12; //定时器1工作在定时方式1,定时器0工作在定时方式2//96. IE=0x84; //中断设置//97. TH0=244;98. TL0=244;99. }100.101.void sen() //超声波发射程序//102.{uchar times=0;103. TR0=1;104. TR1=1; //开定时器//105.while(1)106. {while(TF0==0);107. sg=~sg;108. times++; //翻转20次,发送10个脉冲信号的超声波//109. TF0=0;110.if(times==20)break;}111. times=0;112.}113.114.csbdata()115.{lb=l/1000000;116. ls=l%1000000/100000;117. lg=l%1000000%100000/10000;118. lsf=l%1000000%100000%10000/1000;119.if(lsf>=5)120. lg=lg+1;121.}122.123.rec()interrupt 2 using 2//接收中断程序//124.{TR1=0;//关计数器//125. ctl=0;126. time=TH1*256+TL1; //算出t的值,t的单位为us//127. l=time*c/2;128. TH1=0;129. TL1=0;130. }131.132.display1()134.while(k--)135. {ipdisplay();136.if(tup==0||tdown==0||reset==0||aj==0){i=0;break;} 137. }138. k=60;139.while(k--)140. {pdisplay();141.if(tup==0||tdown==0||reset==0||aj==0){i=0;break;} 142. }143. k=60;144. }145.measure()146.{csbdata();147.while(1)148. {if(aj==1)break;}149. ctl=0;150. sen();151. delay(200);152. ctl=1;153. }154.155.156.display2()157.{writercom(0x80);158. writer_d("T:");159. writerdata(fh);160. writerdata(ts+0x30);161. writerdata(tg+0x30);162. writerdata(0xdf);163. writer_d("C ");164. writer_d("c=");165. writerdata(cb+0x30);166. writerdata(cs+0x30);167. writerdata(cg+0x30);168. writer_d("m/s");169.while(i)170. {while(k--)171. {writercom(0xba);172. writer_d("Press K3 measure");173.if(aj==0){i=0;break;}174. delay(2000);}175. k=20;176.while(k--)178. writer_d(" ");179.if(aj==0){i=0;break;}180. delay(2000);}181. k=20;182. }183. i=1;184. measure();185. delay(2000);186. csbdata();187. writercom(0x80);188.if(l<=360000)writer_d("too near! "); 189.else if(TH1>=93)writer_d("too long! "); 190.else {csbdata();191. writer_d("L=");192. writerdata(lb+0x30);193. writerdata('.');194. writerdata(ls+0x30);195. writerdata(lg+0x30);196. writer_d("m ");197. writer_d("T:");198. writerdata(fh);199. writerdata(ts+0x30);200. writerdata(tg+0x30);201. writerdata(0xdf);202. writer_d("C ");203. }204.while(i)205.{writercom(0xba);206. writer_d("Press K4 again..");207.if(tup==0&&tdown==0){j=0;break;}208.if(reset==0){i=0;break;}209.210. }211.}212.//***************温度输入程序**************// 213.iptemp()214.{while(1)215. {if(t<0){fh=0x2d;t=~t+1;}216.else{fh=0x20;}217. ts=t/10;218. tg=t%10;219. writercom(0x80);220. writer_d(" T:");222. writerdata(ts+0x30);223. writerdata(tg+0x30);224. writerdata(0xdf);225. writer_d("C ");226.if(tup==0){tp++;if(tp>=99)tp=99;}227. delay(7000);228.if(tdown==0){tp--;if(tp<=(-30))tp=(-30);} 229. t=tp;230. delay(7000);231. writercom(0xba);232. writer_d("Press K4 finish ");233.if(reset==0)break;234. }235.}236.//********声速处理程序************************// 237.sscl()238.{c=340;239.240. cb=c/100;241. cs=c%100/10;242. cg=c%100%10;243. }244.245.//***************主程序***************//246.main()247.{while(1)248.{xsinit();249. csbinit();250. bdisplay();251. bdisplay();252. bdisplay();253. bdisplay();254. bdisplay();255. ipdisplay();256. ipdisplay();257.while(i)258. {display1();259. }260. i=1;261. delay(20000);262. iptemp(); //调温度输入函数//263. sscl();264. delay(20000);265.while(j) 266.{display2(); 267. i=1;268.269.}270.j=1;271.delay(60000); 272.}273.}。

C语言超声波测距程序 亲测可运行! 附代码数据

C语言超声波测距程序 亲测可运行!  附代码数据

#include<reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit rs=P2^0; //1602的数据/指令选择控制线sbit rw=P2^1; //1602的读写控制线sbit en=P2^2; //1602的使能控制线sbit trig=P2^5; //超声波测距模块Trigsbit echo=P3^2; //超声波测距模块Echobit flag1; //触发信号标志位//uchar count; //中断累加变量long int distance; //测量所得距离unsigned char code table[ ]={"0123456789"}; //定义字符数组显示数字/*------------------------------------------------延时函数------------------------------------------------*/void delay(uint n){uint x,y;for(x=n;x>0;x--)for(y=110;y>0;y--);}/*------------------------------------------------延时函数------------------------------------------------*/void delayt(uint x){uchar j;while(x-- > 0){for(j = 0;j < 125;j++){;}}}/*------------------------------------------------1602写命令函数------------------------------------------------*/void lcd_wcom(uchar com){rs=0; //选择指令寄存器rw=0; //选择写P0=com; //把命令字送入P0delay(5); //延时一小会儿,让1602准备接收数据en=1; //使能线电平变化,命令送入1602的8位数据口,这点非常重要en=0;}/*------------------------------------------------1602写数据函数------------------------------------------------*/void lcd_wdat(uchar dat){rs=1; //选择数据寄存器rw=0; //选择写P0=dat; //把要显示的数据送入P0delay(5); //延时一小会儿,让1602准备接收数据,也就是检测忙信号,这点非常重要。

超声波测距仪C语言程序.txt

超声波测距仪C语言程序.txt
TR1=1;
while(1)
{
keyscan();
if(jpjs<1)
{
csbcj();
if(s>sj3)
void scanLED(); //显示函数
void timeToBuffer(); //显示转换函数
void keyscan();
void k1cl();
void k2cl();
void k3cl();
}
}
}
void k1cl()
{
sj1=sj1+5;
if(sj1>100)
sj1=30;
s=sj1;
}
void k2cl()
{
sj2=sj2+5;
if(sj2>500)
sj2=40;
s=sj2;
}
void k3cl()
unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;
bit cl;
void csbcj();
void delay(j); //延时函数
if((P3&0x10)==0) //判断3位是否显示完
key=0;
digit>>=1; //循环右移1位
}
}
void timeToBuffer() //转换段码功能模块
}
void delay(i)
{
while(--i);
}
void timer1int (void) interrupt 3 using 2
{
TH1=0x9E;

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

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

具有实时语音播报的超声波测距测速仪(C题)摘要:本文研究内容为实时语音播报的测距测速仪,利用超声波进行距离测量,测量精度在厘米级别,适用于近距离测距。

本系统以STC12C5A60S为微处理芯片,其产生40kHz频率,再利用超声波换能器TCT40-16T产生超声波信号并发射出去,由TCT40-16R接收超声波信号,并利用超声波专用芯片CX20106A检波、处理超声波信号,最后发送给微处理器。

微处理器通过计算得到与障碍物的距离,并通过所得距离计算出物体的移动速度。

微处理器通过串口控制JQ6500语音模块。

当微处理器计算得到障碍物的距离和物体移动速度时,微处理器发送指定的命令,驱动语音模块播放保存在FLASH中的语音,实现实时语音播报。

关键词:STC12C5A60S2;JQ6500;超声波。

1 系统方案设计设计任务根据命题要求,设计并制作一台具有实时语音播报的超声波测距测速仪。

A. 具有超声波测距功能,测量距离~,测距精度±1cm;B. 自动语音实时播报测量距离数值;实时播报时间间隔t≤10s;实时语音播报清晰明亮、无明显失真,在1米距离处人耳能准确分辨。

C. 实时显示测量的距离和速度,并且显示内容要与语音播报内容同步。

总体设计方案具有实时语音播报的超声波测距测速仪由6部分组成:超声波发射模块、超声波接收模块、51单片机最小系统、LCD1602显示模块、JQ6500语音播报模块、按键模块组成。

图1-1 超声波测距测速仪组成图声波测速测距原理声波测距原理超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到发射波就立即停止计时。

假设超声波在空气中的传播速度为V,根据计时器记录的时间T,发射点距障碍物的距离S,如图1-2所示。

MS T Ra图1-2 声波测距示意图两探头中心距离的一半用M 表示,超声波单程所走过的距离用L 表示,可得:(公式1-1)(公式1-2)在整个传播过程中,超声波所走过的距离为:(公式1-3)由公式(公式1-1)、(公式1-2)、(公式1-3))可得: (公式1-4)当被测距离S 远远大于M 时,上式变为: (公式1-5)因为本设计测距精度为厘米级别,对误差要求不是很高,所以将声速取值为在20℃的时的传播速度,即V=344米/秒。

具有实时语音播报的超声波测距测速仪设计

具有实时语音播报的超声波测距测速仪设计
me t h o d o f t h e v e l o c i t y a n d d i s t a n c e me a s u r e me n t b y t h e u l t r a s o n i c . Ta k i n g S T C8 9 C 5 2 RC a s t h e p r i ma r y c o n t r o l l e r ,t h e u h r a s o n i c d i r v e s i g n a l i s l a u n c h e d b y t h e t i me r a n d 1 2 8 6 4 LC D d i s p l a y a n d I S D4 0 0 4 v o i c e b r o a d c a s t o f t h e me a s u r i n g r e s u l t s a r e r e a l i z e d b y t h e d y n a mi c
液 晶显 示和 I S D 4 0 0 4语 音 播 报 。
Ab s t r a c t :B y t h e a d v a n t a g e s o f h i s h d i r e c t i v i t y , s l o w e n e r g y c o n s u mp t i o n a n d l o n g p r o p a g a t i o n d i s t a n c e i n t h e me d i u m, he t u l t r a s o n i c
曹永红 C AO Yo n g - h o n g ; 刘小 亮 L I U X i a o - l i a n g
( 石 家庄 铁 道 大 学 四 方学 院 , 石 家庄 0 5 1 1 3 2)

具有实时语音播报的超声波测距测速仪设计

具有实时语音播报的超声波测距测速仪设计

具有实时语音播报的超声波测距测速仪设计作者:曹永红等来源:《价值工程》2014年第32期摘要:超声波凭借自身指向性强、能量消耗缓慢,以及在介质中传播距离远等优势,进而广泛应用于距离测量。

与其它检测方式相比,超声波作为一种非接触式的检测方式,在检测过程中不受光线、被测对象颜色等因素的影响和制约。

本文介绍了超声波测距测速的原理和方法。

以STC89C52RC单片机作为主控制器,用定时器实现超声波驱动信号的发射,用动态扫描法实现测量结果的12864液晶显示和ISD4004语音播报。

Abstract: By the advantages of high directivity, slow energy consumption and long propagation distance in the medium, the ultrasonic is widely used in the distance measurement. Compared with other detection methods, as a contactless detection method, the ultrasonic is not affected and controlled by the light and the color of the measured object in the detection process. This paper introduces the principle and method of the velocity and distance measurement by the ultrasonic. Taking STC89C52RC as the primary controller, the ultrasonic drive signal is launched by the timer and 12864 LCD display and ISD4004 voice broadcast of the measuring results are realized by the dynamic scanning method.关键词:超声波;测距测速;单片机;液晶显示;语音播报Key words: ultrasonic;distance and velocity measurement;singlechip;LCD;voice broadcast中图分类号:TH761 文献标识码:A 文章编号:1006-4311(2014)32-0065-020 引言对于蝙蝠等一些无目视能力的生物来说,借助超声波定位技术进行防御、捕捉猎物等维持自身的生存,也就是生物体发射超声波(超过20kHz的机械波),一般不能被人们所听到,这种超声波是借助空气等媒质进行传播,借助被捕捉的猎物或障碍物反射回来的回波的强弱和时间间隔的长短判断猎物或障碍物位置的方法,根据这一原理,人们提出了超声波测距。

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


片机 。 “ 4 ” 2 B的 R 19 有 k AM, 0 B的 Fah 内部 自带温度 6k ls ,
路 。其特 点是无激励信 号时 , 个功放管 的静态 电流 为零 ; 两 有 信 号激励 时, 两管 交替 工作 , 输 出半 波信 号 , 起来成 各 合
传感器 , AD转 换器 。“ 4 ” 和 / 19 有两 个 l 6位 A、 B定时器和
Absr t T e p p ri a e n t e mi r o tolrMS 4 0 4 . h e tr ̄ q e c futa o i t ac : h a e sb s d o c c nr l P 3 F1 9 T e c n e e u n y o l s n c ̄n o 0 Hz h h o e r s ri 4 k . e s T
o tg o la e t n ’ o tg n o n i g ta s t t e we n u t s n c s n i g a d r c ii g L v l e a d c u t r mi i a n n me b t e l a o i e d n r n e ev n .
模 型进行 了 PD控制和 模糊 自整定 PD控制 仿真 运算 , I I 在
两种控制方 式下 的阶 跃响应仿真 曲线如 图 3所示 。 从图 3中可 以看 出, 由于 模糊控 制器 能够根 据系统误 差 E和误差 变化 率 E C对 PD 的三个 参数 K 、 IK I P K 、 D进行 在线修正 ,因此 得到 的系统动 态响应 曲线 较好 ,响应速度 快、 超调量 小 、 稳态 精度 高 , 在抗 干 扰 能力和 对象 参数 变化 时 的适应性好 。系统在设 定值 范 围 内振荡减 弱 , 比常规 PD I

“美亚光电”杯安徽省第三历真题

集成电路芯片测试仪( A 题)一、任务设计制作一个集成电路芯片测试仪,能对常用的 74系列逻辑芯片进行逻辑功能测试,以确定芯片的好坏和型号。

二、要求 1.基本要求( 1)通过键盘输入型号,可以对74系列的 00/02/04 /08/10/11/20/21/27/30十种组合逻辑集成电路芯片测试仪(A题)一、任务设计制作一个集成电路芯片测试仪,能对常用的74系列逻辑芯片进行逻辑功能测试,以确定芯片的好坏和型号。

二、要求1.基本要求(1)通过键盘输入型号,可以对74系列的00/02/04/08/10/11/20/21/27/30十种组合逻辑芯片进行逻辑功能测试,确定其功能正确性;(2)通过键盘输入管腿特性,可以确定上述74系列的组合逻辑芯片的型号;(3)显示上述芯片的逻辑符号和逻辑表达式。

2.发挥部分将上述三项基本要求扩展到74系列时序电路:74/109/160/245等。

(1)通过键盘输入型号,可以对74系列的74/109/160/245等芯片进行逻辑功能测试,确定其功能正确性;(2)通过键盘输入管腿特性,可以确定上述74系列时序逻辑芯片的型号;(3)显示上述芯片的逻辑符号和状态转换图;(4)其它特色与创新。

三、评分标准四、说明要求用单片机或DSP模块做成一个相对独立的整体,不能用PC机实现。

“美亚光电”杯安徽省第三届B题------分隔线----------------------------时间:2009-10-01 02:02来源:未知作者:admin 点击:497次LED 显示棒( B 题)一、任务设计制作一个依靠摇动能显示字符、图形的LED显示棒。

二、要求 1.基本要求( 1)设计一个基于LED的显示棒,LED 灯必须线状排列,至少使用16只。

( 2)摇动时形成的亮灯扇形区域能够让人分辨出A字符。

( 3)摇动时形成的亮灯LED显示棒(B题)一、任务设计制作一个依靠摇动能显示字符、图形的LED显示棒。

超声波测距仪代码(C)

ulong TIME; uchar DISTANCE; uchar code discode[11]={'0','1','2','3','4','5','6','7','8','9',' '}; ulong data disnum[5]; bit data ReceiveOK=0; bit data TOut; bit data FLAG;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_ (); _nop_();_nop_(); CSOut=1;//6
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_ (); _nop_(); CSOut=0;//7
Hale Waihona Puke if(FLAG==1) //启动测量一次 {
TH0=0x00; TL0=0x00; TIME=0x00;
ET0=1; CCOut(); ct=100; while(--ct); EX0=1; while(TOut==0) {
if(ReceiveOK==1) //接收成功 {
DataProcess(); //数据处理
/*-----------------------------------------------------------*/ //出错提示函数 /*-----------------------------------------------------------*/ void ErrorDisplay(void) { lcd_home(); lcd_writestr(0,0," 超声波测距仪 "); lcd_writestr(1,0,"********"); lcd_writestr(2,0,"未收到回波信号,"); lcd_writestr(3,0,"请缩短测量距离!"); }

超声波测距12864显示程序带语音播报

#include <AT89X52.H>
#include <string.h>
#include "stdio.h"
#define uchar unsigned char
#define uint unsigned int
#define LCD_DATA P2 //数据口
sbit RS=P3^7;
flag=0;
time=0;
P16=1;
}
if((flag==1)&&(time>=200)&&(time<=500)){
Dis_string(1,0,"距离");
Dis_string(1,7,"米");
display(time,4);
Dis_string(2,2,string2);
}
void main()
{
flag=0;
P0=0XFF;
P14=0;
P15=0;
P16=0;
LcdInit(); //液晶初始化
Clear_txt();//清除液晶上的的文本
Dis_string(0,2,"欢迎使用");
Dis_string(2,0,"超声波测距离系统");
void DelayMs(uint z)
{
uint x,y;
for(x=z;x!=0;x--)
for(y=255;y!=0;y--);
}
//延时函数
void delay(unsigned int MS)
{
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if((flag_time0 > 40000)) //当超声波超过测量范围时,显示3个888
{
TR0 = 0;
flag_csb_juli = 2;
distance = 888;
break ;
}
else
{
flag_csb_juli = 1;
}
}
if(flag_csb_juli == 1)
{
TR0=0;//关定时器0定时
uchar dis_smg[8] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
sbit smg_we1 = P3^4;//数码管位选定义
sbit smg_we2 = P3^5;
sbit smg_we3 = P3^6;
sbit smg_we4 = P3^7;
sbit c_send = P3^2;//超声波发射
}
}
}
/***********************处理距离函数****************************/
void smg_display()
{
dis_smg[0] = smg_du[distance % 10];//距离取出来放在缓冲区了
dis_smg[1] = smg_du[distance / 10 % 10];
/***************************
语音地址的安排
0 - 9:对应数字0到9
0b :点
0c :米
0d :已超出量程
**************************/
/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
/***********************小延时函数**************************/
void delay_us (unsigned int us)
VSCL=1;
delay_us(150); Fra bibliotek* 150us */
}
VCS=1;
delay_1ms(200);
while(VBUSY == 0);//忙等待
}
/***********************数码位选函数*****************************/
void smg_we_switch(uchar i)
{
while(us--)
{
_nop_();
}
}
/***********************三线发码子程序************************/
void Send_threelines(unsigned char addr)
{
unsigned char i;
VRST=0;
delay_1ms(5);
delay();
c_send = 0;
TH0 = 0;//给定时器0清零
TL0 = 0;
TR0 = 0;//关定时器0定时
while(!c_recive);//当c_recive为零时等待
TR0=1;
while(c_recive)//当c_recive为1计数并等待
{
flag_time0 = TH0 * 256 + TL0;
{
switch(i)
{
case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;
case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;
case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;
i++;
if(i >= smg_i)
i = 0;
smg_we_switch(i);//位选
P1 = dis_smg[i];//段选
}
/******************小延时函数*****************/
void delay()
{
_nop_();//执行一条_nop_()指令就是1us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/*********************超声波测距程序*****************************/
void send_wave()
{
c_send = 1;//10us的高电平触发
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;
}
else
VSDA=0;
addr>>=1;
delay_us(150); /* 150us */
dis_smg[2] = smg_du[distance / 100 % 10] & 0x7f;
yujing[0] = distance % 10;//距离放到语音的变量里
yujing[1] = distance / 10 % 10;
yujing[2] = distance / 100 % 10;
}
/*********************定时器0、定时器1初始化******************/
void time_init()
{
EA = 1;//开总中断
TMOD = 0X11;//定时器0、定时器1工作方式1
ET0 = 0;//关定时器0中断
TR0 = 1;//允许定时器0定时
ET1 = 1;//开定时器1中断
smg_display();//处理距离显示函数
time_init();//定时器初始化程序
send_wave();//测距离函数
send_wave();//测距离函数
while(1)
{
if(flag_300ms == 1)
{
flag_300ms = 0;
send_wave();//测距离函数
smg_display();//处理距离显示函数
Send_threelines(yujing[1]);
Send_threelines(yujing[0]);
Send_threelines(0x0c);
}
}
}
}
}
/*********************定时器1中断服务程序************************/
void time1_int() interrupt 3
sbit c_recive = P3^3;//超声波接收
uchar smg_i = 3; //显示数码管的个位数
bit flag_300ms ;
long distance;//距离
uint set_d;//距离
uchar flag_csb_juli; //超声波超出量程
uint flag_time0; //用来保存定时器0的时候的
case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;
}
}
/***********************数码显示函数*****************************/
void display()
{
static uchar i;
TR1 = 1;//允许定时器1定时
}
/***************主函数*****************/
void main()
{
static uchar value = 5;
P0 = P1 = P2 = P3 = 0xff;//初始化单片机IO口为高电平
send_wave();//测距离函数
/***********************语音模块控制IO口的定义************************/
sbit VRST = P2^3;
sbit VBUSY= P2^7;
sbit VSDA = P2^6;
sbit VCS = P2^5;
sbit VSCL = P2^4;
uchar yujing[3];
#include <reg52.h>//调用单片机头文件
#define uchar unsigned char //无符号字符型宏定义变量范围0~255
#define uint unsigned int//无符号整型宏定义变量范围0~65535
#include <intrins.h>
//数码管段选定义0 1 2 3 4 56789
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//断码
相关文档
最新文档