极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14045|回复: 3

arduino控制LCD1602问题

[复制链接]
发表于 2012-5-5 16:36:22 | 显示全部楼层 |阅读模式
本帖最后由 arduino-tinker 于 2012-5-5 16:45 编辑
  1. LiquidCrystal lcd(12,11,5,4,3,2);

  2. int sensor = 6;

  3. int val;

  4. void setup()
  5. {
  6.   lcd.begin(16, 2);
  7.   pinMode(sensor,INPUT);
  8. }

  9. void loop()
  10. {
  11.    if (val = LOW) {
  12.    lcd.clear;
  13.    lcd.setCursor(0,1);
  14.    lcd.print("LOW");
  15. } else {
  16.    lcd.clear;
  17.    lcd.setCursor(0,1);
  18.    lcd.print("HIGH");
  19. }
复制代码


想用LCD1602显示传感器返回的数据,但是问题出现了。如果在代码中加入"lcd.clear()"(代码第16、20行),那么显示的时候会不断的闪屏(应该是反复执行清屏代码的原因吧!)如果不加的话,倒是不会闪,但是问题是当显示的内容改变时,如果前面的内容比改变后的长,就不会被全部覆盖。例如,原来显示的是“HIGH”,当变为“LOW”时,屏幕会显示“LOWH”,上一个内容多出来的部分不会消失。请问要怎么写代码才能解决这个问题,谢谢!
回复

使用道具 举报

发表于 2012-5-6 10:04:48 | 显示全部楼层
  1. val = LOW
复制代码
你是要赋值还是要比较?
HIGH的时候没必要加clear
实在还闪试试看“LOW ”
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-6 12:22:07 | 显示全部楼层
lionelg 发表于 2012-5-6 10:04
你是要赋值还是要比较?
HIGH的时候没必要加clear
实在还闪试试看“LOW ”

是要比较!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-6 13:13:04 | 显示全部楼层
我想到一个办法,定义两个变量,val和old_val,在代码结束时把val赋值给old_val,然后写一个条件句,如果val等于old_val,说明显示内容不变,那么就不执行lcd.clear,如果不等,那么显示的内容就要发生变化,那么就执行lcd.clear。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-2 16:03 , Processed in 0.046817 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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