LCD显示汉字
LCD1602汉字显示讲解
LCD1602显示汉字研究与程序设计1602是一款最常用也是最便宜的液晶显示屏。
最多可以显示两行标准字符,每行最多可以显示16个字符。
1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。
一、显示常用字符。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是41H,显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”十进制十六进制ASCII字符十进制十六进制ASCII字符十进制十六进制ASCII字符00 00 自定义字符1 56 38 8 96 60 `01 01 自定义字符2 57 39 9 97 61 a02 02 自定义字符3 58 3A : 98 62 b03 03 自定义字符4 59 3B ; 99 63 c04 04 自定义字符5 60 3C < 100 64 d05 05 自定义字符6 61 3D = 101 65 e06 06 自定义字符7 62 3E > 102 66 f07 07 自定义字符8 63 3F ? 103 67 g08 08 自定义字符1 64 40 @ 104 68 h09 09 自定义字符2 65 41 A 105 69 i10 0A 自定义字符3 66 42 B 106 6A j11 0B 自定义字符4 67 43 C 107 6B k12 0C 自定义字符5 68 44 D 108 6C l13 0D 自定义字符6 69 45 E 109 6D m14 0E 自定义字符7 70 46 F 110 6E n15 0F 自定义字符8 71 47 G 111 6F o32 20 空格72 48 H 112 70 p33 21 ! 73 49 I 113 71 q34 22 " 74 4A J 114 72 r35 23 # 75 4B K 115 73 s36 24 $ 76 4C L 116 74 t37 25 % 77 4D M 117 75 u38 26 & 78 4E N 118 76 v39 27 ' 79 4F O 119 77 w40 28 ( 80 50 P 120 78 x41 29 ) 81 51 Q 121 79 y42 2A * 82 52 R 122 7A z43 2B + 83 53 S 123 7B {44 2C , 84 54 T 124 7C |45 2D - 85 55 U 125 7D }46 2E . 86 56 V 126 7E ~47 2F / 87 57 W48 30 0 88 58 X49 31 1 89 59 Y50 32 2 90 5A Z51 33 3 91 5B [52 34 4 92 5C \53 35 5 93 5D ]54 36 6 94 5E ^55 37 7 95 5F _显示操作的过程:首先确认显示的位置,即在第几行,第几个字符开始显示。
LCD1602汉字显示讲解
LCD1602显示汉字研究与程序设计1602是一款最常用也是最便宜的液晶显示屏。
最多可以显示两行标准字符,每行最多可以显示16个字符。
1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。
一、显示常用字符。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是41H,显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”十进制十六进制ASCII字符十进制十六进制ASCII字符十进制十六进制ASCII字符00 00 自定义字符1 56 38 8 96 60 `01 01 自定义字符2 57 39 9 97 61 a02 02 自定义字符3 58 3A : 98 62 b03 03 自定义字符4 59 3B ; 99 63 c04 04 自定义字符5 60 3C < 100 64 d05 05 自定义字符6 61 3D = 101 65 e06 06 自定义字符7 62 3E > 102 66 f07 07 自定义字符8 63 3F ? 103 67 g08 08 自定义字符1 64 40 @ 104 68 h09 09 自定义字符2 65 41 A 105 69 i10 0A 自定义字符3 66 42 B 106 6A j11 0B 自定义字符4 67 43 C 107 6B k12 0C 自定义字符5 68 44 D 108 6C l13 0D 自定义字符6 69 45 E 109 6D m14 0E 自定义字符7 70 46 F 110 6E n15 0F 自定义字符8 71 47 G 111 6F o32 20 空格72 48 H 112 70 p33 21 ! 73 49 I 113 71 q34 22 " 74 4A J 114 72 r35 23 # 75 4B K 115 73 s36 24 $ 76 4C L 116 74 t37 25 % 77 4D M 117 75 u38 26 & 78 4E N 118 76 v39 27 ' 79 4F O 119 77 w40 28 ( 80 50 P 120 78 x41 29 ) 81 51 Q 121 79 y42 2A * 82 52 R 122 7A z43 2B + 83 53 S 123 7B {44 2C , 84 54 T 124 7C |45 2D - 85 55 U 125 7D }46 2E . 86 56 V 126 7E ~47 2F / 87 57 W48 30 0 88 58 X49 31 1 89 59 Y50 32 2 90 5A Z51 33 3 91 5B [52 34 4 92 5C \53 35 5 93 5D ]54 36 6 94 5E ^55 37 7 95 5F _显示操作的过程:首先确认显示的位置,即在第几行,第几个字符开始显示。
lcd汉字显示课程设计
lcd汉字显示课程设计一、课程目标知识目标:1. 学生能理解LCD汉字显示的基本原理,掌握相关概念,如液晶显示、像素、字符编码等。
2. 学生能掌握LCD汉字显示的编程方法,包括字模提取、显示控制等。
3. 学生能了解LCD汉字显示在生活中的应用,提高对技术学科的兴趣。
技能目标:1. 学生能够运用所学知识,独立完成LCD汉字显示编程任务。
2. 学生能够通过实践操作,熟练使用相关工具和仪器,提高动手能力。
3. 学生能够通过小组合作,提高团队协作能力和问题解决能力。
情感态度价值观目标:1. 学生在学习过程中,培养对科学技术的热爱,增强创新意识。
2. 学生在小组合作中,学会尊重他人,培养团结协作的精神。
3. 学生能够关注LCD汉字显示技术在社会发展中的作用,提高社会责任感。
本课程旨在帮助学生掌握LCD汉字显示的相关知识,培养编程技能和实际操作能力,同时注重培养学生的情感态度价值观,使他们在学习过程中形成积极向上的学习态度,为今后的学习和发展奠定基础。
二、教学内容1. LCD基本原理与结构:包括液晶显示原理、像素和分辨率概念、显示驱动方式等,对应教材第3章第1节内容。
2. 汉字编码与字模:介绍汉字编码方式,如GB2312、GBK等,以及字模提取方法,对应教材第3章第2节内容。
3. LCD显示控制:讲解LCD显示控制原理,包括显示内存、显示坐标、刷新频率等,对应教材第3章第3节内容。
4. 汉字显示编程:教授如何在LCD上显示汉字,包括编程环境搭建、编程语言选择、字模显示等,对应教材第3章第4节内容。
5. 实践操作与案例分析:安排学生动手实践,完成LCD汉字显示编程任务,分析实际应用案例,提高学生实际操作能力,对应教材第3章第5节内容。
教学内容按照教学大纲安排,分为理论教学和实践操作两部分。
理论教学部分注重讲解LCD汉字显示的基本原理和编程方法,实践操作部分则着重培养学生动手能力和问题解决能力。
教学内容与教材紧密关联,确保科学性和系统性。
LCD1602显示中文汉字
LCD1602 显示中文汉字LCD1602 相比大家都比较了解,但是我们一般只用来显示字符,数字。
最近在网上看许多人用LCD1602 来显示汉字,觉得有趣于是拜读了一些资料,教程,但感觉大部分相当晦涩难懂,本人认为既然是教程,就不必要相当的复杂,毕竟人家看完许久后还是不能得出实验结果~!!接下我谈谈我得做法,保证你10 分钟之内一样可以在LCD1602 上显示你想显示的各种符号,汉字!!!首先:我们要弄清楚一个概念,其实我们使用1602 显示中文汉字,就是利用其内部的自定义字节空间,我们都知道LCD1602 内部有一个64 字节的自定义CGRAM,那幺好,我们就是要利用自定义字节来达到显示汉字的效果.我们知道一个字符占8 个字节,所以在CGRAM 能够存放8 个字符。
也就是说,这个64 字节的CGRAM 是给我们提供写入数据的,那幺我们怎幺把我们要的汉字写入CGRAM 呢?不要急,大家查看LCD1602 的用户手册,里面提到当我们需要想CGRAM 写入数据时,我们需要先写入CGRAM 的地址,从手册上可知,CGRAM 的地址为0x40.所以当我们要写入数据时,要先写入一条地址命令write_com(0x040);然后把你要写入的数据通过写数据命令写入write_date( 你要写得数据);做完以上步骤了,是不是LCD1602 就会显示你输入的汉字呢?不要急,以上你只是把你要显示汉字的代码存放在CGRAM 里,就相当于其他常用字符一样固定在LCD 里面了,如果你不把它读出来,LCD 是不会显示的。
当你把上面的步骤做完后,接下来要做的与你平常怎幺使用LCD1602 是一样的,只不过是LCD1602 里面增加了一些你自定义的字符,汉字。
可能到这里,也许会有些疑问,既然自定义字符、汉字的代码需要我们自己输入,那幺我该怎幺编写这些代码,呵呵,不要着急,接下来就要用到下面这个取字模软件。
相信有的朋友应该都用过这个软件。
LCD1602显示中文汉字doc资料
L CD1 6 0 2 显示中文汉字LCD1602 显示中文汉字LCD1602 相比大家都比较了解,但是我们一般只用来显示字符,数字。
最近在网上看许多人用LCD1602 来显示汉字,觉得有趣于是拜读了一些资料,教程,但感觉大部分相当晦涩难懂,本人认为既然是教程,就不必要相当的复杂,毕竟人家看完许久后还是不能得出实验结果~!!接下我谈谈我得做法,保证你10分钟之内一样可以在LCD1602 上显示你想显示的各种符号,汉字!!!首先:我们要弄清楚一个概念,其实我们使用1602 显示中文汉字,就是利用其内部的自定义字节空间,我们都知道LCD1602 内部有一个64字节的自定义CGRAM ,那么好,我们就是要利用自定义字节来达到显示汉字的效果. 我们知道一个字符占8 个字节,所以在CGRAM 能够存放8 个字符。
也就是说,这个64 字节的CGRAM 是给我们提供写入数据的,那么我们怎么把我们要的汉字写入CGRAM 呢?不要急,大家查看LCD1602 的用户手册,里面提到当我们需要想CGRAM 写入数据时,我们需要先写入CGRAM 的地址,从手册上可知,CGRAM 的地址为0x40所以当我们要写入数据时,要先写入一条地址命令write_com(0x040); 然后把你要写入的数据通过写数据命令写入write_date( 你要写得数据);做完以上步骤了,是不是LCD1602 就会显示你输入的汉字呢?不要急,以上你只是把你要显示汉字的代码存放在CGRAM 里,就相当于其他常用字符一样固定在LCD 里面了,如果你不把它读出来,LCD 是不会显示当你把上面的步骤做完后,接下来要做的与你平常怎么使用 的,只不过是LCD1602里面增加了一些你自定义的字符,汉字。
可能到这里,也许会有些疑问,既然自定义字符、汉字的代码需要我们自己输 入,那么我该怎么编写这些代码,呵呵,不要着急,接下来就要用到下面这个 取字模软件。
4収虫日式*偉改壬慨烁楼咀韋IH*丘出用片4B-S I 询厲 1 .11 g 佃如 ATI相信有的朋友应该都用过这个软件。
在LCD上显示字幕
单片机课程设计在LCD1602上第二行显示“AT89C-51”1、设计内容在LCD1602上第二行显示“AT89C-51”2、设计思想此次单片机课程设计选择的是利用1602液晶,A T89C52芯片实现一串字符显示,本次设计使用的1602液晶为5V电压驱动带背光可显示两行每行16个字符。
通过C语言编程经keil软件生成可以在proteus软件中仿真装载的.hex文件进而通过proteus软件进行硬件电路连接以及软件的仿真利用LM016L显示器替代1602型液晶显示器最终得出液晶显示。
最后在单片机开发板上第二行显示AT89C51字样。
3、设计要求首先,利用proteus软件连接好硬件仿真图,编写C语言程序,导入硬件仿真图,调试程序和硬件,实现在软件上在LCD1602上第二行显示“AT89C-51”字样。
然后在单片机开发板上实现软件仿真结果。
4、设计目的1 熟练掌握单片机C语言编程2 掌握LCD显示基本原理和接口控方法3 掌握proteus软件的使用方法4 学会单片机开发板的使用方法5、设计原理1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用, 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
LCD1602引脚图1602采用标准的16脚接口,其中:指令集1.清屏指令功能:<1> 清除液晶显示器即将DDRAM的内容全部填入"空白"的ASCII码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2.进入模式设置指令功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
lcd显示单个字符原理
LCD显示单个字符的原理如下:
1. 在LCD上显示一个字符,需要占据屏幕上的一块地方。
这块地方的尺寸由字体大小决定,例如中文字符24×24字体大小表示水平需要24个像素点、垂直需要24个像素点。
2. 在占据的地方上,字符的每个像素点是否显示由字模说了算。
字模中的每1位数据表示一个像素点,如果该位为0则表示此处像素点不显示、为1则表示显示。
3. 字符显示的函数只需要基于打点函数实现即可。
在程序中逐位读取字模,如果该位为0则该点写入背景颜色,如果该位为1则写入前景颜色。
以上原理仅供参考,如果需要更多信息,可以查阅关于LCD显示的文献或请教专业人士。
用单片机驱动LCD显示汉字源程序
以下程序在Keil μvision3软件上调试通过:#define uchar unsigned char //头文件在程序中用uchar代替unsigned char#define uint unsigned int#include<reg51.h> //源文件源文件包含了变量以及函数的实体#include<absacc.h>#include <stdio.h>sbit E=P1^2; //液晶屏使能信号sbit CS1=P1^3; //液晶屏左屏选通信号sbit CS2=P1^4; //液晶屏右屏选通信号sbit DI=P1^0;uchar code chinese[ ]={ //定义数组0x00,0x20,0x3F,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x08,0x7F,0xFC,0x02,0x80, //无0x02,0x80,0x04,0x80,0x04,0x80,0x08,0x80,0x08,0x82,0x10,0x82,0x20,0x7E,0x40,0x00,0x08,0x40,0x08,0x50,0x10,0x48,0x10,0x40,0x22,0x7C,0x7F,0xC0,0x08,0x44,0x10,0x7E, //线0x23,0xC0,0x7C,0x48,0x00,0x50,0x00,0x20,0x1C,0x60,0xE0,0x92,0x43,0x0A,0x00,0x06,0x02,0x00,0x02,0x00,0x02,0x10,0x7F,0xF8,0x42,0x10,0x42,0x10,0x7F,0xF0,0x42,0x10, //电0x42,0x10,0x7F,0xF0,0x42,0x10,0x02,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00,};uchar code start[ ]={0,1,2};void send_command_l(uchar d) //左屏控制信号//{uchar data i;DI=0; CS1=1; CS2=0;P0=d; E=1;for(i=5;i!=0;i--); E=0;for(i=5;i!=0;i--); E=1; }void send_data_l(uchar d) //左屏数据信号//{uchar data i;DI=1; CS1=1; CS2=0;for(i=10;i!=0;i--); P0=d;for(i=10;i!=0;i--); E=1;for(i=10;i!=0;i--); E=0;for(i=5; i!=0;i--); E=1; }void send_command_r(uchar d) //右屏控制信号//{uchar data i;DI=0; CS1=0; CS2=1;P0=d; E=1;for(i=5;i!=0;i--); E=0;for(i=5;i!=0;i--); E=1; }void send_data_r(uchar d) //右屏数据信号//{uchar data i;DI=1; CS1=0; CS2=1;P0=d; E=1;for(i=5;i!=0;i--); E=0;for(i=5;i!=0;i--); E=1; }void display_output_word(uchar x,uchar y,uchar *p1,uchar lth,bit sign) {uchar *p2; //指向字库中某个字的地址uchar idata i,j,k; //字记录,用于设定下一个字的起始列,便于换行。
LCD1602显示汉字详解
2. 取模 首先取得想要的中文或者图形的字模数组。通过字模软件不能直接提取 5*8 点阵的字模数 据,可以通过手动提取的方法。如下图所示,对应一个字符显示区域。每 8 个字节,组成一
个Байду номын сангаас阵数组。
3. 实验原理图与结果
4. 程序
/***********************************************
(网上摘抄,写的很好!!!!!)
由上两条指令可知 DDRAM 地址(DB7 赋值 1),所以地址从 0x80 开始 可知 CGRAM 地址(DB6 赋值 1),所以地址从 0x40 开始
首先:我们要弄清楚一个概念,其实我们使用 1602 显示中文汉字,就是利用其内部的自定 义字节空间,我们都知道 LCD1602 内部有一个 64 字节的自定义 CGRAM、也、、、,这个 64 字节的 CGRAM 是给我们提供写入数据的,从我们上面介绍的可知,CGRAM 的地址为 0x40. 所以当我们要写入数据时,要先写入一条地址命令 write_com(0x040); 然后把你要写入的数据通过写数据命令写入 write_dat(数据); 其次就是要把我们的自定义汉字、字符显示在 LCD1602 上了。我们知道常用字符是从 0x20 开始显示,而 0x00—0x0f 都是没有用的,其实这个正式为我们自定义显示字符准备的。当 你把上面的代码输入到 CGRAM 中,LCD1602 机会把汉字或字符赋予地址,这个地址是从 0x00 开始,因为最多只能 8 个字符,所以当在 CGRAM 里面输入 8 个字符代码时,这 8 个 字符的代码的数据地址就是 0x00 开始到 0x07。所以当你要在 LCD1602 上显示自定义字符 时 , 只 需 要 把 这 个 地 址 用 数 据 输 入 就 OK 。 write_dat(0x00—0x07); 当 然 也 可 以 是 write_dat(0—7)也就是你自定义的 8 个字 符。
LCD 12864液晶显示汉字程序
/*--文字: --*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*--文字: --*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
/*--文字: --*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x40,0x20,0x10,0x0E,0x10,0x20,0x3F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,
/*--文字:地--*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
LCD12864编码显示汉字
#include <reg51.h>#include <intrins.h>#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; // 片选1sbit 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,0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78, 0x00,/*-- 文字: 爱 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30, 0x00,0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40, 0x00,/*-- 文字: 好 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,0x82,0x82,0xF2,0x8A,0x86,0x82,0x80, 0x00,0x80,0x43,0x22,0x14,0x0C,0x73,0x20,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: 者 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x24,0x24,0x24,0x24,0xA4,0xBF,0x64,0x24,0x34,0x28,0x26,0x24,0x20, 0x00,0x04,0x04,0x04,0x02,0x02,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00, 0x00,/*-- 文字: 你 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08, 0x00,0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08, 0x00,/*-- 文字: 们 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0xF0,0x1C,0x03,0xF0,0x01,0x0E,0x04,0x00,0x04,0x04,0x04,0xFC,0x00, 0x00,0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x3F,0x00, 0x00,/*-- 文字: 辛 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x84,0x84,0x94,0xA4,0xC4,0x85,0x86,0x84,0xC4,0xA4,0x94,0x84,0x84,0x80, 0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,0x00, 0x00,/*-- 文字: 苦 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x44,0x44,0x44,0x44,0x5F,0x44,0xF4,0x44,0x44,0x5F,0x44,0x44,0x44,0x44, 0x00,0x00,0x00,0x00,0x7E,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x7E,0x00,0x00,0x00, 0x00,/*-- 文字: 了 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: 希 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x20,0x30,0x30,0xA9,0x6A,0x3A,0x24,0xE4,0x2A,0x29,0x30,0x20,0x20,0x20, 0x00,0x08,0x04,0x02,0x01,0x3F,0x01,0x01,0x01,0xFF,0x01,0x21,0x61,0x3F,0x00,0x00, 0x00,/*-- 文字: 望 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x04,0x04,0xFC,0x85,0x46,0x24,0x04,0x80,0x7E,0x2A,0x2A,0xAA,0xAA,0xFE,0x00, 0x00,0x00,0x40,0x42,0x4A,0x4A,0x4A,0x4A,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x42,0x40, 0x00,/*-- 文字: 大 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x20,0x20,0x20,0x20,0x20,0xA0,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,/*-- 文字: 家 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x18,0x04,0x14,0x94,0x94,0xD5,0xB6,0x14,0x14,0x94,0x04,0x14,0x0C,0x04, 0x00,0x00,0x29,0x29,0x15,0x14,0x4A,0x89,0x44,0x3F,0x06,0x09,0x09,0x10,0x30,0x10, 0x00,/*-- 文字: 能 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0xB8,0x97,0x92,0x90,0x94,0xB8,0x10,0x00,0x7F,0x48,0x48,0x44,0x74,0x20, 0x00,0x00,0xFF,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x3F,0x44,0x44,0x42,0x72,0x20, 0x00,/*-- 文字: 多 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00, 0x00,0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01, 0x00,/*-- 文字: 多 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00, 0x00,0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01, 0x00,/*-- 文字: 交 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x08,0x88,0x48,0x38,0x28,0x09,0x0E,0x0C,0x08,0x98,0x28,0x68,0x48,0x08, 0x00,0x00,0x80,0x80,0x40,0x41,0x22,0x14,0x18,0x0C,0x16,0x23,0x61,0xC0,0x40,0x00, 0x00,/*-- 文字: 流 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04, 0x00,0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70, 0x00,/*-- 文字: 学 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x30,0x10,0x12,0x5C,0x54,0x50,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,/*-- 文字: 习 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x02,0x02,0x0A,0x12,0x22,0x62,0x02,0x82,0x82,0x42,0x02,0xFE,0x00,0x00,0x00,0x00,0x04,0x0C,0x04,0x02,0x02,0x01,0x01,0x00,0x20,0x40,0x80,0x7F,0x00, 0x00,/*-- 文字: 24 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,};/****************************************//* 定义ASCII字库8列*16行*//****************************************/uchar code Ezk[]={/*-- 文字: Q --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F, 0x00,/*-- 文字: Q --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F, 0x00,/*-- 文字: 3 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: 5 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: 1 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00, 0x00,/*-- 文字: 5 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E, 0x00,/*-- 文字: 2 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,};/*状态检查,LCD是否忙*/void CheckState(){uchar dat;//状态信息(判断是否忙)RS=0; // 数据\指令选择,D/I(RS)=“L”,表示 DB7∽DB0 为显示指令数据 RW=1; //R/W=“H”,E=“H”数据被读到DB7∽DB0do{DATA=0x00;EN=1; //EN下降源_nop_(); //一个时钟延时dat=DATA;EN=0;dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)}while(!(dat==0x00));}/*写命令到LCD中*/SendCommandToLCD(uchar com){CheckState();//状态检查,LCD是否忙RS=0; //向LCD发送命令。
实验六 LCD 汉字显示
实验六LCD 汉字显示【实验目的】1. 掌握DM Tool 字模提取工具的使用方法。
2. 掌握利用SPLC501 液晶显示模组显示汉字的方法。
【实验内容】1.编程要求:主程序利用C 语言编写,调用驱动程序。
2.实现功能:在LCD显示器上按行显示20个汉字,内容自拟。
3.实验现象:清屏,持续一段时间,显示第一行,持续一段时间,再显示第二行,依次循环显示每一行。
【实验原理】1. DM Tool 字模提取工具与显示英文字符(ASCII 码)不同,汉字不能直接显示在点阵的LCD显示器上,而是要借助一个工具,先把汉字转换成LCD 显示器能显示的形式。
可以利用unSP 系列16 位单片机的字模数据提取工具DM Tool提取汉字字模、BMP位图字模,还可以很方便地提取ASCII 码字模。
2. SPLC501 液晶显示模组汉字显示API 函数介绍驱动程序文件SPLC501User.c 同样定义了显示汉字的API 函数,在SPLC501User.h 文件里也对这些函数进行了申明。
void LCD501_Init(unsigned int InitialData) //初始化液晶显示void LCD501_ClrScreen(unsigned int Mode) //点亮屏幕或清屏void LCD501_SetPaintMode(unsigned int ModeCode) //设置图形显示模式unsigned int LCD501_GetPaintMode(void) //获取图形显示模式void LCD501_Bitmap(unsigned int x,unsigned int y,unsigned int *word) //显示汉字或者位图的字模数据前面四个函数在上一实验中已经有详细说明,这里只介绍最后一个函数:【API 格式】C:void LCD501_Bitmap(unsigned int x,unsigned int y,unsigned int *word)【功能说明】显示汉字或者位图的字模数据【参数】x 表示显示字符的起始列(0~128)y表示要显示的字模的起始行(0~64-y_whide)*word 表示要显示的汉字字模的数据首地址【返回值】无【备注】只显示用DM T ool 取字模软件所取的汉字字模数据;该函数可以在指定位置显示位图。
LCD显示汉字的两种算法分析
LCD显示汉字的两种算法分析1.1.原因原有的LCD显示汉字函数例程只能显示带背景的汉字,也就是说如果要在图片上显示一个汉字,那就会出现一个矩形框,底色为我们设定的颜色。
而不能实现单独显示汉字,不显示背景的要求。
1.2.代码//x、y字符的一个字符的左上角的坐标/***pointColor:要显示的字符的颜色backColor:字符的背景颜色*pChineseData:字符取模数据***///fontSize :字体大小voidLCD_ShowChinese(u16 x,u16 y,u8 fontSize,u16 pointColor,u16 backColor,u8*pChineseData){u32 i;u8 j=0;/*****************************************************/LCD_ILI9486_CMD(0x 2A); //设置列地址的起始地址LCD_ILI9486_Parameter(x8); LCD_ILI9486_Parameter(x(0xFF));//设置列地址的结束地址LCD_ILI9486_Parameter((x+fontSize-1)8);LCD_ILI9486_Parameter((x+fontSize-1)(0xFF));/************************************* ****************/LCD_ILI9486_CMD(0x2B); //设置行地址的起始地址LCD_ILI9486_Parameter(y8); LCD_ILI9486_Parameter(y(0xFF));//设置行地址的结束地址LCD_ILI9486_Parameter((y+fontSize-1)8);LCD_ILI9486_Parameter((y+fontSize-1)(0xFF));LCD_ILI9486_CMD(0x2C); //写显存的命令for(i=0;i(fontSize*fontSize);i++){if((*pChineseData)(1(7-j))){LCD_ILI9486_Parameter(pointC olor);}else{LCD_ILI9486_Parameter(backColor);}j=j+1;if(j==8){j=0;pChineseData++;}}}1.3.解决思路参照LCD显示字符的函数,不使用一个个数据连续传输,而是使用一个一个画点的办法,这样,在不需要显示汉字的地方可以选择不打点,这样就能实现镂空汉字的效果。
LCD2004 LCD1602显示自定义汉字详解
**********/
void main()
{
uint i;
uint count=0;
LcdInit();
IntConfiguration();
K3=1;
Delay10ms(); Delay(1); Delayms(1);
for(i=0;i<8;i++) {
LcdWriteCom(0x40+i); LcdWriteData(sheng[i]); //Delay(100); } LcdWriteCom(0x80); LcdWriteData(0x00);
//26 显示‘日’ //27 显示‘快’ //28 显示‘乐’
for(i=0;i<8;i++)
//29 显示’生‘
{ LcdWriteCom(0x40+i); LcdWriteData(sheng[i]); //Delay(100);
} LcdWriteCom(0xc0+8); LcdWriteData(0x00);
for(i=0;i<8;i++) {
LcdWriteCom(0x58+i); LcdWriteData(le[i]); //Delay(100); } LcdWriteCom(0x80+15); LcdWriteData(0x03);
//14 显示‘日’ //15 显示‘快’ //16 显示‘乐’
for(i=0;i<8;i++) {
LcdWriteCom(0x48+i); LcdWriteData(ri[i]); //Delay(100); } LcdWriteCom(0x80+5); LcdWriteData(0x01);
LCD点阵液晶屏的中文显示方法
硬件原理分析
液晶显示模块LM19264DBC把指令和数据的读、写分 开。经过分析该模块的的I/O功能、读/写时序和显示控制 指令,系统决定只用8位地址,并采用单片机的P3.0口控 制液晶模块的复位,而采用P3.1~P3.3口控制显示模块左、 中、右三个显示部分的选择。P0.7口作为模块选通的总控 制信号口,即P0.7=0时,单片机不能对显示模块进行指令 或数据的读写;P0.7=1时,显示模块接收单片机传送的指 令或数据。P0.0和P0.1接到液晶模块的R/W和R/S端口, 对照液晶模块显示控制指令可得出指令和数据的读、写指 令的地址。则有单片机I/O和显示模块I/O口对应的接口
7-14 15 16
DB0-DB7 /CS1 /RST
I/0 输入 输入
17 18 19 20
/CS2 /CS3 VOUT ABL
输入 输入 输出 电源
读/写时序 显示控制指令
指令说明 代码 R / S 显示ON/OFF 0 R / W 0 R B 7 0 R B 6 0 R B 5 1 R B 4 1 R B 3 1 R B 2 1 R B 1 1 R B 0 1 / 0 控 制 显 示 的 ON/OFF , 不影响内部状态和 RAM 中 的 数 据 , 0=OFF,1=ON 在Y地址计数器中设 置列地址 在X地址寄存器中设 置页地址 指示 RAM 中的数据显 示在屏幕的顶行 0 0 0 读状态: Busy=L ,驱 动器就绪; Busy=H, 驱 动 器 忙 , ON/OFF=L , 显 示 开 , ON/OFF=H , 显 示 关 ; REST=L , 正 常 运 行 , 将显示数据写入 REST=H,重置 RAM , 执行写指令后,Y地 址自动加1 从显示数据 RAM中读 显示数据 *2 功能 标 注
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/***************************************************************\|* 12864LCD显示程序proteus6.9 仿真AMPIRE128*64 *||* 制作人:熊涛*||* 时间:2007年4月12日*||* 接口定义:P1接数据DB7~DB0 *||* P2.0 P2.1 P2.2 P2.3 P2.4 接控制线*||* 具体见定义*|\***************************************************************//***************************************************************\|* 注:本程序只能写16*16的汉字并且有一个小问题就是*||* 当字库中汉字的代码的第一个数据不是0x00时该汉字就不*||* 能显示出来调试时发现是因为不能检索到那个汉字具体原*||* 因还在调试中直接写汉字句子时注意两个字节一个字,不要*||* 弄半角的字符或标点符号否则后面的汉字将找不到*||* 2007年4月14日1时修改熊涛*|\***************************************************************/#include <reg52.h>#include <all_code.h> //包含字库该字库采用晓奇工作室液晶字模提取软件默认保存的文件采用结构体数组定义的方法#include <string.h>typedef unsigned char uchar;typedef unsigned int uint;struct word_BUFFER{ uchar word[2]; } ;struct word_BUFFER word_buf[33]; //定义结构体数组用来存储待显示的汉字共32个uchar bank=0; //设置第几行反显0表示不反显1~4表示各行的反显uchar key=0; //第几个键被按下sbit DI =P3^7; // 数据\指令选择sbit RW =P3^6; // 读\写选择sbit E =P3^5; // 读\写使能sbit CS2 =P3^4; // 片选1sbit CS1 =P3^3; // 片选2sbit RST =P3^2; // 复位keych(void) //检测是否有键按下子程序//{ uint n;if(P2==0xf0) return(0);else while(P2&0xf0!=0xf0) for(n=0;n<60000;n++);return(1);}keyscan() // 检测是哪个键按下子程序//{ uchar m,n;uchar code k[4]={0xfe,0xfd,0xfb,0xf7};for(m=0;m<4;m++){ P2=k[m];n=P2+(m*m+5)*m/6;//此处要注意m为整型switch(n){ case 0x7e:key=0+m*4;break;case 0xbe:key=1+m*4;break;case 0xde:key=2+m*4;break;case 0xee:key=3+m*4;break;}} }/**********************************************\|* 写命令子程序*||* 入口参数:cmd 控制命令数据*||* 出口参数:null *||* 调用函数: null *|\**********************************************/void write_cmd(uchar cmd) //写命令子程序{ RW=0;DI=0; //DI=0 写命令E=1;P1=cmd;E=0; //RW="L",E="H->L" DB7~DB0的数据被写到IR或DR}/**********************************************\|* 写数据子程序*||* 入口参数:dat 显示字符的数据*||* oppo 标志位1:显示阳文*||* 0:显示阴文*||* 出口参数:null *||* 调用函数: null *|\**********************************************/void write_dat(uchar dat,bit oppo) //写数据子程序{ RW=0;DI=1; //DI=1 写数据E=1;if(oppo==0) P1=~dat; //按位取反得阴文if(oppo==1) P1=dat;oppo=1;E=0; //RW="L",E="H->L" DB7~DB0的数据被写到IR或DR}/**********************************************\|* 设置显示起始行X地址和Y地址*||* 入口参数:st_line 显示起始行0~63 *||* x_add 页地址8行为一页0~7 *||* y_add Y地址0~128 *||* 出口参数:null *||* 调用函数: write_cmd() *|\**********************************************/void set_dis(uchar st_line,uchar x_add,uchar y_add) //设置显示起始行X地址和Y地址{write_cmd(st_line+0xc0); //+0xc0是参照设置起始行的格式write_cmd(x_add+0xb8); //+0xb8是参照设置页地址的格式if(y_add<64) { CS1=0;CS2=1;write_cmd(y_add+0x40);} //Y_add地址实际上只有0~63 采用CS1和CS2选左右半屏else { CS1=1;CS2=0;write_cmd(y_add);}}/***********************************************\|* 写汉字子程序1 可以在任意位置写入*||* 入口参数:st_line 显示起始行0~63 *||* x_add 页地址8行为一页0~7 *||* y_add Y地址0~128 *||* Index[2] 字符串数组用来存储汉字*||* 出口参数:null *||* 调用函数: write_cmd() set_dis() *||* strcmp() write_dat() *|\***********************************************/void write_word_all(uchar st_line,uchar x_add,uchar y_add,uchar Index[2]) //写入汉字{ uchar i,j;bit oppo=1;if(y_add<64) { CS1=0;CS2=1;write_cmd(y_add+0x40);}else { CS1=1;CS2=0;write_cmd(y_add);}set_dis(st_line, x_add,y_add);if(bank%5==0) oppo=1;if(bank%5==1&&(x_add==0||x_add==1)) oppo=0;if(bank%5==2&&(x_add==2||x_add==3)) oppo=0;if(bank%5==3&&(x_add==4||x_add==5)) oppo=0;if(bank%5==4&&(x_add==6||x_add==7)) oppo=0;for(i=0;i<255;i++){ if (GB_16[i].Index[0]==Index[0] && GB_16[i].Index[1]==Index[1]) //汉字作为双字节字符串处理采用顺序检索方式查找结构体名{ for(j=0;j<16;j++) write_dat(GB_16[i].Msk[j],oppo); //逐字节写入set_dis(st_line, x_add+1,y_add); //下一页写字的下半部分for(j=16;j<32;j++) write_dat(GB_16[i].Msk[j],oppo);break;} //此处用break是为了能跳出for循环}}/***********************************************\|* 写汉字子程序2 只能在指定位置写入*||* 入口参数:n 指定地址0~31 全屏32字(16*16) *||* Index[2] 字符串数组用来存储汉字*||* 出口参数:null *||* 调用函数: write_word_all() *||* *|\***********************************************/void write_word(uchar n,uchar Index[2]) //写入汉字{ uchar st_line=0,x_add=n%32/8*2,y_add=n%32%8*16;write_word_all(st_line,x_add,y_add,Index);}/***********************************************\|* 写句子子程序*||* 入口参数:sentence[] 待写入汉字组成字符串*||* 按照0~31的顺序写入*||* 出口参数:null *||* 调用函数: strlen() write_word() *||* *|\***********************************************/void write_sentence(uchar sentence[255]){uchar i,j=0;if(keych()==1){keyscan();if(key==0) bank++;if(key==1) bank--;}for(i=0;i<strlen(sentence)/2;i++){ word_buf[i].word[0]=sentence[i*2];word_buf[i].word[1]=sentence[i*2+1];//从sentence中两个两个的取字符串即汉字注意不要弄半角的字符或标点符号,否则后面的汉字将找不到write_word(j++,word_buf[i].word);} }/*void Scrolling(uchar sentence[255]) //滚动显示子程序{ uchar i,j=0;int k=2000;for(i=0;i<strlen(sentence)/2;i++){ for(j=0;j<=i;j++){ word_buf[i].word[0]=sentence[i*2];word_buf[i].word[1]=sentence[i*2+1];write_word(i,word_buf[i].word); ; } } } *//**********************************************\|* 初始化子程序*||* 入口参数:null *||* 出口参数:null *||* 调用函数: null *|\**********************************************//*void initial(void) //初始化子程序{ write_cmd(0x3e); //关显示} *//****************************************************\|* 主程序入口*||* 12864LCD显示程序proteus6.9 仿真AMPIRE128*64 *||* 制作人:熊涛*||* 时间:2007年4月12日*||* *|\****************************************************/void main(void) //主程序{P0=0xaa;// uint n=65535;//write_cmd(0x3e); //关显示// 故人西辞黄鹤楼,烟花三月下扬州。