珍藏的12864 使用经典资料Word格式.doc
- 文档编号:13194845
- 上传时间:2022-10-08
- 格式:DOC
- 页数:21
- 大小:732KB
珍藏的12864 使用经典资料Word格式.doc
《珍藏的12864 使用经典资料Word格式.doc》由会员分享,可在线阅读,更多相关《珍藏的12864 使用经典资料Word格式.doc(21页珍藏版)》请在冰豆网上搜索。
lcd_data
P0
//数据口
3.sbit
RS
=P2^4;
//选择寄存器(并行)0:
指令寄存器1:
数据寄存器;
4.sbit
RW
=P2^5;
//读写控制脚(并行)0:
写入1:
读出
5.sbit
E
=P2^6;
//读写数据启始脚(并行)
6.sbit
PSB
=P2^1;
//串并方式选择引脚,0为串行模式,1为8/4位数据口模式
7.sbit
RST
=P2^3;
//复位引脚
8.
9.//********************************************************
10.//延时函数
11.//********************************************************
12.voiddelay(unsignedintk)
13.{
14.
unsignedinti;
15.
unsignedcharj;
16.
for(i=0;
i<
k;
i++)
17.
{
18.
for(j=0;
j<
10;
j++);
19.
}
20.}
21.//********************************************************
22.//延时1ms函数
23.//********************************************************
24.voiddelay_ms(unsignedintk)//延时0.994us,晶振12M
25.{
26.
unsignedintx,y;
27.
for(x=k;
x>
0;
x--)
28.
for(y=121;
y>
y--);
29.}
30.//********************************************************
31.//写命令函数
32.//********************************************************
33.voidLcdWcom(unsignedcharWCom)
34.{
35.
delay
(1);
36.
RS=0;
//指明操作对象为指令寄存器
37.
RW=0;
//指明为写操作
38.
E=1;
39.
lcd_data=WCom;
//将命令写入总线
40.
E=0;
41.}
42.//********************************************************
43.//写数据函数
44.//********************************************************
45.voidLcdWdata(unsignedcharWData)
46.{
47.
48.
RS=1;
//指明操作对象为数据寄存器
49.
50.
51.
lcd_data=WData;
//将数据写入总线
52.
53.}
二、初始化操作
初始化操作如下:
芯片上电;
延时40ms以上;
复位操作:
RST出现一个上升沿(RST=1;
RST=0;
RST=1;
);
功能设定;
延时100us以上;
6>
再次进行功能设定;
7>
延时37us;
8>
显示开关控制;
9>
10>
清除显示;
11>
延时10ms以上;
12>
进入点设置;
13>
初始化结束;
这里我遇到了一个小问题,我的液晶按照这个顺序进行初始化结果不正确,无法显示,最后我把调整了一下就可以了,调整后的顺序为:
清除显示进入点设置显示开关控制,不知道是什么原因,知道的告诉我一声…
54.//********************************************************
55.//显示初始化函数
56.//********************************************************
57.voidDisplay_Init(void)
58.{
59.
delay_ms(45);
//延时45ms
60.
PSB=1;
//8位并行口
61.
//复位操作
62.
63.
64.
65.
//功能设定
66.
LcdWcom(0x30);
//设置为8位并行口,基本指令集
67.
delay(10);
68.
//再次设置为8位并行口,基本指令集
69.
delay(5);
70.//
//显示开关控制
71.//
LcdWcom(0x0c);
//游标显示关,正常显示,整体显示开
72.//
delay(10);
73.
//清除显示
74.
LcdWcom(0x01);
75.
delay_ms(12);
//延时12ms
76.
//进入点设置
77.
LcdWcom(0x06);
//设置为游标右移,DDRAM位地址加1,画面不移动
78.
79.
LcdWcom(0x0C);
//开显示
80.}
三、显示基本的字符和汉字
1、要想显示汉字或字符,首先要确定显示的位置,看看芯片说明书上关于屏幕地址的分配:
由于此液晶为128*64,即是横向128个点,竖向64个点,由于该液晶控制器支持的字符为8*16,汉字为16*16,因此只能显示四行,如果是汉字,为每行显示8个,如果是字符,每行显示16个。
由上图设置DDRAM地址的指令可知,最高位为1,余下7位为地址值,因此就对应了为什么起始地址为80H的原因(即对应的写地址指令为10000000);
因此如果你要设定显示的地址为第一行的第一个位置,只需要调用写指令函数,写入0x80即可。
存在的问题:
参考网上的程序及在试验过程中发现,实际能显示出来的地址分布式这样的
0x800x810x820x830x840x850x860x87
//第一行汉字位置
0x900x910x920x930x940x950x960x97
//第二行汉字位置
0x880x890x8a0x8b0x8c0x8d0x8e0x8f
//第三行汉字位置
0x980x990x9a0x9b0x9c0x9d0x9e0x9f
//第四行汉字位置
百思不得其解,尤其让人受不了的是居然是第一行和第三行地址接续,而不是第二行,有明白的高手给讲解一下…
设定DDRAM地址参考程序:
81.//********************************************************
82.//设置光标函数
83.//参数说明:
x为行号,y为列号
84.//********************************************************
85.voidSet_Cursor(unsignedcharx,unsignedchary)
86.{
87.
unsignedchari;
88.
switch(x)//确定行号
89.
{
90.
case0x00:
i=0x80;
break;
//第一行
91.
case0x01:
i=0x90;
//第二行
92.
case0x02:
i=0x88;
//第三行
93.
case0x03:
i=0x98;
//第四行
94.
default:
95.
96.
i=y+i;
//确定列号
97.
LcdWcom(i);
//写地址
98.}
复制代码
2、显示字符
由数据手册可查看可以显示的字符及其显示码:
因此,当你设置好所要显示的光标位置后,即可调用写数据函数,写入对应相应字符的显示码,比如要显示!
就应该写入0x21。
99.//********************************************************
100.//显示字符函数
101.//********************************************************
102.voidDisplay_Char(unsignedcharAlphabet)
103.{
104.
105.
LcdWdata(Alphabet);
//写入需要显示字符的显示码
106.}
显示!
实例:
107./**********************显示单个字符*************************/
108.Set_Cursor(0,0);
//光标地址设定
109.Display_Char(0x21);
//显示字符!
扩展程序:
在指定位置显示字符串
110.//******************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 珍藏的12864 使用经典资料 珍藏 12864 使用 经典 资料