当前位置:文档之家› LCD12864中文字库说明书

LCD12864中文字库说明书

LCD12864中文字库说明书
LCD12864中文字库说明书

(一)(一)概述 (3)

(二)(二)外形尺寸

1 方框图 (3)

2 外型尺寸图 (4)

(三)(三)模块的接口 (4)

(四)(四)硬件说明 (5)

(五) 指令说明 (7)

(五)(五)读写操作时序 (8)

(六)(六)交流参数 (11)

(七)(七)软件初始化过程 (12)

(八)(八)应用举例 (13)

(九)(九)附录

1半宽字符表 (20)

2 汉字字符表 (21)

一、概述

FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

基本特性:

●●低电源电压(VDD:+3.0--+5.5V)

●●显示分辨率:128×64点

●●内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)

●●内置 128个16×8点阵字符

●●2MHZ时钟频率

●●显示方式:STN、半透、正显

●●驱动方式:1/32DUTY,1/5BIAS

●●视角方向:6点

●●背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 ●●通讯方式:串行、并口可选

●●内置DC-DC转换电路,无需外加负压

●●无需片选信号,简化软件设计

●●工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃

二、方框图

3、外形尺寸图

三、模块接口说明

*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

2.2并行接口

管脚号管脚名称电平管脚功能描述

1 VSS 0V 电源地

2 VCC 3.0+5V 电源正

3 V0 - 对比度(亮度)调整

4

RS(CS)H/L RS=“H”,表示DB7——DB0为显示数据

RS=“L”,表示DB7——DB0为显示指令数据

5

R/W(SID) H/L R/W=“H”,E=“H”,数据被读到DB7——DB0

R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR

6 E(SCLK) H/L 使能信号

7 DB0 H/L 三态数据线

8 DB1 H/L 三态数据线

9 DB2 H/L 三态数据线

10 DB3 H/L 三态数据线

11 DB4 H/L 三态数据线

12 DB5 H/L 三态数据线

13 DB6 H/L 三态数据线

14 DB7 H/L 三态数据线

15 PSB H/L H:8位或4位并口方式,L:串口方式(见注释1)

16 NC - 空脚

17 /RESET H/L 复位端,低电平有效(见注释2)

18 VOUT - LCD驱动电压输出端

19 A VDD 背光源正端(+5V)(见注释3)

20 K VSS 背光源负端(见注释3)

*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

四.模块主要硬件构成说明

控制器接口信号说明:

1、1、RS,R/W的配合选择决定控制界面的4种模式:

RS R/W 功能说明

L L MPU写指令到指令暂存器(IR)

L H 读出忙标志(BF)及地址记数器(AC)的状态

H L MPU写入数据到数据暂存器(DR)

H H MPU从数据暂存器(DR)中读出数据

2、E信号

E状态执行动作结果

高——>低I/O缓冲——>DR 配合/W进行写数据或指令

高DR——>I/O缓冲配合R进行读数据或指令

低/低——>高无动作

●忙标志:BF

BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.

利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态.

●字型产生ROM(CGROM)

字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。

DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。

●显示数据RAM(DDRAM)

模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM 字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB (A1A0-F7FFH)。

●字型产生RAM(CGRAM)

字型产生RAM提供图象定义(造字)功能, 可以提供四组16×16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。

●地址计数器AC

地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6——DB0中。

●●光标/闪烁控制电路

此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。

五、指令说明

模块控制芯片提供两套控制命令,基本指令和扩充指令如下:

指令表1:(RE=0:基本指令)

备注;当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。

六、读写时序图

6.1 数据传输过程

8位和4位数据线的传输过程

串口数据线模式数据传输过程

6.2 时序图

MPU写资料到ST7920(8位数据线模式)

MPU 从ST7920读资料(8位数据线模式)6.3 串口读写时序:

串口方式下MPU写数据到ST7920 七、交流参数

交流参数(T A = 25o C, V DD = 4.5 V - 5.5 V)

八、软件初始化

九.应用举例:

1 、使用前的准备

先给模块加上工作电压,再按照下图的连接方法调节LCD的对比度,使其显示出黑色的底影。

此过程亦可以初步检测LCD有无缺段现象。

2、字符显示

FYD12864-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中

文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。FYD12864-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM (自定义字形)的内容。三种不同字符/字型的选择编码范围为:0000~0006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H~7FH显示半宽ASCII码字符,A1A0H~F7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H~9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下表所示。

80H 81H 82H 83H 84H 85H 86H 87H 90H 91H 92H 93H 94H 95H 96H 97H 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH 98H 99H 9AH 9BH 9CH 9DH 9EH 9FH 3 、图形显示

先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址)

垂直地址范围AC5...AC0

水平地址范围AC3…AC0

绘图RAM 的地址计数器(AC)只会对水平地址(X 轴)自动加一,当水平地址=0FH 时会重新设为00H 但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料排列顺序如下图:

3、应用说明

用FYD12864-0402B显示模块时应注意以下几点:

①欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。

②显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。

③当字符编码为2字节时,应先写入高位字节,再写入低位字节。

④模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。⑤“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位。

4、4、YD12864-0402B与单片机80C51的一种接口如图所示

5、5、编程参考(部分)

;*********************************************

;Controller:ST7920

;MCU:AT89C52 ,晶体频率:12MHz

;LCM:128*64

;LCM型号:FYD12864-0402

;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB 16:NC 17:RST 18:Vout

;**********************************************

RS EQU P1.3

RW EQU P1.4

E EQU P1.5

PSB EQU P1.6

RST EQU P2.7

COM EQU 20H

DAT EQU 21H

;******************************以上是接口定义

START:

ORG 0000H

MOV SP,#60H

LJMP DISP

;*********************************主程序入口地址

ORG 0040H

DISP: CLR PSB

LCALL DELAY

SETB PSB ;将PSB置1,通信方式为8位数据并口

LCALL DELAY

MOV COM,#30H ;功能设置---8BIT控制界面,基本指令集 ACALL WRI ;调用写指令子程序

LCALL DELAY ;延迟39uS

MOV COM,#0CH ;显示打开,光标关,反白显示关

ACALL WRI ;调用写指令子程序

LCALL DELAY ;延迟39uS

MOV COM,#01H ;清除屏幕显示,将DDRAM的地址计数器归零 ACALL WRI ;调用写指令子程序

LCALL DELAY ;延迟39uS

MOV COM,#06H ;DDRAM的地址计数器(AC)加1

ACALL WRI ;调用写指令子程序

LCALL DELAY ;延迟39uS

;****************************************************

DISPLAY5A:

MOV R2,#64 ;DDRAM地址记数器设为最大值

MOV R1,#10H

MOV COM,#80H ;DD RAM 地址-----0000000

ACALL WRI

DISP5A: MOV DAT,R1

ACALL WRD ;写入第二字节数据

INC R1

DJNZ R2,DISP5A

LCALL DELAY1 ;1S延时子程序

;*************************************以上是写入半角字符

DISPLAY5:

MOV R2,#64 ;DDRAM地址记数器设为最大值

MOV R1,#0DEH

MOV COM,#80H ;DD RAM 地址-----0000000

ACALL WRI

DISP5: MOV DAT,#0B4H

ACALL WRD ;写入第一字节数据

MOV DAT,R1

ACALL WRD ;写入第二字节数据

INC R1

DJNZ R2,DISP5

LCALL DELAY1 ;1S延时子程序

;**********************************以上是从字库中“崔”字处开始显示

MOV COM,#01H ;清屏

ACALL WRI ;调用写指令子程序

LCALL DELAY

MOV COM,#32H ;功能设置---8BIT控制界面,绘图显示ON ACALL WRI ;调用写指令子程序

LCALL DELAY ;延迟39uS

MOV COM,#36H ;功能设置---8BIT控制界面,扩充指令集 ACALL WRI ;调用写指令子程序

LCALL DELAY ;延迟39uS

DISPLAY6:

MOV DPTR,#DAB2 ;图形数据入口地址

MOV R2,#32 ;32行,(双屏结构中上半屏)

MOV R3,#80H ;Y地址寄存器

DISP6: MOV COM,R3 ;设置绘图区的Y地址坐标

INC R3 ;Y地址加1

LCALL WRI

MOV COM,#80H ;设置绘图区的X地址坐标

LCALL WRI

MOV R1,#16 ;16*8列

DISP7: CLR A

MOVC A,@A+DPTR

MOV DAT,A

LCALL WRD

INC DPTR

DJNZ R1,DISP7

DJNZ R2,DISP6 ;写满全屏的16*8字节X64

MOV R2,#32 ;32行,(双屏结构的下半屏)

MOV R3,#80H ;Y地址寄存器

DISP8: MOV COM,R3 ;设置绘图区的Y地址坐标

INC R3 ;Y地址加1

LCALL WRI

MOV COM,#88H ;设置绘图区的X地址坐标

LCALL WRI

MOV R1,#16 ;16*8列

DISP9: CLR A

MOVC A,@A+DPTR

MOV DAT,A

LCALL WRD

INC DPTR

DJNZ R1,DISP9

DJNZ R2,DISP8 ;写满全屏的16*8字节X64

LCALL DELAY1 ;1S延时子程序

;*******************************************以上是写入一幅图画(电脑桌面图) DISPLAY6A:

MOV DPTR,#DAB3 ;图形数据入口地址

MOV R2,#32 ;32行,(双屏结构中上半屏)

MOV R3,#80H ;Y地址寄存器

DISP6A: MOV COM,R3 ;设置绘图区的Y地址坐标

INC R3 ;Y地址加1

LCALL WRI

MOV COM,#80H ;设置绘图区的X地址坐标

LCALL WRI

MOV R1,#16 ;16*8列

DISP7A: CLR A

MOVC A,@A+DPTR

MOV DAT,A

LCALL WRD

INC DPTR

DJNZ R1,DISP7A

DJNZ R2,DISP6A ;写满全屏的16*8字节X64

MOV R2,#32 ;32行,(双屏结构的下半屏)

MOV R3,#80H ;Y地址寄存器

DISP8A: MOV COM,R3 ;设置绘图区的Y地址坐标

INC R3 ;Y地址加1

LCALL WRI

MOV COM,#88H ;设置绘图区的X地址坐标

LCALL WRI

MOV R1,#16 ;16*8列

DISP9A: CLR A

MOVC A,@A+DPTR

MOV DAT,A

LCALL WRD

INC DPTR

DJNZ R1,DISP9A

DJNZ R2,DISP8A ;写满全屏的16*8字节X64

LCALL DELAY1 ;1S延时子程序

LJMP START ;从开始处循环显示

;***************************************以上是写入一幅图画(电子制作实验室)WRI: PUSH ACC

CLR RS

SETB RW

WRI1: MOV P0,#0FFH

SETB E

MOV A,P0

CLR E

JB ACC.7,WRI1

CLR RW

MOV P0,COM

SETB E

CLR E

POP ACC

RET

;******************************************以上是写指令子程序

WRD: PUSH ACC

CLR RS

SETB RW

WRD1: MOV P0,#0FFH

SETB E

MOV A,P0

CLR E

JB ACC.7,WRD1

SETB RS

CLR RW

MOV P0,DAT

SETB E

CLR E

POP ACC

RET

;******************************************以上是写数据子程序

DELAY: MOV R7,#0FFH

DELAY4: MOV R6,#00FH

LOOP2: DJNZ R6,LOOP2

DJNZ R7,DELAY4

RET

DELAY1: MOV R4,#08H

DELAY11:MOV R7,#0FFH

DELAY41:MOV R6,#0FFH

DJNZ R6,$

DJNZ R7,DELAY41

DJNZ R4,DELAY11

RET

XX: MOV R5,#0FFH

XX1: MOV R6,#0FFH

XX2: DJNZ R6,XX2

DJNZ R5,XX1

RET

;******************************************以上是延时子程序

DAB2:

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,03FH,0FFH,0F0H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,040H,000H,018H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0BFH,0FFH,0DCH,000H,001H DB 080H,000H,01FH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,0BFH,0FFH,0BCH,000H,001H DB 080H,000H,030H,000H,001H,080H,000H,000H,000H,000H,001H,07FH,0FFH,0B8H,000H,001H DB 080H,000H,030H,000H,000H,080H,000H,000H,000H,000H,001H,07FH,0FFH,078H,000H,001H DB 080H,000H,019H,0FFH,0FEH,0C0H,000H,000H,000H,000H,002H,0FFH,0FFH,070H,000H,001H DB 080H,000H,018H,000H,000H,040H,000H,000H,000H,000H,002H,0FFH,0FEH,0F0H,000H,001H DB 080H,000H,00CH,001H,0FFH,060H,000H,000H,000H,000H,005H,0FFH,0FEH,0E0H,000H,001H DB 080H,000H,00CH,07FH,0D0H,020H,000H,000H,000H,000H,005H,0FFH,0FDH,0E0H,000H,001H DB 080H,000H,006H,000H,00FH,0B0H,000H,000H,000H,000H,00BH,0FFH,0FDH,0C0H,000H,001H DB 080H,000H,006H,003H,0FCH,010H,000H,000H,000H,000H,00BH,0FFH,0FBH,0C0H,000H,001H DB 080H,000H,003H,01FH,000H,018H,000H,000H,000H,000H,017H,0FFH,0FBH,080H,000H,001H DB 080H,000H,003H,000H,000H,008H,000H,000H,000H,000H,017H,0FFH,0F7H,080H,000H,001H DB 080H,000H,001H,080H,000H,00CH,000H,000H,000H,000H,017H,0FFH,0F7H,000H,000H,001H DB 080H,000H,001H,080H,000H,004H,000H,000H,000H,000H,009H,0FFH,0EFH,000H,000H,001H DB 080H,000H,000H,0C0H,000H,0F6H,000H,000H,000H,000H,006H,07FH,0EEH,000H,000H,001H DB 080H,000H,000H,0C0H,003H,0C2H,000H,000H,000H,000H,001H,09FH,0DEH,000H,000H,001H DB 080H,000H,000H,060H,000H,03BH,000H,000H,000H,000H,000H,067H,0DFH,000H,000H,001H DB 080H,000H,000H,060H,000H,0E3H,000H,000H,000H,000H,000H,019H,0BFH,000H,000H,001H DB 080H,000H,000H,030H,003H,08EH,000H,000H,000H,000H,000H,006H,03FH,000H,000H,001H DB 080H,000H,000H,030H,006H,03CH,000H,000H,000H,000H,000H,001H,0FFH,000H,000H,001H DB 080H,000H,000H,018H,000H,0F0H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,001H DB 080H,000H,000H,018H,003H,0C0H,000H,000H,000H,000H,000H,00FH,07FH,080H,000H,001H DB 080H,000H,000H,00CH,00FH,000H,000H,000H,000H,000H,000H,030H,01FH,0C0H,000H,001H DB 080H,000H,000H,00CH,03CH,000H,000H,000H,000H,000H,000H,040H,007H,0E0H,000H,001H DB 080H,000H,000H,006H,0F0H,000H,000H,000H,000H,000H,000H,0E0H,01FH,0E0H,000H,001H DB 080H,000H,000H,007H,0C0H,000H,000H,000H,000H,000H,000H,0F8H,03FH,0C0H,000H,001H DB 080H,000H,000H,003H,000H,000H,000H,000H,000H,000H,000H,07EH,0FFH,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,01FH,0FCH,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,007H,0F0H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,0C0H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,005H,040H,088H,004H,001H,008H,000H,000H,00AH,081H,010H,004H,000H,020H,001H DB 080H,079H,021H,008H,002H,021H,049H,000H,000H,0F2H,042H,010H,004H,047H,010H,001H DB 080H,009H,007H,0DFH,07FH,0F7H,0AAH,000H,000H,012H,00FH,0BEH,07FH,0E5H,0FEH,001H DB 080H,07FH,0F4H,051H,008H,081H,02CH,000H,000H,0FFH,0E8H,0A2H,044H,047H,000H,001H DB 080H,009H,004H,061H,008H,081H,07FH,000H,000H,012H,008H,0C2H,07FH,0C5H,04AH,001H

DB 080H,00BH,024H,051H,008H,083H,081H,000H,000H,016H,048H,0A2H,044H,045H,06AH,001H DB 080H,01DH,047H,0C9H,005H,005H,001H,000H,000H,03AH,08FH,092H,044H,047H,052H,001H DB 080H,068H,084H,049H,005H,005H,07FH,000H,000H,0D1H,008H,092H,07FH,0C5H,06AH,001H DB 080H,009H,094H,041H,002H,001H,001H,000H,000H,013H,028H,082H,044H,005H,04AH,001H DB 080H,00EH,057H,0C1H,00DH,081H,001H,000H,000H,01CH,0AFH,082H,004H,029H,042H,001H DB 080H,038H,034H,04EH,070H,071H,07FH,000H,000H,070H,068H,09CH,003H,0EBH,07EH,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DAB3:

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,030H,000H,00FH,0F0H,000H,060H,020H,004H,0C0H,000H,000H,000H,000H,000H,001H DB 084H,030H,080H,01FH,038H,003H,060H,030H,03CH,0C0H,000H,000H,000H,000H,000H,001H DB 087H,0FFH,0C0H,001H,0F8H,003H,0FBH,030H,0F9H,0FFH,0C0H,000H,000H,000H,000H,001H DB 086H,030H,080H,000H,0C0H,006H,061H,020H,05BH,061H,080H,000H,000H,000H,000H,001H DB 087H,0FFH,080H,07FH,0FFH,0CFH,0FDH,020H,01CH,060H,000H,000H,000H,000H,000H,001H DB 086H,030H,080H,0FCH,0DFH,09CH,061H,020H,018H,07FH,000H,000H,000H,000H,000H,001H DB 087H,0FFH,080H,080H,041H,083H,0F9H,020H,018H,060H,000H,000H,000H,000H,000H,001H DB 083H,0FFH,080H,000H,060H,003H,06BH,020H,018H,07FH,080H,000H,000H,000H,000H,001H DB 080H,030H,000H,000H,0C0H,003H,068H,020H,018H,060H,000H,000H,000H,000H,000H,001H DB 080H,01FH,0F8H,000H,0C0H,002H,068H,020H,018H,060H,000H,000H,000H,000H,000H,001H DB 080H,00FH,0F0H,00FH,0C0H,006H,069H,0E0H,018H,060H,000H,000H,000H,000H,000H,001H DB 080H,003H,0E0H,003H,000H,000H,040H,0C0H,000H,060H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,060H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,030H,000H,000H,0E0H,000H,070H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,038H,003H,0F8H,0E0H,000H,030H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,030H,060H,018H,0E0H,00FH,0FFH,0E0H,000H,001H DB 080H,000H,000H,000H,000H,000H,00FH,0FFH,0F0H,0D9H,0B0H,018H,000H,0C0H,000H,001H DB 080H,000H,000H,000H,000H,000H,01CH,018H,0C0H,0DBH,018H,018H,001H,080H,000H,001H DB 080H,000H,0FFH,0FFH,0FFH,000H,019H,0D8H,001H,0B3H,00CH,00FH,0FFH,0C0H,000H,001H DB 080H,000H,0FFH,0FFH,0FFH,000H,000H,0D8H,001H,0B6H,01FH,000H,0ECH,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,006H,018H,001H,0BFH,0FCH,001H,087H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,003H,098H,001H,0FCH,00CH,003H,001H,080H,000H,001H DB 080H,000H,000H,000H,000H,000H,001H,098H,001H,09EH,0CCH,007H,0FFH,080H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,018H,0E0H,01BH,0CCH,000H,039H,080H,000H,001H DB 080H,000H,001H,0FFH,0FFH,000H,01FH,0FFH,080H,0FBH,078H,000H,031H,080H,000H,001H DB 080H,000H,001H,0FFH,0FFH,000H,000H,030H,003H,09BH,078H,007H,0FFH,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,07EH,000H,01BH,030H,000H,030H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,0E3H,080H,018H,030H,000H,030H,060H,000H,001H DB 080H,000H,000H,000H,000H,000H,003H,081H,0C0H,0F0H,037H,01FH,0FFH,0F0H,000H,001H DB 080H,000H,000H,000H,000H,000H,01EH,000H,0C0H,007H,0FCH,000H,000H,000H,000H,001H

DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,003H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,07EH,0FDH,0F8H,007H,0E7H,007H,03FH,01FH,039H,0F0H,0F8H,003H,0C7H,03EH,001H DB 080H,07EH,0FDH,0F8H,003H,0C3H,00DH,080H,036H,06CH,0D9H,0B0H,006H,0CDH,0BFH,001H DB 080H,03CH,078H,0F0H,001H,083H,00FH,080H,01CH,03CH,0D8H,0E0H,006H,00DH,0BFH,001H DB 080H,03CH,078H,0F0H,003H,0C3H,00CH,000H,030H,06CH,0D9H,080H,006H,00DH,0BFH,001H DB 080H,03CH,078H,0F1H,087H,0E7H,087H,080H,03EH,03FH,0FDH,0F3H,003H,0C7H,03FH,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,033H,000H,001H,098H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,01EH,000H,000H,0F0H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

END

十、附录部分

附录1:ASCII码表

16*8半宽字符表

附录2:汉字码址表

LCD12864汉字显示

//在12864液晶上显示汉字和英文字符 /***********************头文件*********************/ #include "regx52.h" typedef unsigned char uchar; typedef unsignedintuint; sbitlcdrs=P1^5; //12864:0写指令,1写数据 sbitlcdwr=P1^6; //12864读写信号 sbitlcden=P1^7; //12864片选信号 uchar code tab[]={" ATI-51S"}; uchari; /***********************1ms延时函数**********************/ void delay(uint z) { uint y; while(z--) { for(y=0;y<125;y++); } } /***********************LCD写指令写数据**********************/ voidwrite_comdata(uchara,uchardatas) { lcdrs=a; lcdwr=0; delay(1); P0=datas; lcden=1; delay(1); lcden=0; } /***********************光标位置*********************/ void cursor(uchar x, uchar y ) { uchar address; switch(x){ case 0: address=0x80+y;break; case 1: address=0x90+y;break;

带字库12864液晶详解

12864液晶 一、概述 带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 基本特性: l 低电源电压(VDD:+3.0--+5.5V) l 显示分辨率:128×64点 l 内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) l 内置 128个16×8点阵字符 l 2MHZ时钟频率 l 显示方式:STN、半透、正显 l 驱动方式:1/32DUTY,1/5BIAS l 视角方向:6点 l 背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 l 通讯方式:串行、并口可选 l 内置DC-DC转换电路,无需外加负压 l 无需片选信号,简化软件设计 l 工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 模块接口说明

