12864液晶显示图片原理(完整版)
12864点阵型液晶显示屏的基本原理与使用方法(很详细)
![12864点阵型液晶显示屏的基本原理与使用方法(很详细)](https://img.taocdn.com/s3/m/5cee10a8284ac850ad024237.png)
12864点阵型液晶显示屏的基本原理与使用方法(很详细)点阵LCD的显示原理在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。
对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。
而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:图1“A”字模图而中文的“你”在字模中的记载却如图2所示:图2“你”字模图12864点阵型LCD简介12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4个(16×16点阵)汉字。
管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-液晶显示器驱动电压4D/I(RS)H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR 6E H/L R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0 7DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/L H:选择芯片(右半屏)信号16CS2H/L H:选择芯片(左半屏)信号17RET H/L复位信号,低电平复位18VOUT-10V LCD驱动负电压19LED+-LED背光板电源20LED--LED背光板电源表1:12864LCD的引脚说明在使用12864LCD前先必须了解以下功能器件才能进行编程。
12864LCD驱动原理
![12864LCD驱动原理](https://img.taocdn.com/s3/m/85f1cfd950e79b89680203d8ce2f0066f5336496.png)
12864LCD驱动原理
在初始化阶段,我们需要进行一系列的设置和配置以确保显示屏正常
工作。
这包括发送指令序列,设置显示模式、偏置电压、对比度和字符显
示等参数。
通过这些初始化设置,我们可以确保每个像素点的状态都能清
晰可见。
在数据写入阶段,我们可以向特定的位置写入数据以控制像素点的亮
灭状态。
通过选择特定的行和列,在给定的位置上点亮或熄灭单个像素点。
这通常通过提供特定格式的数据来实现,其中每个字节表示8个像素点的
状态。
1.硬件连接:液晶显示屏与控制器之间通过平行数据总线进行连接。
控制器提供行、列选择信号以及数据和控制信号。
还需要通过其他引脚来
提供电源和对比度调节信号。
2.初始化:在驱动液晶显示屏之前,我们需要发送一些特定的初始化
命令以设置液晶显示屏的参数。
这些命令包括清屏,设置显示模式、偏置
电压、对比度等。
3.数据写入:在初始化完成后,我们可以开始向液晶显示屏写入数据
以控制像素点的状态。
数据可以通过给定的坐标来确定,其中选择特定的
行和列。
写入数据时,需要同时提供数据信号以及行和列选择信号。
4.控制信号:除了数据信号外,还需要提供行和列选择信号以确定要
控制的像素点位置。
行选择信号(Y0~Y63)选择要操作的行,而列选择信
号(X0~X127)选择要操作的列。
12864液晶图像显示图文教程——最全版
![12864液晶图像显示图文教程——最全版](https://img.taocdn.com/s3/m/007ead2e580216fc710afd11.png)
由图可以看到水平坐标一个单位是两字节(即 16 位 D15~D0),X 地址会自动加 1,是直接加一个单位 (即两字节 16 位),比如 0001(也即 0X80+000X80+01),从第一行第一列跳到第一行第二列。 代码: void display_image(uchar *p) { uchar i,j; write_cmd(0x34);//扩充指令集动作 write_cmd(0x34);//关绘图显示功能 /*上半屏显示设置*/ for(i=0;i<32;i++)//上半屏 { write_cmd(0x80+i);//垂直地址 write_cmd(0x80); //水平地址 for(j=0;j<16;j++) { write_data(*p);//连续写入 16 个字节 p++; } } /*下半屏半屏显示设置*/ for(i=0;i<32;i++)//下半屏 { write_cmd(0x80+i);//垂直地址 write_cmd(0x88);//水平地址 for(j=0;j<16;j++)//连续写入 16 个字节 { write_data(*p); p++; } } write_cmd(0x36);//开绘图显示 write_cmd(0x30);//回到基本指令集 } 源程序: #include <reg52.h> #include "12864.h" X 坐标(水平)方向以 2 字节 Byte 为单位,Y 坐标(垂直) 方向以 1 位 Bit 为单位,先连续写入垂直与水平坐标,再写入 两字节数据到 GDRAM。 这里是这样进行的:i=0 时,j=0,1 时,写入两字节到垂直 (0X80+00)水平(0X80+00)这格(D15~D0)里;然后 X 坐标地址自增 1, 地址变为垂直 (0X80+00) , 水平 (0X80+01) 这格,在 j=2,3 时写入两字节,………一直到垂直(0X80+00) 水平(0X80+07)这格,在 j=14,15 时写入两字节,此时循环 for(j=0;j<16;j++)结束跳出,刚好第一行 128 位写完数据;然后 i++,开始写第二行……
12864LCD液晶显示原理及使用方法
![12864LCD液晶显示原理及使用方法](https://img.taocdn.com/s3/m/f5145c271fd9ad51f01dc281e53a580216fc5032.png)
12864LCD液晶显示原理及使用方法
一、液晶显示原理
1.液晶材料的性质
液晶是介于固体和液体之间的一种物质状态。
它具有流动性和定向性,通过控制电场可以改变其流动性。
液晶分子呈现出各种不同的排列方式,
包括向列排列、向行排列、扭曲排列等。
2.电场的作用
当液晶材料处于电场作用下时,液晶分子会发生定向排列。
电场的存
在导致液晶分子的定向,形成一定的直流电场效应。
通过改变电场的强度
和方向,可以改变液晶分子的排列状态。
3.光的传输
液晶分子的定向排列对入射光的传播具有影响。
根据液晶分子的不同
排列状态,可以选择性地传递或阻挡入射光。
通过控制电场的强度和方向,可以调节液晶分子的排列状态,从而改变光的传输效果。
4.显示原理
二、液晶显示的使用方法
1.连接电源
2.初始化
在液晶屏开始显示之前,需要进行初始化设置。
通过向液晶屏发送命令,配置液晶屏的各种参数,如显示模式、显示偏移量、对比度等。
3.显示图像
初始化完成后,可以通过向液晶屏发送数据以显示图像。
可以通过控制每个像素点的液晶分子排列状态,从而显示出对应的图像。
可以通过编写程序或者使用液晶屏驱动库来控制显示内容。
4.其他控制
除了显示图像外,液晶显示屏还具有其他一些控制功能。
例如,可以通过发送命令来设置光标位置、清除屏幕内容、切换显示区域等。
总结:。
12864液晶的说明
![12864液晶的说明](https://img.taocdn.com/s3/m/a812c8200722192e4536f608.png)
液晶12864(KS0108主控)12864市面上比较流行的有两种,一种是以KS0108为主控芯片的,不带字库的,说白了就是只能靠打点才能显示出字符或图形的,当然要借助取模软件;另一种是以ST7920为主控芯片的,带ASCII码和中文字库。
至于两种的区别下一篇再讨论,这篇先讲述KS0108为主控芯片的12864的原理。
这是网上找的一个管脚图,当然不同品牌的可能略有差异,但是主要的还是一样的重点要讲一下CS1和CS2,KS0108控制的12864内部有两个控制器,分别控制左半屏和右半屏,如下图所示左半屏和右半屏操作时写的地址其实是一样的,那么只能通过片选CS1和CS2来选择哪半个屏了,如果两个都选通,则相当于两块64x64的液晶了,而且显示的内容是一样的,取模方式是纵向8点下高位。
好了,来说下原理,列的范围是0~63,我已经标出了,行是不能按位来写的,而是写“页”,一个页相当于8个点,也就是8位,即一个字符,高位在下面,那么页的范围是0~7,共8页,8页x8个点正好64个点。
这是我用取模软件截的一个“们”字,可以看出它是16x16大小的,实际上占用了两个“页”,16个列,而我们操作时先固定一个页,比如这个就先写上面那页,假设为n好了,从列0写到16,然后页n+1,再从列0写到16,这样一个“们”字就出来了,下面是其代码0x40,0x20,0xF8,0x07,0x00,0xF8,0x02,0x04, 0x08,0x04,0x04,0x04,0x04,0xF E,0x04,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F ,0x00,0x00,可见16x16的字符占了32个字节(上面n页16个字节加n+1页16个),那么如果一幅满幅的图片,就是128x64,占用128x8=1K个字节,可见还是非常占空间的。
12864点阵型液晶显示屏的基本原理与使用方法(很详细)
![12864点阵型液晶显示屏的基本原理与使用方法(很详细)](https://img.taocdn.com/s3/m/2b201dd1240c844769eaee4d.png)
0
0
1
1
1
0
0
1
1
X
X
X
0
0
1
0
1
1
1
0
0
0
1
X
X
X
1
0 BUSY 0 ON/OFF RST 0
0
1
写数据
1
1
读数据
DB2 1 X X X 0
DB1 1 X X X 0
DB0 1/0
X X X 0
表 2:12864LCD 指令表
各功能指令分别介绍如下。
显示开/关指令
R/WRS 00
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 00111111/0
设置了页地址和列地址,就唯一确定了显示 RAM 中的一个单元,这样 MPU 就可以
用读、写指令读出该单元中的内容或向该单元写进一个字节数据。
5、读状态指令
R/WRS 10
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 BUSY0ON/OFFREST0000
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:
图 2 “你”字模图
12864 点阵型 LCD 简介
12864 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及 128×64 全点阵液晶显示器组成。 可完成图形显示,也可以显示 8×4 个(16×16 点阵)汉字。
管脚号 1 2 3 4
管脚名称 VSS VDD V0
D/I(RS)
LEVER 0
12864LCD 的指令系统及时序
该类液晶显示模块(即 KS0108B 及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指 令表如表 2 所示:
lcd12864的显示原理
![lcd12864的显示原理](https://img.taocdn.com/s3/m/495270f2fc0a79563c1ec5da50e2524de518d08a.png)
lcd12864的显示原理
LCD12864是一种基于液晶技术的显示器件,具有128x64个像素点的显示区域。
它采用液晶分子在电场作用下改变排列方式从而实现显示的原理。
LCD12864由若干个液晶单元组成,每个液晶单元由两片平行的电极层之间夹着的液晶分子组成。
在电场作用下,液晶分子会改变排列方式,从而使光的传播方式发生改变。
在LCD12864的背光光源照射下,背光光束通过液晶单元后,会受到液晶分子排列的影响,进而改变光束的方向和光强度。
LCD12864的液晶分子排列方式分为两种:平行排列和垂直排列。
当平行排列的液晶分子受到电场作用时,光束可以通过液晶单元,这时显示区域会出现明亮;而当垂直排列的液晶分子受到电场作用时,光束无法通过液晶单元,这时显示区域会出现暗淡。
通过在液晶单元两侧施加不同的电压,可以控制液晶分子的排列方式。
通过在液晶单元上加上适当的驱动电压,LCD12864可以实现对每个像素点的控制,从而显示出各种图像和文字。
为了控制LCD12864的显示,需要使用专门的驱动电路和微控制器。
通过驱动电路的控制,可以向LCD12864发送相应的电压信号,从而控制液晶分子的排列方式,实现显示的效果。
总结来说,LCD12864的显示原理利用液晶分子在电场作用下
改变排列方式来实现光的传播和屏幕显示,通过驱动电路和控制器来控制电压信号,从而控制液晶分子的排列方式,实现显示区域的明暗变化,从而显示出图像和文字。
12864液晶程序和原理图
![12864液晶程序和原理图](https://img.taocdn.com/s3/m/4d084ba5f524ccbff1218416.png)
0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00},/*"院",9*/
{
setpos(line,colum);//显示第i列上面8个点
write_dat(*(add+i));
setpos(line+1,colum++);//显示第i列下面8个点,然后列加1
write_dat(*(add+16+i));
delay(1000);//延时,达到汉字从左到右扫描显示的效果
}
}
{0x00,0x00,0x02,0x02,0x02,0x02,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},/*"工",12*/
void write_com(uchar);//写指令
void write_dat(uchar);//写数据
void setpos(uchar,uchar); //设置显示的起始位置
void main()
{
init();
for(i=0;i<6;i++)
{
if(i<3)
{
select(0);
12864显示图形中上半屏和下半屏
![12864显示图形中上半屏和下半屏](https://img.taocdn.com/s3/m/6d3dd3d6d15abe23482f4dce.png)
最近买了一块12864液晶显示屏,淘宝给我的资料不算多,我就从网上下载了部分资料,通过研究别人的例程我发现了一些问题,并得出了自己的见解。
写程序一定要严谨,同时又要求精练,如果程序中多了些没用的语句不仅让学习的人看的一头雾水,而且又占用多余的空间,我想通过自己的实践来鄙视那些程序不严谨就挂到网上的人,给初学者很多困惑。
我就通过12864的绘图功能来说下,不对之处望求指正(附上绘图说明)12864(ST7920驱动芯片)把屏幕分成上下两部分(如上图中把垂直坐标分成了两部分的00~1F)。
水平坐标00到0F处于同一面,而不是上下屏的关系,[上半屏“07”后通过我标注的箭头连接是到下一个红色00行]。
在向GDRAM中写入要显示的图片时,我们先指定从X:00、Y:00处(也就是第①处)开始写入数据,我们先在第①处写图形数据(按照图片所标注,第15位在最左边,第0位在最右边,即在写入的时候LCD会先写高位字节,接着再写低位字节),接着LCD会自动把坐标定位到同一行第②处的开头,此时我们可以接着告诉LCD在这里写入图形数据,依此类推,当我们写满16次后,第00行(包括上半屏和下半屏的)就全写满了。
那么我们接下去写入数据会出现什么情况呢?接着LCD又自动从第00行的第①处重新开始写了。
这是因为ST7920控制芯片设计出来就这样,在写入的时候它只会在水平方向(X轴上)地址自增,并且在增加到0F地址之后就会变成00地址从头开始写。
从这里我们可以明白,每次写满一行(共16部分)后就必须在程序里人为地把垂直方向(Y轴)的地址加1,不然就会造成只是在同一行重复写入的现象。
垂直(列)地址由AC6~AC0指定,共32行,列地址由AC3AC2AC1AC0指定,共16列(00-0F),绘图程序如下:通过以上所讲我想大家也明白了很多了吧,我看网上有很多教程说是要把屏幕分开两半来写程序,其实我觉得下半屏程序根本没必要再写出来,因为见上面的分析过程,其实“上半部分屏”程序已经完全把整个屏幕覆盖了,而下半部分屏相当于在原来的基础上又重新覆盖了一部分。
lcd12864液晶屏原理图
![lcd12864液晶屏原理图](https://img.taocdn.com/s3/m/32292a1f7375a417866f8f57.png)
lcd12864 液晶屏原理图液晶作为一种显示器件,以其特有的优势正广泛应用于仪器、仪表、电子设备等低功耗产品中。
以往的测控仪器的显示部分大都采用LED 式液晶显示屏进行参数设定和结果显示,其显示信息量少、形式单一、人机交互性差、操作人员要求较高。
而液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄和可编程驱动等其他显示方式无法比拟的优点,不仅可以显示数字、字符,还可以显示各种图形、曲线、及汉字,并且可实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能;人机界面更加友好,使用操作也更加灵活、方便,使其日益成为智能仪器仪表和测试设备的首选显示器件。
液晶作为一种显示器件,以其特有的优势正广泛应用于仪器、仪表、电子设备等低功耗产品中。
以往的测控仪器的显示部分大都采用LED 式液晶显示屏进行参数设定和结果显示,其显示信息量少、形式单一、人机交互性差、操作人员要求较高。
而液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄和可编程驱动等其他显示方式无法比拟的优点,不仅可以显示数字、字符,还可以显示各种图形、曲线、及汉字,并且可实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能;人机界面更加友好,使用操作也更加灵活、方便,使其日益成为智能仪器仪表和测试设备的首选显示器件。
lcd12864 带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128&TImes;64,内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符集。
利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8&TImes;4 行16&TImes;16 点阵的汉字。
也可完成图形显示。
低电压低功耗是其又一显着特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
9--12864液晶显示原理+电路图+程序
![9--12864液晶显示原理+电路图+程序](https://img.taocdn.com/s3/m/71f878fbfab069dc50220192.png)
带中文字库的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点阵字符l2MHZ时钟频率l显示方式:STN、半透、正显l驱动方式:1/32DUTY,1/5BIASl视角方向: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并行接口管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC 3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7——DB0为显示数据RS=“L”,表示DB7——DB0为显示指令数据5R/W(SID)H/L R/W=“H”,E=“H”,数据被读到DB7——DB0R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线是用于模块屏幕显示开和关的控制。
LCD12864液晶显示原理电路图程序
![LCD12864液晶显示原理电路图程序](https://img.taocdn.com/s3/m/b5f50b9d5acfa1c7ab00cc9b.png)
LCD12864系列点阵型液晶显示模块使用说明书一、OCM12864液晶显示模块概述1.OCM12864液晶显示模块是128×64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线。
采用KS0107控制IC。
2.外观尺寸:113×65×11mm(ocm12864-1), 93×70×10mm(ocm12864-2)78×70×10mm(ocm12864-3),3.视域尺寸:73.4×38.8mm(ocm12864-1) 70.7×38mm(ocm12864-2),64×44mm(ocm12864-3)4.重量:大约g补充说明:外观尺寸可根据用户的要求进行适度调整。
二、最大工作X围1、逻辑工作电压(Vcc):4.5~5.5V2、电源地(GND):0V3、LCD驱动电压(Vee):0~-10V4、输入电压:Vee~Vdd5、工作温度(Ta):0~55℃(常温) / -20~70℃(宽温)6、保存温度(Tstg):-10~65℃三、电气特性(测试条件Ta=25,Vdd=5.0+/-0.25V)1、输入高电平(Vih):3.5Vmin2、输入低电平(Vil):0.55Vmax3、输出高电平(Voh):3.75Vmin7、读显示数据CODE:RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0H H D7 D6 D5 D4 D3 D2 D1 D0功能:从DD RAM读数据,读指令执行后Y地址计数器自动加1。
从DD RAM读数据前要先执行“设置页地址”及“设置列地址”命令。
六、接口时序1.写操作时序时序11.读操作时序时序2时序参数表:Line 7 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB7………………………………X=7 Line60 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB4 Line61 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB5 Line62 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB6 Line63 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB7八、测试硬件电路九、读写模块程序举例写指令子程序(INST)SETB ECLR D_ICLR R_WMOV P1, ACLR EVEE’V0第三脚VEE第18脚可调10K (三极管内置)RET●写数据子程序(DATA)SETB ESETB D_ICLR R_WMOV P1, ACLR ERET●写一页显示RAM数据(假设指令子程序为INST,数据子程序为DATA)MOV A,#0B8HLCALL INST ;置页地址为0页MOV A,#40HLCALL INST ;置列地址为0列MOV R2,#40HMOV R1,#00HMOV DPTR,#ADDRLOOP:MOV A,R1MOVC A,A+DPTRLCALL DATAINC R1DJNZ R2, LOOP带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
第六节图形点阵液晶12864的原理与应用PPT课件
![第六节图形点阵液晶12864的原理与应用PPT课件](https://img.taocdn.com/s3/m/a045523c48d7c1c708a14579.png)
VCC
1
2 3 4 5 6 7 8
P1.0 P1.1 P1.2
P1.3 P1.4 P1.5 P1.6 P1.7
P3.0/RXD P3.1/TXD
P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11
12 13 14 15 16
17
VCC
LCD12864
6
表4-6-2 T6963C指令表
7
8
9
其读写时序如下图4-6-2所示
图4-6-2 T6963C读写时序图
10
状态判断指令功能描述 无论是向T6963C读写数据还是写入命令,都必需判
断忙状态。读忙状态满足以下条件: /RD:L;/WR:H;/CE:L;C/D:H;D0~D7 状态字 T6963C状态字定义如下
12
说明 1.STA0 和STA1 在大多数命令和数据传送前必 需在同一时刻判断,否则可能会出错; 2.在数据自动读写时判断STA2和STA3; 3.在屏读/屏拷贝时判断STA6; 4.STA5 和STA7为厂家测试时用。
13
4.6.2 电路原理图
液晶12864和单片机的连接示意图如下 图4-6-3所示。WR接P24,RD接P23 ,CE接P22,CD接P21,RST接P20 。D0~D7接单片机的八位数据口P0, 12864的第4脚接变位器,调节背光显 示。
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
39 D0 38 D1 37 D2 36 D3 35 D4 34 D5 33 D6 32 D7
21 P2.0 22 P2.1 23 P2.2 24 P2.3 25 P2.4 26 27 28
12864液晶显示图片,画点,画任意直线
![12864液晶显示图片,画点,画任意直线](https://img.taocdn.com/s3/m/93cf393ab8f67c1cfad6b8f3.png)
玩转12864液晶(2)--显示图片,画点,画任意直线本帖被红金龙吸味执行加亮操作(2009-07-04)通过上一篇的实验,相信大家都掌握了显示字符的基本用法。
下面我们来看一下12864液晶更高级的用法。
首先是它的绘图功能。
让我们先来显示一整副的图片吧,也就是128x64大小。
在使用绘图功能时,先要打开扩充指令集,然后再打开绘图功能。
接着就是送数据显示了。
这里我们首先要弄明白ST7920的显示坐标关系。
其显示坐标如下。
从图中可以看出,X方向共有8个字(16个字节)Y方向共有0~31 行分为上下两个屏。
弄懂了之后我们就可以依照此坐标来显示一整屏的图片了。
随便用一个图片的提取转换软件,讲一副126X64大小的图片转换成字节数据,总共字节大小为128*64/8 = 1024个字节。
下面我们来看看这个显示整屏图像的函数void v_Lcd12864DrawPicture_f( unsigned char code *pPicture ){unsigned char i, j, k ;for( i = 0 ; i < 2 ; i++ )//分上下两屏写{for( j = 0 ; j < 32 ; j++ ){v_Lcd12864SendCmd_f( 0x80 + j ) ;//写Y坐标if( i == 0 ) //写X坐标{v_Lcd12864SendCmd_f( 0x80 ) ;}else{v_Lcd12864SendCmd_f( 0x88 ) ;}for( k = 0 ; k < 16 ; k++ ) //写一整行数据{v_Lcd12864SendData_f( *pPicture++ ) ;}}}v_Lcd12864SendCmd_f( 0x30 ) ;}看看效果图片如下:显示一个人的图像下面来看看如何在任意一个位置显示或者是擦除一个点对于12864这种二值显示屏来说,其显示状态无外乎显示和不显示一个点这两种状态。
12864液晶图像显示图文教程——最全版
![12864液晶图像显示图文教程——最全版](https://img.taocdn.com/s3/m/007ead2e580216fc710afd11.png)
uchar i,j; write_cmd(0x34);//扩充指令集动作 write_cmd(0x34);//关绘图显示功能 for(i=0;i<32;i++)//上半屏 { write_cmd(0x80+i);//垂直地址 write_cmd(0x80); //水平地址,水平地址自动加 1 for(j=0;j<16;j++) { write_data(0x00); } } for(i=0;i<32;i++)//下半屏 { write_cmd(0x88+i);//垂直地址 write_cmd(0x88);//水平地址,水平地址自动加 1 for(j=0;j<16;j++) { write_data(0x00); } } write_cmd(0x36);//开绘图显示 write_cmd(0x30);//回到基本指令集 } //函数名称:display_image(uchar *p) //函数功能:显示图片 void display_image(uchar *p) { uchar i,j; write_cmd(0x34);//扩充指令集动作 write_cmd(0x34);//关绘图显示功能 /*上半屏显示设置*/ for(i=0;i<32;i++)//上半屏 { write_cmd(0x80+i);//垂直地址 write_cmd(0x80); //水平地址,水平地址自动加 1
12864LCD液晶显示原理及使用方法
![12864LCD液晶显示原理及使用方法](https://img.taocdn.com/s3/m/8d847bcbd1d233d4b14e852458fb770bf78a3b05.png)
12864LCD液晶显示原理及使用方法
液晶显示原理:
液晶材料具有两个特点:有机分子结构和束缚之外的液态状态。
当电
场施加在液晶分子上时,液晶分子将会排列成有序的状态,形成有规律的
分子阵列,使得光线通过时发生偏转。
当电场消除时,液晶分子恢复到原
始的无序状态,光线通过时则无偏转。
通过控制电场的开关,可以控制液
晶分子的排列状态,从而实现显示效果。
1.接口连接:将液晶显示器与控制器或者主控板通过正确的接口连接,通常使用平行接口或者SPI接口。
2.电源连接:将电源线正确连接到液晶显示器上,通常有正负两极,
要连接正确以保证电源供应的正常。
3.控制信号输入:根据控制器或者主控板的要求,输入相应的数据和
控制信号。
如数据线、时钟线、片选线等。
4.编程:根据液晶显示器的要求,通过程序编程,设置相应的显示模式、亮度、对比度等参数。
5.数据传输:通过数据线将需要显示的信息传输到液晶显示器上,并
且根据编程的设置,显示出相应的图像或文字。
使用注意事项:
1.温度:液晶显示器对温度敏感,使用时应保持在合适的温度范围内,一般在0℃-50℃之间。
2.湿度:湿度过高或过低对液晶显示器都会有影响,要避免潮湿的环
境和液体直接接触。
3.防护:避免受到力的撞击以及接触尖锐物体,这样会导致液晶显示器损坏。
4.清洁:定期使用干净、柔软的布擦拭液晶显示器,避免使用化学物品或者刷子擦拭,以免划伤显示屏。
总结:。
12864LCD液晶显示原理及使用方法
![12864LCD液晶显示原理及使用方法](https://img.taocdn.com/s3/m/c00f0012aaea998fcd220e06.png)
12864LCD液晶显示原理及使用方法液晶简介液晶是一种在一定温度范围内呈现既不同于固态液态又不同于气态的特殊物质态,它既具有各向异性的晶体所特有的双折射性又具有液体的流动性液晶显示器件(英文的简写为LCD)就是利用液晶态物质的液晶分子排列状态在电场中改变而调制外界光的被动型显示器件。
点阵式图形液晶显示屏是 LCD 的一种能够动态显示图形汉字以及各种符号信息为各种电子产品提供了友好的人机界面点阵式图形液晶显示屏的主要特点如下(这些特点也就是LCD 的特点):工作电压低、微功耗、体积小、可视面积大、无电磁辐射、数字接口、寿命长等特点。
12864LCD是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64 全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4 个(16×16 点阵)汉字或者显示16×4个(8×16 点阵)ASCII码。
分为两种,带字库的和不带字库的。
不带字库的LCD需要自己提供字库字模,此时可以根据个人喜好设置各种字体显示风格,设计上较为灵活。
带字库的LCD提供字库字模,但是只能显示GB2312的宋体。
各有优缺点,根据不同应用场景灵活选择。
其液晶模块原理图如下所示。
12864LCD点阵图形液晶模块原理框图下面给出了其应用连接电路,分别介绍其各引脚的功能和作用。
如下表所示:12864LCD 的引脚说明管脚号管脚名称LEVER 管脚功能描述1GND 0 电源地2VCC+5.0V 电源电压3VLCD - 液晶显示器驱动电压4RS (D/I) H/LD/I=“H”,表示DB7∽DB0 为显示数据D/I=“L”,表示DB7∽DB0 为显示指令数据5R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR 或DR 6EN H/L R/W=“L”,E 信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM 数据读到DB7∽DB0 7DB0 H/L 数据线8DB1 H/L数据线9DB2 H/L 数据线10DB3 H/L 数据线11DB4 H/L数据线12DB5 H/L数据线13DB6 H/L数据线14DB7 H/L数据线15CS1 H/L H:选择芯片(右半屏)信号16CS2 H/L H:选择芯片(左半屏)信号17RET H/L复位信号,低电平复位18VEE -10VLCD 驱动负电压19LED+ - LED 背光板电源20LED- - LED 背光板电源12864LCD点阵图形液晶模块应用连接电路液晶驱动设置在理解12864LCD硬件原理和管脚功能之后,可以针对LCD进行驱动的编写,分两种情况:仿真环境下和实物开发板编程。
12864显示文字+图像
![12864显示文字+图像](https://img.taocdn.com/s3/m/d717f4ef102de2bd96058823.png)
引用12864液晶原理分析3他山之石2010-07-21 20:52:05 阅读7 评论0 字号:大中小小峰的12864液晶原理分析3一、ST7920控制IC的LCD12864实现反白显示从使用手册上可知,扩展指令里的0x03+行号即可实现反白对应行。
但是ST7920 控制器的128×64 点阵液晶其实原理上等同256×32 点阵,第三行对应的DDRAM 地址紧接第一行;第四行对应的DDRAM 地址紧接第二行。
所以128×64 点阵的液晶执行反白功能时实用意义不大,因为用户对第一行执行反白显示操作时,第三行必然也反白显示;第二行反白,第四行也必然反白。
其实还是有办法做到单行反白的,解决方法就是混用图形显示和字符显示。
其理论支持在于:在ST7920中,字符显示的DDRAM和图形的GDRAM是相互独立的,而最后显示到液晶上的结果,是两个RAM中数据的异或。
具体来说:假如某个点上,绘图RAM的没有绘图(数据为0),而字符RAM上有点阵(数据为1),那么异或的结果就是1,也就是说正常显示字符;当字符上RAM没有点阵的时候,异或的结果是0,自然也就不显示了。
假如该点上绘图RAM绘图了(数据为1),当字符RAM上有点阵(数据为1时),异或的结果为0,效果就是反白显示;如果字符RAM没有点阵(数据为0时),异或结果为1,效果就是显示绘图的背景。
所以,如果要在某个地方反白显示,那么就在该点绘图并且写字,如果要取消反白,就重新用全0擦掉那个地方的绘图!这样一来可以实现任何地方、任意大小的反白显示,反而比原指令中的单行反白的功能更好更强大。
二、对于整屏既有图象又有文本,则可以用两种方式实现:1、首先文本DDRAM写入要写的字符,其余全部空格(即0X00),然后再在没有字符的地方(即非点亮的晶格中,0X00)绘入图象。
DDRAM与GDRAM异或后就可以整屏实现图象与文本。
参见程序实例1。
12864的工作原理
![12864的工作原理](https://img.taocdn.com/s3/m/0cd5b41576232f60ddccda38376baf1ffd4fe351.png)
12864的工作原理
液晶模块代写pt#12864是指具有128×64点阵结构的液晶图形
显示屏模块。
该模块的工作原理如下:
1. 12864液晶模块由两部分组成:液晶显示屏和驱动电路。
2. 液晶显示屏是由一系列液晶点阵组成,每个点阵可以显示一个像素。
每个像素的状态由液晶电压调节,控制液晶的方向和透明度,从而改变像素点的亮度。
3. 驱动电路负责将待显示的数据转化为液晶像素的控制信号。
它根据接收到的命令和数据信号,控制液晶的电压和方向,从而按照要求显示相应的图像或文字。
4. 驱动电路通常由一个控制芯片(如ST7920)和几个外围电
路组成。
控制芯片处理接收到的命令和数据,然后转化为相应的控制信号发送给液晶显示屏。
5. 外围电路负责提供驱动电路所需的电源和信号条件,如电压转换、信号放大等。
它们确保驱动电路和液晶显示屏正常工作。
液晶模块的工作原理基本上是通过控制电压来控制液晶的方向和透明度,从而达到显示图像的效果。
驱动电路接收到要显示的数据和命令,经过相应的处理后,控制液晶模块中液晶点阵的状态,完成显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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个液晶点的显示信息。
为了使液晶点位置信息与存储地址的对应关系更直观关,将64*64液晶屏从上至下8等分为8个显示块,每块包括8行*64列个点阵。
每列中的8行点阵信息构成一个8bits 二进制数,存储在一个存储单元中。
(注意:二进制的高低有效位顺序与行号对应关系因不同商家而不同)存放一个显示块的RAM 区称为存储页。
即64*64液晶屏的点阵信息存储在8个存储页中,每页64个字节,每个字节存储一列(8行)点阵信息。
因此存储单元地址包括页地址(Xpage,0~7)和列地址(Yaddress,0~63)。
例如点亮128*64的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数据00010000(也可能是00001000,高低顺序取决于制造商)写入Xpage=2,Yaddress=29的存储单元中即点亮(20,30)上的液晶点。
芯片的结构一定要清楚!点阵LCD的显示原理在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。
对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。
而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:图1 “A”字模图而中文的“你”在字模中的记载却如图2所示:图2 “你”字模图图3图4 字符二级单元(图3中阴影部分)一个汉字的二级单元是一个16*16的区域,因些128*64液晶可以显示4行8列共32个汉字(如图3)。
而它的一个二级单元如图4(在无字库时,对汉字的取模有横向跟纵向两种,要注意),对于并行含有子库芯片的显示,只要设定好这个二级单元的地址(如0X80+i,这样设定i的范围为0~31,这里注意第一行会直接跳到第三行;或者根据自己需要如第二行0X90+i,i范围为0~7;第三行0X88+i,i范围为0~7;),然后直接把汉字写入就OK了~(串行无字符库的后面再做分析)图5:垂直坐标:上半屏00~1F,总共为32水平坐标:上半屏水平坐标分别为0X80+(00~07)下半屏00~1F,总共为32下半屏水平坐标分别为0X88+(00~07)图片显示芯片结构分块与汉字显示不一样图象显示过程是这样的:首先设置垂直地址,再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址,然后在每个地址里写入16位数据)。
垂直地址范围AC5...AC0水平地址范围AC3…AC0绘图RAM 的地址计数器(AC)只会对水平地址(X 轴)自动加一,当水平地址=0FH 时会重新设为00H但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。
GDRAM的坐标地址与资料排列顺序如图5:分上下屏写入。
for(i=0;i<32;i++)// 上半屏32个垂直地址{write_com(0x80 + i);//垂直地址write_com(0x80);// 水平地址for(j=0;j<16;j++){write_data(*adder);adder++;}}带中文字库的128X64显示模块时应注意以下几点:①欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。
②显示ASCII字符过程与显示中文字符过程相同。
不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。
③当字符编码为2字节时,应先写入高位字节,再写入低位字节。
④模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF 标志时BF需为“0”,方可接受新的指令。
如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。
指令执行的时间请参考指令表中的指令执行时间说明。
⑤“RE”为基本指令集与扩充指令集的选择控制位。
当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位。
程序———————并行(串行后面再分析)——————————————————————————#include <stdio.h>#include <reg52.h>#include <intrins.h>#include <string.h>#define uchar unsigned char#define uint unsigned intuchar code LCD_data1[];uchar code LCD_data2[];uchar code LCD_picture1[];uchar code LCD_picture2[];sbit RS = P2^4;sbit RW = P2^5;sbit EN = P2^6;sbit PSB = P2^1;sbit RES = P2^3;sbit Dataport = P0; sbit Busyport = P0^7;////////////////////////////////////////////////////////////// void delay_ms(unsigned int n)//延时10×n毫秒程序{unsigned int i,j;for(i=0;i<n;i++)for(j=0;j<2000;j++);}void delay(unsigned int m)//1US 延时程序{unsigned int i,j;for(i=0;i<m;i++)for(j=0;j<10;j++);}/////////////////////////////////////////////////////////////// //判LCM忙子函数void check_LCD_busy (void){Dataport = 0xff;RS = 0;RW = 1;EN = 1;while (Busyport);EN = 0;}/////////////////////////////////////////////////////////////// //写命令子函数void write_com(uchar Command){check_LCD_busy();RW=0;RS=0;delay(1);P0=Command;EN=1;delay(1);EN=0;}//////////////////////////////////////////////////////////////// //写数据子函数void write_data(uchar Data){check_LCD_busy();RW=0;RS=1;delay(1);P0=Data;EN=1;delay(1);EN=0;}///////////////////////////////////////////////////////////////// //LCM清屏函数void lcdClear (void){write_com(0x01);}//////////////////////////////////////////////////////////////// //LCM复位函数void reset (){RES=0;//复位delay(1);//延时RES=1;//复位置高delay(10);}/////////////////////////////////////////////////////////////////显示汉字void dispString (uchar X, Y,uchar *msg)//X为哪一行,Y为哪一列。
msg为汉字{if(X==0)X = 0x80; //第一行,汉字显示坐标else if(X==1) X = 0x90; //第二行else if(X==2) X = 0x88; //第三行else X = 0x98; //第四行Y = X + Y;//Y为1往右移一位write_com(Y);//写入坐标while (*msg){write_data(*msg++); //显示汉字}}/////////////////////////////////////////////////////////////// //显示图象void disppicture(uchar code *adder){uint i,j;//*******显示上半屏内容设置for(i=0;i<32;i++)// 上半屏32个列地址{write_com(0x80 + i);//SET垂直地址VERTICAL ADDwrite_com(0x80);//SET水平地址HORIZONTAL ADDfor(j=0;j<16;j++){write_data(*adder);adder++;}}//*******显示下半屏内容设置for(i=0;i<32;i++)//{write_com(0x80 + i);//SET 垂直地址VERTICAL ADDwrite_com(0x88);//SET 水平地址HORIZONTAL ADDfor(j=0;j<16;j++){write_data(*adder);adder++;}}}/////////////////////////////////////////////////////////////// //LCD字库初始化函数void lcdinit_str(void){delay(40);//大于40MS的延时程序PSB=1;//设置为8BIT并口工作模式delay(1);//延时reset();//复位write_com(0x30);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF delay(100);//大于100uS的延时程序write_com(0x30);//FunctionSetdelay(37);////大于37uS的延时程序write_com(0x08);//Display on Controldelay(100);//大于100uS 的延时程序write_com(0x10);//Cursor Display Control光标设置delay(100);//大于100uS 的延时程序write_com(0x0C); //Display Control,D=1,显示开delay(100);//大于100uS的延时程序write_com(0x01);//Display Cleardelay(10);//大于10mS 的延时程序write_com(0x06);//Enry Mode Set,光标从右向左加1位移动delay(100);//大于100uS 的延时程序}////////////////////////////////////////////////////////////////// //LCD图片(扩展)初始化函数void lcdinit_pic(void){delay(40);//大于40MS的延时程序PSB=1;//设置为8BIT并口工作模式delay(1);//延时reset();write_com(0x36);//Extended Function Set RE=1: extended instruction delay(100);//大于100uS的延时程序write_com(0x36);//Extended Function Set:RE=1: extended instruction setdelay(37);////大于37uS的延时程序write_com(0x3E);//EXFUN CTION(DL=8BITS,RE=1,G=1)delay(100);//大于100uS的延时程序write_com(0x01);//CLEAR SCREENdelay(100);//大于100uS的延时程序}///////////////////////////////////////////////////////////////// void main(){while(1){lcdinit_str();delay_ms(10); //此延时如果没有的话第一行会一直在第一列dispString(0, 1,"祖国江山好");delay_ms(10);dispString(1, 1,"爱情少不了");delay_ms(10);dispString(2, 1,"为了下一代");delay_ms(10);dispString(3, 1,"赶紧谈恋爱");delay_ms(200);delay_ms(200);lcdClear();delay_ms(10);dispString(0, 1,"大名吴建峰"); delay_ms(10);dispString(1, 1,"性别为非女"); delay_ms(10);dispString(2, 1,"芳龄二十二"); delay_ms(10);dispString(3, 1,"海拔一百六"); delay_ms(200);delay_ms(200);lcdinit_pic();lcdClear();delay_ms(10);disppicture(LCD_picture1);delay_ms(300);delay_ms(300);}}图象代码库见最后!~成果——————————————————————————————————图形取模方法(转):128*64的像素能显示的内容就有限,也无法要求它能多清楚,如果将一个彩色的图片转换为单色位图,效果就更差了,个人不建议用它来显示彩色的图片,如果真要用128*64的液晶显示,建议如下:1.尽量选择颜色比较单一的图片,当然一种颜色的效果最好不过了;2.图片不能选择的太大,要不缩小了就看不清楚了;3.图片的调整可以这样(仅供参考):1>调整图片的宽高比大致为2:1;2>将图片缩小到128*64像素;3>保存为单色位图;图片的大小缩放不太好操作,我通常是这样做的:你用画图程序打开你要显示的图片后,首先要操作的查看属性(点击菜单栏的图像->属性,单位选择为像素后,宽高值就出来了),比如:宽:603,高:444,这显然宽高比不是2:1,你就要调整了,444*2=888,现在为603,所以888/603=1.47,所以宽要放大为147%(点击菜单栏的图像->拉伸/扭曲,在拉伸里面的水平处改为147),现在就调整为2:1了;接下来就要将图片缩小到128*64像素,先计算缩放的比例,128/888=0.144,所以相同的操作(点击菜单栏的图像->拉伸/扭曲,在拉伸里面的水平处改为14,垂直里面也要改为14);最后就是保存为单色位图(文件->另存为->文件类型选择为:单色位图(.bmp))?试过颜色比较单一的,效果还可以,复杂的彩色图片效果就很不理想了...说明:在调整图片的宽高比大致为2:1的过程中图片会被拉伸变形,不过缩小到128*64像素后也不是太明显...图片取模图片代码——————————————————————————————————uchar code LCD_picture1[]={0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, 0x00,0x00,0x00,0x07,0xFF,0xC0,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, 0x00,0x03,0x00,0x07,0xEC,0xC0,0x00,0x00,0x 00,0x00,0x00,0x00,0x0E,0x00,0x00,0x37, 0x80,0x03,0x00,0x00,0xEC,0xC0,0x00,0x00,0x 00,0x00,0x00,0x00,0x0E,0x00,0x18,0x3F, 0xC0,0x03,0x00,0x0F,0x6E,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x06,0x00,0x18,0x79, 0x80,0x03,0x00,0x0F,0x6B,0xC0,0x00,0x00,0x 00,0x00,0x00,0x00,0x06,0x00,0x18,0x7F, 0x00,0x1F,0xF4,0x01,0xE9,0xE0,0x00,0x00,0x 00,0x00,0x00,0x00,0xC6,0xE0,0x18,0xFF ,0x80,0x1F,0xFC,0x00,0xFB,0x30,0x00,0x00,0x 00,0x00,0x00,0x01,0xC6,0x70,0x1B,0x1E ,0xC0,0x03,0x38,0x01,0xB3,0x00,0x00,0x00,0x0 0,0x00,0x00,0x03,0x86,0x38,0xDB,0xFF, 0xE0,0x03,0x70,0x07,0x9E,0x7F,0xFF,0xFF,0x FF,0xFF,0xFF,0xFF,0x26,0x18,0xDB,0x8 C,0x70,0x7F,0xFF,0x87,0x27,0xFE,0x00,0x00,0x 00,0x00,0x00,0x00,0x3E,0x01,0xFF,0xFF, 0xB8,0x7F,0xFF,0x80,0x3F,0xC0,0x00,0x00,0x 00,0x00,0x00,0x00,0x1E,0x00,0x00,0x0C, 0x18,0x07,0x80,0x00,0x39,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x06,0x00,0x00,0xFF,0 xE0,0x0F,0x00,0x00,0xFB,0x1F,0xF8,0x00,0x 00,0x00,0x00,0x00,0x00,0x7F,0xF0,0xFF, 0xE0,0x1F,0x30,0x01,0xCF,0xFF,0xFF,0x09,0x 00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x0C ,0x00,0x3B,0x36,0x03,0x07,0xFF,0xFF,0xE0,0x 00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xCC ,0x00,0x73,0x76,0x03,0x3F,0xFF,0xFF,0xF7,0x 00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFC ,0x00,0x63,0xE6,0x00,0x3F,0xFF,0xFF,0xDC,0 x80,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF C,0x00,0x03,0xFE,0x00,0x7F,0xFF,0xFF,0xAF,0x 60,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC ,0x00,0x03,0xFE,0x00,0xFF,0xFF,0xFF,0xF5,0x C0,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xF C,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0x23,0x 20,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFE ,0x00,0x00,0x00,0x03,0xFF,0x8F,0xE3,0xEC,0x A0,0x00,0x00,0x03,0xFF,0x1F,0xC7,0xFF ,0x00,0x00,0x00,0x03,0xFF,0x07,0xC1,0x92,0x C0,0x00,0x00,0x07,0xFE,0x0F,0x83,0xFF ,0x80,0x00,0x00,0x07,0xFF,0x03,0xC0,0xE9,0x C0,0x00,0x00,0x0F,0xFE,0x07,0x81,0xFF ,0x80,0x00,0x00,0x07,0xFE,0x03,0x80,0xED,0x E0,0x00,0x00,0x0F,0xFC,0x07,0x01,0xFF ,0xC0,0x00,0x00,0x0F,0xFE,0x1B,0xB0,0xDD,0 xE0,0x00,0x00,0x1F,0xFC,0x37,0x61,0xF F,0xC0,0x00,0x00,0x0F,0xFE,0x1B,0xB0,0xFF,0x E0,0x00,0x00,0x1F,0xFC,0x37,0x61,0xFF ,0xC0,0x00,0x00,0x0F,0xFE,0x1B,0xB0,0xFF,0x F0,0x00,0x00,0x1F,0xFC,0x37,0x61,0xFF ,0xE0,0x00,0x00,0x1F,0xFE,0x1B,0xB0,0xFF,0x F0,0x00,0x00,0x3F,0xFC,0x37,0x61,0xFF ,0xE0,0x00,0x00,0x1F,0xFF,0x03,0xC0,0xFF,0x F0,0x00,0x00,0x3F,0xFE,0x07,0x81,0xFF ,0xE0,0x00,0x00,0x1F,0xFF,0x07,0xC1,0xFF,0x F0,0x00,0x00,0x3F,0xFE,0x0F,0x83,0xFF ,0xE0,0x00,0x00,0x1F,0xFF,0x8C,0x63,0xFF,0x F0,0x00,0x00,0x3F,0xFF,0x1F,0xC7,0xFF ,0xE0,0x00,0x00,0x1F,0xDF,0xFC,0x7F,0xF7,0x F0,0x00,0x00,0x3F,0xFF,0xF0,0x7F,0xFF ,0xE0,0x00,0x00,0x1F,0x07,0xFF,0xFF,0xD1,0x F0,0x00,0x00,0x3F,0xFF,0xE0,0x3F,0xFF ,0xE0,0x00,0x00,0x1E,0x03,0xFF,0xFF,0x80,0x F0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x07, 0xE0,0x00,0x00,0x1E,0x03,0xFE,0xFF,0xC0,0x F0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x0F, 0xE0,0x00,0x00,0x0C,0x01,0xF8,0x3F,0x80,0x E0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F, 0xC0,0x00,0x00,0x0E,0x03,0xF0,0x1F,0xC0,0x E0,0x00,0x00,0x1F,0xF0,0x0F,0xC0,0x1F ,0xC0,0x00,0x00,0x1E,0x03,0xF0,0x1F,0x80,0x E0,0x00,0x00,0x1F,0xFC,0x0B,0x40,0x7F ,0xC0,0x00,0x00,0x7F,0x1F,0xF0,0x1F,0xC3,0x E0,0x00,0x00,0xFF,0xFF,0x0B,0x41,0xFF ,0xC0,0x00,0x00,0xFF,0xFF,0xF0,0x1F,0xF7,0x F0,0x00,0x01,0xFF,0xFF,0xC0,0x0F,0xFF ,0xF0,0x00,0x01,0xFF,0xFF,0xF8,0x3F,0xFF,0x FC,0x00,0x03,0xFF,0xFF,0xF8,0x7F,0xF F,0xF8,0x00,0x03,0xFE,0x7F,0xFE,0xFF,0xFF,0x FE,0x00,0x07,0xFC,0xFF,0xFF,0xFF,0xF F,0xFC,0x00,0x07,0xFC,0x1F,0xFF,0xFF,0xF8,0x FE,0x00,0x0F,0xF8,0x3F,0xFF,0xFF,0xF1 ,0xFC,0x00,0x0F,0xF8,0x07,0xFF,0xFF,0xE0,0x FF,0x00,0x1F,0xF0,0x0F,0xFF,0xFF,0xC 0,0xFE,0x00,0x0F,0xF8,0x00,0xFF,0xFF,0x00,0x 7F,0x80,0x1F,0xF0,0x01,0xFF,0xFE,0x00 ,0xFF,0x00,0x1F,0xF0,0x00,0x02,0x00,0x00,0x7 F,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,0 x7F,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x3 F,0xC0,0x3F,0xE0,0x00,0x00,0x00,0x00, 0x7F,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x3 F,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00, 0x7F,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x 1F,0xE0,0x7F,0xC0,0x00,0x00,0x00,0x00 ,0x3F,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x 1F,0xE0,0x7F,0xC0,0x00,0x00,0x00,0x00 ,0x3F,0x00,0x7F,0xE0,0x01,0xC0,0xE0,0x00,0x 1F,0xE0,0xFF,0xC0,0x00,0x70,0xE0,0x00 ,0x3F,0x00,0x7F,0xE0,0x03,0xF3,0xF0,0x00,0x 1F,0xE0,0xFF,0xC0,0x00,0xF9,0xF0,0x00 ,0x3F,0x00,0x7F,0xE0,0x07,0xFF,0xF8,0x00,0x 1F,0xE0,0xFF,0xC0,0x01,0xFF,0xF8,0x00 ,0x3F,0x00,0x7F,0xE0,0x07,0xFF,0xF8,0x00,0x 1F,0xE0,0xFF,0xC0,0x01,0xFF,0xF8,0x00 ,0x3F,0x00,0x7C,0xE0,0x07,0xFF,0xF8,0x00,0x 1B,0xE0,0xF9,0xC0,0x01,0xFF,0xF8,0x00 ,0x37,0x00,0x38,0xF0,0x03,0xFF,0xF0,0x00,0x 39,0xE0,0xF1,0xE0,0x00,0xFF,0xF0,0x00 ,0x73,0x00,0x30,0x70,0x01,0xFF,0xE0,0x00,0x 30,0xC0,0x60,0xE0,0x00,0x7F,0xE0,0x00 ,0x61,0x00,0x00,0x78,0x00,0xFF,0xC0,0x00,0x 30,0x00,0x00,0xF0,0x00,0x3F,0xC0,0x00, 0x60,0x00,0x00,0x38,0x00,0x7F,0x80,0x00,0x6 0,0x00,0x00,0x70,0x00,0x1F,0x80,0x00,0 xC0,0x00,0x00,0x1C,0x00,0x3F,0x00,0x00,0x C0,0x00,0x00,0x38,0x00,0x0F,0x00,0x01, 0x80,0x00,0x00,0x0E,0x00,0x1E,0x00,0x00,0x 80,0x00,0x00,0x1C,0x00,0x06,0x00,0x01, 0x00,0x00,0x00,0x07,0x00,0x0C,0x00,0x01,0x 80,0x00,0x00,0x0E,0x00,0x06,0x00,0x03, 0x00,};。