📄 lcd.lst
字号:
C51 COMPILER V7.06 LCD 07/28/2005 18:33:04 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #include <8255A.h>
4 #include <LCD.h>
5
6 #define Busy 0x80
7
8 #define SetRS() SetCBit(0,1)
9 #define ClrRS() SetCBit(0,0)
10 #define SetRW() SetCBit(1,1)
11 #define ClrRW() SetCBit(1,0)
12 #define SetE() SetCBit(2,1)
13 #define ClrE() SetCBit(2,0)
14
15 /*
16 static void SetRS();
17 static void ClrRS();
18 static void SetRW();
19 static void ClrRW();
20 static void SetE();
21 static void ClrE();
22 */
23 //static void LcdWriteData(char);
24 //static void LcdWriteCommand(Uchar, Uchar);
25 //static void WaitForEnable();
26 //static void Delay5Ms();
27 //static void Delay400Ms();
28
29
30 void WaitForEnable()
31 {
32 1
33 1 //PortA = 0xff;
34 1
35 1 SelectForm0(1, 0, 0, 0);
36 1 ClrRS();
37 1 SetRW();
38 1 _nop_();
39 1
40 1 SetE();
41 1 _nop_();
42 1 _nop_();
43 1
44 1
45 1 while( PortA & Busy );
46 1
47 1 SelectForm0(0, 0, 0, 0);
48 1 ClrE();
49 1 }
50
51
52 void LcdWriteCommand(Uchar CMD, Uchar AttribC )
53 {
54 1 if (AttribC) WaitForEnable();
55 1 ClrRS();
C51 COMPILER V7.06 LCD 07/28/2005 18:33:04 PAGE 2
56 1 ClrRW();
57 1 _nop_();
58 1 PortA = CMD;
59 1 _nop_();
60 1
61 1 SetE();
62 1 _nop_();
63 1 _nop_();
64 1 ClrE();
65 1 }
66
67 /*=======================================================
68 当前位置写字符子程序: E =1 RS=1 RW=0
69 =======================================================*/
70 void LcdWriteData( char dataW )
71 {
72 1
73 1 WaitForEnable();
74 1 SetRS();
75 1 ClrRW();
76 1 _nop_();
77 1
78 1 PortA = dataW;
79 1 _nop_();
80 1
81 1 SetE();
82 1 _nop_();
83 1 _nop_();
84 1 ClrE(); // 操作允许脉冲信号
85 1
86 1 }
87
88 void LocateXY( char posx,char posy)
89 {
90 1 Uchar temp;
91 1
92 1 temp = posx & 0xf;
93 1 posy &= 0x1;
94 1 if ( posy ) temp |= 0x40;
95 1 temp |= 0x80;
96 1 LcdWriteCommand(temp,0);
97 1 }
98
99 void Delay5Ms(void)
100 {
101 1 Uint i = 5552;
102 1 while(i--);
103 1 }
104
105 //长延时
106 void Delay400Ms(void)
107 {
108 1 Uchar i = 5;
109 1 Uint j;
110 1 while(i--)
111 1 {
112 2 j=7269;
113 2 while(j--);
114 2 }
115 1 }
116
117 void DisplayOneChar(Uchar x,Uchar y,Uchar Wdata)
C51 COMPILER V7.06 LCD 07/28/2005 18:33:04 PAGE 3
118 {
119 1
120 1 LocateXY( x, y ); // 定位显示地址
121 1 LcdWriteData( Wdata ); // 写字符
122 1 Delay5Ms();
123 1
124 1 }
125
126 void DisplayXString(Uchar x, Uchar y, Uchar* pStr)
127 {
128 1 int i, tempy=y;
129 1
130 1 for(i=0;*(pStr+i)!=0;i++)
131 1 {
132 2 if(x+i>15) tempy=y+1;
133 2 LocateXY(x+i, tempy);
134 2 LcdWriteData( *(pStr+i) ); // 写字符
135 2 }
136 1 }
137
138 void DisplayString(Uchar x, Uchar y, Uchar* pStr, Uint len)
139 {
140 1 Uint i, tempy=y;
141 1
142 1 for(i=0;i<len;i++)
143 1 {
144 2 if(x+i>15) tempy=y+1;
145 2 LocateXY(x+i, tempy);
146 2 LcdWriteData( *(pStr+i) ); // 写字符
147 2 }
148 1 }
149
150 /*=======================================================
151 初始化程序, 必须按照产品资料介绍的初始化过程进行
152 =======================================================*/
153 void LcdReset( void )
154 {
155 1
156 1 Init8255A();
157 1 LcdWriteCommand( 0x38, 0); // 显示模式设置(不检测忙信号)
158 1 Delay5Ms();
159 1 LcdWriteCommand( 0x38, 0); // 共三次
160 1 Delay5Ms();
161 1 LcdWriteCommand( 0x38, 0);
162 1 Delay5Ms();
163 1
164 1 LcdWriteCommand( 0x38, 1); // 显示模式设置(以后均检测忙信号)
165 1 // LcdWriteCommand( 0x08, 1); // 显示关闭
166 1 LcdWriteCommand( CLR_SCREEN, 1); // 显示清屏
167 1 LcdWriteCommand( CURSOR_MOVE, 1); // 显示光标移动设置
168 1 LcdWriteCommand( CURSOR_OFF, 1); // 显示开及光标设置
169 1 }
170
171 void LcdRightShift()
172 {
173 1 LcdWriteCommand( 0x1c, 1);
174 1
175 1 }
176
177
178
179
C51 COMPILER V7.06 LCD 07/28/2005 18:33:04 PAGE 4
180
181
182
183
184
185
186
187
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 489 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 23
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -