基于51单片机的超声波测距系统设计

2023-03-03  

功能:

超声波测距仪,测量距离,用LCD12864显示信息。 lcd_writestr(0,0," 超声波测距仪 "); lcd_writestr(1,0,"********"); lcd_writestr(2,0,"当前被测距离为:"); lcd_writestr(3,0," 厘米 ");


程序运行图:

原理图:


部分程序:

/*****************************************************

* 功能:超声波测距


******************************************************/

#include

#include "intrins.h"

#include "12864LCDdriver.h"

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long int

#define V=173

sbit CSOut=P1^7;

sbit Start=P1^4;


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;


/*********************************************************

* 函数名称:void delay2(uchar x)

* 功 能:延时函数

* 入口参数:无

* 出口参数:无

*********************************************************/

void delay2(uchar x)

{

uchar a,b;

for(a=0;afor(b=0;b<255;b++);

}


/*********************************************************

* 函数名称:void init(void)

* 功 能:初始化

* 入口参数:无

* 出口参数:无

*********************************************************/

void init(void)

{

lcd_init();//LCD初始化,开机调用一次

TMOD=0x01;//T0定时器方式1

IT0=0;//INT0负边沿触发

IP=0x01;//INT0高优先级

EA=1;//开总中断

}


/*********************************************************

* 函数名称:

* 功 能:超声波发射函数

* 入口参数:无

* 出口参数:无

*********************************************************/

void CCOut(void)

{

TR0=1;

//40KHz

CSOut=0;//1

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();

CSOut=1;//2

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();

CSOut=0;//3

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();

CSOut=1;//4

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。