亚博智能论坛  
  
查看: 741|回复: 0

课程20--1602液晶

  [复制链接]
  • TA的每日心情
    慵懒
    2017-7-29 14:25
  • 121

    主题

    161

    帖子

    576

    积分

    超级版主

    Rank: 9Rank: 9Rank: 9

    积分
    576
    发表于 2017-6-2 14:11:00 | 显示全部楼层 |阅读模式
    1602液晶
             本次实验使用arduino直接驱动1602液晶显示字母
    1602液晶在应用中非常广泛,最初的1602液晶使用的是HD44780控制器,现在各个厂家的1602模块基本上都是采用了与之兼容的IC,所以特性上基本都是一致的。

    1602LCD主要技术参数
    显示容量为16×2个字符;
    芯片工作电压为4.55.5V
    工作电流为2.0mA5.0V);
    模块最佳工作电压为5.0V
    字符尺寸为2.95×4.35W×Hmm

    1602采用标准的16脚接口,其中:
    1脚:VSS为地电源
    2脚:VDD5V正电源
    3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
    4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
    5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSRW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读信号,当RS为高电平RW为低电平时可以写入数据。
    6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
    714脚:D0D78位双向数据线。
    15脚:背光电源正极
    16脚:背光电源负极
    22RSKK(PHJCWD@@9L@]M_YW.png
    下图为1602液晶屏实物图
    WA4@QX$(FJ5HB550K{R)WFX.png
    1602直接与arduino通信,根据产品手册描述,分8位连接法与4位连接法,本实验使用8位连接法。硬件连接方式如下图好电路后,就可以开始编写程序了。

    8位连接法
    GYHQ[4MMY)W66ZY32}ML_]D.png
    4位连接法
    PO4HMQEM%9@JYK8~(T6IMY4.png
    Arduino的安装目录下\libraries\LiquidCrystal可以查看到函数的原型

    LiquidCrystal()——定义你的LCD的接口:各个引脚连接的I/O口编号,格式为LiquidCrystal(rs,enable, d4, d5, d6, d7)
    LiquidCrystal(rs, rw, enable, d4, d5, d6,d7)
    LiquidCrystal(rs, enable, d0, d1, d2, d3,d4, d5, d6, d7)
    LiquidCrystal(rs, rw, enable, d0, d1, d2,d3, d4, d5, d6, d7)
    begin()——定义LCD的长宽(n列×n行),格式lcd.begin(cols,rows)
    clear()——清空LCD,格式lcd.clear()
    home()——把光标移回左上角,即从头开始输出,格式lcd.home()
    setCursor()——移动光标到特定位置,格式lcd.setCursor(col,row)
    write()——在屏幕上显示内容(必须是一个变量,如”Serial.read()”),格式lcd.write(data)
    print()——在屏幕上显示内容(字母、字符串,等等),格式lcd.print(data)
    lcd.print(data, BASE)
    cursor()——显示光标(一条下划线),格式lcd.cursor()
    noCursor()——隐藏光标,格式lcd.noCursor()
    blink()——闪烁光标,格式lcd.blink()
    noBlink()——光标停止闪烁,格式lcd.noBlink()
    display()——(在使用noDisplay()函数关闭显示后)打开显示(并恢复原来内容),格式lcd.display()
    noDisplay()——关闭显示,但不会丢失原来显示的内容,格式为lcd.noDisplay()
    scrollDisplayLeft()——把显示的内容向左滚动一格,格式lcd.scrollDisplayLeft()
    scrollDisplayRight()——把显示的内容向右滚动一格,格式为lcd.scrollDisplayRight()
    autoscroll()——打开自动滚动,这使每个新的字符出现后,原有的字符都移动一格:如果字符一开始从左到右(默认),那么就往左移动一格,否则就向右移动,格式lcd.autoscroll()
    noAutoscroll()——关闭自动滚动,格式lcd.noAutoscroll()
    leftToRight()——从左往右显示,也就是说显示的字符会从左往右排列(默认),但屏幕上已经有的字符不受影响,格式lcd.leftToRight()
    rightToLeft()——从右往左显示,格式lcd.rightToLeft()
    createChar()——自造字符,最多5×8像素,编号0-7,字符的每个像素显示与否由数组里的数(0-不显示,1-显示)决定,格式lcd.createChar(num, data),有点难理解,可以看一个例子

    参考源程序如下:

    1. #include <LiquidCrystal.h> //申明1602液晶的函数库
    2. //申明1602液晶的引脚所连接的Arduino数字端口,8线或4线数据模式,任选其一
    3. LiquidCrystal lcd(12,11,10,9,8,7,6,5,4,3,2);   //8数据口模式连线声明
    4. //LiquidCrystal lcd(12,11,10,5,4,3,2); //4数据口模式连线声明
    5. int i;
    6. void setup()
    7. {
    8.   lcd.begin(16,2);      //初始化1602液晶工作                       模式
    9.                        //定义1602液晶显示范围为2行16列字符
    10.   while(1)
    11.   {
    12.     lcd.home();        //把光标移回左上角,即从头开始输出  
    13.     lcd.print("Hello World"); //显示
    14.       
    15. lcd.setCursor(0,1);   //把光标定位在第1行,第0列
    16. lcd.print("Welcome to BST-Arduino");       //显示
    17.     delay(500);
    18.     for(i=0;i<3;i++)
    19.     {
    20.       lcd.noDisplay();
    21.       delay(500);
    22.       lcd.display();
    23.       delay(500);
    24.     }
    25.     for(i=0;i<24;i++)
    26.     {
    27.       lcd.scrollDisplayLeft();
    28.       delay(500);
    29.     }
    30.     lcd.clear();
    31.     lcd.setCursor(0,0);        //把光标移回左上角,即从头开始输出  
    32.     lcd.print("Hi,"); //显示
    33. lcd.setCursor(0,1);   //把光标定位在第1行,第0列
    34.     lcd.print("Arduino is fun");       //显示
    35.     delay(2000);
    36.   }
    37. }
    38. void loop()
    39. {}//初始化已完成显示,主循环无动作
    复制代码


    回复

    使用道具 举报

    *滑动验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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