zoukankan      html  css  js  c++  java
  • 用 Proteus学习51单片机之1602液晶

    1602液晶,即一行有16个字符,共2行的液晶显示屏,只能显示ASCII码,不能显示汉字。一般1602有16条线,其中8根线是数据操作线,其他8根线是控制线,定义如下:

    端口名称 说明
    VSS 电源地
    VDD 电源正极
    VO 液晶对比度调节端
    RS 数据/命令选择端(H为数据,L为命令)
    R/W 读写控制(H/L)
    E 使能
    D0-D7 数据库端
    BLA 背光电源正极
    BLK 背光电源负极

    1602在Proteus中对应的元件是LM016L,但是它并没有上表中列的那么多线,主要是没有BLA和BLK,其他差不多。

    1602分两行,每行显示16个字,但是其内部是有80B的RAM缓冲区的,其起始地址是0x80,其中第一行的地址是相对起始地偏移0x00~0x0F,第二行的地址是相对起始地址偏移0x40~0x67,在往里面写数据的时候,比如要在第一行第二个位置显示字符A,则先要把指针设置到0x80+0x01的位置,然后往里面写A的代码。

    1602的指令分为两种,一种是设置液晶的状态,比如是否显示光标,清屏,光标移动等,另一种为数据命令,即在屏幕上显示什么数据,两者都是通过D0-D7来设置的,只不过当RS设置为高电平时,设置的是数据,低电平的时候设置的是命令。具体的命令,可以查Datasheet。

    试着在1602上写一些数据,写时序图如下。以前对时序图非常的看不懂,最近看多了,似乎有点感觉了,说白了就是,先把RS位置高或低电平(根据你是要写数据还是写命令),然后把R/W位置低电平,然后置使能端E为高电平,然后写入数据就可以了。可以看到,设置电平后,需要一定的延时,由于单片机一次指令一般需要1微秒左右,而延时一般是纳秒级别,所以有些不用延时(我是为了安全,都延时了一下)

    image

    电路图及效果如下:

    image

    详细请见源代码(重装了系统,把keil c51更换到9.0版本了,可能大家会打不开了……)。LCD调节对比的似乎不顶用,不知道是不是我弄错了。

    点击下载

  • 相关阅读:
    hdu acm 2844 Coins 解题报告
    hdu 1963 Investment 解题报告
    codeforces 454B. Little Pony and Sort by Shift 解题报告
    广大暑假训练1 E题 Paid Roads(poj 3411) 解题报告
    hdu acm 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
    hdu acm 1114 Piggy-Bank 解题报告
    poj 2531 Network Saboteur 解题报告
    数据库范式
    ngnix 配置CI框架 与 CI的简单使用
    Vundle的安装
  • 原文地址:https://www.cnblogs.com/varlxj/p/1735047.html
Copyright © 2011-2022 走看看