极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 967|回复: 5

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

[复制链接]
发表于 2018-8-10 17:34:03 | 显示全部楼层 |阅读模式
本帖最后由 弘毅 于 2018-8-10 19:11 编辑
  1. #include <LiquidCrystal.h>

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

  8. LiquidCrystal  lcd(12,11,2,3,4,5,6,7,8,9,10);
  9. #define Trig 9
  10. #define Echo 12
  11. char dis;
  12. float  t;
  13. void Conut(void){
  14. digitalWrite(Trig, LOW);
  15. delayMicroseconds(2);
  16. digitalWrite(Trig,HIGH);
  17. delayMicroseconds(10);
  18. digitalWrite(Trig, LOW);
  19. t=pulseIn(Echo,HIGH);
  20. dis=(t*0.034)/2;

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


  27.    for(int  i=Enable;i<=RS;i++)
  28.   {pinMode(i,OUTPUT);}
  29.   delay(100);
  30.   LcdCommandWrite(0x38);
  31.   delay(20);
  32.   LcdCommandWrite(0x06);
  33.   delay(20);
  34.   LcdCommandWrite(0x0c);
  35.   delay(20);
  36.   LcdCommandWrite(0x01);
  37.   delay(20);//初始化1602

  38.   
  39.   
  40.   // put your setup code here, to run once:

  41. }

  42. void loop()
  43. {

  44.   unsigned char num;
  45.   
  46.   LcdCommandWrite(0x8e);
  47. LcdCommandWrite(0x40);
  48.    
  49.       for(num=0;num<8;num++)
  50.     {
  51.        LcdDataWrite(table1[num]);
  52.     }

  53. LcdCommandWrite(0x80);    //
  54.   LcdDataWrite(0x00);
  55.     LcdCommandWrite(0x48);

  56.       for(num=0;num<8;num++)
  57.     {
  58.        LcdDataWrite(table2[num]);
  59.     }
  60.   
  61. LcdCommandWrite(0x81);   
  62.   LcdDataWrite(0x01);   
  63.   LcdCommandWrite(0x82);
  64.   LcdDataWrite(' ');
  65.   LcdCommandWrite(0x50);
  66.     for(num=0;num<8;num++)
  67.     {
  68.        LcdDataWrite(table3[num]);
  69.     }
  70.   
  71. LcdCommandWrite(0x83);   
  72.   LcdDataWrite(0x02);  
  73.    LcdCommandWrite(0x58);
  74.     for(num=0;num<8;num++)
  75.     {
  76.        LcdDataWrite(table4[num]);
  77.     }
  78.   
  79. LcdCommandWrite(0x84);   
  80.   LcdDataWrite(0x03);
  81.    LcdCommandWrite(0x85);
  82.     LcdDataWrite(':');
  83.    LcdCommandWrite(0x8E);
  84.     LcdDataWrite('C');
  85.   LcdCommandWrite(0x8F);
  86.     LcdDataWrite('M');
  87.    
  88.   
  89. Serial.print("Distance=");
  90. Serial.print(dis);
  91. delay(1000);

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

  94. }
复制代码

单独运行就正常,并道全部程序里就一直显示0.00

单独运行就正常,并道全部程序里就一直显示0.00

4.PNG
5.PNG
回复

使用道具 举报

 楼主| 发表于 2018-8-10 17:35:46 | 显示全部楼层
刚学单片机,请大佬们多多指教
回复 支持 反对

使用道具 举报

发表于 2018-8-11 08:20:33 | 显示全部楼层
可能是接线有问题吧。
回复 支持 反对

使用道具 举报

发表于 2018-8-11 08:21:09 | 显示全部楼层
参考一下我的代码。
  1. #include <LiquidCrystal.h>   //调用arduino自带的LiquidCrystal库       
  2. LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//设置接口       
  3. const int TrigPin = 2;
  4. const int EchoPin = 3;
  5. float cm;
  6. void setup()
  7. {
  8. pinMode(TrigPin, OUTPUT);
  9. pinMode(EchoPin, INPUT);
  10.   lcd.begin(16, 2);  //初始化LCD
  11.   delay(1000); //延时1000ms
  12. }       
  13. void loop ()
  14. {       
  15.   digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
  16. delayMicroseconds(2);
  17. digitalWrite(TrigPin, HIGH);
  18. delayMicroseconds(10);
  19. digitalWrite(TrigPin, LOW);
  20. cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
  21. cm = (int(cm * 100.0)) / 100.0; //保留两位小数
  22.   lcd.clear(); //清屏
  23.   lcd.setCursor(0, 0) ; //设置光标位置为第一行第一个位置
  24.   lcd.print("Length= ");      //使屏幕显示文字
  25.   lcd.print(cm);
  26.   lcd.print("cm");
  27.    lcd.setCursor(0, 1) ;
  28.   lcd.print("Arduino Fancier");
  29.         if (cm >= 80) {
  30.   lcd.clear();
  31.   lcd.setCursor(0, 0) ; //设置光标位置为第一行第一个位置
  32.   lcd.print("   Range Out");
  33.         }else{
  34.         }
  35.         lcd.print("");

  36.   delay(200);                     //延时0.1秒,这里也就是刷新速度。       
  37. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 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内。
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2018-10-17 03:36 , Processed in 0.043411 second(s), 7 queries , File On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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