找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助,测距仪程序有一个错误,怎么改,求大神帮助

[复制链接]
跳转到指定楼层
楼主
#include"reg51.h"
#include"intrins.h"
sbit lcdrs=P3^5;
sbit lcdrw=P3^6;
sbit lcden=P3^7;
sbit Trig=P2^6;
sbit Echo=P2^7;
bit flag=0;
unsigned char num[ ]="0123456789";
unsigned char dis1[ ]="The Distance is:";
unsigned char dis2[ ]="Error!";
unsigned int diistance;
//ÑÓʱº¯Êý
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
  for(y=400;y>0;y--);
}
//LCDдָÁÊý
void lcdWriteCmd(unsigned char  cmd)
{
lcdrs=0;
P1=cmd;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
//дÊý¾Ýº¯Êý
void lcdWriteDate(unsigned char dat)
{
lcdrs=1;
P1=dat;
delay(20);
lcden=1;
delay(20);
lcden=0;
}
//LCDÇåÆÁº¯Êý
void clear()
{
lcdWriteCmd(0x01);
delay(5);
}
//LCD³õʼ»¯º¯Êý
void lcdInit()
{
lcden=0;
lcdWriteCmd(0x38);
lcdWriteCmd(0x0f);
lcdWriteCmd(0x06);
clear();
lcdWriteCmd(0x80);
}
//LCDÏÔʾ¾àÀ뺯Êý
void lcdDisplay(unsigned int temp)
{
unsigned int i;
for(i=0;i<17;i++)
{
   lcdWriteCmd(dis1[i]);
  }
lcdWriteCmd(0x80+0x40);
lcdWriteCmd(num[temp/100]);
lcdWriteCmd(num[temp/10%10]);
lcdWriteCmd(num[temp%10]);
lcdWriteCmd('c');
lcdWriteCmd('m');
delay(400);
clear();
}
//&sup3;&not;&Eacute;ù&sup2;¨&sup2;&acirc;&frac34;à&AElig;&ocirc;&para;&macr;&ordm;&macr;&Ecirc;&yacute;
void start()
{
int i;
Trig=1;
for(i=0;i<20;i++)
{
  _nop_();
  }
Trig=0;
}
//&frac34;à&Agrave;&euml;&frac14;&AElig;&Euml;&atilde;&Oacute;&euml;&Iuml;&Ocirc;&Ecirc;&frac34;&ordm;&macr;&Ecirc;&yacute;
void  lcdWriteData();
void count()
{
unsigned int i,distance,falseValue,time,timeH,timeL;
timeH=TH0;
timeL=TL0;
TH0=0;
TL0=0;
time=time*256+timeL;
distance=time*1.7/100;
if(distance<10||distance>200||flag==0)
{
  flag=1;
  falseValue=888;
  lcdWriteCmd(0x80);
  for(i=0;i<7;i++)
  {
   lcdWriteData(dis2[i]);
    }
  delay(200);
  clear();
  lcdDisplay(falseValue);
  }
else
{
  lcdDisplay(distance);
  }
}
//&Ouml;÷&ordm;&macr;&Ecirc;&yacute;
void main()
{
  lcdrw=0;
while(1)
{
  lcdInit();
  TMOD=0x11;
  TH0=0;
  TL0=0;
  Trig=0;
  Echo=0;
  start();
  while(!Echo);
  TR0=1;
  while(Echo);
  TR0=0;
  count();
  delay(200);
   }
}

捕获.PNG (37.17 KB, 下载次数: 66)

捕获.PNG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:350243 发表于 2018-6-14 15:56 | 只看该作者
有没有大佬在线指点迷津
回复

使用道具 举报

板凳
ID:303383 发表于 2018-6-14 18:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

地板
ID:350754 发表于 2018-6-14 18:42 | 只看该作者
小猫猫爱吃鱼 发表于 2018-6-14 18:02
在头文件后面加上

#define uchar unsigned char

这个方法她已经试过了,没有用,在前面加了头文件也不管用,我们下午去问老师的时候撞上了饭点,老师要去接孩子放学,顾不上我们,哈哈
回复

使用道具 举报

5#
ID:352144 发表于 2018-6-14 21:07 | 只看该作者

在头文件后面加上

#define uchar unsigned char
回复

使用道具 举报

6#
ID:234075 发表于 2018-6-14 22:56 | 只看该作者
楼主不地道!截图之前void后面有个uchar,你编译出错后把这个删了才截的图,其实问题就是uchar没有定义!“她”没试过,你女朋友啊?有没告诉她后面不能加“;”
回复

使用道具 举报

7#
ID:341045 发表于 2018-6-15 01:30 | 只看该作者
//void  lcdWriteData();
回复

使用道具 举报

8#
ID:341045 发表于 2018-6-15 01:31 | 只看该作者
93多余的,注释掉       //void  lcdWriteData();
回复

使用道具 举报

9#
ID:164602 发表于 2018-6-15 08:35 | 只看该作者
你抄的程序,抄掉了一个子函数!
就是第93行的void  lcdWriteData()
没有这个函数,像楼上说的注释掉,就会有其它的错。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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