📄 lcm12864.lst
字号:
C51 COMPILER V7.50 LCM12864 08/08/2007 21:14:39 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCM12864
OBJECT MODULE PLACED IN LCM12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCM12864.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "LCM12864.h"
2 unsigned char BUSY,hang,lie;
3 /*********************************************延时**************************************/
4 void Delayus(unsigned long t)
5 {
6 1 int i,j;
7 1 for (i=0;i<t;i++)
8 1 for (j=0;j<t;j++);
9 1 }
10
11 //*********************判忙函数************************//
12 void BUSYLOOP()
13 {
14 1 P1=0x0ff;
15 1 RS=0;
16 1 RW=1;
17 1 do
18 1 {
19 2 E=1;
20 2 BUSY=P1;
21 2 E=0;
22 2 }
23 1 while(BUSY>0x7F);
24 1 }
25 //*********************写控制字函数****************************//
26 void Write_command(unsigned char CMD,unsigned char bb)
27 {
28 1 if(bb) BUSYLOOP();
29 1 RS=0;
30 1 RW=0;
31 1 E=1;
32 1 P1=CMD;
33 1 Delayus(1);
34 1 E=0;
35 1 }
36
37 //*********************写数据函数****************************//
38 void Write_data(unsigned char CMD)
39 {
40 1 BUSYLOOP();
41 1 RS=1;
42 1 RW=0;
43 1 E=1;
44 1 P1=CMD;
45 1 Delayus(1);
46 1 E=0;
47 1 }
48
49 //*************************液晶初始化********************************//
50 void Init_LCM()
51 {
52 1 Delayus(38);
53 1 Write_command(0x30,0);
54 1 Delayus(1);
55 1 Write_command(0x30,0);
C51 COMPILER V7.50 LCM12864 08/08/2007 21:14:39 PAGE 2
56 1 Delayus(1);
57 1 Write_command(0x0c,1);
58 1 Delayus(1);
59 1 Write_command(0x01,1);
60 1 Delayus(20);
61 1 Write_command(0x06,1);
62 1 }
63
64 //***************************清屏*************************************//
65 void CLEAR()
66 {
67 1 RS=0;
68 1 RW=0;
69 1 E=1;
70 1 P1=0x01;
71 1 Delayus(1);
72 1 E=0;
73 1 }
74
75 //**********************显示字符串************************************//
76 void Display(unsigned char *ptr,unsigned char ddram)
77 {
78 1 unsigned char l,i1,x;
79 1 l=0;
80 1 if(ddram<0x88) hang=0; //定位行地址:第一行
81 1 else if(ddram<0x90) hang=2; //定位行地址:第三行
82 1 else if(ddram<0x98) hang=1; //定位行地址:第二行
83 1 else hang=3; //定位行地址:第四行
84 1
85 1 lie=0x0f&ddram; //定位列地址
86 1 if(lie>0x07)
87 1 {
88 2 lie=lie-0x08;
89 2 }
90 1 x=lie*2;
91 1 Write_command(ddram,0); // 定位显示起始地址
92 1 while ((ptr[l])!='\0') l++;
93 1 for (i1=0;i1<l;i1++)
94 1 {
95 2 Write_data(ptr[i1]); //输出单个字符
96 2 x++;
97 2 if (x ==0x10)
98 2 {
99 3 x=0;
100 3 hang++;
101 3 switch (hang)
102 3 {
103 4 case 0:Write_command(0x80,0);
104 4 break;
105 4 case 1:Write_command(0x90,0);
106 4 break;
107 4 case 2:Write_command(0x88,0);
108 4 break;
109 4 case 3:Write_command(0x98,0);
110 4 }
111 3 if (hang>3)
112 3 {
113 4 Write_command(0x80,0);
114 4 hang=0;
115 4 }
116 3 }
117 2 }
C51 COMPILER V7.50 LCM12864 08/08/2007 21:14:39 PAGE 3
118 1 }
119
120 /*************************读取按键值**********************************/
121 bit ZLG7290_ReadReg(unsigned char RegAddr, char *dat)
122 {
123 1 bit b;
124 1 b = I2C_Gets(0x38,RegAddr,1,dat,1);
125 1 return b;
126 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 440 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 15
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -