资源简介

HC-SR04 超声波测距 C51 精度2MM,调试通过

资源截图

代码片段和文件信息

/* SMC1602A(16*2)模拟口线接线方式
连接线图:
       ---------------------------------------------------
       |LCM-----51   | LCM-----51   | LCM------51      |
       --------------------------------------------------|
       |DB0-----P1.0 | DB4-----P1.4 | RW-------P3.4    |
       |DB1-----P1.1 | DB5-----P1.5 | RS-------P3.3    |
       |DB2-----P1.2 | DB6-----P1.6 | E--------P3.5    |
       |DB3-----P1.3 | DB7-----P1.7 | VLCD接1K电阻到GND|
       ---------------------------------------------------
接线:模块TRIG接 P2.6  ECH0 接P2.7

本程序源码只供学习参考,不得应用于商业用途,如有需要请联系作者。

[注:AT89x51使用12M或11.0592M晶振实测使用11.0592M]
=============================================================*/
#include  //器件配置文件
#include 
#define  RX  P3_3
#define  TX  P3_4

#define LCM_RW  P1_1 //定义LCD引脚
#define LCM_RS  P1_0
#define LCM_E   P1_2
#define LCM_Data  P0

#define Key_Data P2_0 //定义Keyboard引脚
#define Key_CLK  P3_2

#define Busy    0x80 //用于检测LCM状态字中的Busy标识

void LCMInit(void);
void DisplayOneChar(unsigned char X unsigned char Y unsigned char DData);
void DisplayListChar(unsigned char X unsigned char Y unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
void Decode(unsigned char ScanCode);
void WriteDataLCM(unsigned char WDLCM);
void WriteCommandLCM(unsigned char WCLCMBuysC);

unsigned char ReadDataLCM(void);
unsigned char ReadStatusLCM(void);
unsigned char code mcustudio[] ={“Code By ChenBin“};
unsigned char code email[] =    {“McuCore@163.com “};
unsigned char code Cls[] =      {“                “};
unsigned char code ASCII[15] =    {‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘‘.‘‘-‘‘M‘};

static unsigned char DisNum = 0; //显示用指针   
       unsigned int  time=0;
   unsigned long S=0;
   bit      flag =0;
   unsigned char disbuff[5]    ={ 00000};


//写数据
void WriteDataLCM(unsigned char WDLCM) 
{
ReadStatusLCM(); //检测忙
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //若晶振速度太高可以在这后加小的延时
LCM_E = 0; //延时
LCM_E = 1;
}

//写指令
void WriteCommandLCM(unsigned char WCLCMBuysC) //BuysC为0时忽略忙检测
{
if (BuysC) ReadStatusLCM(); //根据需要检测忙
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}

//读数据
unsigned char ReadDataLCM(void)
{
LCM_RS = 1; 
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
return(LCM_Data);
}

//读状态
unsigned char ReadStatusLCM(void)
{
LCM_Data = 0xFF; 
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while (LCM_Data & Busy); //检测忙信号
return(LCM_Data);
}

void LCMInit(void) //LCM初始化
{
LCM_Data = 0;
WriteCommandLCM(0x380); //三次显示模式设置,不检测忙信号
Delay5Ms(); 
WriteCommandLCM(0x380);
Delay5Ms(); 
WriteCommandLCM(0x380);
Delay5Ms(); 

WriteCommandLCM(0x381); //显示模式设置开始要求每次检测忙信号
WriteCommandLCM(0x081); //关闭显示
WriteCommandLCM(0x011); //显示清屏
WriteCommandLCM(0x061); // 显示光标移动设置
WriteCommandLCM(0x0F1); // 显示开及光标设置
}

//按指定位置显示一个字符
void DisplayOneChar(uns

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-07-05 17:16  超声波测距LC1602显示\
     文件       17312  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量
     文件        7587  2011-07-05 16:25  超声波测距LC1602显示\脉宽测量.c
     文件        6442  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量.hex
     文件          33  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量.lnp
     文件       15131  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量.LST
     文件       18157  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量.M51
     文件       19274  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量.OBJ
     文件        1154  2011-07-05 11:37  超声波测距LC1602显示\脉宽测量.opt.bak
     文件       18630  2011-07-05 17:16  超声波测距LC1602显示\脉宽测量.plg
     文件        2095  2011-07-05 11:37  超声波测距LC1602显示\脉宽测量.Uv2.bak
     文件       68294  2011-07-05 17:16  超声波测距LC1602显示\脉宽测量.uvgui.Administrator
     文件       68294  2011-07-05 16:25  超声波测距LC1602显示\脉宽测量.uvgui_Administrator.bak
     文件        6444  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量.uvopt
     文件       13250  2011-07-05 16:55  超声波测距LC1602显示\脉宽测量.uvproj
     文件        1149  2011-02-15 18:23  超声波测距LC1602显示\脉宽测量_Opt.Bak
     文件        1691  2011-02-18 13:22  超声波测距LC1602显示\脉宽测量_Uv2.Bak
     文件        6431  2011-07-05 16:54  超声波测距LC1602显示\脉宽测量_uvopt.bak
     文件       13231  2011-07-05 11:37  超声波测距LC1602显示\脉宽测量_uvproj.bak

评论

共有 条评论