急求结合单片机STC89C52,HC-SR04超声波传感器,LCD1602的超声波测距代码

需要将测得的距离显示在1602上,以mm为单位LZ看了好多别人的代码,自己也写过代码,但是总是不行,由于是初学者,恳请大神指导!... 需要将测得的距离显示在1602上,以mm为单位
LZ看了好多别人的代码,自己也写过代码,但是总是不行,由于是初学者,恳请大神指导!
展开
 我来答
猛兽04
推荐于2016-08-20
知道答主
回答量:20
采纳率:0%
帮助的人:14.6万
展开全部

这个是主函数的

1602.h的内容如下:

 

#include"intrins.h"
#define uchar unsigned char
#define uint  unsigned int

sbit E=P2^7;  
sbit RW=P2^6;
sbit RS=P2^5;  

void delay()
{
 uchar i=12;
 while(i--)
 {
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
 }
 }
bit Busy(void)
{
 bit busy_flag = 0;
 RS = 0;
 RW = 1;
 E = 1;
 delay();
 busy_flag = (bit)(P0 & 0x80);
 E = 0;
 return busy_flag;
}

void wcmd(uchar del)
{
 while(Busy());
 RS = 0;
 RW = 0;
 E = 0;
 delay();
 P0 = del;
 delay();
 E = 1;
 delay();
 E = 0;
}

void wdata(uchar del)
{
 while(Busy());
 RS = 1;
 RW = 0;
 E = 0;
 delay();
 P0 = del;
    delay();
 E = 1;
 delay();
 E = 0;
}

void L1602_init(void)
{
 wcmd(0x38);
 wcmd(0x0c);
 wcmd(0x06);
 wcmd(0x01);
}

void L1602_char(uchar hang,uchar lie,char sign)
{
 uchar a;
 if(hang == 1) a = 0x80;
 if(hang == 2) a = 0xc0;
 a = a + lie - 1;
 wcmd(a);
 wdata(sign);
}

void L1602_string(uchar hang,uchar lie,uchar *p)
{
 uchar a,b=0;
 if(hang == 1) a = 0x80;
 if(hang == 2) a = 0xc0;
 a = a + lie - 1;
 while(1)
 {
  wcmd(a++);
  b++;
  if((*p == '\0')||(b==17)) break;
  wdata(*p);
  p++;
 }
}

 

合妙松kE
2013-08-13 · 超过20用户采纳过TA的回答
知道答主
回答量:1522
采纳率:0%
帮助的人:319万
展开全部
恩,建议你先从一些简单的程序入手,,流水灯数码管什么的,。再去做超声波的设计吧
追问
这些东西都学过了,现在要做点实用的东西
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式