找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1326|回复: 0
打印 上一主题 下一主题
收起左侧

超声波测距 很好用的

[复制链接]
跳转到指定楼层
楼主
ID:391355 发表于 2018-8-29 20:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//超声波测距模块 trig接P3^1                Echo接P3^2

#ifndef _LCD1602_DEF_
#define _LCD1602_DEF_
#include <intrins.h>  

#define uchar unsigned char
#define uint  unsigned int


//LCD1602 引脚定义 //采用 8 位并行方式,DB0~DB7 连接至 P00~P07
sbit RS=P1^2;
sbit RW=P1^1;
sbit CS=P1^0;
#define LCDDATA P2    //数据端口在 P0
//**********************************************
void Delay_xms(uint x)  //功能:延时 1 毫秒
{   
uint i,j;  
for(i=0;i<x;i++)     
for(j=0;j<122;j++);
}
//******************************************
void Delay_xus(uint t)   //功能:12us 延时      
{     
for(;t>0;t--)   
{   _nop_();   
}
}
//*************************************
void LCD_en(void)    //控制 LCD 写时序   
{   
CS=1;    //EN 端产生一个高电平脉冲,控制 LCD 写时序      
Delay_xus(20);   
CS=0;      
Delay_xus(20);
}   //**************************************************
void WR_Command(uchar command)  //写指令函数//写指令函数
{   
RS=0;   
RW=0;   
CS=1;

LCDDATA=command;   
LCD_en();//写入指令数据
}

//*******************************************
void WR_Data(uchar Wdata)  //写数据函数
{   
RS=1;   
RW=0;   
CS=1;   
LCDDATA=Wdata;   
LCD_en();//写入数据
}
//********************************************************
void SET_XY(uchar X,uchar Y)  //字符显示初始地址设置
{   
uchar address;   
if(Y==0)     
address=0x80+X;//Y=0,表示在第一行显示,地址基数为 0x80   
else      
address=0xc0+X;//Y 非 0 时,表时在第二行显示,地址基数为 0xC0   
WR_Command(address);//写指令,设置显示初始地址
}
//***********************************************
void WR_str(uchar X,uchar Y,uchar *s)  //在第 X 行 Y 列开始显示,指针*S 所指向的字符串
{   
SET_XY(X,Y);   //设置初始字符显示地址   

while(*s)      //逐次写入显示字符,直到最后一个字符"/0"   
{     
WR_Data(*s);   //写入当前字符并显示   
s++;          //地址指针加 1,指向下一个待写字符   
}
}
//*****************************************************
void WR_char(uchar X,uchar Y,uchar Wdata)  //在第 X行 Y 列开始显示 Wdata 所对应的单个字 符
{   
SET_XY(X,Y);//写地址   
WR_Data(Wdata);//写入当前字符并显示
}
//***********************************
void LCD_clear(void)  //清屏函数
{   
WR_Command(0x01);
Delay_xms(5); }
//*********************************************
void LCD_init(void) //显示屏初始化函数
{   
WR_Command(0x38); //8bit interface,2line,5*7dots  
Delay_xms(5);  
WR_Command(0x38);   
Delay_xms(5);  
WR_Command(0x38);  

WR_Command(0x08); //关显示,不显光标,光标不闪烁  
WR_Command(0x01); //清屏  
Delay_xms(5);   
WR_Command(0x04); //写一字符,整屏显示不移动  
Delay_xms(5);  
WR_Command(0x0C); //开显示,光标、闪烁都关闭
  }

#endif         

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表