哪位大神能让我超声波模块读的数据在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);//显示距离数据
}
刚学单片机,请大佬们多多指教 可能是接线有问题吧。 参考一下我的代码。
#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秒,这里也就是刷新速度。
} asdfcgdc 发表于 2018-8-11 08:21
参考一下我的代码。
在lcd上显示的距离一直是0.00,我看了看,接线没有问题啊 在loop中加上Conut(),或者将Conut的内容移到loop内。
页:
[1]