• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: 超声波  测距  串口  

资源简介

超声波测距产生的数据通过串口可以发送出来,单片机用的是STC89C52

资源截图

代码片段和文件信息

#include“reg51.h“
#include 
sbit RX=P2^1;
sbit TX=P2^0;
unsigned int  time=0;
unsigned int  timer=0;
unsigned char posit=0;
unsigned long S=0;
bit      flag =0;
//--定义使用的IO--//
#define GPIO_DIG P0

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

//--定义全局变量--//
unsigned char code DIG_CODE[17]={
0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char disbuff[4]    ={ 0000};
/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能    : 使用数码管显示
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void DigDisplay()
{
unsigned char i;
unsigned int j;
for(i=0;i<8;i++)
{
switch(i)  //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//显示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//显示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//显示第7位
}
GPIO_DIG=disbuff[i];//发送段码
j=10;  //扫描间隔时间设定
while(j--);
GPIO_DIG=0x00;//消隐
}
}
/********************************************************/
    void Conut(void)
{
 time=TH0*256+TL0;
 TH0=0;
 TL0=0;

 S= (long)(time*0.17);     //算出来是CM
 if((S>=4000)||flag==1) //超出测量范围显示“ERR0”
 {  
  flag=0;
  disbuff[0]=0x3f;    //“-”
  disbuff[1]=0x50;    //“-”
  disbuf

评论

共有 条评论