珍藏的12864 使用经典资料Word格式.doc

上传人:b****1 文档编号:13194845 上传时间:2022-10-08 格式:DOC 页数:21 大小:732KB
下载 相关 举报
珍藏的12864 使用经典资料Word格式.doc_第1页
第1页 / 共21页
珍藏的12864 使用经典资料Word格式.doc_第2页
第2页 / 共21页
珍藏的12864 使用经典资料Word格式.doc_第3页
第3页 / 共21页
珍藏的12864 使用经典资料Word格式.doc_第4页
第4页 / 共21页
珍藏的12864 使用经典资料Word格式.doc_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

珍藏的12864 使用经典资料Word格式.doc

《珍藏的12864 使用经典资料Word格式.doc》由会员分享,可在线阅读,更多相关《珍藏的12864 使用经典资料Word格式.doc(21页珍藏版)》请在冰豆网上搜索。

珍藏的12864 使用经典资料Word格式.doc

lcd_data 

P0 

//数据口 

3.sbit 

RS 

=P2^4;

//选择寄存器(并行)0:

指令寄存器1:

数据寄存器;

4.sbit 

RW 

=P2^5;

//读写控制脚(并行)0:

写入1:

读出

5.sbit 

=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.//******************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1