|
刚做的超声波测距,分享一下放一段主函数
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
#include <REGX52.H>
#include "intrins.h"
#include "Delay.h"
#include "Nixie.h"
#include "UART.h"
#include "SR04.h"
#include "stdio.h"
void main(void)
{
int i=0;
float x; //用于接收测量距离单位mm
uart_and_time_init();//串口初始化
while(1)
{
if(i>100) //未接收数据时数码管显示上一次测量值
{
trigger();//发送20us触发信号
while(!Echo); //当RX为零时等待
TR0=1; //开启计数
while(Echo); //当RX为1计数并等待
TR0=0; //关闭计数
x=Conut()*10; //向电脑传递距离,同时将测量值赋给x
i=0;
}
else
{
Nixie(1,(unsigned int)x/1000);//显示测量值千位
Nixie(2,(unsigned int)x%1000/100);//显示测量值百位
Nixie(3,(unsigned int)x%100/10);//显示测量值十位
Nixie(4,(unsigned int)x%10);//显示测量值个位
i++;
}
}
}
Keil代码与Proteus仿真下载:
|
评分
-
查看全部评分
|