利用STC89C52单片机控制LCD1602.docx

上传人:b****5 文档编号:3982998 上传时间:2022-11-26 格式:DOCX 页数:14 大小:17.20KB
下载 相关 举报
利用STC89C52单片机控制LCD1602.docx_第1页
第1页 / 共14页
利用STC89C52单片机控制LCD1602.docx_第2页
第2页 / 共14页
利用STC89C52单片机控制LCD1602.docx_第3页
第3页 / 共14页
利用STC89C52单片机控制LCD1602.docx_第4页
第4页 / 共14页
利用STC89C52单片机控制LCD1602.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

利用STC89C52单片机控制LCD1602.docx

《利用STC89C52单片机控制LCD1602.docx》由会员分享,可在线阅读,更多相关《利用STC89C52单片机控制LCD1602.docx(14页珍藏版)》请在冰豆网上搜索。

利用STC89C52单片机控制LCD1602.docx

利用STC89C52单片机控制LCD1602

利用STC89C52单片机控制LCD1602(不带中文字库)显示的中文

一、设计原理

使用STC89C52单片机控制1602LCD(不带中文字库的);利用1602LCD(不带中文字库的)中的存储器(64个字节00H-3FH)自建立8个5×8点阵的字符从而显示中文字符。

 

 

二、LCD1602的指令集:

1、清屏

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

00000001

运行时间(250Khz):

1.64ms;

功能:

清DDRAM和AC值。

 

2、归位

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

0000001*

运行时间(250Khz):

1.64ms;

功能:

AC=0,光标、画面回HOME位。

3、输入方式设置

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

000001I/DS

运行时间(250Khz):

40us;

功能:

设置光标、画面移动方式。

其中:

I/D=1:

数据读、写操作后,AC自动增一;

I/D=0:

数据读、写操作后,AC自动减一;

S=1:

数据读、写操作,画面平移;

S=0:

数据读、写操作,画面不动;

4、显示开关控制

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

00001DCB

运行时间(250Khz):

40us;

功能:

设置显示、光标及闪烁开、关。

其中:

D表示显示开关:

D=1为开,D=0为关;

C表示光标开关:

C=1为开,C=0为关;

B表示闪烁开关:

B=1为开,B=0为关。

5、光标、画面位移

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

0001S/CR/L**

运行时间(250Khz):

40us;

功能:

光标、画面移动,不影响DDRAM。

其中:

S/C=1:

画面平移一个字符位;

S/C=0:

光标平移一个字符位;

R/L=1:

右移;R/L=0:

左移。

6、功能设置

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

001DLNF**

运行时间(250Khz):

40us;

功能:

工作方式设置(初始化指令)。

其中:

DL=1,8位数据接口;DL=0,四位数据接口;

N=1,两行显示;N=0,一行显示;

F=1,510点阵字符;F=0,57点阵字符。

7、CGRAM地址设置

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

01A5A4A3A2A1A0

运行时间(250Khz):

40us;

功能:

设置CGRAM地址。

A5~A0=0~3FH。

8、DDRAM地址设置

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

00

1A6A5A4A3A2A1A0

运行时间(250Khz):

40us;

功能:

设置DDRAM地址。

N=0,一行显示A6~A0=0~4FH;

N=1,两行显示,首行A6~A0=00H~2FH,

次行A6~A0=40H~67H。

9、读BF及AC值

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

01

BFAC6AC5AC4AC3AC2AC1AC0

功能:

读忙BF值和地址计数器AC值。

其中:

BF=1:

忙;BF=0:

准备好。

此时,AC值意义为最近一次地址设置(CGRAM或DDRAM)定义。

 

10、写数据

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

10

数据

运行时间(250Khz):

40us;

功能:

根据最近设置的地址性质,数据写入DDRAM或CGRAM内。

 

11、读数据

RSR/W

DB7DB6DB5DB4DB3DB2DB1DB0

11

数据

运行时间(250Khz):

40us;

功能:

根据最近设置的地址性质,从DDRRAM或CGRAM数据读出。

 

三、程序:

//液晶显示中文-版本0.0

//作者:

pcdian

//定义液晶的一些功能位

//RS为数据、指令寄存器选择位

//RW      为读写选择位

//E  为使能位

      RSBITp2.5

      RWBITP2.6

      E BITP2.7

      ORG 0000H

      SJMPSTART

      ORG 000BH

      LJMPTimer_IT

      ORG 0030H

START:

