找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2666|回复: 1
收起左侧

单片机红外测距

[复制链接]
ID:299887 发表于 2018-4-2 15:27 | 显示全部楼层 |阅读模式
#include <reg52.h>
#include <intrins.h> //°üo¬NOP¿ÕÖ¸áîoˉêy_nop_
#include<stdio.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL;

#define uchar unsigned char
#define uint  unsigned int

sbit eoc=P3^0;
sbit oe =P3^1;
sbit st =P3^2;

sbit clk=P3^6;

sbit rs=P0^7;
sbit rw=P0^6;
sbit ep=P0^5;

uchar code table[]="0123456789";


uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x0,0x0};//êyÂë1ü12òõ¼¶ÏÔê¾0¡«9

uint ad_0809,a1,a2,a3;
uchar out;



void delaynms(uint x);
void display();
void ad0809();


void delayms(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}

void delay (int m)
{
unsigned char i,j;
for (i=0;i<m;i++)
for (j=0;j<253;j++);
}

BOOL lcd_bz()
{
  BOOL result;
  rs=0;           // ¶áÃ|DÅoÅ
  rw=1;
  ep=1;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  result = (BOOL)(P2&0x80);
  ep=0;
  result ;
}

lcd_wcmd (BYTE cmd)
{
  while (lcd_bz());
  rs=0;
  rw=0;
  ep=0;
  _nop_();
  _nop_();
  P2=cmd ;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  ep=1;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  ep=0;
}

lcd_pos (BYTE pos)
{
  lcd_wcmd (pos|0x80);
}

lcd_wdat (BYTE dat)
{
   while (lcd_bz());
  rs=1;
  rw=0;
  ep=0;
  _nop_();
  _nop_();
  P2=dat ;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  ep=1;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  ep=0;
}

lcd_init ()
{
  lcd_wcmd (0x38);
  delay (1);
  lcd_wcmd (0x0c);
  delay (1);
  lcd_wcmd (0x06);
  delay (1);
  lcd_wcmd (0x01);
  delay (1);
}

void main()
{
  lcd_init ();
  delay (10);

                   
TMOD=0X01;
TH0=(65536-2)/256;
TL0=(65536-2)%256;
EA=1;
ET0=1;
TR0=1;

while(1)
{
  ad0809();
  ad_0809=out;
  display();

    lcd_pos (7);
  lcd_wdat(table[a1]);

   lcd_pos (8);
lcd_wdat(table[a2]);

    lcd_pos (9);
lcd_wdat(table[a3]);



  }
}

void T0_time()interrupt 1
{
TH0=(65536-2)/256;
TL0=(65536-2)%256;
clk=~clk;

}

void delaynms(uint x)       
{
while(x-->0)
       
        {
          unsigned char k;
          for(k=10;k>0;k--);
        }
}


void display()
{
  a1=(ad_0809*49/25)/100;  //the highest bit
  a2=(ad_0809*49/25)/10%10;
  a3=(ad_0809*49/25)%100%10;
}



void ad0809()
{

  P1=0xff;//input
  oe=0;
  st=0;
  st=1;//Çå0
  st=0;//Æô¶ˉ
  delaynms(1);
  while(!eoc);           //eocμèóúáãμÄ»°£¬ÔúÕaàïμè′yÖ±μ½eoc=1£¬½áêøÑ-»·£¬ÏòÏÂÖ′DD
  oe=1;
  out=P1;
  oe=0;
}




回复

使用道具 举报

ID:673258 发表于 2019-12-25 10:33 | 显示全部楼层
有仿真图吗?仿真成功了吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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