您的当前位置:首页完整版Protues仿真12864液晶显示

完整版Protues仿真12864液晶显示

来源:乌哈旅游


Protues仿真液晶显示

目录

1 LCD12864简介1 2 LCD12864显示原理6 2.1汉字和英文显示原理6 2.2图形显示7 2.3应用说明8 2.4指令描述9 3软件仿真12 3.1汉字显示12 3.2图形显示17

3.3同时显示多个汉字23 3.4向上滚动显示29 4小结38

1 LCD12864简介

ST7920类 这种控制器带中文字库,为用户免除了编制字库的麻烦,该控制器的液2

晶还支持画图方式。该类液晶支持68时序8位和4位并口以及串口。

<2)KS0108类 这种控制器指令简单,不带字库。支持68时序8位并口。 <3)T6963C类 这种控制器功能强大,带西文字库。有文本和图形两种显示方式。有文本和图形两个图层,并且支持两个图层的叠加显示。支持80时序8位并口。

<4)COG类 常见的控制器有S6B0724和ST7565,这两个控制器指令兼容。支持68时序8位并口,80时序8位并口和串口。COG类液晶的特点是结构轻便,成本低。

ST7920 GND VCC V0 RS R/W E DB0-DB7 PSB RES VOUT BLA BLK

KS0108 GND VCC V0 RS R/W E DB0-DB7 CS1 CS2 RES VOUT BLA BLK

BLK

BLA FS RES CS RS DB0-DB7 RD WR V0 VCC GND FG T6963C