MOVSP,#60H

           MOVTMOD,#01H

           MOVTH0,#0A6H

           MOVTL0,#00H

           SETBEA

           SETBET0

           CLRTR0

MAIN:

MOVP0,#01H       //清屏

        ACALLENABLE

        MOVP0,#38H       //显示模式设置为16字*2行

        ACALLENABLE

        MOVP0,#0CH       //不显示光标

        ACALLENABLE

        MOVP0,#06H       //显示方向正向且屏不移动

        ACALLENABLE

DISPLAY:

ACALLDISPLAY_C0

       //我

         MOVP0,#80H

         ACALLENABLE

         MOVP0,#00H

         ACALLWRITE

             

           MOVP0,#81H

         ACALLENABLE

         MOVP0,#01H

         ACALLWRITE

             

           MOVP0,#82H

         ACALLENABLE

         MOVP0,#02H

         ACALLWRITE

             

           MOVP0,#0C0H

         ACALLENABLE

         MOVP0,#03H

         ACALLWRITE

 

           MOVP0,#0C1H

         ACALLENABLE

         MOVP0,#04H

          ACALLWRITE

 

           MOVP0,#0C2H

         ACALLENABLE

         MOVP0,#05H

         ACALLWRITE

 

           LCALLDELAY1S

          MOVP0,#01H

          ACALLENABLE

 

           ACALLDISPLAY_C1

       //们

         MOVP0,#83H

         ACALLENABLE

         MOVP0,#00H

         ACALLWRITE

             

           MOVP0,#84H

         ACALLENABLE

         MOVP0,#01H

         ACALLWRITE

             

           MOVP0,#85H

         ACALLENABLE

         MOVP0,#02H

         ACALLWRITE

             

           MOVP0,#0C3H

         ACALLENABLE

         MOVP0,#03H

         ACALLWRITE

 

           MOVP0,#0C4H

         ACALLENABLE

         MOVP0,#04H

           ACALLWRITE

 

           MOVP0,#0C5H

         ACALLENABLE

         MOVP0,#05H

         ACALLWRITE

 

           LCALLDELAY1S

          MOVP0,#01H

          ACALLENABLE

 

           ACALLDISPLAY_C2

       //的

         MOVP0,#86H

         ACALLENABLE

         MOVP0,#00H

         ACALLWRITE

             

           MOVP0,#87H

         ACALLENABLE

         MOVP0,#01H

         ACALLWRITE

             

          MOVP0,#88H

         ACALLENABLE

         MOVP0,#02H

         ACALLWRITE

             

          MOVP0,#0C6H

         ACALLENABLE

         MOVP0,#03H

         ACALLWRITE

 

          MOVP0,#0C7H

         ACALLENABLE

         MOVP0,#04H

          ACALLWRITE

 

          MOVP0,#0C8H

         ACALLENABLE

         MOVP0,#05H

         ACALLWRITE

       

           LCALLDELAY1S

          MOVP0,#01H

          ACALLENABLE

 

          ACALLDISPLAY_C3

       //0

         MOVP0,#89H

         ACALLENABLE

         MOVP0,#00H

         ACALLWRITE

             

           MOVP0,#8AH

         ACALLENABLE

         MOVP0,#01H

         ACALLWRITE

             

          MOVP0,#0C9H

         ACALLENABLE

         MOVP0,#02H

         ACALLWRITE

 

          MOVP0,#0CAH

         ACALLENABLE

         MOVP0,#03H

           ACALLWRITE

 

          LCALLDELAY1S

         MOVP0,#01H

          ACALLENABLE

 

           ACALLDISPLAY_C4

       //7

         MOVP0,#8BH

         ACALLENABLE

         MOVP0,#00H

         ACALLWRITE

             

          MOVP0,#8CH

         ACALLENABLE

         MOVP0,#01H

         ACALLWRITE

             

         MOVP0,#0CBH

         ACALLENABLE

         MOVP0,#02H

         ACALLWRITE

 

         MOVP0,#0CCH

         ACALLENABLE

         MOVP0,#03H

          ACALLWRITE

 

 

       //3

         MOVP0,#8DH

         ACALLENABLE

         MOVP0,#04H

         ACALLWRITE

             

          MOVP0,#8EH

         ACALLENABLE

         MOVP0,#05H

         ACALLWRITE

             

          MOVP0,#0CDH

         ACALLENABLE

         MOVP0,#06H

         ACALLWRITE

 

           MOVP0,#0CEH

         ACALLENABLE

         MOVP0,#07H

           ACALLWRITE

 

           LCALLDELAY1S

         MOVP0,#01H

         ACALLENABLE

 

         LJMPDISPLAY

DISPLAY_C0:

MOVDPTR,#TAB0

                    MOVR2,#48

                      ACALLDISPLAY_C

                    RET

DISPLAY_C1:

MOVDPTR,#TAB1

                     MOVR2,#48

                     ACALLDISPLAY_C

                    RET

DISPLAY_C2:

MOVDPTR,#TAB2

                     MOVR2,#48

                      ACALLDISPLAY_C

                   RET

DISPLAY_C3:

MOVDPTR,#TAB3

                     MOVR2,#32

                     ACALLDISPLAY_C

                   RET

DISPLAY_C4:

MOVDPTR,#TAB4

                     MOVR2,#64

                     ACALLDISPLAY_C

                  RET

 

DISPLAY_C:

MOVP0,#40H

                  ACALLENABLE

                  MOVR3,#0

DISPLAY_CC:

MOVA,R3

                     MOVCA,@A+DPTR

                     MOVP0,A

                     LCALLWRITE

                     INCR3

                     DJNZR2,DISPLAY_CC

                   RET

 

ENABLE:

      CLRRS

      CLRRW

      CLRE

      ACALLDELAY

      SETBE

      RET

 

WRITE:

      SETBRS

      CLRRW

      CLRE

      ACALLDELAY

      SETBE

      RET

DELAY1S:

SETBTR0

                CJNER0,#20,DELAY1S

               CLRTR0

                MOVR0,#0

               RET

 

 

DELAY:

MOVR5,#08H

      L1:

MOVR4,#0FAH

     L0:

DJNZR4,L0

          DJNZR5,L1

         RET

 

Timer_IT:

MOVTH0,#0A6H

             MOVTL0,#00H

              INCR0

              RETI

TAB0:

    //我

       DB0x00,0x07,0x01,0x01,0x01,0x1F,0x01,0x01

       DB0x19,0x01,0x01,0x01,0x01,0x1F,0x01,0x01

       DB0x00,0x08,0x04,0x04,0x00,0x1F,0x00,0x04

       DB0x01,0x07,0x19,0x01,0x01,0x01,0x05,0x02

       DB0x18,0x00,0x00,0x01,0x06,0x00,0x00,0x00

       DB0x14,0x18,0x10,0x08,0x09,0x05,0x03,0x01

TAB1:

    //们

       DB0x01,0x01,0x02,0x02,0x06,0x04,0x0c,0x14

       DB0x08,0x04,0x06,0x04,0x10,0x10,0x10,0x10

       DB0x00,0x00,0x1e,0x02,0x02,0x02,0x02,0x02

       DB0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00

       DB0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00

       DB0x02,0x02,0x02,0x02,0x02,0x0a,0x04,0x00

TAB2:

    //的

       DB0x02,0x02,0x04,0x0f,0x08,0x08,0x08,0x0f

       DB0x02,0x02,0x02,0x13,0x14,0x14,0x18,0x12

       DB0x00,0x00,0x00,0x1e,0x02,0x02,0x02,0x02

       DB0x08,0x08,0x08,0x08,0x0f,0x08,0x08,0x00

       DB0x11,0x11,0x10,0x10,0x10,0x10,0x00,0x00

       DB0x02,0x12,0x12,0x02,0x02,0x14,0x08,0x00

TAB3:

    //0

       DB0x00,0x00,0x03,0x04,0x08,0x08,0x08,0x08

       DB0x00,0x00,0x18,0x04,0x02,0x02,0x02,0X02

       DB0x08,0x08,0x08,0x08,0x04,0x03,0x00,0x00

       DB0x02,0x02,0x02,0x02,0x04,0x18,0x00,0x00

TAB4:

    //7

       DB0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00

       DB0x00,0x00,0x1E,0x1E,0x06,0x06,0x06,0X06

       DB0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

       DB0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00

         //3

       DB0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F

       DB0x00,0x00,0x1E,0x1E,0x06,0x06,0x06,0X1E

       DB0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00

       DB0x1E,0x06,0x06,0x06,0x1E,0x1E,0x00,0x00

 

      END 

四、总结:

 虽然LCD1602可以利用自建字符显示中文,但最多不能超过8个字符位。

所以实际应用中,无法同时显示“我们的073”。

该段程序没来得及优化,没有充分利用单片机做重复的事情的优点;并且使代码量增大,可读较差(重复的,看起来头晕);注释少也致使可读性差!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1