找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2674|回復(fù): 1
收起左側(cè)

單片機紅外測距

[復(fù)制鏈接]
ID:299887 發(fā)表于 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;
}




回復(fù)

使用道具 舉報

ID:673258 發(fā)表于 2019-12-25 10:33 | 顯示全部樓層
有仿真圖嗎?仿真成功了嗎?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表