标题: 如何链接GP2D12与51单片机? [打印本页]

作者: 午夜两点半的我x    时间: 2017-1-21 19:47
标题: 如何链接GP2D12与51单片机?
如何通过GP2D12测得距离并通过adc0809转换成数字信号给51单片机,使得距离通过LCD1602显示出来?

IMG_4154.JPG (494.33 KB, 下载次数: 77)

GP2D12

GP2D12

IMG_4155.JPG (1.49 MB, 下载次数: 62)

51单片机学习板

51单片机学习板

作者: w1179benp    时间: 2017-2-9 10:39
看看网上找到的这个能用不?

#include"reg52.h"
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit cs = P3^2;
long int read=0;
sbit wela = P2^7;
sbit dula = P2^6;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
uchar bai,shi,ge,num;
uchar table[] ="123456789";
void delayms(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y-- );
}
void write_com(uchar com)
{        
        lcdrs=0;
        P0=com;
        delayms(5);
        lcden=1;
        delayms(5);
        lcden=0;
}
void write_data(uchar date)
{
        lcdrs=1;
        P0=date;
        delayms(5);
        lcden=1;
        delayms(5);
        lcden=0;
}
void init()
{
        dula=0;
        wela=0;
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}
void delay(uint a)           //  a 个1us延时
{
        for(;a > 0;a --)
        _nop_();_nop_();
}
void T0_time() interrupt 1
{
        cs = 0;
        RD = 0;
        read = P1;
        INT0 = 1;
}
uint adc0804()
{
TMOD=0X01;
TH0=(65536-45872)/256;
TL0=(65536-45872)/256;
EA=1;
ET0=1;
TR0=1;
        INT0 = 1;
        cs = 0;
        WR = 0;
        delay(255);
        cs = 1;
        WR = 1;
        delay(200);               
        read = read * 196 /100;
        return read;
        
}
void math(uint x)
{
        bai = x / 100;
        shi = x /10 % 10;
        ge = x % 10;
}/*
void display()
{         
         
        math(adc0804());
        
        dula=1;
        P0 = table[bai+10];
        dula=0;
        P0=0xff;
        wela = 1;
        P0 = 0xfe;
        wela=0;
        delay(7000000);
               
        dula=1;
        P0 = table[shi];
        dula=0;
        P0=0xff;
        wela = 1;
        P0 = 0xfd;
        wela=0;
        delay(7000000);
               
        dula=1;
        P0 = table[ge];
        dula=0;
        P0=0xff;
        wela = 1;
        P0 = 0xfb;
        wela=0;
        delay(7000000);
        
}
   */
void main()
{
    cs=0;
                init();           

                   while(1)
                {
               
            math(adc0804());
               
                write_com(0x80+5);
        
                write_data(table[bai]);
                write_data(table[shi]);
                write_data(table[ge]);
                        delayms(500);
               
                }
        
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1