*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。 *注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 2.2并行接口 管脚号管脚名称电平管脚功能描述 1 VSS 0V 电源地 2 VCC 3.0+5V 电源正 3 V0 - 对比度(亮度)调整 RS=“H”,表示DB7——DB0为显示数据 4 RS(CS)H/L RS=“L”,表示DB7——DB0为显示指令数据 R/W=“H”,E=“H”,数据被读到DB7——DB0 5 R/W(SID) H/L R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR 6 E(SCLK) H/L 使能信号 7 DB0 H/L 三态数据线 8 DB1 H/L 三态数据线 9 DB2 H/L 三态数据线 10 DB3 H/L 三态数据线 11 DB4 H/L 三态数据线 12 DB5 H/L 三态数据线 13 DB6 H/L 三态数据线 14 DB7 H/L 三态数据线 15 PSB H/L H:8位或4位并口方式,L:串口方式(见注释1) 16 NC - 空脚 17 /RESET H/L 复位端,低电平有效(见注释2) 18 VOUT - LCD驱动电压输出端 19 A VDD 背光源正端(+5V)(见注释3) 20 K VSS 背光源负端(见注释3)

12864中文资料及字库说明书

FYD12864液晶中文显示模块 一、概述 FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 基本特性: ●●低电源电压(VDD:+3.0--+5.5V) ●●显示分辨率:128×64点 ●●内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) ●●内置 128个16×8点阵字符 ●●2MHZ时钟频率 ●●显示方式:STN、半透、正显 ●●驱动方式:1/32DUTY,1/5BIAS ●●视角方向:6点 ●●背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 ●●通讯方式:串行、并口可选 ●●内置DC-DC转换电路,无需外加负压 ●●无需片选信号,简化软件设计 ●●工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 二、方框图

三、模块接口说明 *注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 2.2并行接口

lcd12864并行数据传输汉字及图形显示程序

今天终于完成了12864带字库液晶模块的图象和中英文字母显示,图象显示显示了自己的一副照片,呵呵,还认得出是自己,开心啊。。。硬件连接方式是:并口直接访问。 这是汉字显示程序: #include #include #define uchar unsigned char #define datawr 0x1200 //写数据通道 #define comwr 0x1000 //写控制命令通道 #define datare 0x1300 //读数据通道 #define comre 0x1100 //读忙通道 uchar code disp_data[]={" 浙江大学 " //第一行,第一页 "04级通信工程一班" //第三行 " 宁波理工学院 " //第二行 " 竞赛小组 " //第四行 "128X64液晶显示器" //第一行,第二页 " 测试程序 " //第三行 " 07年07月25日 " //第二行 " Tornado "}; //第四行 void set12864(); void write_command(uchar command); void write_page(uchar data_add); void read_page(uchar data_add); void delays(uchar cont); void main() { while(1) { set12864(); //初始化12864 write_page(0); //写入一页数据 read_page(0x30); //读出一页数据到内部RAM delays(2); //延时2s write_page(64); //写入下一页数据 delays(2); //延时2s } }

12864液晶显示图片原理(完整版)

51单片机综合学习 12864液晶原理分析1 辛勤学习了好几天,终于对12864液晶有了些初步了解~没有视频教程学起来真有些累,基本上内部程序写入顺序都是根据程序自我变动,然后逆向反推出原理…… 芯片:YM12864R P-1 控制芯片:ST7920A带中文字库 初步小结: 1、控制芯片不同,寄存器定义会不同 2、显示方式有并行和串行,程序不同 3、含字库芯片显示字符时不必对字符取模了 4、对芯片的结构地址一定要理解清楚

5、显示汉字时液晶芯片写入数据的顺序(即显示的顺序)要清楚 6、显示图片时液晶芯片写入数据的顺序(即显示的顺序)要清楚 7、显示汉字时的二级单元(一级为八位数据写入单元)要清楚 8、显示图片时的二级单元(一级为八位数据写入单元)要清楚 12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列*64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入

到相应的存储单元中。图形或汉字的点阵信息由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。显示点在64*64液晶屏上的位置由行号(line,0~63)与列号(column,0~63)确定。512*8 bits RAM中某个存储单元的地址由页地址(Xpage,0~7)和列地址(Yaddress,0~63)确定。每个存储单元存储8个液晶点的显示信息。

带字库12864 串口 时钟显示

/*12864LCD (ST7920)驱动程序 可显示年月日时分秒及加减时钟切换*/ #include /*引脚定义*/ #define CS P2_0 //片选高电平有效单片LCD使用时可固定高电平 #define SID P2_1 //串数究谳 #define SCLK P2_2 //串同步时钟信号 #define PSB P2_3 //低电平时表示用串口驱动,可固定低电平;高电平并行驱动 #define RESET P2_4 //LCD复位,LCD模块自带复位电路,可不接或接高电平vcc #define key P2_5 //因有定义,因此可以写成P2_5或sbit key=P2^5; /*函数全局声明*/ void write(bit start, unsigned char ddata);//bit start;定义一个位的变量,他是1或0 void sendbyte(unsigned char bbyte); void delaynms(unsigned int di); void lcdinit(void); void lcdtest(void); void lcdcls(void); /*存放字符串的数组*/ unsigned char code ma[] ={"2015年08月24日"}; unsigned char code ma2[]={" 时分秒"}; unsigned char code ma3[]={"12864 液晶时钟"}; unsigned char code ma4[]={"0123456789"}; unsigned char code ma5[]={"年"}; unsigned char code ma6[]={"月"}; unsigned char code ma7[]={"日"}; unsigned int count; //定义变量统计中断累计次数 unsigned int s,m,h; //定义变量储存秒、分钟和小时 unsigned int ss,mm,hh; //定义变量储存秒、分钟和小时 unsigned int n,u,r; //定义变量储存年、月、日 void lcdinit(void) //初始化LCD { delaynms(10); //启动等待,等LCM讲入工作状态 PSB=0; ; //串口驱动模式;PSB=1时为并行 // RESET=0; delaynms(1); RESET=1; // 复位LCD // CS=1; //串行数据口 write(0,0x30); // DL=0,4位数据;DL=1,8位数据RE=1,扩充指令操作;RE=0,基本指令操作; write(0,0x0c); //显示打开,光标关,反白关 write(0,0x01); //清屏,将DDRAM的地址计数器归零 } void write(bit start, unsigned char ddata) //写指令或数据bit start;定义一个位的变量,他是1或0

