陈思鸥 发表于 2018-8-10 17:34:03

哪位大神能让我超声波模块读的数据在LCD1602上显示,我的程序一直显示0.00,NANO的...

本帖最后由 弘毅 于 2018-8-10 19:11 编辑

#include <LiquidCrystal.h>

#include "lcd1602.h"
#include"pitches.h"
unsigned chartable1[]={0x07,0x05,0x07,0x02,0x0B,0x0A,0x0A,0x1F};//
unsigned char table2[]={0x1F,0x10,0x1F,0x11,0x11,0x1F,0x10,0x1F};//距
unsigned char table3[]={0x01,0x1F,0x0A,0x09,0x0F,0x01,0x1F,0x17};//
unsigned char table4[]={0x00,0x1F,0x06,0x0A,0x1E,0x1F,0x15,0x1D};//离

LiquidCrystallcd(12,11,2,3,4,5,6,7,8,9,10);
#define Trig 9
#define Echo 12
char dis;
floatt;
void Conut(void){
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
t=pulseIn(Echo,HIGH);
dis=(t*0.034)/2;

}//超声波测距程序
void setup()
{
Serial.begin(9600);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);


   for(inti=Enable;i<=RS;i++)
{pinMode(i,OUTPUT);}
delay(100);
LcdCommandWrite(0x38);
delay(20);
LcdCommandWrite(0x06);
delay(20);
LcdCommandWrite(0x0c);
delay(20);
LcdCommandWrite(0x01);
delay(20);//初始化1602



// put your setup code here, to run once:

}

void loop()
{

unsigned char num;

LcdCommandWrite(0x8e);
LcdCommandWrite(0x40);
   
      for(num=0;num<8;num++)
    {
       LcdDataWrite(table1);
    }

LcdCommandWrite(0x80);    //
LcdDataWrite(0x00);
    LcdCommandWrite(0x48);

      for(num=0;num<8;num++)
    {
       LcdDataWrite(table2);
    }

LcdCommandWrite(0x81);   
LcdDataWrite(0x01);   
LcdCommandWrite(0x82);
LcdDataWrite(' ');
LcdCommandWrite(0x50);
    for(num=0;num<8;num++)
    {
       LcdDataWrite(table3);
    }

LcdCommandWrite(0x83);   
LcdDataWrite(0x02);
   LcdCommandWrite(0x58);
    for(num=0;num<8;num++)
    {
       LcdDataWrite(table4);
    }

LcdCommandWrite(0x84);   
LcdDataWrite(0x03);
   LcdCommandWrite(0x85);
    LcdDataWrite(':');
   LcdCommandWrite(0x8E);
    LcdDataWrite('C');
LcdCommandWrite(0x8F);
    LcdDataWrite('M');
   

Serial.print("Distance=");
Serial.print(dis);
delay(1000);

LcdCommandWrite(0x86);
lcd.print(dis);//显示距离数据

}

陈思鸥 发表于 2018-8-10 17:35:46

刚学单片机,请大佬们多多指教

asdfcgdc 发表于 2018-8-11 08:20:33

可能是接线有问题吧。

asdfcgdc 发表于 2018-8-11 08:21:09

参考一下我的代码。
#include <LiquidCrystal.h>   //调用arduino自带的LiquidCrystal库       
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//设置接口       
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
lcd.begin(16, 2);//初始化LCD
delay(1000); //延时1000ms
}       
void loop ()
{       
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
lcd.clear(); //清屏
lcd.setCursor(0, 0) ; //设置光标位置为第一行第一个位置
lcd.print("Length= ");      //使屏幕显示文字
lcd.print(cm);
lcd.print("cm");
   lcd.setCursor(0, 1) ;
lcd.print("Arduino Fancier");
        if (cm >= 80) {
lcd.clear();
lcd.setCursor(0, 0) ; //设置光标位置为第一行第一个位置
lcd.print("   Range Out");
        }else{
        }
        lcd.print("");

delay(200);                     //延时0.1秒,这里也就是刷新速度。       
}

陈思鸥 发表于 2018-8-11 17:04:41

asdfcgdc 发表于 2018-8-11 08:21
参考一下我的代码。

在lcd上显示的距离一直是0.00,我看了看,接线没有问题啊

林定祥 发表于 2018-8-13 08:54:33

在loop中加上Conut(),或者将Conut的内容移到loop内。
页: [1]
查看完整版本: 哪位大神能让我超声波模块读的数据在LCD1602上显示,我的程序一直显示0.00,NANO的...