51单片机超声波测距离

上传人:M****1 文档编号:564409106 上传时间:2023-03-22 格式:DOCX 页数:19 大小:351.65KB
返回 下载 相关 举报
51单片机超声波测距离_第1页
第1页 / 共19页
51单片机超声波测距离_第2页
第2页 / 共19页
51单片机超声波测距离_第3页
第3页 / 共19页
51单片机超声波测距离_第4页
第4页 / 共19页
51单片机超声波测距离_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《51单片机超声波测距离》由会员分享,可在线阅读,更多相关《51单片机超声波测距离(19页珍藏版)》请在金锄头文库上搜索。

1、超声波模块原理图:发射接收原理图温度补偿电路:VCC APCB51单片机原理图:(2)单片机I/O引出及晶振电路:oddddddddd1234 5 6781 1 1 1 1A 1A IX IX4039383736353433320 9 8 7 6 543 2 2 2 2 2c21RPlOk(3) LCD1602接口 电路:J9软件部分软件部分主要介绍软件的流程图:C语言程序:/*=调试要求:1. MCU:AT89S52 芯片或 AT89C522. 晶振:12MHz调试注意:本程序带温度补偿,采用DS18B20则量温度1.LCD1602液晶屏有显示后,才接入超声波模块。2注意超声波模块电源的极性

2、。不清楚请参好淘宝的电路图3. 没有选用频率为12MHz晶振,用了别的频率晶振,单片机定时器的测量值与 发出的40KHz频率脉冲不对。4. 使用者经常误发出20KHZ脉冲当40KHZ脉冲。(40KHz频率脉冲,周期25us,占空比为50% = 12.5us)5如果是用开发板调超声波模块,请检查开发板上的电路是否与超声波模块的 控制脚复用了,若复用了,请通过跳线分开发板上的电路。6如果使用的是万用板,请确定单片机的复位电路和晶振电路是否正常,同时 单片机的31脚(EA)记得 接咼电平。=*/#include vreg52. h#include vintrins.h#define uchar un

3、signed char #define uint unsigned int=LCD1602 接 口 定 义#define LCM_Data#define Busysbit LCM_RW sbit LCM_RS sbit LCM_E=超声波模块定义/*IDB0-P2.0 | DB4-P2.4 | RWP0.1|IDB1-P2.1 | DB5-P2.5 | RSP0.2|IDB2-P2.2 | DB6-P2.6 | EP0.0|DB3-P2.3 | DB7-P2.7 | 注意,P0.0到P0.2需要接上拉电阻*/P2数据接口0x80用于检测LCM状态字中的Bus y标识=P0A1; 读写控制输入端

4、,LCD1602的第五脚=P0A2; /寄存器选择输入端,LCD1602的第四脚=P0A0; /使能信号输入端,LCD1602的第6脚sbit RemPin =卩3人2;接收端(这个不能修改,因为是外部中断(INTO)的引脚)sbit TxPin =卩3人1;发射端/ / /p、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、r* 叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、*T* *T*ds18b20数字温度传感器控制引脚定义sbit dq_ds18b2O=P3A3;定义控制 DS18B20/ /V/ /彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、

5、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、y* /LCD显示模块的函数声明voidWriteDataLCM(uchar WDLCM);/LCD 模块写数据void WriteCommandLCM (uchar WCLCM,BuysC); /LCD模块写指令ucharReadDataLCM(void);/LCD 模块读数据ucharReadStatusLCM (void);/读 LCD模 块的忙标void DisplayOneChar (uchar X,uchar Y,uchar ASCII);/在第X+1 行的第Y+1 位置显示一个字符

6、voidvoidvoidvoid(void);(uchar X, uchar Y,int ZhengShu,uchar Digit,ucharDisplayListChar (uchar X,uchar Yuchar delayms,uchar code *DData); DisplayCursorPos (uchar X, uchar Y);LCMInitDisplayIntDataXiaoShu);(uchar X, uchar Y,uchar ZiFu);void DisplayCharData/ / /彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、

7、彳、彳、彳、彳、彳、彳、彳、iy* *T* *T* *T* *T* *T* *T* 叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、*T* *T* *T* *T* 叫、叫、叫、叫、叫、*延时函数声明void delay25us_40KHz(unsigned char us);void DelayUs(uint us);void DelayMs(uint Ms);void delay_3us();/3US 的延时程序void delay_8us( unsigned int t);/8US延时基准程序void delay_50us( unsigned int

8、 t);/ 延时 50*T 微妙函数的声明/ / /彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、iy* *T* *T* *T* *T* *T* *T* 叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、*T* *T* *T* *T* 叫、叫、叫、叫、叫、*/DS18B20测温函数定义void w_1byte_ds18b20(uchar value);/向 DS18B20写一个字节uchar r_1byte_ds18b20(void);从 DS18B20读取一个字节的数据void rest_

9、ds18b20(void);/DS18B20 复位程序void readtemp_ds18b20( void);/ 读取温度void display_temp( void);/温 度显示程序/ / /彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、iy* *T* *T* *T* *T* *T* *T* 叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、*T* *T* *T* *T* 叫、叫、叫、叫、叫、*参数定义uint length = 0; uchar flag = 0; uchar te

10、mpl,temph;/测距的长度0.00M/测距的标志有信号接收=1uint speed;/根据温度计算出来的声音速度uchar t_b,t_s,t_g,t_x;从左到右分别存储温度百位,十位,个位,小数位 uchar flag1;/温度正负性暂存,1为正数,0为负数constunsignedchartabl3=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/*主程序void main(void) uchar i;LCMInit();EX0= 1;*/1602初 始化允许总中断中断

11、,使能INT0外部中断ET0= 1;TMOD=Oxll;设定TO为16位时器,设定T1为16位时器DisplayOneChar( 0,14,m);DisplayListChar(O,O,O, Distanc:);显示字符串while(1)readtemp_ds18b20();display_temp();显示温度for(i=0;iv20;i+)DisplayIntData(0, 13,length,5,3); 显示测量距离TH0=0x00;TL0=0x00;TR0=1;启动定时器0EA= 1;允许所有中断delay25us_40KHz(15); /发出脉冲信号 DelayMs(200);/ /

12、 /彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、iy* *T* *T* *T* *T* *T* *T* 叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、叫、*T* *T* *T* *T* 叫、叫、叫、叫、叫、彳、彳、彳、彳、彳、彳、/温度显示函数void display_temp()if(flag1=1)/温度为正数时的显示程序DisplayOneChar( 1,2,+);else DisplayOneChar( 1,2,-);/显示温度信息DisplayOneChar( 1,0,T);Di

13、splayOneChar( 1,1,:);DisplayOneChar( 1,3,t_s+0x30);DisplayOneChar( 1,4,t_g+0x30);DisplayOneChar( 1,5,.);DisplayOneChar( 1,6,t_x+0x30);/显示速度信息DisplayOneChar( 1,8, S);DisplayOneChar( 1,9,:);DisplayOneChar( 1,10,speed/100% 10+0x30);DisplayOneChar( l,ll,speed/10%10+0x30);DisplayOneChar( 1,12,speed% 10+0x30);DisplayOneChar( 1,13,M);DisplayOneChar( 1,14,7);DisplayOneChar( 1,15,S);/ / / *jw 叫、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、*J *J *J *J *J *y 彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、

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

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

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