LCD12864编码显示汉字

#include <> #include <> #define uint unsigned int #define uchar unsigned char #define DATA P0 //LCD12864数据线 sbit RS=P2^2; // 数据\指令选择 sbit RW=P2^1; // 读\写选择 sbit EN=P2^0; // 读\写使能 sbit CS1=P2^3; // 片选1 sbit CS2=P2^4; // 片选2 /********************************/ /* 定义中文字库*/ /********************************/ uchar code Hzk[]={ /*-- 文字: 各 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x20,0x20,0x10,0x08,0x8F,0xB4,0x44,0x44,0xA4,0x9C,0x04,0x00,0x00,0x00, 0x00, 0x02,0x02,0x02,0x01,0x7F,0x42,0x42,0x42,0x42,0x42,0x42,0x7F,0x01,0x03,0x01, 0x00, /*-- 文字: 位 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0xC0,0x30,0xEC,0x03,0x2A,0xC8,0x09,0x0A,0x0E,0x08,0xE8,0x48,0x08,0x00, 0x00, 0x01,0x00,0x00,0x7F,0x20,0x20,0x20,0x27,0x20,0x30,0x2E,0x21,0x20,0x20,0x20, 0x00, /*-- 文字: 单 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00, 0x00, 0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08, 0x00, /*-- 文字: 机 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00, 0x00,

玩转12864液晶(1)--显示字符

在我们常用的人机交互显示界面中,除了数码管,LED,以及我们之前已经提到的LCD1602之外,还有一种液晶屏用的比较多。相信接触过单片机的朋友都知道了,那就是12864液晶。顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。我们常用的12864液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如KS0108 T6963,ST7920等等。在这里我们以ST7920为主控芯片的12864液晶屏来学习如何去驱动它。(液晶屏采用金鹏的OCMJ4X8C) 关于这个液晶屏的更多信息,请参考它的DATASHEET,附件中有下载。 我们先来了解一下它的并行连接情况。 下面是电路连接图

从上面的图可以看出,液晶模块和单片机的连接除了P0口的8位并行数据线之外,还有RS,RW,E等几根线。其中R/S是指令和数据寄存器的选择控制线(串行模式下为片选),R/W 是读写控制线(串行模式下是数据线),E是使能线(串行模式下为时钟线)。 通过这几根控制线和数据线,再结合它的时序图,我们就可以编写出相应的驱动程序啦。 看看并行模式下的写时序图:

根据这个时序图,我们就可以写出写数据或者写命令到LCD12864液晶的子程序。 读时序图如下: 根据这个时序图我们就可以从LCD12864液晶模块内部RAM中读出相应的数据,我们的忙检测函数就是根据这个时序图写出来的。以及后面章节中讲的画点函数等都要用到读时序。有了这两个时序图,然后我们再看看OCMJ4X8C的相关指令集,就可以编写出驱动程序了。这里要注意的是指令集分为基本指令集和扩充指令集,其中扩充指令集主要是与绘图相关,在此后的章节中会有相应的介绍。 下面让我们根据这些编写出它的驱动程序吧。 我的硬件测试条件为:STC89C516(11.0592MHz) + OCMJ4X8C 实际显示效果图片如下: 程序部分如下,请结合液晶模块的DATASHEET看程序,这样能够更加快速的弄懂程序的流程。大致有如下几个函数:写数据,写指令,忙检测,初始化,指定地址显示字符串等等。[p][/p] #include "reg52.h" #include "intrins.h" sbit io_LCD12864_RS = P1^0 ;

12864串行显示中文讲解

12864串行显示中文,按键选择显示页面,并且可调数值。 单片机P1口接矩阵按键,其它接口按程序中定义去接 只需要接12864LCD上GND VCC RS RW E PSB RST A K 程序如下 /********************************12864.h头文件*******************************/ #ifndef _12864_h #define _12864_h /*****包含头文件**************/ #include /********定义I/0口**********/ #define GPIO_KEY P1 sbit LCD12864_SCLK = P2^7; //E sbit LCD12864_SID = P2^5; //RW sbit LCD12864_CS = P2^6; //RS sbit LCD12864_RET= P2^0; sbit LCD12864_PSB =P2^2; /*声明全局变量*/ extern unsigned char keyvalue; /******声明全局函数*********/ void Delay1ms(unsigned int); //声明延时函数 unsigned char KeyDown(void); void LCD_sendbyte(unsigned char); void WrCom(unsigned char); void WrDat(unsigned char); void LcdInit(void); //void Print(unsigned char); void SetAddress( unsigned char,unsigned char ); void DisplayString(unsigned char x ,unsigned char y,unsigned char *add); #endif /********************************12864.C*************************************/ #include"12864.h" #include #include"string.h" //#define LCM_ST7920_FIRST_LINE_ADDRESS 0x80 //#define LCM_ST7920_SECOND_LINE_ADDRESS 0x90 //#define LCM_ST7920_THIRD_LINE_ADDRESS 0x88 //#define LCM_ST7920_FOURTH_LINE_ADDRESS 0x98

12864中文字库

梁国书for(;1;) study; FYD12864液晶中文显示模块

