超声波测距器的设计内容摘要:

迟 0,接收返回的超声波信号。 由于采用 12MHZ晶振,计数器每记一个数就是 1us,取 20℃ 时的超声波传输速度 v=344m/s,则d=(vt)/2=344t/2=(172T0/106)m=(172T0 /10000)cm 其中 T0为中断 T0的计数值。 测出距离后,结果以十进制 BCD码方式送往 LED显示约 ,然后再发出超声波脉冲重复测量。 主程序流程图如下: Company Logo 四、 系统程序的设计 开始 系统初始化 发送超声波脉冲 等待反射超声波 计算距离 显示结果 Company Logo 四、 系统程序的设计 超声波发生子程序的作用是通过 脉冲信号(频率约 40KHZ的方波),脉冲宽度为 12us左右,同时把计数器 T0打开进行计时。 超声波发生子程序较简单,但要求程序运行时间准确,所以采用汇编语言程序编程。 超声波测距主程序利用外中断 0检测返回超声波信号,一旦接收到返回的超声波信号(即 INT0引脚出现低电平),立即进入超声波接收中断程序。 进入该中断后,就立即关闭计时器 T0,停止计时,并将测距成功标志字赋 1。 如果当计时器溢出时还未检测到超声波返回信号,则定时器 T0溢出中断将外中断 0关闭,并将测距成功标志字赋值 2,表示本次测距不成功。 Company Logo 四、 系统程序的设计 4. C程序代码 /* 超声测距器单片机程序 MCU AT89C51 XAL 12MHz */ include define uchar unsigned char define uint unsigned int define ulong unsigned long extern void cs_t(void)。 extern void delay(uint)。 extern void display(uchar*)。 data uchar testok。 Company Logo 四、 系统程序的设计 /*主程序 */ void main(void) { data uchar dispram[5]。 data uint i。 data ulong time。 P0 = 0xff。 P2 = 0xff。 TMOD = 0x11。 IE = 0x80。 while (1) { cs_t()。 delay(1)。 testok = 0。 EX0 = 1。 ET0 = 1。 while (!testok) display(dispram)。 Company Logo 四、 系统程序的设计 if (1 == testok) { time = TH0。 time = (t。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。