访问手机版页面
你的位置:老古开发网 > 国产单片机 > STC单片机 > 正文  
基于STC89C52RC单片机的超声波测距程序设计
内容导读:

网络上集的STC89C52RC单片机超声波测距程序及电子制作实物,使用单片机最小系统进行试验,超声波部分使用HC-SR04模块,测量范围:4-300cm,实际测量上最长可达到5.70m。下面是实物图,文章后面附源程序。

4-300cn,实际测量上最长可达到5.7m

#include ‘AT89X51.H’ //头文件

unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

unsigned char disbuf[8]={0,0,0,0,0,0,0,0};

//-----------------------------------------------------------------------------

// 函数原形定义

#define uchar unsigned char

#define uint unsigned int

void main (void); // 主函数

void LED4_Display (void); // LED显示

void LED_OUT(uchar X); // LED单字节串行移位函数

void delayms(uint); //延时子函数 ms

void jisuan(void);

unsigned char code LED_0F[]; // LED字模表

sbit DIO=P1^0; //串行数据输入

sbit RCLK=P1^1; //时钟脉冲信号——上升沿有效

sbit SCLK=P1^2; //打入信号————上升沿有效

sbit echo=P3^2; //echo

sbit trig=P3^3; //trig

//-----------------------------------------------------------------------------

// 全局变量

uchar LED[8]; //用于LED的8位显示缓存

uint temp;

uint temp1;

uint a,b; //定义一个变量a,b 后者用于判断是否收到信号

//

// 主程序

//

void main(void) //主函数开始

{

uint f;

echo=0; //先拉低echo,trig引脚

trig=0;

f=500;

while(f》0); //启动延时 消除第一次上电产生的波动

{

LED[3]=16;

LED[2]=15;

LED[1]=15;

LED[0]=16;

f--;

}

EA=1; //开总中断

TMOD=0x11; //设置定时器为方式1

ET0=1; //允许定时器中断 这里主要是防止超声波模块未发送信号

ET1=1;

while(1)

{

echo=0;//a赋值

a=0;

b=1;

TH0=0; //定时器装初值

TL0=0;

TH1=(65536-25000)/256; //定时器装初值

TL1=(65536-25000)%6;

trig=1; //trig送高

LED4_Display (); // 延时3ms

LED4_Display ();

LED4_Display ();

LED4_Display ();

LED4_Display ();

LED4_Display ();

LED4_Display ();

trig=0; //trig送低

TR1=1;

while(echo==0); //等待echo变为高电平

if(b==1) 判断是否收到信号

{
责任编辑;zl

标签:超声波测距程序,STC89C52RC,单片机,
来源:21ic 作者:佚名 时间:2020/3/12 15:25:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