找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3537|回复: 1
打印 上一主题 下一主题
收起左侧

如何链接GP2D12与51单片机?

[复制链接]
跳转到指定楼层
楼主
如何通过GP2D12测得距离并通过adc0809转换成数字信号给51单片机,使得距离通过LCD1602显示出来?

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

GP2D12

GP2D12

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

51单片机学习板

51单片机学习板
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:149451 发表于 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);
               
                }
        
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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