导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[wowo198579]LM1812测距模块



No.49705
作者:wowo198579
邮件:wuqiong198579@163.com
ID:113037
登陆:1次
文章数:1篇
最后登陆IP:58.213.151.67
最后登陆:2008/6/13 10:01:30
注册:2008/6/4 16:38:44
财富:105
发帖时间:2008/6/13 10:01:30
发贴者IP:58.213.151.67
标题:wowo198579:LM1812测距模块
摘要:No.49705LM1812测距模块 LM1812测距模块,使用一个探头进行收发,由8脚来控制。载波频率40KHZ,每次发射200us的超声波。接收状态定时20ms,保证能够测距3米。
8脚通过电平转换接到单片机AT89C51的P2.7,14脚检测器输出接P3.2(INT0)(接收到超声波回波后14脚会输出一个负脉冲).看到好多资料都写14脚出来接计数门,那个是怎么来实现的?我这个硬件电路中没有加入计数门。液晶为金鹏电子的OMJ4X8C 128*64的。程序如下,但测得距离始终为0,请大家帮忙看下程序哪有问题?谢谢!

#include   <reg51.h>  
#define uint  unsigned int
#define uchar unsigned char
#define x1    0x80
#define x2    0x88
#define y     0x80
#define comm  0
#define dat   1
sbit fs=P2^7;
sbit cs   = P2^0;
sbit std  = P2^1;
sbit sclk = P2^2;
sbit psb  = P2^3;   //H=并口; L=串口;
sbit rst  = P2^4;   //Reset Signal 低电平有效
bit flag;
uint jsh,jsl;
float  distance,t;

void wr_lcd (uchar dat_comm,uchar content);
void delay (uint us);
uchar data  display [4] =   {0x00,0x00,0x00,0x00};
uchar code tab1[]={
"倒车距离        "
"                "
};

/*------------------初始化-----------------*/
void init_lcd (void)
{
  rst=1;
  psb=0;
  wr_lcd (comm,0x30);  /*30---基本指令动作*/   
  wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
  delay (100);
  wr_lcd (comm,0x06);  /*光标的移动方向*/
  wr_lcd (comm,0x0c);  /*开显示,关游标*/
}

//----------上半屏显示汉字或字符------------
void chn_disp1 (uchar code *chn)
{
  uchar i,j;
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x80);
  j=0;
  for (i=0;i  <16;i++)
  wr_lcd (dat,chn[j*16+i]);
  wr_lcd (comm,0x90);
  j=1;
  for (i=0;i  <16;i++)
  wr_lcd (dat,chn[j*16+i]);
}

/*--------------清DDRAM------------------*/
void clrram (void)
{
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x01);
  delay (180);
}
/*---------------------------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
  uchar a,i,j;
  delay (100);
  a=content;
  cs=1;
  sclk=0;
  std=1;
  for(i=0;i  <5;i++)
  {
    sclk=1;
    sclk=0;
  }
  std=0;
  sclk=1;
  sclk=0;
  if(dat_comm)
    std=1;   //data
  else
    std=0;   //command
  sclk=1;
  sclk=0;
  std=0;
  sclk=1;
  sclk=0;
  for(j=0;j  <2;j++)
  {
    for(i=0;i  <4;i++)
    {
      a=a  <  <1;
      std=CY;
      sclk=1;
      sclk=0;
    }
    std= ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:7276毫秒 查询6次