📄 lcd_drv.lst
字号:
C51 COMPILER V7.20 LCD_DRV 03/24/2007 10:02:37 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LCD_DRV
OBJECT MODULE PLACED IN .\Output\lcd_drv.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE modules\display\lcd_drv.c OPTIMIZE(7,SPEED) BROWSE INCDIR(.\modules\system;
-.\;.\;.\lib_refd) DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\Output\lcd_drv.lst) OBJECT(.\Output\lcd_drv.obj)
line level source
1
2 #include "config.h" /* system configuration */
3 #include "lib_mcu\mp3\mp3_drv.h" /* mp3 driver definition */
4 #include "modules\display\lcd_drv.h"
5 #define CMD_SET_LOWER_COLUMN_ADDRESS(x) (x&0xf)
6 #define CMD_SET_HIGHER_COLUMN_ADDRESS(x) 0x10|((x>>4)&0xf)
7 #define CMD_SET_PAGE_ADDRESS(x) 0xb0|(x&0xf)
8
9 void _MultiNop(int time)
10 {
11 1 int i;
12 1 int delayLoopCount=400;
13 1 for(;time>0;time--)
14 1 for(i=0;i<delayLoopCount;i++);
15 1 }
16
17
18 void LCDDataOut(Uchar Data)
19 {
20 1 int i;
21 1 for(i=0;i<8;i++)
22 1 {
23 2 if(Data&0x80)
24 2 LCD_SDA= TRUE;
25 2 else
26 2 LCD_SDA = FALSE;
27 2 Data = (Data<<1)&0xfe;
28 2 LCD_CLK = FALSE;
29 2 LCD_CLK = TRUE;
30 2 }
31 1 }
32
33 void LCDSendCMD(Uchar Command)
34 {
35 1 LCD_DC= FALSE;
36 1 LCD_CS1= FALSE;
37 1 //_MultiNop(1);
38 1 LCDDataOut(Command);
39 1 LCD_CS1= TRUE;
40 1 }
41
42 void LCDSendData(Uchar Data)
43 {
44 1 LCD_DC= TRUE;
45 1 LCD_CS1= FALSE;
46 1 // _MultiNop(1);
47 1 LCDDataOut(Data);
48 1 LCD_CS1= TRUE;
49 1 }
50
51
52
53 void Draw2Digit( Uchar Pos, Uchar HexCode );
54 void Draw8x6Icons( Uchar Page, Uchar Column, Uchar Index );
C51 COMPILER V7.20 LCD_DRV 03/24/2007 10:02:37 PAGE 2
55
56 void LCDDisplayInit()
57 {
58 1 int j;
59 1 LCD_RESET = TRUE;
60 1 LCD_CS1= FALSE;
61 1 LCD_SDA= TRUE;
62 1 LCD_DC = TRUE;
63 1 LCD_CLK = TRUE;
64 1 LCD_RESET = FALSE;
65 1 for(j=0;j<0xFFFF;j++)
66 1 {
67 2 _MultiNop(5);
68 2 }
69 1 LCD_RESET = TRUE;
70 1 for(j=0;j<0xFFFF;j++)
71 1 {
72 2 _MultiNop(5);
73 2 }
74 1 BacklightTurnOff;
75 1 LCDSendCMD(0xE2);//RESET
76 1 LCDSendCMD(0xa0);//zgz [ADC Select]
77 1 LCDSendCMD(0xC8);//zgz [SHL Select]
78 1 LCDSendCMD(0xA3);//zgz [LCD Bias Select 1/9]
79 1 for(j=0;j<0xFFFF;j++) //Waiting for 50% rising of VOUT
80 1 {
81 2 _MultiNop(2);
82 2 }
83 1 LCDSendCMD(0x2C);//zgz [Power Control:VC=1,VR=0,VF=0]
84 1 for(j=0;j<0xFFFF;j++) //Waiting for 50% rising of VOUT
85 1 {
86 2 _MultiNop(2);
87 2 }
88 1 LCDSendCMD(0x2E);//zgz [Power Control:VC=1,VR=1,VF=0]
89 1 for(j=0;j<0xFFFF;j++) //Waiting for>=1ms
90 1 {
91 2 _MultiNop(2);
92 2 }
93 1
94 1 LCDSendCMD(0x2F);//zgz [Power Control:VC=1,VR=1,VF=1]
95 1 for(j=0;j<0xFFFF;j++)
96 1 {
97 2 _MultiNop(2);
98 2 }
99 1 LCDSendCMD(0x21);//zgz [Regulator Resistor Select (LCD 浓度)] play:21
100 1 LCDSendCMD(0x81);//zgz [Reference Voltage Register Set (Brightness)]
101 1 LCDSendCMD(0x24);//zgz [Electronic volume setting (Brightness setting)]
102 1 //LCDSendCMD(0x40);//START LINE
103 1 //LCDSendCMD(0xe0);//
104 1 LCDSendCMD(0xa4);
105 1 LCDSendCMD(0x81);//contrast
106 1 LCDSendCMD(0x20);//default contrast 40
107 1 LCDSendCMD(0xaf);//display On
108 1 // LCDSendCMD(0xa5);//FULL display]
109 1 }
110
111
112
113 /*=============================================================================
114 Description:
115
116 OK-02/10
C51 COMPILER V7.20 LCD_DRV 03/24/2007 10:02:37 PAGE 3
117 =============================================================================*/
118 void SetLCDAddress( Uchar Page, Uchar Column )
119 {
120 1 // Page
121 1 LCDSendCMD(CMD_SET_PAGE_ADDRESS(Page));
122 1 // Column setting
123 1 LCDSendCMD(CMD_SET_LOWER_COLUMN_ADDRESS(Column));
124 1 LCDSendCMD(CMD_SET_HIGHER_COLUMN_ADDRESS(Column));
125 1
126 1 }
127 /*=============================================================================
128 Description:
129
130 !!! Data in XRAM !!!
131
132 OK-02/11
133 =============================================================================*/
134 /*
135 void PutXdataToLCD( Uchar pBuffer, Uchar Loop )
136 {
137 do {
138 LCDSendData( *pBuffer );
139 pBuffer++;
140 }while (--Loop);
141
142 }
143 */
144 /*=============================================================================
145 Description:
146
147 !!! Data in CODE !!!
148
149 =============================================================================*/
150
151 void PutCodeToLCD( Byte *pBuffer, Uchar Loop )
152 {
153 1
154 1 do {
155 2 LCDSendData( *pBuffer );
156 2 pBuffer++;
157 2 }while (--Loop);
158 1
159 1 }
160
161
162
163
164
165 /*=============================================================================
166 Description:
167
168 0 <= Value <= 7, total 8 step
169
170 =============================================================================*/
171 void LCDSetContrast( Uchar Value )
172 {
173 1 LCDSendCMD( 0x20 + Value );
174 1 }
175
176
177 /*=============================================================================
178 Description:
C51 COMPILER V7.20 LCD_DRV 03/24/2007 10:02:37 PAGE 4
179
180 display special data or clear screen
181
182 =============================================================================*/
183 void LCDClearLine( Uchar page, Uchar column, Uint16 Length )
184 {
185 1 SetLCDAddress( page, column );
186 1
187 1 do{
188 2 LCDSendData( 0 );
189 2 }while( --Length );
190 1 }
191
192
193 /*=============================================================================
194 Description:
195
196 =============================================================================*/
197 void LCDPowerOff()
198 {
199 1
200 1 // turn off LCM
201 1 // mNT7502DisplayOff;
202 1
203 1 // clear all screen data
204 1 LCDSendCMD(0XA0);
205 1
206 1 // turn off power..
207 1 // mNT7502PowerOff;
208 1 }
209
210
211
212 /*=============================================================================
213 Description:
214
215 this function can directly access NT7502 module
216 to execute a NT7502 command
217
218 =============================================================================*/
219 void LCDSendCommand( Uchar cmd )
220 {
221 1 LCDSendCMD( cmd );
222 1 }
223
224
225 /*=============================================================================
226 Description:
227
228 this function can directly access NT7502 module
229 to write a data to NT7502
230
231 =============================================================================*/
232
233
234 void Draw8x6Icons( Uchar Page, Uchar Column, Uchar Index )
235 {
236 1 SetLCDAddress( Page , Column );
237 1 PutCodeToLCD( &Icon8x6[Index][0], 6 );
238 1 }
239
240
C51 COMPILER V7.20 LCD_DRV 03/24/2007 10:02:37 PAGE 5
241 void Draw2Digit( Uchar Pos, Uchar HexCode )
242 {
243 1 int i,j;
244 1 i = HexCode / 10;
245 1 j = HexCode %10;
246 1 //CalVar2.be.h8 = HexCode / 10;
247 1 //CalVar2.be.l8 = HexCode / 10;
248 1
249 1 if ( i > 9 )
250 1 i = 9;
251 1
252 1 Draw8x6Icons( 2, Pos, i );
253 1 Draw8x6Icons( 2, Pos + 6, j );
254 1
255 1 }
256
257
258
259 void prints(unsigned char * temp)
260 {
261 1 while((*temp)!='\0')
262 1 {
263 2 LCDSendData(*temp);
264 2 temp++;
265 2 }
266 1 }
267 void PutToChina(Uchar Page ,Uchar Column,Byte *prt )
268 {
269 1 // Uchar i;
270 1 //SetLCDAddress( Page, Column );
271 1 /* for(i=0;i<32;i++);
272 1 {
273 1 if(i==16)
274 1 {
275 1 SetLCDAddress( Page , Column+1);
276 1 }
277 1 LCDSendData(*prt);
278 1 prt++;
279 1 }
280 1 */
281 1 Uchar Loop=32;
282 1
283 1 do {
284 2 if(Loop==16)
285 2 {
286 3 SetLCDAddress( Page+1 , Column);
287 3 }
288 2 LCDSendData( *prt );
289 2 prt++;
290 2 }while (--Loop);
291 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 585 ----
CONSTANT SIZE = 120 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.20 LCD_DRV 03/24/2007 10:02:37 PAGE 6
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -