搜索
bottom↓
回复: 121
打印 上一主题 下一主题

超声波测距原理图、PCB、源代码!!【恢复】

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2008-12-18 09:39:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件如下:

超声波PCBourdev_548882.rar(文件大小:21K) (原文件名:超声波PCB.rar) 

超声波原理图ourdev_548883.rar(文件大小:3K) (原文件名:CX20106.rar) 



文本语音合成软件(联网才能用!!)ourdev_548924.rar(文件大小:508K) (原文件名:KDVoiceV2.20文本语音合成.rar) 

语音单片机使用资料ourdev_548925.rar(文件大小:2.41M) (原文件名:WT588D语音单片机使用资料.rar) 



   原理图中并接在超声波接收头两端的瓷片电容不用的话可以增强信号,但是抗干扰性不强。我的做法是牺牲抗干扰性,提高距离,呵呵,没办法只能这样了。另外还有要说明的是发送与接收探头的距离是8个cm!!这样才能保证测量距离,我做好的测距距离是接近6米。发送与接收探头的距离可能还可以小一点,但不能小于4cm(网上说的),我做过间距为2cm的时候测距距离为3米左右。



主程序:



#include<reg51.h>

#include"12864.h"

#include<INTRINS.H>

#define        uc                         unsigned char

#define        ui                         unsigned int

#define        nop                        _nop_()

/*********************************

变量定义

**********************************/

uc                ID1=0,ID2=0;

float        distance;

ui                count=0,dis1;

uc                 high_time,low_time,flag=0;

//uc                i=0;

/**********************************

常量定义

************************************/

#define        circle                0xf2//循环播放

#define        stop_play        0xfe//停止播放

#define        vo_0                0xe0//音量1

#define        vo_1                0xe1//音量2

#define        vo_2                0xe2//音量3

#define        vo_3                0xe3//音量4

#define        vo_4                0xe4//音量5

#define        vo_5                0xe5//音量6

#define        vo_6                0xe6//音量7

#define        vo_7                0xe7//音量8

#define        ID1_count        22//k1计数值

#define        ID2_count        100//k2计数值

/*************************************

语音单片机WT588D位定义

*************************************/

sbit        RST=P0^3;//复位端

sbit        CS1=P0^1;//片选端

sbit        CLK=P0^0;//时钟

sbit        DAT=P0^2;//数据位

sbit        busy=P0^4;//忙信号

sbit         csb=P3^6;

/*********************************

函数声明

*********************************/

void         delay_nms(ui ms);//延时nms

void         delay100us();//延时100us

void         send_com(uc add);//发送语音地址,指定播放某段语音

void         init();//语音单片机WT588D

float         Distance_count();//距离计算转换

void         sound(uc soud);//播放

void         tran();//送超声波信号进行测距

/************************************

主函数

************************************/

void main()

{

        uc i,j,k;

        ui tp=0;

        init();

        LcmInit();//lcd初始化        

        LcmClearTXT();//lcd清除显示

        PutStr(1,0,DIS2);//显示距离

        while(1)

        {

                for(i=0;i<10;i++)//测量10次

                {

                        tran();//发送超声波信号测距

                        tp=tp+dis1;//10次相加,下面求平均值

                }

                dis1=tp/10;//取平均值

                tp=0;//清零,为下次测量做准备

                sound(dis1);//语音播报

                i=dis1/100;//数据转换给lcd显示

                j=dis1%100/10;

                k=dis1%100%10;

                LCDXY(1,3);//设定显示位置

                Write_number(i);//显示数字

                LCDXY(1,5);

                Write_number(j);

                Write_number(k);

        }

}

/**************************************************************

初始化

**************************************************************/

void init()

{

           TMOD=0x01;//定时器0方式1用于计时,定时器1用于产生38K方波

        TH0=0;

        TL0=0;                /* 设定T0的工作模式为2*/

        EA=1;

        IT1=1;//下降沿有效,左传感器

}

/**********************************************

左发送超声波函数,实测为38KHz信号,8个这样的方波

***********************************************/

void         tran()

{

        uc i;

        TH0=0;

        TL0=0;//清定时0

        TR0=1;//开定时0

        for(i=8;i>0;i--)

        {

                csb=!csb;

                //nop;

                nop;

                nop;

                nop;

                nop;

                nop;

                nop;

                nop;

                nop;

                nop;

        }

        csb=1;

        delay_nms(1);//延时1ms左右后再开中断,避免直接回来的回波

        EX1=1;

        delay_nms(50);

        if(flag==1)

                {

                        distance=Distance_count();

                        dis1=(unsigned int)distance;

                        flag=0;

                }

                else dis1=0;

}

/************************************************

延时n个ms函数

***********************************************/

void delay_nms(ui ms)   //delay ms function                              

{                        

  uc i; 

      while(ms--)

      {

          for(i = 0; i < 123; i++);

       }

}

/************************************************

延时100us函数

***********************************************/

void delay100us()

{

        uc j;

        for(j=50;j>0;j--);

}

/****************************************

发码播放函数;add为语音地址

*****************************************/

void send_com(uc add)

{

         uc i;

        RST=1;

        RST=0;

        delay_nms(3);

        RST=1;

        delay_nms(20);

        CS1=0;

        delay_nms(5);

        for(i=0;i<8;i++)

        {

                 CLK=0;

                if(add&1)        DAT=1;

                        else        DAT=0;

                        delay100us();

                        CLK=1;

                        delay100us();

                        add=add>>1;

        }

        CS1=1;

}

/******************************************



*****************************************/

void sound(ui soud)

{

        ui i,j,k;

        if(soud==0)

        {

                send_com(13);//播放“超出测量范围,请重新测量”

                delay_nms(50);

                while(!busy);

        }

        else

        {

        i=soud/100;

        j=soud%100/10;

        k=soud%100%10;

        //send_com(10);//播放"障碍物距离"

        //delay_nms(50);

        //while(!busy);

         send_com(i);

        delay_nms(50);

        while(!busy);

        send_com(11);//播放点

        delay_nms(50);

        while(!busy);

        send_com(j);

        delay_nms(50);

        while(!busy);

        send_com(k);

        delay_nms(50);

        while(!busy);

        send_com(12);//播放米

        delay_nms(50);

        while(!busy);

        }

}

/****************************************

距离计算函数

****************************************/

float Distance_count()

{

        float temp;

        temp=high_time*256+low_time;

        //temp-2000;

        temp=(temp/1000)/2;

        temp*=344;

        temp=temp/10;

        return temp;

}

/**************************************

外部中断服务函数

**************************************/

void TT() interrupt 2

{

        ui tmp;

        TR0=0;//关定时器0

        ET1=0;//关外部中断

        flag=1;//外部中断标志位

        tmp=TH0*256+TL0;

        if((tmp>0)&&(tmp<60000))        

                {

                         high_time=TH0;

                        low_time=TL0;        

                }

                else 

                        {

                                 high_time=0;

                                low_time=0;        

                        } 



}









12864液晶显示函数(三线串口驱动):





                                           /*****************************************************************

*                                                                *

* ME500单片机开发系统演示程序 - 12864 图片与文字显示             * 

*                                                                *

* ST7920控制芯片(汉字库),串口模式。                             *

*                                                                *

* 版本: V1.0 (2006/11/20)                                       *

* 作者: gguoqing (Email: gguoqing@willar.com)                   *

* 网站: www.willar.com(伟纳电子)  www.mcusj.com(伟纳单片机世界) *

* 邮箱: support@willar.com                                      *

*                                                                *

*【版权】COPYRIGHT(C)伟纳电子 www.willar.com ALL RIGHTS RESERVED *

*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!      *

*                                                                *

*****************************************************************/                  



/********** 12864LCD引脚定义 **********/



/*sbit CS    =  P2^5;        //片选 高电平有效 单片LCD使用时可固定高电平

sbit SID   =  P2^7;        //数据

sbit SCLK  =  P2^6;        //时钟*/

#include<reg51.h>

#define uchar unsigned char

#define uint  unsigned int        

sbit CS    =  P2^0;        //片选 高电平有效 单片LCD使用时可固定高电平

sbit SID   =  P2^1;        //数据

sbit SCLK  =  P2^2;        //时钟

/*********************************************************/

uchar         code  DIS11[] = {"危险距离"};

uchar         code  DIS12[] = {"安全距离"};

uchar         code  DIS13[] = {"保持距离"};

uchar         code  DIS14[] = {"测量中.........."};

uchar         code  DIS2[] = {"距离:  点    米"};

uchar         code  DIS3[] = {"星期"};

//uchar         code  DIS4[] = {"TEL:15878671024 "};

uchar         code  DIS5[] = {"H:    L:        "};

uchar         code BMP1[] ={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF9,0xFF,0xC0,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0F,0xFF,0xF8,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x04,0x00,0x0E,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x01,0x80,0x00,0x00,0x00,

0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x60,0x00,0x00,0x00,

0x00,0x03,0x98,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x30,0x00,0x00,0x00,

0x00,0x01,0x90,0x00,0x00,0x00,0x00,0x70,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,

0x00,0x00,0xD0,0x00,0x00,0x00,0x00,0x60,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,

0x00,0x0C,0xD0,0x00,0x00,0x00,0x00,0x66,0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,

0x00,0x0E,0x40,0x00,0x00,0x00,0x00,0x4E,0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00,

0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x48,0x08,0x00,0x00,0x00,0x03,0x00,0x00,0x00,

0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x10,0x98,0x00,0x00,0x00,0x03,0x80,0x00,0x00,

0x00,0x3E,0x1C,0x00,0x00,0x00,0x01,0x03,0x90,0x00,0x00,0x00,0x01,0x80,0x00,0x00,

0x00,0x3E,0x3E,0x00,0xFF,0xE0,0x03,0x8F,0xD0,0x00,0x00,0x00,0x01,0x80,0x00,0x00,

0x00,0x00,0x3F,0x07,0xFF,0xFC,0x07,0x40,0x33,0x00,0x00,0x00,0x00,0x80,0x00,0x00,

0x00,0x00,0x1F,0x9F,0xFF,0xFE,0x1F,0xCE,0x31,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,

0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xBF,0x83,0xB0,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,

0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0x01,0xB0,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,

0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFC,0x00,0x30,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,

0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF8,0x00,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x00,

0x00,0x00,0x07,0xFF,0xFF,0xFF,0xF8,0x00,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x00,

0x00,0x00,0x07,0xFF,0x80,0x1F,0xF8,0x00,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x00,

0x00,0x00,0x0F,0xFE,0x00,0x03,0xFC,0x00,0x10,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,

0x00,0x00,0x0F,0xF8,0x00,0x00,0xFC,0x00,0x10,0x00,0x00,0x00,0x00,0x80,0x00,0x00,

0x00,0x00,0x0F,0xF0,0x00,0x00,0x7E,0x00,0x10,0x00,0x00,0x00,0x00,0x80,0x00,0x00,

0x00,0x00,0x1F,0xC0,0x00,0x00,0x3E,0x00,0x18,0x00,0x00,0x00,0x00,0x80,0x00,0x00,

0x00,0x00,0x1F,0x80,0x00,0x00,0x1E,0x00,0x1B,0x00,0x00,0x00,0x01,0x80,0x00,0x00,

0x00,0x00,0x1F,0x00,0x00,0x00,0x0E,0x00,0x7B,0x00,0x00,0x00,0x01,0x00,0x00,0x00,

0x00,0x00,0x1E,0x08,0x00,0x04,0x0E,0x00,0x58,0x00,0x00,0x00,0x03,0x00,0x00,0x00,

0x00,0x00,0x1E,0x10,0x00,0x02,0x06,0x00,0x30,0x00,0x00,0x18,0x02,0x00,0x00,0x00,

0x00,0x00,0x1E,0x00,0x00,0x00,0x06,0x00,0x20,0xC0,0x00,0x06,0x06,0x00,0x00,0x00,

0x00,0x00,0x1E,0x00,0x00,0x00,0x0E,0x00,0x20,0x60,0x00,0x02,0x04,0x00,0x00,0x00,

0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x20,0x00,0x00,0x02,0x0C,0x00,0x00,0x00,

0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x20,0x00,0x00,0x7C,0x18,0x00,0x00,0x00,

0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x18,0x00,0x00,0x18,0x30,0x00,0x00,0x00,

0x00,0x00,0x0E,0x00,0x00,0x00,0x0C,0x00,0x0D,0xC0,0x00,0x00,0x60,0x00,0x00,0x00,

0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x06,0x60,0x00,0x01,0xC0,0x00,0x00,0x00,

0x00,0x00,0x1E,0x00,0x00,0x00,0x0A,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x00,0x00,

0x00,0x00,0x12,0x00,0xC0,0x20,0x0A,0x00,0x00,0xE0,0x00,0x0E,0x00,0x00,0x00,0x00,

0x00,0x00,0x02,0x00,0xC0,0x70,0x0A,0x00,0x00,0x1C,0x00,0x7C,0x00,0x04,0x3C,0x00,

0x00,0x00,0x0E,0x00,0xC7,0x30,0x0C,0x00,0x00,0x0F,0xFF,0xE0,0x00,0x03,0xFC,0x00,

0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x18,0x1C,0x00,0x00,0x03,0xF8,0x00,

0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x10,0x04,0x00,0x00,0x07,0xF8,0x00,

0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x30,0x0C,0x00,0x00,0x0D,0xF8,0x00,

0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x60,0x0C,0x00,0x00,0x01,0xF0,0x00,

0x00,0x00,0x01,0x80,0x00,0x00,0x10,0x00,0x00,0x64,0x0C,0x00,0x00,0x00,0xC0,0x00,

0x00,0x00,0x00,0xC0,0x00,0x00,0x70,0x00,0x00,0x72,0x0C,0x00,0x00,0x00,0x40,0x00,

0x00,0x00,0x00,0x60,0x10,0x00,0xC0,0x00,0x00,0xC2,0x04,0x00,0x00,0x03,0xC0,0x00,

0x00,0x00,0x00,0x1C,0x06,0x03,0x00,0x00,0x01,0x83,0x04,0x00,0x00,0x07,0xC0,0x00,

0x00,0x00,0x00,0x07,0x80,0x1C,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x0F,0x40,0x00,

0x00,0x00,0x00,0x00,0x1F,0xA0,0x00,0x00,0x06,0x01,0x82,0x00,0x00,0x00,0x48,0x00,

0x00,0x00,0x00,0x00,0x10,0x18,0x00,0x00,0x04,0x00,0x81,0x00,0x00,0x00,0x7C,0x00,

0x00,0x00,0x00,0x00,0x10,0x14,0x00,0x00,0x04,0x00,0x41,0x00,0x00,0x00,0x78,0x00,

0x00,0x00,0x00,0x00,0x90,0xF0,0x00,0x00,0x0C,0x00,0x40,0xC0,0x00,0x00,0x40,0x00,

0x00,0x00,0x04,0x01,0x1F,0xF8,0x00,0x00,0x3F,0xC0,0x60,0x60,0x00,0x00,0x40,0x00,

0x00,0x00,0x08,0x06,0x1F,0xF8,0x80,0x00,0x21,0xFF,0xF0,0x30,0x00,0x00,0x40,0x00,

0x00,0x00,0x08,0x08,0x3F,0xFC,0x80,0x00,0x20,0x00,0x18,0x30,0x00,0x00,0x40,0x00,

0x00,0x00,0x08,0x08,0x3F,0xFC,0x80,0x00,0x20,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,

0x00,0x00,0x04,0x04,0x7F,0xFC,0x00,0x00,0x00,0x00,0x07,0x10,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x01,0x7F,0xFD,0x00,0x00,0x10,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,

0x00,0x00,0x02,0x03,0xFF,0xFD,0x00,0x00,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,

};

uchar code AC_TABLE[]={

0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,      //第一行汉字位置

0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,      //第二行汉字位置

0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,      //第三行汉字位置

0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,      //第四行汉字位置

};

/********************************************************

*                                                       *                                                 

* 延时t毫秒                                             *

* 11.0592MHz时钟,延时约1ms                             *        

*                                                       *

********************************************************/

void delay(uint t)

{                           

   uchar k;

   while(t--)

   {

     for(k=0; k<125; k++)

     { }

   }

}

/*********************************************************

*                                                        *

* 延时函数 200us                                         *

*                                                        *

*********************************************************/

void delay_lcd(int ms)

{

  uchar t;

  while(ms--)

  {

    for(t=0; t<20; t++) ;

  }

}

/******************************************************************************************

* 函数名称    :SendByte

* 功能描述    :串口发送一个字节

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void SendByte(uchar Dbyte)

{

     uchar i;

     for(i=0;i<8;i++)

     {

           SCLK = 0;

           Dbyte=Dbyte<<1;      //左移一位

           SID = CY;            //移出的位给SID

           SCLK = 1;

           SCLK = 0;

     }

}



/******************************************************************************************

* 函数名称    :ReceiveByte

* 功能描述    :串口接收一个字节

* 参数        :  参数名称:        输入/输出?        类型                描述

* 仅在读取数据的时候用到

* 而读出的数据是一次只能读出4bit的

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

uchar ReceiveByte(void)

{

     uchar i,temp1,temp2;

     temp1 = 0;

     temp2 = 0;

     for(i=0;i<8;i++)

     {

           temp1=temp1<<1;

           SCLK = 0;

           SCLK = 1;            

           SCLK = 0;

           if(SID) temp1++;

     }

     for(i=0;i<8;i++)

     {

           temp2=temp2<<1;

           SCLK = 0;

           SCLK = 1;

           SCLK = 0;

           if(SID) temp2++;

     }

     return ((0xf0&temp1)+(0x0f&temp2));

}

/******************************************************************************************

* 函数名称    :CheckBusy

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void CheckBusy( void )

{

     do   SendByte(0xfc);      //11111,RW(1),RS(0),0

     while(0x80&ReceiveByte());      //BF(.7)=1 Busy

}

/******************************************************************************************

* 函数名称    :WriteCommand

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void WriteCommand(uchar Cbyte )

{

     CS = 1;

     CheckBusy();

     SendByte(0xf8);            //11111,RW(0),RS(0),0

     SendByte(0xf0&Cbyte);      //高四位

     SendByte(0xf0&Cbyte<<4);//低四位(先执行<<)

     CS = 0;

}

/******************************************************************************************

* 函数名称    :WriteData

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void WriteData(uchar Dbyte )

{

     CS = 1;

     CheckBusy();

     SendByte(0xfa);            //11111,RW(0),RS(1),0

     SendByte(0xf0&Dbyte);      //高四位

     SendByte(0xf0&Dbyte<<4);//低四位(先执行<<)

     CS = 0;

}

/******************************************************************************************

* 函数名称    :ReadData

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

uchar ReadData( void )

{

     CheckBusy();

     SendByte(0xfe);            //11111,RW(1),RS(1),0

     return ReceiveByte();

}

/******************************************************************************************

* 函数名称    :LcmInit

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void LcmInit( void )

{

     WriteCommand(0x30);      //8BitMCU,基本指令集合

     WriteCommand(0x03);      //AC归0,不改变DDRAM内容

     WriteCommand(0x0C);      //显示ON,游标OFF,游标位反白OFF

     WriteCommand(0x01);      //清屏,AC归0

     WriteCommand(0x06);      //写入时,游标右移动

}



/******************************************************************************************

* 函数名称    :LcmClearTXT

* 功能描述    :文本区清RAM函数

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void LcmClearTXT( void )

{

     uchar i;

     WriteCommand(0x30);      //8BitMCU,基本指令集合

     WriteCommand(0x80);      //AC归起始位

     for(i=0;i<64;i++)

     WriteData(0x20);

}



/******************************************************************************************

* 函数名称    :LcmClearBMP

* 功能描述    :图形区清RAM函数

* 参数        :  参数名称:        输入/输出?        类型                描述

* 图形区和文本区显示在两个不同的RAM区

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void LcmClearBMP( void )

{

     uchar i,j;

     WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次

     WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图

     for(i=0;i<32;i++)            //12864实际为256x32

     {

           WriteCommand(0x80|i);      //行位置

           WriteCommand(0x80);      //列位置

           for(j=0;j<32;j++)            //256/8=32 byte

                WriteData(0);

     }

}

/******************************************************************************************

* 函数名称    :PutStr

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void PutStr(uchar row,uchar col,uchar *puts)

{

     WriteCommand(0x30);      //8BitMCU,基本指令集合

     WriteCommand(AC_TABLE[8*row+col]);      //起始位置

     while(*puts != '\0')      //判断字符串是否显示完毕

     {

           if(col==8)            //判断换行

           {            //若不判断,则自动从第一行到第三行

                 col=0;

                 row++;

           }

           if(row==4) row=0;      //一屏显示完,回到屏左上角

           WriteCommand(AC_TABLE[8*row+col]);

           WriteData(*puts);      //一个汉字要写两次

           puts++;

           WriteData(*puts);

           puts++;

           col++;

     }

}

/******************************************************************************************

* 函数名称    :PutBMP

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void PutBMP(uchar *puts)

{

     uint x=0;

     uchar i,j;

     WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次

     WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图

     for(i=0;i<32;i++)            //12864实际为256x32

     {

           WriteCommand(0x80|i);      //行位置

           WriteCommand(0x80);      //列位置

           for(j=0;j<32;j++)      //256/8=32 byte

           {            //列位置每行自动增加

                 WriteData(puts[x]);

                 x++;

           }

     }

}

/******************************************************************************************

* 函数名称    :DisplayDots

* 功能描述    :

* 参数        :  参数名称:        输入/输出?        类型                描述

* 

* 返回值      :

* 作者        :

* 创建日期    :2006-12-19

* 全局变量    :

* 全局静态变量:

* 局部静态变量:

*----------------------------------------修改历史------------------------------------------

* 当前版本    :                          修改人:                  修改日期:

* 修改说明    :

******************************************************************************************/

void DisplayDots(uchar DotByte)

{

     uchar i,j;

     WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次

     WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图

     for(i=0;i<32;i++)            //12864实际为256x32

     {

           WriteCommand(0x80|i);      //行位置

           WriteCommand(0x80);      //列位置

           for(j=0;j<32;j++)      //256/8=32 byte

           {            //列位置每行自动增加

              WriteData(DotByte);                  

           }

           DotByte=~DotByte;

     }

}

LCDXY(uchar H,uchar L)

{

         WriteCommand(0x30);      //8BitMCU,基本指令集合

    WriteCommand(AC_TABLE[8*H+L]);      //起始位置

}

void Write_number(uchar s)//        数字显示函数

{        

                WriteData(s+0x30);

                //WriteData(s);

                //WriteCommand(0x06);

                //Delaynms(1);

}

/*void show_time()   //液晶显示程序

{

          //DS1302_GetTime(&CurrentTime);  //获取时钟芯片的时间数据

          //TimeToStr(&CurrentTime);       //时间数据转换液晶字符

          //DateToStr(&CurrentTime);       //日期数据转换液晶字符

          //ReadTemp();                    //开启温度采集程序

          //temp_to_str();                 //温度数据转换成液晶字符

          //PutStr(0,0,CurrentTime.TimeString);

          PutStr(0,5,DIS3);

        //PutStr(0,7,week_value);

          //PutStr(3,0,DIS5);

        //PutStr(1,TempBuffer);

        write(1,0xA1);        

        write(1,0xE6); 

}*/



本贴被 xsh2005105326 编辑过,最后修改时间:2008-12-18,09:58:27.

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

2
发表于 2008-12-18 09:48:35 | 只看该作者
ddd







有照片不@@给大伙观摩下

出0入0汤圆

3
发表于 2008-12-18 09:49:38 | 只看该作者
mark

出0入0汤圆

4
 楼主| 发表于 2008-12-18 09:59:59 | 只看该作者
图片没拍,货已经卖给别人了,临时做的,一天就搞完了,然后卖了呵呵,没相机,来不急拍了

出0入21汤圆

5
发表于 2008-12-18 11:42:05 | 只看该作者
mark

出0入0汤圆

6
发表于 2008-12-18 12:39:57 | 只看该作者
不错呀!

出0入0汤圆

7
发表于 2008-12-18 14:21:46 | 只看该作者
不错呀!

出0入0汤圆

8
 楼主| 发表于 2008-12-18 15:20:35 | 只看该作者
这个程序是没有校正的,误差很大,校正之后误差在正负1cm

出0入0汤圆

9
发表于 2008-12-30 18:09:13 | 只看该作者
mark

出0入0汤圆

10
发表于 2009-1-5 09:18:56 | 只看该作者
不用滤波的么?这样是不是跳变太大了啊?

本贴被 kengao55 编辑过,最后修改时间:2009-01-05,12:57:01.

出0入0汤圆

11
发表于 2009-2-6 18:28:10 | 只看该作者
原理图能不能发一份完整的呀

出0入0汤圆

12
发表于 2009-2-7 09:18:40 | 只看该作者
这样的电路图我想效果很差! 误差大,距离短,不可靠等等!

出0入0汤圆

13
发表于 2009-3-5 15:06:58 | 只看该作者
样的电路图我想效果很差! 误差大,距离短,不可靠等等!

出0入0汤圆

14
发表于 2009-5-8 12:50:47 | 只看该作者
还是可以学习的!

出0入0汤圆

15
发表于 2009-6-4 11:21:45 | 只看该作者
您好 能不能把这个小车的原理图给我一份 我毕业设计是这个题目 再过几天就答辩了,急需 谢谢啦!
邮箱:zyzaiww@163.com

出0入0汤圆

16
发表于 2009-6-5 12:09:45 | 只看该作者
我把您的代码复制到Keil uVision2 里面  运行时  出错,

这是为什么啊?

出0入0汤圆

17
发表于 2009-7-28 14:51:40 | 只看该作者
收下啦!呵呵!

出0入0汤圆

18
发表于 2009-7-28 19:34:09 | 只看该作者
mark一下,明天要用

出0入0汤圆

19
发表于 2009-8-6 08:45:19 | 只看该作者
MARK!

出0入0汤圆

20
发表于 2009-8-8 07:59:02 | 只看该作者
太谢谢了  刚要学来着

出0入0汤圆

21
发表于 2009-8-10 15:14:35 | 只看该作者
学习学习

出0入0汤圆

22
发表于 2009-8-10 17:35:34 | 只看该作者
谢谢,mark一下。

出0入0汤圆

23
发表于 2009-8-19 09:21:12 | 只看该作者
可以借鉴

出0入4汤圆

24
发表于 2009-8-19 10:13:12 | 只看该作者
make

出0入0汤圆

25
发表于 2009-8-22 19:48:50 | 只看该作者
顶,好东西要了!!!

出0入0汤圆

26
发表于 2009-8-25 14:31:35 | 只看该作者
樓主,
原理圖跟PCB是用PADS軟件做的嗎?
怎麼我打不開呢
最近搞超聲波搞到心煩意亂,一點反應都不給我

出0入0汤圆

27
发表于 2009-8-25 14:32:38 | 只看该作者
是PADS的話
你用的是什麽版本啊?

出0入0汤圆

28
发表于 2009-8-29 11:23:20 | 只看该作者
mark=------------

出0入0汤圆

29
发表于 2009-9-1 14:38:45 | 只看该作者
mark

出0入0汤圆

30
发表于 2009-9-1 15:42:14 | 只看该作者
看我做的,距离大约在5M,但是精度和稳定性很好,正负跳变在2mm左右,带温度修正,1路继电器输出,10位的DA输出,4-20mA输出,485总线的MODBUS协议通讯,OLED菜单设置


(原文件名:1.JPG)


(原文件名:2.JPG)


(原文件名:3.JPG)

出0入0汤圆

31
发表于 2009-9-24 22:13:13 | 只看该作者
收下来了

出0入42汤圆

32
发表于 2009-9-24 22:38:44 | 只看该作者
【30楼】 tbbt

相当不错啊! 请问驱动部分使用什么实现的呢?收发分离还是一体的探头?接收好像用了38K的红外IC

出0入0汤圆

33
发表于 2009-9-25 07:11:38 | 只看该作者
驱动是用4069,12V供电,收发分离

出0入0汤圆

34
发表于 2009-10-12 09:04:23 | 只看该作者

出0入0汤圆

35
发表于 2009-11-3 21:35:41 | 只看该作者
mark

出0入0汤圆

36
发表于 2009-11-8 13:18:37 | 只看该作者
相当赞!

出0入0汤圆

37
发表于 2009-11-12 23:36:34 | 只看该作者
谢谢楼主

出0入0汤圆

38
发表于 2009-12-8 12:55:09 | 只看该作者
MARK

出0入0汤圆

39
发表于 2009-12-9 00:03:50 | 只看该作者
xuexi

出0入0汤圆

40
发表于 2009-12-30 13:46:17 | 只看该作者
学习了

出0入0汤圆

41
发表于 2010-1-2 11:20:45 | 只看该作者
牛人

出0入0汤圆

42
发表于 2010-1-23 16:58:02 | 只看该作者
mark~

出0入0汤圆

43
发表于 2010-1-30 20:52:20 | 只看该作者
标记下,学习

出0入0汤圆

44
发表于 2010-1-30 23:12:27 | 只看该作者
正找呢,标记

出0入0汤圆

45
发表于 2010-2-3 21:41:54 | 只看该作者
请问在与CX20106A的2、3引脚相连接的电容用什么样的?有没有正负极性之分?是我们普通的贴片电容吗?阻值可以改动吗?谢谢各位大侠帮忙!

出0入0汤圆

46
发表于 2010-4-10 17:51:53 | 只看该作者
发上来做广告的。。。。。哎!

出0入0汤圆

47
发表于 2010-5-27 16:28:12 | 只看该作者
这么强大...!!!

出0入0汤圆

48
发表于 2010-6-3 16:49:50 | 只看该作者
回复【29楼】z7926573
-----------------------------------------------------------------------

精度在2mm可能吗,看来你一点都不懂什么叫超声波,测距的超声波大多用的是40K,那么它的波长就是8mm多了,那怎么精度又怎么会达到2mm呢,瞎说。

出0入0汤圆

49
发表于 2010-6-29 10:11:43 | 只看该作者
mark

出0入0汤圆

50
发表于 2010-7-20 11:50:25 | 只看该作者
mark

出0入0汤圆

51
发表于 2010-7-20 13:21:50 | 只看该作者
收藏

出0入0汤圆

52
发表于 2010-7-31 16:30:30 | 只看该作者
正找呢

出0入0汤圆

53
发表于 2010-8-10 21:11:00 | 只看该作者
顶,谢谢楼主分享

出0入0汤圆

54
发表于 2010-8-13 16:50:22 | 只看该作者
赞一个。。。。

出0入0汤圆

55
发表于 2010-8-15 15:25:29 | 只看该作者
程序真规范,学习了~

出0入0汤圆

56
发表于 2010-8-28 22:26:14 | 只看该作者
MARK ~~~~

出0入0汤圆

57
发表于 2010-9-7 11:15:59 | 只看该作者
http://shop59582324.taobao.com/  这里有很好的超声波测距模块 哦,精度很高,老板人也很好,在同等产品中,非常的便宜,大家可以去看看,不懂的地方,并且还有人给回答,是超声波初学者的首选哦

出0入0汤圆

58
发表于 2010-9-10 11:49:19 | 只看该作者
牛人 mark

出0入0汤圆

59
发表于 2010-9-21 23:54:51 | 只看该作者
mark

出0入0汤圆

60
发表于 2010-10-4 09:39:14 | 只看该作者
mark

出0入0汤圆

61
发表于 2010-10-4 11:27:59 | 只看该作者
好,感谢分享。

出0入0汤圆

62
发表于 2010-10-4 14:07:03 | 只看该作者
mk。。。

出0入0汤圆

63
发表于 2010-12-19 14:17:32 | 只看该作者
谢谢

出0入0汤圆

64
发表于 2011-1-25 16:35:08 | 只看该作者
牛人啊

出0入0汤圆

65
发表于 2011-2-14 16:10:37 | 只看该作者
牛人很多呀

出0入0汤圆

66
发表于 2011-2-21 22:46:46 | 只看该作者
谢谢分享,收下学习。

出0入0汤圆

67
发表于 2011-3-10 12:33:28 | 只看该作者
程序有误啊·······

出0入0汤圆

68
发表于 2011-4-5 00:08:14 | 只看该作者
mark

出0入0汤圆

69
发表于 2011-4-24 14:44:33 | 只看该作者
mark

