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

资源简介

超声波测距并LCD1602上显示距离,蜂鸣器发出的声音频率判断距离大小。

资源截图

代码片段和文件信息


#include    
#include 
typedef unsigned int u16;   //对数据类型进行声明定义
#define uint unsigned int
#define uchar unsigned char
sbit rs=P2^6;            //1602的数据/指令选择控制线 
sbit rw=P2^5;           //1602的读写控制线 
sbit en=P2^7;          //1602的使能控制线 
sbit trig=P1^0;      //超声波测距模块Trig
sbit echo=P1^1;     //超声波测距模块Echo
sbit beep=P1^5; // 蜂鸣器连接端
uchar flag=1;         //触发信号标志位//
uchar count;           //中断累加变量
long int distance;    //测量所得距离
unsigned char code table[ ]={“0123456789“}; //定义字符数组显示数字
/*------------------------------------------------
                  延时函数
------------------------------------------------*/
void delay(uint n)                           

    uint xy;  
    for(x=n;x>0;x--) 
    for(y=110;y>0;y--); 


/*---延时函数---*/
void delay1(u16 i)
{
while(i--);
}
   
/*------------------------------------------------
                  延时函数
------------------------------------------------*/
void delayt(uint x)
{
    uchar j;
    while(x-- > 0)
    {
              for(j = 0;j < 125;j++)
        {
          ;
        }
    }
}

/*------------------------------------------------
                1602写命令函数 
------------------------------------------------*/
void lcd_wcom(uchar com)            

    rs=0;                //选择指令寄存器 
    rw=0;               //选择写 
    P0=com;            //把命令字送入P0 
    delay(5);         //延时一小会儿,让1602准备接收数据 
    en=1;            //使能线电平变化,命令送入1602的8位数据口这点非常重要 
    en=0; 
}

/*------------------------------------------------
               1602写数据函数    
------------------------------------------------*/
void lcd_wdat(uchar dat)        

    rs=1;             //选择数据寄存器 
    rw=0;            //选择写 
    P0=dat;         //把要显示的数据送入P0 
    delay(5);      //延时一小会儿,让1602准备接收数据也就是检测忙信号,这点非常重要。
    en=1;         //使能线电平变化,数据送入1602的8位数据口 
    en=0; 
  } 

/*------------------------------------------------
                1602初始化函数      
------------------------------------------------*/
void lcd_init()              

    lcd_wcom(0x38);       //8位数据,双列,5*7字形  ,用到功能设定指令     
    lcd_wcom(0x0c);      //开启显示屏,关光标,光标不闪烁,用到显示开关控制指令 
    lcd_wcom(0x06);     //显示地址递增,即写一个数据后,显示位置右移一位,用到了写入模式设置指令
    lcd_wcom(0x01);    //清屏,用到了清屏指令
}

/*------------------------------------------------
              1602显示固定字符函数      
------------------------------------------------*/
void lcd_xianshi()              

    lcd_wcom(0x40+0x40);
        lcd_wdat(‘D‘);
        lcd_wdat(‘i‘);
        lcd_wdat(‘s‘);
        lcd_wdat(‘t‘);
        lcd_wdat(‘a‘);
        lcd_wdat(‘n‘);
        lcd_wdat(‘c‘);
        lcd_wdat(‘e‘);
        lcd_wdat(‘:‘);
        lcd_wcom(0x40+0x4c);
        lcd_wdat(‘.‘);
        lcd_wcom(0x40+0x4e);//单位是厘米//  0x40表示第一排显示0x80表示第二排显示
        lcd_wdat(‘c‘);
        lcd_wdat(‘m‘);
}


/*------------------------------------------------
定时器0初始化,用于计算响应信号时间
------------------------------------

评论

共有 条评论