(一) (一)概述 (3) (二)(二)外形尺寸 1 方框图 (3) 2 外型尺寸图 (4) (三)(三)模块的接口 (4) (四)(四)硬件说明 (5) (五) 指令说明 (7) (五)(五)读写操作时序 (8) (六)(六)交流参数 (11) (七)(七)软件初始化过程 (12) (八)(八)应用举例 (13) (九)(九)附录 1半宽字符表 (20) 2 汉字字符表 (21) 一、概述 FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 基本特性: ●●低电源电压(VDD:+3.0--+5.5V) ●●显示分辨率:128×64点

●●2MHZ时钟频率 ●●显示方式:STN、半透、正显 ●●驱动方式:1/32DUTY,1/5BIAS ●●视角方向:6点 ●●背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 ●●通讯方式:串行、并口可选 ●●内置DC-DC转换电路,无需外加负压 ●●无需片选信号,简化软件设计 ●●工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 二、方框图 3、外形尺寸图

带字库12864液晶显示DS1302数字时钟C源程序

51单片机+带字库液晶12864+DS1302数字时钟C源程序(无按键修改功能) 2009-10-19 16:47 经过两天的搜索与调试,在别人程序的基础上,不断修改,终于调试成功了这个程序。目前还不能修改时间与日期,只是以预定时间以始。 适用于开发板:51单片机(AT89S52)+带字库液晶12864(ST7920)+DS1302(实时时钟) 实现功能:简单,数字时钟+日期(以后会不断完美)。 C语言源程序如下: #include #include #define uchar unsigned char #define uint unsigned int /*DS1302 端口设置 */ sbit SCK=P3^6; //DS1302时钟 sbit SDA=P3^4; //DS1302 IO sbit RST = P3^5; // DS1302复位 bit ReadRTC_Flag; //读DS1302全局变量 /* 12864端口定义*/ #define LCD_data P0 //带字库液晶12864数据口 sbit LCD_RS = P2^4; //寄存器选择输入 sbit LCD_RW = P2^5; //液晶读/写控制 sbit LCD_EN = P2^6; //液晶使能控制 sbit PSB=P2^1; //并口控制 sbit RES=P2^3; uchar code dis1[] = {" 电子设计天地"}; //液晶显示的汉字 uchar code dis2[] = {"有志者,事竟成!"}; uchar code dis4[] = {'0','1','2','3','4','5','6','7','8','9'}; unsigned char temp; #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; void lcd_pos(uchar X,uchar Y); //确定显示位置 unsigned char l_tmpdate[7]={0,7,16,19,10,1,9};//秒分时日月周年09-10-19 16:07:00 code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年最低位读写位 code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};

基于proteus的不带字库的12864的仿真程序(带仿真图)

基于proteus的不带字库的12864的仿真 程序(带仿真图) 作者:心如止水(武汉工程大学) /****************************************************** ****** 本程序为不带字库的12864汉字及英文字符的显示程序, 可以说此程序是所有12864显示程序中最简单最易懂的 显示程序。之所以写这个程序,是因为我看很多学单片 机的人(特别是初学者)对12864有一种恐惧感,觉得它 很难,看完这个程序,相信你能明白它的显示原理。 还要注意的是:带中文字库和不带中文字库的程序不一样, 不可混用。 ******************************************************* *****/ 先上图吧,哈哈

下面看程序吧,相信你一定能看懂,很简单的哟!!!#include #define uchar unsigned char #define uint unsigned int //sbit databus=P1; #define databus P1

//sbit Reset = P3^0; //复位 sbit rs = P3^7; //指令数据选择 sbit e = P3^5; //指令数据控制 sbit cs1 = P3^3; //左屏幕选择,低电平有效 sbit cs2 = P3^4; //右屏幕选择 sbit wr = P3^6; //读写控制 //sbit busy = P1^7; //忙标志 void SendCommand(uchar command); //写指令 void WriteData(uchar dat);//写数据 void LcdDelay(uint time); //延时 void SetOnOff(uchar onoff);//开关显示 void ClearScreen(uchar screen); //清屏 void SetLine(uchar line); //置页地址 void SetColum(uchar colum);//置列地址 void SetStartLine(uchar startline);//置显示起始行 void SelectScreen(uchar screen);//选择屏幕 void Show1616(uchar lin,uchar colum,uchar *address);//显示一个汉字 void InitLcd(); //初始化 void ResetLcd(); //复位 void Show_english(uchar lin,uchar colum,uchar *address); const uchar code hzk[] = { /*-- 文字: I --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: c --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00, /*-- 文字: a --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20, /*-- 文字: n --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20, /*-- 文字: --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

12864液晶显示程序(图案+文字)

#include sbit LCD12864_RS = P2^0; //RS控制引脚 sbit LCD12864_RW = P2^1; //RW控制引脚 sbit LCD12864_EN = P2^2; //EN控制引脚 sbit LCD12864_PSB = P2^3; //模式选择引脚,ST7920控制器,1为8位并行接口,0为串行接口 #define LCDPORT P0//数据引脚 void LCD12864_Init(void); //LCD12864初始化函数 void LCD12864_WriteInfomation(unsigned char ucData,bit bComOrData); //向LCD12864写入数据,bComOrData为1时写入的是数据,0时写入的是命令 void LCD12864_CheckBusy(void);//忙检测函数 void LCD12864_DisplayImage(unsigned char code *ucImage); void Delay(unsigned int uiCount); unsigned char code ucPic1[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x06,0x30,0x01,0xE0,0x00,0x00,0x2A,0x00,0x00,0xD8,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0x7B,0x63,0xE0,0x00,0x00,0x22,0x00,0x01,0x24,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0xFB,0x63,0x07,0x34,0x00,0x14,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00, 0x00,0x0D,0xDB,0x63,0x01,0xBC,0x00,0x08,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x1B,0x63,0x07,0xB0,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x1B,0x63,0xED,0xB0,0xDB,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0A,0x00,0x00,0xFF,0xF8,0xE0,0x05,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x06,0xC0,0x15,0x00,0x1F,0xFF,0xFF,0xC0,0x02,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x09,0x20,0x11,0x00,0xFB,0xFF,0xE1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x08,0x20,0x0A,0x03,0x9F,0x00,0x9E,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x40,0x04,0x0E,0x70,0x00,0x81,0xC7,0x80,0x01,0x40,0x00,0x00,0x00,0x00, 0x00,0x02,0x80,0x00,0x1D,0x80,0x00,0xE0,0x61,0xE0,0x02,0xA0,0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x00,0x77,0x9F,0xFC,0xF0,0x18,0xF8,0x02,0x20,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xDF,0x00,0x00,0xF3,0x0C,0x3C,0x01,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x03,0x9E,0x00,0x00,0xF8,0x06,0x1E,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xC0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x0F,0xFD,0xFF,0xFF,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,

