<cite id="rx2al"></cite>
<td id="rx2al"></td>

  • <blockquote id="rx2al"></blockquote>
      <blockquote id="rx2al"><ruby id="rx2al"></ruby></blockquote>
    1. <label id="rx2al"><sup id="rx2al"></sup></label>
        <blockquote id="rx2al"><sup id="rx2al"><rp id="rx2al"></rp></sup></blockquote>

      1. 电子电路 功放电路 电子制作 集成块资料 电子报 pcb 变压器 元器件知识 逆变器 电路图 开关电源 传感器技术 led 电磁兼容
        返回首页
        当前位置: 首页 > 电子电路 > 设计编程

        51单片机对LCD1602液晶显示器的控制

        时间:2018-12-26 14:43:12来源:网络 作者:电子爱好者 点击:
        51单片机对LCD1602液晶显示器的控制

        要想实现人机交互£¬显示装置是不可缺少的¡£这篇文章主要关于如何控制液晶显示£¬并在此基础上加上定时器的功能£¬把原来已用数码管显示

        51单片机对LCD1602液晶显示器的控制

        要想实现人机交互£¬显示装置是不可缺少的¡£这篇文章主要关于如何控制液晶显示£¬并在此基础上加上定时器的功能£¬把原来已用数码管显示的定时器搬到液晶屏上?#30784;?/p>

        这里用到的液晶为LCD1602£¬能够同时显示16x02即32个字符£¨16列2行£©¡£1602液晶模块内部的字符发生存储器£¨CGROM£©已经存储了160个不同的点阵字符图形£¬这些字符有£º阿拉伯数字¡¢英文字母的大小?#30784;?#24120;用的符号等£¬直接向其写入ASCII码即可显示相应字符¡£1602共16个 管脚£¬管脚功能如下£º

        51单片机对LCD液晶显示器的控制

        实际应用时£¬所用液晶模块与单片机的连接图如下£º

        其中7~14管脚为IO£¬与单片机的P0口相接£¬单片机可通过向P0口发送数据被液晶模块并行接收¡£

        4管脚为数据命令选择端£¬与单片机P3^5口相连¡£故可通过控制P3^5口的电平高低£¬向液晶模块写入命令或数据¡£由数据手册得知£¬

        写指令时£¬RS=L£¬RW=L£¬D0~D7为指令码£¬E管脚为一高电平脉冲£»

        写数据时£¬RS=H£¬RW=L£¬D0~D7为数据£¬E管脚也为一高电平脉冲¡£

        P3^4与液晶模块6管脚相连£¬控制液晶模块使能¡£

        首先介绍液晶模块的指令¡£

        初始化指令0x38£º设置液晶为16x2显示¡£

        显示开关及光标设置£º

        00001DCB D=1£¬开显示£»

        C=1¡£显示光标£»

        B=1£¬光标?#20102;浮?/p>

        000001NS N=1£¬?#21015;?#19968;个字符后地址指针加1£¬光标加1£»

        N=0£¬?#21015;?#19968;个字符后地址指针减1£¬光标减1

        S=1£¬写一个字符时£¬整屏显示向左移动£¨N=1£©或右移£¨N=0£©

        S=0£¬不移动

        数据写入控制指令£º

        LCD模块中的RAM地址?#25104;?#22914;下

        51单片机对LCD液晶显示器的控制

        要想把数据写入X地址£¬则先要输入指令0x80+X£»

        例如想让字符显示在第二行的第一个£¬则在将字符传入前£¬要写入指令write_command£¨0x80+0x40£©

        此外£¬0x01H表示显示清屏£¬数据指针清零£¬所有显示清零£»

        0x02H表示显示回车£¬数据指针清零¡£

        了解了这些之后£¬可以知道如果我们想要控制液晶的显示£¬就要先学会怎样向液晶写指令和写数据¡£

        写指令函数

        //向LCD1602写指令

        voidwrite_com£¨ucharcom£©

        {

        lcdrs=0;//RS=L

        P0=com;//P0口输出

        delay£¨5£©;//延时

        lcden=1;//E=H

        delay£¨5£©;

        lcden=0;//延时后£¬E变为L£¬造成了一个高电平脉冲£¬P0口高低电平被写入

        }

        写数据的方法与此类似£¬照葫芦画瓢即可£º

        //向LCD1602写数据

        /*

        只需要将RS置高即可£¬

        其他语句与写指令函数相同

        */

        voidwrite_date£¨uchardate£©

        {

        lcdrs=1;//RS=H

        P0=date;

        delay£¨5£©;

        lcden=1;

        delay£¨5£©;

        lcden=0;

        }

        有了这两个函数£¬我们就可以向液晶模块里面写入指令和数据£¬从而实现对其的控制了¡£

        为了实现一个完整的对LCD1602功能的封装体现£¬我们还要再写一个初始化的函数£¬用于对LS1602的初始化工作

        voidInital£¨£©

        {

        lcden=0;//先不使能

        write_com£¨0x38£©;//写入初始化指令

        write_com£¨0x0e£©;//显示开£¬光标显示但不?#20102;?/p>

        write_com£¨0x06£©;//?#21015;?#21518;指针加1£¬光标加1

        write_com£¨0x01£©;//显示清屏£¬指针清零

        }

        至此£¬就完成了对LCD1602的功能封装£¬在其他的程序中£¬就可以使用这些函数用于液晶显示£¬例如下面实现的用1602显示计时器¡£

        计时器量程为1小时£¬显示格式为XX£ºXX£¨前面为分£¬后面为秒£©

        用到了单片机中的计时器0£¬工作方式1£¬¡£50ms发生一次中断£¬使一个用于计数的number自增一次¡£number初值设为1£¬故number自增至20时£¬?#24471;?#35745;时1s已到£¬可以Do Something£¬也就是把处理函数加进来了¡£

        C文件如下£º

        #include

        #defineucharunsignedchar

        #defineuintunsignedint

        sbitlcden=P3^4;

        sbitlcdrs=P3^5;

        ucharnum=1;

        ucharmiao=0;

        ucharfen=0;

        voidInital£¨£©;

        voidInital_Time£¨£©;

        voidwrite_com£¨ucharcom£©;

        voidwrite_date£¨uchardate£©;

        voiddelay£¨ucharTIme£©;

        voidClock£¨£©;

        voidDisplay£¨ucharx£¬uchary£©;

        voidmain£¨£©容源电子网为你提供技术支持£¬本站网址£ºwww.qj5v.com

        顶一下
        0%
        返回首页
        0
        0%

        ------?#25351;?#32447;----------------------------
        发表评论
        请自觉遵守互联网相关的政策法规£¬严禁发布色情¡¢暴力¡¢反动的言论¡£
        表情:
        用户名: 密码: 验证码: 匿名发表
        推荐内容
        • 51单片机对LCD1602液晶显示器的控

          51单片机对LCD1602液晶显示器的控制 要想实现人机交互£¬显示装置是不可缺少的¡£这篇文章主要关于如何控制液晶显示£¬并在此基础上加上定时器的功能£¬把原来已用数码管显示

        • 介绍编码器的工作原理和作用

          编码器的工作原理和功能£º它是一个旋转传感器£¬将旋转位移转换为一系列数字脉冲信号¡£这些脉冲可用于控制角位移¡£如果编码器与齿?#25351;?#25110;螺钉组合£¬可用于测量线性位移¡£

        ±±¾©pkÈü³µ¹ÙÍø
        <cite id="rx2al"></cite>
        <td id="rx2al"></td>

      2. <blockquote id="rx2al"></blockquote>
          <blockquote id="rx2al"><ruby id="rx2al"></ruby></blockquote>
        1. <label id="rx2al"><sup id="rx2al"></sup></label>
            <blockquote id="rx2al"><sup id="rx2al"><rp id="rx2al"></rp></sup></blockquote>

            <cite id="rx2al"></cite>
            <td id="rx2al"></td>

          1. <blockquote id="rx2al"></blockquote>
              <blockquote id="rx2al"><ruby id="rx2al"></ruby></blockquote>
            1. <label id="rx2al"><sup id="rx2al"></sup></label>
                <blockquote id="rx2al"><sup id="rx2al"><rp id="rx2al"></rp></sup></blockquote>