1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 55 基于51单片机的超声波测距仪数码管设计

55 基于51单片机的超声波测距仪数码管设计

时间:2021-07-24 00:24:06

相关推荐

55 基于51单片机的超声波测距仪数码管设计

毕设帮助、开题指导、技术解答(有偿)见文末

目录

摘要

一、硬件方案

二、设计功能

三、实物图

四、原理图

五、PCB图

六、程序

部分代码

七、资料包括

摘要

STC89C52是STC系列单片机里应用比较广泛的一款,在自动控制领域里享有很高的价值,以其易用性和多功能性受到了广大电子设计爱好者的好评。本次设计主要是利用STC89C52单片机、超声波传感器完成测距报警系统的制作,以STC89C52为主控芯片,利用超声波对距离的检测,将前方物体的距离探测出来,然后单片机处理运算,与设定的报警距离值进行比较判断,当测得距离小于设定值时,STC89C52发出指令控制蜂鸣器报警。

关键词:超声波传感器 STC89C52

一、硬件方案

单片机的超声波测距仪采用单片机+HC-SR04超声波传感器+数码管+按键+蜂鸣器而成。

二、设计功能

1. 单片机型号:STC89C52/51、AT89C52/51、AT89S52/51 可通用。

2.产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(给单片机提供时钟周期)。

3.数码管显示超声波测到的距离。

4.当超声波测出的距离小于设定的距离时就会使得蜂鸣器报警。

5.可设置 报警距离,按下设置键后 就可以再按 加减键 就可以修改报警距离并具有 掉电保存 功能。

6.HC-SR04超声波传感器模块测距,测量范围:2cm--5m。

三、实物图

四、原理图

五、PCB图

六、程序

部分代码

/******************小延时函数*****************/void delay(){_nop_(); //执行一条_nop_()指令就是1us_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }/*********************超声波测距程序*****************************/void send_wave(){c_send = 1; //10us的高电平触发 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;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定时distance =flag_time0; //读出定时器0的时间distance *= 0.017;// 0.017 = 340M / 2 = 170M = 0.017M 算出来是米if((distance > 600)) //距离 = 速度 * 时间{distance = 888; //如果大于6m就超出超声波的量程 }} }/*********************定时器0、定时器1初始化******************/void time_init() {EA = 1; //开总中断TMOD = 0X11; //定时器0、定时器1工作方式1ET0 = 0; //关定时器0中断 TR0 = 1; //允许定时器0定时ET1 = 1; //开定时器1中断 TR1 = 1; //允许定时器1定时}/***************主函数*****************/void main(){beep = 0; //开机叫一声 delay_1ms(150);P0 = P1 = P2 = P3 = 0xff; //初始化单片机IO口为高电平time_init();//定时器初始化程序while(1){flag_300ms ++; //加1 if(flag_300ms >= 300){flag_300ms = 0;send_wave();//测距离函数if(menu_1 == 0){dis_smg[0] = smg_du[distance % 10]; //显示距离dis_smg[1] = smg_du[distance / 10 % 10];dis_smg[2] = smg_du[distance / 100 % 10] & 0xdf; ;dis_smg[3] = 0xff; //不显示}clock_h_l();//报警函数}

七、资料包括

需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下载地址及提取码。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。