出0入0汤圆

70
发表于 2011-4-24 14:48:56 | 只看该作者
marke

出0入0汤圆

71
发表于 2011-4-24 14:57:14 | 只看该作者
mark

出0入0汤圆

72
发表于 2011-5-13 02:50:29 | 只看该作者
mark

出0入0汤圆

73
发表于 2011-5-28 02:42:30 | 只看该作者
回复【30楼】tbbt
看我做的,距离大约在5m,但是精度和稳定性很好,正负跳变在2mm左右,带温度修正,1路继电器输出,10位的da输出,4-20ma输出,485总线的modbus协议通讯,oled菜单设置


(原文件名:1.jpg)
引用图片


(原文件名:2.jpg)
<center><a class=tt16 onclick="fnquickimagequote(this,'......
-----------------------------------------------------------------------

出0入0汤圆

74
发表于 2011-5-28 02:43:51 | 只看该作者
请问tbbt有没有相关的资料?你做的好cool,想学学

出0入0汤圆

75
发表于 2011-6-25 10:20:20 | 只看该作者
回复【30楼】tbbt
看我做的,距离大约在5m,但是精度和稳定性很好,正负跳变在2mm左右,带温度修正,1路继电器输出,10位的da输出,4-20ma输出,485总线的modbus协议通讯,oled菜单设置


(原文件名:1.jpg)
引用图片


(原文件名:2.jpg)
<center><a class=tt16 onclick="fnquickimagequote(this,'......
-----------------------------------------------------------------------

资料能公开一下吗

出0入0汤圆

76
发表于 2011-7-3 07:16:49 | 只看该作者
厉害啊,技术一流!

出0入0汤圆

77
发表于 2011-7-11 16:07:55 | 只看该作者
我也做过一个,不过跳变的很厉害

出0入0汤圆

78
发表于 2011-7-24 16:05:41 | 只看该作者
谢谢,学习了

出0入0汤圆

79
发表于 2011-7-25 12:00:05 | 只看该作者
牛人,厉害啊

出0入0汤圆

80
发表于 2011-8-2 00:43:46 | 只看该作者
MARK

出0入0汤圆

81
发表于 2011-8-2 11:43:13 | 只看该作者
好贴 我要参考

出0入0汤圆

82
发表于 2011-8-2 15:29:17 | 只看该作者
mark!

出0入0汤圆

83
发表于 2011-8-6 14:16:29 | 只看该作者
我们做得能测4.5m,不过换成防水头就挂了。。。。有懂得牛人么?

出0入0汤圆

84
发表于 2011-8-15 21:08:27 | 只看该作者
收藏下

出0入0汤圆

85
发表于 2011-8-29 11:50:17 | 只看该作者
mark!!!!收藏

出0入0汤圆

86
发表于 2011-8-30 10:48:53 | 只看该作者
不错的资料,我们做的小车当时本来想实现超声波测距的,由于时间关系只能搁置了

出0入0汤圆

87
发表于 2011-10-7 19:39:56 | 只看该作者
mark

出0入42汤圆

88
发表于 2011-10-7 23:01:34 | 只看该作者
回复【87楼】dzc0426  
我们做得能测4.5m,不过换成防水头就挂了。。。。有懂得牛人么?
-----------------------------------------------------------------------

防水探头要中频变压器驱动才可以.

出0入0汤圆

89
发表于 2011-10-9 13:33:50 | 只看该作者
程序值得参考!!!

出0入0汤圆

90
发表于 2011-10-13 17:08:20 | 只看该作者
急需。。。。

出0入0汤圆

91
发表于 2011-11-26 10:42:39 | 只看该作者
mark一下

出0入0汤圆

92
发表于 2011-12-5 00:34:27 | 只看该作者
mark

出0入0汤圆

93
发表于 2011-12-5 07:10:03 | 只看该作者
谢楼主,受益匪浅

出0入0汤圆

94
发表于 2011-12-16 10:42:59 | 只看该作者
mark

出0入0汤圆

95
发表于 2011-12-16 14:25:09 | 只看该作者
mark
!

出0入0汤圆

96
发表于 2011-12-27 15:46:06 | 只看该作者
不错呀!

出0入0汤圆

97
发表于 2012-1-2 15:59:18 | 只看该作者
相当牛啊!受教了。

出0入0汤圆

98
发表于 2012-1-5 23:38:37 | 只看该作者
mark一下,之前自己做的失败了,试试楼主的电路^_^

出0入0汤圆

99
发表于 2012-1-11 09:45:08 | 只看该作者
很好啊!支持,学习!

出0入0汤圆

100
发表于 2012-2-3 13:12:07 | 只看该作者
回复【楼主位】xsh2005105326 咖啡糖
-----------------------------------------------------------------------

不粗。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 19:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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