S6B0724 GND VCC RS WR RD CS DB0-DB7 RES BLA BLK 12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。可完成图形显示,也可以显示8×4个(16×16点阵>汉字。 管脚名称 管脚功能描述 LEVER 电源地 VSS 0 电源电压 液晶显示器驱动电压 D/I=“H”,表示DB7∽DB0为显示数据 D/I=“L”, 表示DB7∽DB0为显示指令数据 R/W=“H”,E=“H”数据被读到DB7∽DB0 R/W= R/W H/L “L”,E=“H→L”数据被写到IR或DR R/W=“L”,E信号下降沿锁存DB7∽DB0 R/W= E H/L “H”,E=“H”DDRAM数据读到DB7∽DB0 数据线 DB0 H/L 数据线 DB1 H/L 数据线 DB2 H/L 数据线 DB3 H/L 数据线 DB4 H/L 数据线 DB5 H/L 数据线 DB6 H/L 数据线 DB7 H/L H:选择芯片(右半屏>信号 CS1 H/L H:选择芯片(左半屏>信号 CS2 H/L 复位信号,低电平复位 RET H/L LCD驱动负电压 VOUT -10V LED背光板电源 LED+ - LED背光板电源 LED- - 在使用12864LCD前先必须了解以下功能器件才能进行编程。12864内部功能器件及相关功能如下: 1. 指令寄存器(IR> IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。 2.数据寄存器(DR> DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。 3.忙标志:BF BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。 利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。 DFF.显示控制触发器4. 此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为

VDD V0 D/I(RS> +5.0V - H/L DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。 X地址计数器是没有记数功能的,只能用指令设置。

Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。

6.显示数据RAMDDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。 7.Z地址计数器

Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。

Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。 12864LCD的指令系统

模块控制芯片提供两套控制命令,基本指令和扩充指令如下: 指令表1:到ぜ?? X 设定DDRAM的地址计数器(AC>到ぜ??并且将游标移到开头原点位置。这个指令不改变DDRAM 的内容 B D=1: 整体显示 ON C=1: 游标ON B=1:游标位置反白允许 S 设定游指定在数据的读取与写入时, 标的移动方向及指定显示的移位 X 设定游标的移动与显示的移位控制 的内容DDRAM 位。这个指令不改变 位控制 功能 0 0 0 0 1 DL X RE X 设定设定CGRAM 1 AC5 AC4 AC3 AC2 AC1 AC0 0 0 0 地址设定DDRAM 0 0 1 0 AC5 AC4 AC3 AC2 AC1 AC0 地址读取忙0 标志和1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 地址 X DL=0/1:4/8位数据 RE=1: 扩充指令操作 RE=0: 基本指令操作 地址CGRAM 设定 显示位址)DDRAM 地址<设定87H 第一行:80H-97H 第二行:90H- 写数1 0 数据 据RAM 到 读出1 1 数据 的RAM 值 指令表2:同时可以读出地址计数器,是否完成 的值(AC> RAM D7写入到内部的——D0将数据(DDRAM/CGRAM/IRAM/GRAM> D0 ——从内部RAM读取数据D7(DDRAM/CGRAM/IRAM/GRAM> 指 功 能 指 令 码 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 令

进入待命模式,执行其他指令都棵终止 待命 0 0 0 0 0 0 0 0 0 1 待命模式 模式

卷动地SR=1:允许输入垂直卷动地址 址开关0 0 0 0 0 0 0 0 1 SR

SR=0:允许输入IRAM和CGRAM地址 开启

选择2行中的任一行作反白显示,并可决 反白 定反白与否。初始值R1R0=00,第一次设0 0 0 0 0 0 0 1 R1 R0 定为反白显示,再次设定变回正常

选择

SL=0:进入睡眠模式 0 0 0 0 0 1 SL X X 0 睡眠

:脱离睡眠模式SL=1. 模式 扩 0 0 0 0 1 CL X RE G 0 CL=充 0/1功能 RE=设定 1: RE=0: G=1/0 设定0 0 1 0 0 0 ACACACAC设绘RAM ACACAC3 2 1 0 定图 地6 5 4 ACACACAC绘址 3 2 1 0 图先设定垂直再设定水平将以上 4/位数扩充指令操基本指令操:绘图开RAM地AC6AC5…AC地AC3AC2AC1AC01位地址连续写入即

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

带中文字库的128X64-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的128X64-0402B内部提供128×2字节的字符显示RAM缓冲区9FH9DH9AH 9BH 98H 9EH 99H 9CH2 LCD12864

显示原理

2.1汉字和英文显示原理

在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,因为英文字母种类很少,只需要8位<一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。 那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:

图1 “A”字模图

所示:2在字模中的记载却如图”你“而中文的

图2 “你”字模图

根据芯片的不同取模的方式不同,有多种取模方式:单色点阵液晶字模,横向取模,字节正序,单色点阵液晶字模,横向取模,字节倒序,单色点阵液晶字模,纵向取模,字节正序,单色点阵液晶字模,纵向取模,字节倒序等等。

2.2图形显示

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

垂直地址范围 AC5...AC0 水平地址范围 AC3…AC0

绘图RAM 的地址计数器自动加一,当水平地址=0FH 时会重新设为00H

但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料排列顺序如下图:

2.3应用说明

用带中文字库的128X64显示模块时应注意以下几点:

①欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显

示地址,再写入中文字符编码。

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

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

④模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。

⑤“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位。

2.4指令描述

1、显示开/关设置 CODE: D/I DB7 DB6 DB5 DB4 R/W L L L L H H DB3 DB2 DB1 DB0 H H H H/L 功能:设置屏幕显示开/关。 DB0=H,开显示;DB0=L,关显示。不影响显示RAM(DD RAM>中的内容。 2、设置显示起始行 CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L H H 行地址<0-63) 功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。 3、设置页地址 CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L H L H H H 页地址<0-7) 功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。页地址就是DD

RAM 的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST>可把页地址计数器

内容清零。

DD RAM地址映像表

Y 地址

0 1 2 ……………………… 61 62 63 DB0 X=0

PAGE0

DB7 DB0 X=1

∫ PAGE1 DB7 ∷ ∷ ∷

DB0

X=7 ∫ PAGE6 DB7

DB0

X=8 ∫ PAGE7 DB7

4、设置列地址 CODE: R/W D/I DB7 DB6 DB5 DB4 L L L H DB3 DB2 DB1 DB0 列地址<0-63) 功能: DD RAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DD

RAM进行读写操作后,Y地址自动加一。 5、状态检测 CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 H L BF L ON/OFF RET L L L L 功能:读忙信号标志位(BF>、复位标志位(RST>以及显示状态位(ON/OFF>。 BF=H:内部正在执行操作; BF=L:空闲状态。 RST=H:正处于复位初始化状态; RST=L:正常状态。 ON/OFF=H:表示显示关闭; ON/OFF=L:表示显示开。 6、写显示数据 CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L H D7 D6 D5 D4 D3 D2 D1 D0 功能:写数据到DD RAM,DD RAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DD RAM前,要先执行“设置页地址”及“设置列地址”命令。 7、读显示数据 CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 H H D7 D6 D5 D4 D3 D2 D1 D0 功能:从DD RAM读数据,读指令执行后Y地址计数器自动加1。从DD RAM读数据前要先执行“设置页地址” 及“设置列地址”命令。 8、屏幕显示与DD RAM地址映射关系 Y1 Y2 Y3 Y4 …………Y62 Y63 Y64

…………1/0 1/0 1/0 DB0 Line 0 1/0 1/0 1/0 1/0 X=0

Line 1 1/0 1/0 1/0 1/0 1/0 1/0 1/0 DB1 ………… Line 2 1/0 1/0 1/0 1/0 ………… 1/0 1/0 1/0 DB2 Line 3 1/0 1/0 1/0 1/0 ………… 1/0 1/0 1/0 DB3 Line 4 1/0 1/0 1/0 1/0 1/0 1/0 1/0 DB4 ………… Line 5 1/0 1/0 1/0 1/0 1/0 1/0 1/0 DB5 …………

Line 6 1/0 1/0 1/0 1/0 ………… 1/0 1/0 1/0 DB6 ………… Line 7 1/0 1/0 1/0 1/0 1/0 1/0 1/0 DB7 ………… ………… …………

………… Line60 1/0 1/0 1/0 1/0 1/0 1/0 1/0 DB4 X=7

………… Line61 1/0 1/0 1/0 1/0 1/0 1/0 1/0 DB5 ………… 1/0 1/0 1/0 DB6 Line62 1/0 1/0 1/0 1/0 ………… Line63 1/0 1/0 1/0 1/0 1/0 1/0 1/0 DB7

3软件仿真 3.1汉字显示

在Protues软件中选择所需元件,搭建的电路图如图1所示。

图1 仿真硬件原理图

所示。2将编写的代码烧写到单片机里,运行液晶显示不正常,如图

图2 运行图

开始我还以为是程序问题,把程序看了又看,改了又改,显示结果还是一样。后来问了下张勇生,出现这种情况的原因是P0口没接上拉电阻。因为P0口是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的。接上拉电阻后,重新运行这下运行正常了,如图3所示。

3正常显示图 代码如下所示:#include #define LCDLCDDisp_Off 0x3e #define LCDLCDDisp_On 0x3f #define Page_Add 0xb8//页地址 #define LCDCol_Add 0x40//列地址 #define Start_Line 0xC0//行地址 /*****液晶显示器的端口定义*****/ #define data_ora P0 /*液晶数据总线*/ sbit LCDMcs=P2^1 。 /*片选1*/ sbit LCDScs=P2^2 。 /*片选2*/

sbit RESET=P2^3 。 /*复位信号*/

sbit LCDDi=P2^4 。 /*数据/指令 选择*/ sbit LCDRW=P2^5 。 /*读/写 选择*/ sbit LCDEnable=P2^6 。 /*读/写 使能*/ char code Hz_xu[]= {

/*------------------------------------------------------------------------------

源文件 / 文字 : F:\\LD测试仪\\液晶\\字模提取+排版软件\\液晶字模提取\\图例\\wo.bmp

宽×高<像素): 16×

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-28 17:10:17

------------------------------------------------------------------------------*/

0x40,0x42,0xCC,0x00,0x00,0x40,0x30,0x1E,0x10,0xF0,0x10,0x10,0x18,0x10,0x00,0x00,

0x00,0x00,0x3F,0x10,0x08,0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x00,0x00 }。

char code Hz_ping[]= {

/*------------------------------------------------------------------------------

源文件 / 文字 : F:\\LD测试仪\\液晶\\字模提取+排版软件\\液晶字模提取\\图例\\ping.bmp萍

宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-29 8:46:30

------------------------------------------------------------------------------*/

0x00,0xC8,0x28,0x58,0x08,0x0C,0xBE,0x28,0x28,0xE8,0x3E,0x28,0xA8,0x2C,0x08,0x00,

0x00,0x08,0x09,0x7E,0x01,0x04,0x04,0x05,0x04,0x7F,0x04,0x05,0x04,0x06,0x04,0x00 }。

/****************************************************************************

函数功能:LCD延时程序 入口参数:t 出口参数:

****************************************************************************/

void LCDdelay(unsigned int t> {

unsigned int i,j。 for(i=0。i。 for(j=0。j<10。j++>。

}

/****************************************************************************

状态检查,LCD是否忙

*****************************************************************************/

void CheckState(> {

unsigned char dat,DATA。//状态信息<判断是否忙)

LCDDi=0。 // 数据\\指令选择,D/ILCDRW=1。 //R/W=H ,??数据被读到DB7∽DB0 do {

DATA=0x00。

LCDEnable=1。 //EN下降源 LCDdelay(2>。//延时 dat=DATA。

LCDEnable=0。

dat=0x80 & dat。 //仅当第7位为0时才可操作(判别busy信号> }

while(!(dat==0x00>>。 }

/*****************************************************************************

函数功能:写命令到LCD程序,RS(DI>=L,RW=L,EN=H,即来一个脉冲写一次 入口参数:cmdcode 出口参数:

*****************************************************************************/

void write_com(unsigned char cmdcode> {

CheckState(>。//检测LCD是否忙 LCDDi=0。 LCDRW=0。 P0=cmdcode。 LCDdelay(2>。 LCDEnable=1。 LCDdelay(2>。 LCDEnable=0。 }

/*****************************************************************************

函数功能:LCD初始化程序

入口参数: 出口参数:

*****************************************************************************/ void init_lcd(> {

LCDdelay(100>。

LCDMcs=1。//刚开始关闭两屏 。LCDScs=1

LCDdelay(100>。

write_com(LCDLCDDisp_Off>。 //写初始化命令 write_com(Page_Add+0>。 write_com(Start_Line+0>。 write_com(LCDCol_Add+0>。 write_com(LCDLCDDisp_On>。 }

/*****************************************************************************

函数功能:写数据到LCD程序,RS(DI>=H,RW=L,EN=H,即来一个脉冲写一次 入口参数:LCDDispdata 出口参数:

*****************************************************************************/

void write_data(unsigned char LCDDispdata> {

CheckState(>。//检测LCD是否忙 LCDDi=1。 LCDRW=0。

P0=LCDDispdata。 LCDdelay(2>。 LCDEnable=1。 LCDdelay(2>。 LCDEnable=0。 }

/*****************************************************************************

函数功能:清除LCD内存程序 入口参数:pag,col,hzk 出口参数:

*****************************************************************************/ void Clr_Scr(> {

unsigned char j,k。

LCDMcs=0。 //左、右屏均开显示 LCDScs=0。

write_com(Page_Add+0>。 write_com(LCDCol_Add+0>。

for(k=0。k<8。k++>//控制页数0-7,共8页 {

write_com(Page_Add+k>。 //每页每页进行写

for(j=0。j<64。j++> //每页最多可写32个中文文字或64个ASCII字符 {

write_com(LCDCol_Add+j>。

write_data(0x00>。//控制列数0-63,共64列,写点内容,列地址自动加1 } } }

/*****************************************************************************

函数功能:指定位置显示汉字16*16程序 入口参数:page,column,hzk 出口参数:

*****************************************************************************/

void hz_LCDDisp16(unsigned char page,unsigned char column, unsigned char code *hzk> {

unsigned char j=0,i=0。 for(j=0。j<2。j++> {

write_com(Page_Add+page+j>。 write_com(LCDCol_Add+column>。 for(i=0。i<16。i++>

write_data(hzk[16*j+i]>。 } }

void main(> {

init_lcd(>。 Clr_Scr(>。

LCDMcs=0。 //左屏开显示 LCDScs=1。

hz_LCDDisp16(0,48,Hz_xu>。// Hz_Wo为某个汉字的首地址 LCDMcs=1。 //右屏开显示 LCDScs=0。

hz_LCDDisp16(0,0,Hz_ping>。

while(1> { } }

3.2图形显示

我选了一张128x64的图片在字模软件中生产相应的C代码,将C代码写入到程序中。

因为液晶由两个控制芯片来控制,所以有片选信号端口CS1和CS2。我在字体显示程序中把改了显示那一块的代码,主程序中改了片选信号。开始同时将左右屏都开了,显示事,左右屏同时显示一样的图形,并且显示的图形不完整。主程序中显示部分的程序不对,我想了后,将主程序中程序改了一下,先开左屏调用左屏显示函数,在关左屏开右屏调用右屏显示函数。最后显示成功。如图4所示。

图4 图形显示 代码如下所示: #include

#define LCDLCDDisp_Off 0x3e #define LCDLCDDisp_On 0x3f #define Page_Add 0xb8//ye #define LCDCol_Add 0x40//lie #define Start_Line 0xC0//hang /*****液晶显示器的端口定义*****/ #define data_ora P0 /*液晶数据总线*/ sbit LCDMcs=P2^1 。 /*片选1*/ sbit LCDScs=P2^2 。 /*片选2*/ sbit RESET=P2^3 。 /*复位信号*/

sbit LCDDi=P2^4 。 /*数据/指令 选择*/ sbit LCDRW=P2^5 。 /*读/写 选择*/ sbit LCDEnable=P2^6 。 /*读/写 使能*/ char code Hz[]= {

/*-----------------------------------------------------------------------------

源文件 / 文字 : F:\\LD测试仪\\液晶\\字模提取+排版软件\\液晶字模提取\\图例\\yema.bmp

宽×高<像素): 128×64

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/1024字节 数据转换日期 : 2018-7-29 9:09:37

------------------------------------------------------------------------------*

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x80,0x90,0xD0,0x78,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xE0,0xE0,

0xE0,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x06,0x0F,0x0F,0x07,0x0F,0x0F,0x0F,0xCF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xDD,0x9F,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0x78,0xF8,0xF0,0xE0,0xC0,0xC0,0x80,

0xC0,0xE0,0xE0,0xF0,0xFC,0xFE,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFD,0x3B,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x80,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFC,0x9C,0x3C,0x3D,0x3F,0x7F,0xFD,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xE1,0xC3,0x87,

0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFE,0xE3,0xF1,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x1F,0x1F,0x78,0xF0,0x00,0x00,0x00,0x01,

0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFE,0xFE,0xFC,0xF8,0xF0,0xE0,0x80,0x80,0x80,0xC0,0xE0,0xFF,0xDF,0x7F,0x1F,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x7F,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x1F,0x07,0xBF,0xFF,0x3F,0x1F,0x05,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,

0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x0E,0x0E,0x0E,0x1F,0x1F,0x07,0x9F,0xFF,

0xFF,0x7B,0x61,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x18,0x1C,0x1E,0x07,0x03,0x01,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }。

/****************************************************************************

函数功能:LCD延时程序 入口参数:t 出口参数:

****************************************************************************/

void LCDdelay(unsigned int t> {

unsigned int i,j。 for(i=0。i。 for(j=0。j<10。j++>。 }

/****************************************************************************

状态检查,LCD是否忙

*****************************************************************************/

void CheckState(> {

unsigned char dat,DATA。//状态信息<判断是否忙)

LCDDi=0。 // 数据\\指令选择,D/ILCDRW=1。 //R/W=H ,??数据被读到DB7∽DB0 do {

DATA=0x00。

LCDEnable=1。 //EN下降源 LCDdelay(2>。//延时 dat=DATA。

LCDEnable=0。

dat=0x80 & dat。 //仅当第7位为0时才可操作(判别busy信号> }

。 while(!(dat==0x00>> }

/*****************************************************************************

函数功能:写命令到LCD程序,RS(DI>=L,RW=L,EN=H,即来一个脉冲写一次 入口参数:cmdcode 出口参数:

*****************************************************************************/

void write_com(unsigned char cmdcode> {

CheckState(>。//检测LCD是否忙 LCDDi=0。 LCDRW=0。 P0=cmdcode。 LCDdelay(2>。 LCDEnable=1。 LCDdelay(2>。

LCDEnable=0。 }

/*****************************************************************************

函数功能:LCD初始化程序 入口参数: 出口参数:

*****************************************************************************/ void init_lcd(> {

LCDdelay(100>。

LCDMcs=1。//刚开始关闭两屏 LCDScs=1。

LCDdelay(100>。

write_com(LCDLCDDisp_Off>。 //写初始化命令 write_com(Page_Add+0>。 write_com(Start_Line+0>。 write_com(LCDCol_Add+0>。 write_com(LCDLCDDisp_On>。 }

/*****************************************************************************

函数功能:写数据到LCD程序,RS(DI>=H,RW=L,EN=H,即来一个脉冲写一次 入口参数:LCDDispdata 出口参数:

*****************************************************************************/

void write_data(unsigned char LCDDispdata> {

CheckState(>。//检测LCD是否忙 LCDDi=1。 LCDRW=0。

。P0=LCDDispdata LCDdelay(2>。 LCDEnable=1。 LCDdelay(2>。 LCDEnable=0。 }

/*****************************************************************************

函数功能:清除LCD内存程序 入口参数:pag,col,hzk 出口参数:

*****************************************************************************/ void Clr_Scr(> {

unsigned char j,k。

LCDMcs=0。 //左、右屏均开显示 LCDScs=0。

write_com(Page_Add+0>。 write_com(LCDCol_Add+0>。

for(k=0。k<8。k++>//控制页数0-7,共8页 {

write_com(Page_Add+k>。 //每页每页进行写

for(j=0。j<64。j++> //每页最多可写32个中文文字或64个ASCII字符 {

write_com(LCDCol_Add+j>。

write_data(0x00>。//控制列数0-63,共64列,写点内容,列地址自动加1 } } }

void main(> {

init_lcd(>。 Clr_Scr(>。

LCDMcs=0。 //左屏开显示 LCDScs=1。

Bmp_Left_Disp(0,0,Hz>。 LCDMcs=1。 //右屏开显示 LCDScs=0。

Bmp_Right_Disp(0,0,Hz>。 while(1> { } }

3.3同时显示多个汉字

用字模软件取模后通过改写软件,仿真图形如图5所示。

图5 显示多个汉字的仿真图 代码如下所示: #include

#define LCDLCDDisp_Off 0x3e #define LCDLCDDisp_On 0x3f #define Page_Add 0xb8//页地址

#define LCDCol_Add 0x40//列地址 #define Start_Line 0xC0//行地址 /*****液晶显示器的端口定义*****/ #define data_ora P0 /*液晶数据总线*/ sbit LCDMcs=P2^1 。 /*片选1*/ sbit LCDScs=P2^2 。 /*片选2*/ sbit RESET=P2^3 。 /*复位信号*/

sbit LCDDi=P2^4 。 /*数据/指令 选择*/ sbit LCDRW=P2^5 。 /*读/写 选择*/ sbit LCDEnable=P2^6 。 /*读/写 使能*/ unsigned char code Bmp1[]= {

/*----------------------------------------------------------------------------- 源文件 / 文字 : 来自剪贴板!武汉理工大学 宽×高<像素): 128×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节 数据转换日期 : 2018-7-29 17:52:57 显示的汉字:武汉理工大学

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x20,0x20,0x24,0x24,0x24,0xE4,0x24,0x20,0x20,0xFE,0x20,0x24,0x28,0x20,

0x00,0x20,0xC2,0x0C,0x80,0x60,0x04,0x7C,0x84,0x04,0x04,0xC4,0x3E,0x04,0x00,0x00,

0x88,0x88,0xF8,0x88,0x88,0x00,0xFC,0x24,0x24,0xFC,0x24,0x24,0xFE,0x04,0x00,0x00,

0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x20,

0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x40,0x30,0x10,

0x52,0x5C,0x50,0x52,0x5C,0x50,0xD8,0x56,0x10,0x50,0x30,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x20,0x60,0x3F,0x20,0x20,0x1F,0x12,0x12,0x10,0x07,0x18,0x20,0x40,0x78,

0x00,0x04,0x04,0x7E,0x41,0x40,0x20,0x10,0x0B,0x04,0x0B,0x10,0x20,0x60,0x20,0x00,

0x10,0x30,0x1F,0x08,0x48,0x40,0x4B,0x49,0x49,0x7F,0x49,0x49,0x6B,0x40,0x08,0x20,

0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x40,0

x40,

0x20,0x10,0x08,0x06,0x01,0x02,0x04,0x08,0x10,0x20,0x60,0x20,0x00,0x04,0x04,0x04,

0x04,0x04,0x24,0x44,0x3F,0x05,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }。

unsigned char code Bmp2[]= {

/*------------------------------------------------------------------------------ 源文件 / 文字 : 信息项目学院 宽×高<像素): 128×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节 数据转换日期 : 2018-7-29 18:34:04 显示的汉字:信息项目学院

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0x40,0xF0,0x0E,0x00,0x28,0x28,0x28,0x2A,0x2C,0x28,0x28,0x28,0x08,0x00,

0x00,0x00,0x00,0xF8,0xA8,0xAC,0xAA,0xA8,0xA8,0xA8,0xFC,0x08,0x00,0x00,0x00,0x00,

0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x24,

0xA4,0xFC,0x26,0x24,0x00,0x7C,0x24,0x24,0x24,0x24,0x7C,0x00,0x00,0x40,0x30,0x10,

0x52,0x5C,0x50,0x52,0x5C,0x50,0xD8,0x56,0x10,0x50,0x30,0x00,0x00,0xFC,0x04,0x64,

0x9C,0x20,0x58,0x48,0x4A,0x4C,0x48,0x48,0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x7D,0x25,0x25,0x25,0x25,0x7D,0x01,0x00,0x00,

0x00,0x20,0x18,0x03,0x3A,0x42,0x46,0x5A,0x42,0x42,0x73,0x00,0x08,0x30,0x00,0x20,

0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x08,0x06,

0x01,0x7F,0x01,0x42,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,0x04,0x04,0x04,

0x04,0x04,0x24,0x44,0x3F,0x05,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x7F,0x04,0

x08,

0x47,0x41,0x21,0x1F,0x01,0x01,0x3F,0x41,0x41,0x79,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }。

unsigned char code Bmp3[]= {

/*------------------------------------------------------------------------------ 源文件 / 文字 : 通信项目 宽×高<像素): 128×

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节 数据转换日期 : 2018-7-29 18:36:04 显示汉字:通信项目

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x42,

0xCC,0x00,0x00,0xF4,0x54,0x5C,0xF4,0x5C,0x56,0xF4,0x00,0x00,0x00,0x80,0x40,0xF0,

0x0E,0x00,0x28,0x28,0x28,0x2A,0x2C,0x28,0x28,0x28,0x08,0x00,0x00,0x08,0x08,0x08,

0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x24,0xA4,0xFC,0x26,

0x24,0x00,0x7C,0x24,0x24,0x24,0x24,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,

0x0F,0x10,0x20,0x5F,0x42,0x42,0x5F,0x42,0x52,0x5F,0x40,0x40,0x00,0x00,0x00,0x7F,

0x00,0x00,0x01,0x7D,0x25,0x25,0x25,0x25,0x7D,0x01,0x00,0x00,0x20,0x20,0x20,0x20,

0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x08,0x06,0x01,0x7F,0x01,

0x42,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0

x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }。

unsigned char code Bmp4[]= {

/*------------------------------------------------------------------------------ 源文件 / 文字 : 0606班 宽×高<像素): 128×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节 数据转换日期 : 2018-7-29 18:37:59 显示的汉字:0606班

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,

0x20,0x10,0x10,0x30,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,

0x20,0x10,0x10,0x30,0x00,0x00,0x44,0x44,0xFC,0x44,0x04,0xC0,0x00,0xFE,0x84,0x84,

0xFC,0x84,0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1F,

0x22,0x21,0x21,0x21,0x1E,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1F,

0x22,0x21,0x21,0x21,0x1E,0x00,0x10,0x10,0x0F,0x48,0x28,0x11,0x08,0x27,0x20,0x20,

0x3F,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0

x00 }。

/****************************************************************************

函数功能:LCD延时程序 入口参数:t 出口参数:

****************************************************************************/

void LCDdelay(unsigned int t> {

unsigned int i,j。 for(i=0。i。 for(j=0。j<10。j++>。 }

/****************************************************************************

状态检查,LCD是否忙

*****************************************************************************/

void CheckState(> {

unsigned char dat,DATA。//状态信息<判断是否忙)

LCDDi=0。 // 数据\\指令选择,D/ILCDRW=1。 //R/W=H ,??数据被读到DB7∽DB0 do {

DATA=0x00。

LCDEnable=1。 //EN下降源 LCDdelay(2>。//延时 dat=DATA。

LCDEnable=0。

dat=0x80 & dat。 //仅当第7位为0时才可操作(判别busy信号> }

while(!(dat==0x00>>。 }

/*****************************************************************************

函数功能:写命令到LCD程序,RS(DI>=L,RW=L,EN=H,即来一个脉冲写一次 入口参数:cmdcode 出口参数:

*****************************************************************************/

void write_com(unsigned char cmdcode> {

CheckState(>。//检测LCD是否忙 LCDDi=0。 。LCDRW=0 P0=cmdcode。 LCDdelay(2>。 LCDEnable=1。 LCDdelay(2>。 LCDEnable=0。 }

/*****************************************************************************

函数功能:LCD初始化程序 入口参数: 出口参数:

*****************************************************************************/ void init_lcd(> {

LCDdelay(100>。

LCDMcs=1。//刚开始关闭两屏 LCDScs=1。

LCDdelay(100>。

write_com(LCDLCDDisp_Off>。 //写初始化命令 write_com(Page_Add+0>。 write_com(Start_Line+0>。 write_com(LCDCol_Add+0>。 write_com(LCDLCDDisp_On>。 }

/*****************************************************************************

函数功能:写数据到LCD程序,RS(DI>=H,RW=L,EN=H,即来一个脉冲写一次 入口参数:LCDDispdata 出口参数:

*****************************************************************************/

void write_data(unsigned char LCDDispdata> {

CheckState(>。//检测LCD是否忙 LCDDi=1。 LCDRW=0。

P0=LCDDispdata。 LCDdelay(2>。

LCDEnable=1。 LCDdelay(2>。 LCDEnable=0。 }

/*****************************************************************************

函数功能:清除LCD内存程序 入口参数:pag,col,hzk 出口参数:

*****************************************************************************/ void Clr_Scr(> {

unsigned char j,k。

LCDMcs=0。 //左、右屏均开显示 LCDScs=0。

write_com(Page_Add+0>。 write_com(LCDCol_Add+0>。

for(k=0。k<8。k++>//控制页数0-7,共8页 {

write_com(Page_Add+k>。 //每页每页进行写

for(j=0。j<64。j++> //每页最多可写32个中文文字或64个ASCII字符 {

write_com(LCDCol_Add+j>。

write_data(0x00>。//控制列数0-63,共64列,写点内容,列地址自动加1 } } }

/*****************************************************************************

函数功能:左屏位置显示 入口参数:page,column,hzk 出口参数:

*****************************************************************************/

void Bmp_Left_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp> {

unsigned char j=0,i=0。 for(j=0。j<2。j++> {

write_com(Page_Add+page+j>。 write_com(LCDCol_Add+column>。 for(i=0。i<64。i++>

write_data(Bmp[128*j+i]>。 } }

/*****************************************************************************

函数功能:右屏位置显示 入口参数:page,column,hzk 出口参数:

*****************************************************************************/

void Bmp_Right_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp> {

unsigned char j=0,i=0。 for(j=0。j<2。j++> {

write_com(Page_Add+page+j>。 。write_com(LCDCol_Add+column> for(i=64。i<128。i++>

write_data(Bmp[128*j+i]>。 } }

void main(> {

init_lcd(>。 Clr_Scr(>。

LCDMcs=0。 //左屏开显示 LCDScs=1。

Bmp_Left_Disp(0,0,Bmp1>。// Bmp1为某个汉字的首地址 Bmp_Left_Disp(2,0,Bmp2>。 Bmp_Left_Disp(4,0,Bmp3>。 Bmp_Left_Disp(6,0,Bmp4>。 LCDMcs=1。 //右屏开显示 LCDScs=0。

Bmp_Right_Disp(0,0,Bmp1>。 Bmp_Right_Disp(2,0,Bmp2>。 Bmp_Right_Disp(4,0,Bmp3>。 Bmp_Right_Disp(6,0,Bmp4>。 while(1> { } }

3.4向上滚动显示

仿真图形如图6所示。

)开始滚动显示

#define uchar unsigned char #define uint unsigned int

#define LCDLCDDisp_Off 0x3e #define LCDLCDDisp_On 0x3f #define Page_Add 0xb8//ye #define LCDCol_Add 0x40//lie #define Start_Line 0xC0//hang /*****液晶显示器的端口定义*****/ #define data_ora P0 /*液晶数据总线*/ sbit LCDMcs=P2^1 。 /*片选1*/ sbit LCDScs=P2^2 。 /*片选2*/ sbit RESET=P2^3 。 /*复位信号*/

sbit LCDDi=P2^4 。 /*数据/指令 选择*/ sbit LCDRW=P2^5 。 /*读/写 选择*/ sbit LCDEnable=P2^6 。 /*读/写 使能*/ uchar *tab。 uint k=0。

uchar code hz1[]= {

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

/*------------------------------------------------------------------------------ 源文件 / 文字 : 武 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:50:18

------------------------------------------------------------------------------*/

0x10,0x50,0x34,0x14,0x1C,0xD4,0x16,0x14,0x10,0x7F,0x90,0x12,0x14,0x10,0x10,0x00,

0x40,0x40,0x7F,0x20,0x20,0x1F,0x11,0x11,0x01,0x00,0x07,0x18,0x20,0x40,0xF0,0x00,

/*------------------------------------------------------------------------------

源文件 / 文字 : 汉 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:51:45

------------------------------------------------------------------------------*/

0x10,0x60,0x21,0x96,0x68,0x04,0x1E,0xE4,0x04,0x04,0x04,0xE4,0x1C,0x04,0x00,0x00,

0x04,0x04,0x7E,0x01,0x40,0x20,0x20,0x10,0x0B,0x04,0x0B,0x10,0x30,0x60,0x20,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 理 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:52:29

------------------------------------------------------------------------------*/

0x44,0x44,0xFC,0x54,0x4C,0x04,0xFE,0x92,0x92,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,

0x10,0x10,0x0F,0x08,0x48,0x40,0x45,0x44,0x44,0x7F,0x44,0x44,0x44,0x45,0x40,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 工 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:53:19

------------------------------------------------------------------------------*/

0x00,0x40,0x22,0x12,0x0A,0x06,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,

0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 大 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:53:53

------------------------------------------------------------------------------*/

0x20,0x60,0x20,0x30,0x28,0x24,0xA2,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 学 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:54:23

------------------------------------------------------------------------------*/

0x40,0x70,0x30,0x12,0x5C,0x54,0x52,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,

0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }。

uchar code hz2[]= {

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 信 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:56:07

------------------------------------------------------------------------------*/

0x80,0x40,0x30,0xFC,0x0F,0x0E,0xAA,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00,

0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 息 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:56:47

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0xFC,0x5C,0x54,0x56,0x55,0x54,0x54,0x54,0xFC,0x00,0x00,0x00,0x00,

0x00,0x20,0x38,0x01,0x3D,0x41,0x41,0x45,0x59,0x41,0x41,0x71,0x00,0x08,0x30,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 工 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:57:52

------------------------------------------------------------------------------*/

0x00,0x40,0x22,0x12,0x0A,0x06,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,

0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 程 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:58:28

------------------------------------------------------------------------------*/

0x10,0x52,0xF2,0xFE,0x99,0x15,0x82,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,

0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 学 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:59:06

------------------------------------------------------------------------------*/

0x40,0x70,0x30,0x12,0x5C,0x54,0x52,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,

0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 院

16

×: 16像素)<宽×高

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:59:51

------------------------------------------------------------------------------*/

0xFE,0x42,0x32,0x5A,0x8E,0x0C,0x26,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,

0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }。

uchar code hz3[]= {

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 通 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 16:02:05

------------------------------------------------------------------------------*/

0x40,0x41,0xE6,0x10,0x08,0xF6,0x52,0x52,0x56,0xFA,0x5A,0x56,0xF2,0x00,0x00,0x00,

0x40,0x20,0x1F,0x20,0x40,0x5F,0x42,0x42,0x42,0x5F,0x4A,0x52,0x4F,0x40,0x40,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 信 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 16:02:40

------------------------------------------------------------------------------*/

0x80,0x40,0x30,0xFC,0x0F,0x0E,0xAA,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00,

0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 工 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:57:52

------------------------------------------------------------------------------*/

0x00,0x40,0x22,0x12,0x0A,0x06,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,

0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 程 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 15:58:28

------------------------------------------------------------------------------*/

0x10,0x52,0xF2,0xFE,0x99,0x15,0x82,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,

0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }。

uchar code hz4[]= {

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 许 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 16:05:36

------------------------------------------------------------------------------*/

0x40,0x41,0x6E,0xD4,0x08,0x44,0x32,0x0F,0x08,0x08,0xF8,0x08,0x08,0x08,0x00,0x00,

0x00,0x00,0x00,0x7F,0x20,0x11,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x00,

/*------------------------------------------------------------------------------ 源文件 / 文字 : 萍 宽×高<像素): 16×16

字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节 数据转换日期 : 2018-7-31 16:06:07

------------------------------------------------------------------------------*/

0x84,0x54,0x64,0x34,0x0C,0xAF,0x26,0x24,0x24,0xFF,0x24,0x24,0xE4,0xA4,0x04,0x00,

0x10,0x13,0xF9,0x06,0x00,0x08,0x09,0x0A,0x08,0xFF,0x08,0x0A,0x09,0x08,0x08,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0

x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }。

/****************************************************************************

函数功能:LCD延时程序 入口参数:t 出口参数:

****************************************************************************/

void LCDdelay(uchar x> {

。 int d uchar y。

for(y=0。y for(d=0。d<10。d++>。 }

/****************************************************************************

状态检查,LCD是否忙

*****************************************************************************/

void CheckState(> {

uchar dat,DATA。//状态信息<判断是否忙)

LCDDi=0。 // 数据\\指令选择,D/ILCDRW=1。 //R/W=H ,??数据被读到DB7∽DB0 do {

DATA=0x00。

LCDEnable=1。 //EN下降源 LCDdelay(1>。//延时 dat=DATA。

LCDEnable=0。

dat=0x80 & dat。 //仅当第7位为0时才可操作(判别busy信号> }

while(!(dat==0x00>>。 }

/*****************************************************************************

函数功能:写命令到LCD程序,RS(DI>=L,RW=L,EN=H,即来一个脉冲写一次 入口参数:cmdcode 出口参数:

*****************************************************************************/

void write_com(uchar cmdcode> {

CheckState(>。//检测LCD是否忙 LCDDi=0。 LCDRW=0。 P0=cmdcode。 LCDdelay(1>。 LCDEnable=1。 LCDdelay(1>。 LCDEnable=0。 }

/*****************************************************************************

函数功能:写数据到LCD程序,RS(DI>=H,RW=L,EN=H,即来一个脉冲写一次 入口参数:LCDDispdata 出口参数:

*****************************************************************************/

void write_data(uchar LCDDispdata> {

CheckState(>。//检测LCD是否忙 LCDDi=1。 LCDRW=0。

P0=LCDDispdata。 LCDdelay(1>。 LCDEnable=1。 LCDdelay(1>。 LCDEnable=0。 }

/*****************************************************************************

/*****************************************************************************

函数功能:LCD初始化程序 入口参数: 出口参数:

*****************************************************************************/ void init_lcd(> {

LCDdelay(1>。

LCDMcs=1。//刚开始关闭两屏 LCDScs=1。 LCDdelay(1>。

write_com(LCDLCDDisp_Off>。 //写初始化命令 write_com(Page_Add+0>。 write_com(Start_Line+0>。 write_com(LCDCol_Add+0>。 write_com(LCDLCDDisp_On>。 }

/**************************************************************************

函数功能:清除LCD内存程序 入口参数:pag,col,hzk 出口参数:

*****************************************************************************/ void Clr_Scr(> {

uchar j,k。

LCDMcs=0。 //左、右屏均开显示 LCDScs=0。

write_com(Page_Add+0>。 write_com(LCDCol_Add+0>。

for(k=0。k<8。k++>//控制页数0-7,共8页 {

write_com(Page_Add+k>。 //每页每页进行写

for(j=0。j<64。j++> //每页最多可写32个中文文字或64个ASCII字符 {

write_com(LCDCol_Add+j>。

write_data(0x00>。//控制列数0-63,共64列,写点内容,列地址自动加1 } } }

/*****************************************************************************

函数功能:一行一行显示 入口参数:page,column,hzk 出口参数:

*****************************************************************************/

Disp(uchar page,uchar column, uchar code *word> {

uchar i。

LCDMcs=0。 LCDScs=1。

write_com(0xb8|page>。 write_com(0x40|column>。 for(i=0。i<16。i++> write_data(word[i]>。 for(i=32。i<48。i++> write_data(word[i]>。 for(i=64。i<80。i++> write_data(word[i]>。 for(i=96。i<112。i++> write_data(word[i]>。 LCDMcs=1。 LCDScs=0。

write_com(0xb8|page>。 write_com(0x40>。 for(i=128。i<144。i++> write_data(word[i]>。 for(i=160。i<176。i++> write_data(word[i]>。 for(i=192。i<208。i++> write_data(word[i]>。 for(i=224。i<240。i++> write_data(word[i]>。 LCDMcs=0。 LCDScs=1。

write_com(0xb8|page+1>。 write_com(0x40|column>。 for(i=16。i<32。i++> write_data(word[i]>。

。i<64。for(i=48. write_data(word[i]>。 for(i=80。i<96。i++> write_data(word[i]>。 for(i=112。i<128。i++>

i++>

write_data(word[i]>。 LCDMcs=1。 LCDScs=0。

write_com(0xb8|page+1>。 write_com(0x40>。 for(i=144。i<160。i++> write_data(word[i]>。 for(i=176。i<192。i++> write_data(word[i]>。 for(i=208。i<224。i++> write_data(word[i]>。 for(i=240。i<250。i++> write_data(word[i]>。 }

void main(> {

init_lcd(>。 Clr_Scr(>。 k=0。

for(k=0xc0。k<0xff。k++> {

Disp(0,0,hz1>。 Disp(2,0,hz2>。 Disp(4,0,hz3>。 Disp(6,0,hz4>。

LCDMcs=0。 LCDScs=0。 write_com(k>。 LCDdelay(2>。 }

while(1> { } }

4小结

刚开始学液晶时感觉好难,字模就困扰了我好多天。通过看资料查资料,以及看程序搞懂了,通过写程序仿真,对液晶的控制更明白,主要写的是并行数据传输的代码。写.

了一个汉字的显示,多个汉字显示程序,图形显示的程序,还有汉字动态显示。因为取字模软件运行有点问题,左上角上自动多出一撇,所以显示字或图形的左上角多出一撇。后面写一个汉字一个汉字显示程序并仿真,还有波形显示程序和仿真。

因篇幅问题不能全部显示,请点此查看更多更全内容