51单片机12864显示汉字画图画点常用例程

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 ////////////////////////////////画点例程////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////以下是主文件main.c 的内容 #include #include"lcd12864.h" //--声明全局函数--// void Delay10ms(unsigned int c); //延时10ms /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() { while(1) { LCD12864_ClearScreen(); LCD12864_DrowPoint(127,63); while(1); } } /****************************************************************************** * * 函数名: Delay10ms * 函数功能: 延时函数,延时10ms * 输入: 无 * 输出: 无 ******************************************************************************* / void Delay10ms(unsigned int c) //误差0us

LCD12864显示屏 带中文字库

蓝屏LCD12864显示屏带中文字库带背光12864-5V ST7920 需要用串口,请把 R9上的0欧电阻改到R10 带中文字库的,兰屏,白字 以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序: ORG 0000H RS EQU P3.7;确定具体硬件的连接方式 RW EQU P3.6 ;确定具体硬件的连接方式 E EQU P3.5 ;确定具体硬件的连接方式 MOV P1,#00000001B ;清屏并光标复位 ACALL ENABLE;调用写入命令子程序 MOV P1,#00111000B ;设置显示模式:8位2行5x7点阵 ACALL ENABLE ;调用写入命令子程序 MOV P1,#00001111B ;显示器开、光标开、光标允许闪烁 ACALL ENABLE ;调用写入命令子程序 MOV P1,#00000110B ;文字不动,光标自动右移 ACALL ENABLE ;调用写入命令子程序 MOV P1,#0C0H ;写入显示起始地址(第二行第一个位置) ACALL ENABLE ;调用写入命令子程序 MOV P1,#01000001B ;字母A的代码 SETB RS ;RS=1 CLR RW ;RW=0 ;准备写入数据 CLR E ;E=0 ;执行显示命令

ACALL DELAY ;判断液晶模块是否忙? SETB E ;E=1 ;显示完成,程序停车 AJMP $ ENABLE: CLR RS ;写入控制命令的子程序 CLR RW CLR E ACALL DELAY SETB E RET DELAY: MOV P1,#0FFH ;判断液晶显示器是否忙的子程序 CLR RS SETB RW CLR E NOP SETB E JB P1.7,DELAY ;如果P1.7为高电平表示忙就循环等待 RET END 程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY,然后输入显示位置的地址0C0H,最后输入要显示的字符A的代码41H。 SMC1602A(16*2)模拟口线接线方式 连接线图: --------------------------------------------------- |LCM-----51 | LCM-----51 | LCM------51 | ------------------------------------------------| |DB0-----P1.0 | DB4-----P1.4 | RW-------P2.0 | |DB1-----P1.1 | DB5-----P1.5 | RS-------P2.1 | |DB2-----P1.2 | DB6-----P1.6 | E--------P2.2 | |DB3-----P1.3 | DB7-----P1.7 | VLCD接1K电阻到GND| --------------------------------------------------- [注:AT89S52使用12M晶振] =============================================================*/

不带字库的12864液晶汉字显示程序

不带字库的128*64液晶汉字显示程序 下面是线路连接图,我自己已经搞了整整一个测试成功了绝对可用 由于篇幅有限完整的c51代码下载: https://www.doczj.com/doc/8a11460407.html,/f/12864wu.rar 源代码: #include; #define LCD P0 unsigned char i,j,k; sbit EN=P2^0;

sbit RW=P2^1; sbit RS=P2^2; sbit CS1=P2^3; sbit CS2=P2^4; sbit BUSY=P0^0; void delay(unsigned char a); unsigned char code ban[16][16]={ {0x00,0x00,0x00,0xf0,0x90,0x90,0x90,0xfe,0x90,0x9 0,0x90,0xf0,0x00,0x00,0x00,0x00}, {0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x3f,0x24,0x2 4,0x24,0x27,0x20,0x38,0x00,0x00},//电 {0x00,0x00,0x00,0x00,0x8c,0x88,0x88,0x88,0x88,0xc 8,0xa8,0x98,0x00,0x00,0x00,0x00}, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x7f,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00},//子 {0x00,0x00,0x00,0x00,0x10,0x10,0x30,0x54,0x9c,0x9 0,0x50,0x00,0x30,0x10,0x00,0x00}, {0x00,0x40,0x30,0x0c,0x03,0x01,0x01,0x01,0x01,0x0 1,0x01,0x01,0x01,0x00,0x00,0x00},//产 {0x00,0x00,0x00,0x00,0x7c,0x44,0x44,0x44,0x44,0x4 4,0x44,0x7c,0x00,0x00,0x00,0x00}, {0x00,0x00,0x3f,0x21,0x21,0x21,0x3f,0x00,0x00,0x3

相关主题
文本预览
相关文档 最新文档