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= ......
>>返回讨论的主题
|