📄 lcd_3200.lst
字号:
219 1 return (byte + 0x37);
220 1 }
221
222
223
224
225
226 void initLCD(void)
227 /******************************************************************************
228 Function : void initLCD()
229 Parameters : (void)
230 Description: initialize LCD module per specs
231 ******************************************************************************/
232 {
233 1 #ifdef LCD_BCBuffer
234 1 int i;
235 1 #endif
236 1
237 1 LCD_delay_ms(15);
238 1 LCD_reg.LCD_CMD_WR = 0x30;
239 1 LCD_delay_ms(4);
240 1 LCD_reg.LCD_CMD_WR = 0x30;
241 1 LCD_delay_ms(1);
C51 COMPILER V8.05a LCD_3200 03/06/2008 14:22:29 PAGE 5
242 1 LCD_reg.LCD_CMD_WR = 0x30;
243 1 LCD_delay_ms(1);
244 1
245 1 LCD_reg.LCD_CMD_WR = 0x38; // 8 bits, 2 lines, 5 x 7 font
246 1 LCD_delay_ms(4); // delay 4 ms
247 1 BusyCheck();
248 1 LCD_reg.LCD_CMD_WR = 0x0C; //Display on, Cursor off, Non-Blink
249 1 BusyCheck();
250 1 LCD_reg.LCD_CMD_WR = 0x01; //Clear display
251 1 BusyCheck();
252 1 LCD_reg.LCD_CMD_WR = 0x02; //Cursor home
253 1 BusyCheck();
254 1 LCD_reg.LCD_CMD_WR = 0x06; //Cursor inc, no shift/cursor move
255 1
256 1 SetUserCG(&cg_data); //set user desfined character
257 1
258 1 Cursor_LCD = DD_ADDR; //Display from 1st row, 1st column
259 1 BusyCheck();
260 1 LCD_reg.LCD_CMD_WR = Cursor_LCD;
261 1
262 1 #ifdef LCD_BCBuffer
263 1 // Initialize mirror buffer
264 1 for (i=0;i<LCD_ColNumBuf*LCD_RowNum;i++) // Clear IAP&D display memory
265 1 {
266 2 LCD_buffer[i] = ' ';
267 2 }
268 1 //add user character at the end of line
269 1 LCD_buffer[LCD_ColNum+0] = 13;
270 1 LCD_buffer[LCD_ColNum+1] = 10; //new line indicator for WinApp terminal
271 1
272 1 LCD_buffer[LCD_ColNumBuf+LCD_ColNum+0] = 0;
273 1 LCD_buffer[LCD_ColNumBuf+LCD_ColNum+1] = 0;// END OF STRING
274 1 #endif
275 1
276 1 LCDDisp_XPos = 0; // Cursor position at home
277 1 LCDDisp_YPos = 0;
278 1
279 1 //please see LCD_3200.H for more details about the buffer
280 1
281 1 }
282
283
284
285
286 void putch_LCD(unsigned char ch)
287 /******************************************************************************
288 Function : void putch_LCD()
289 Parameters : (unsigned char ch)
290 Description: basic char out function
291 ******************************************************************************/
292 {
293 1 BusyCheck();
294 1 LCD_reg.LCD_RAM_WR = ch;
295 1
296 1 #ifdef LCD_BCBuffer
297 1 if (LCDDisp_XPos<LCD_ColNum)
298 1 {
299 2 LCD_buffer[LCDDisp_YPos*LCD_ColNumBuf+LCDDisp_XPos] = ch;
300 2 }
301 1 #endif
302 1
303 1 if (LCDDisp_XPos <= LCD_ColNum)
C51 COMPILER V8.05a LCD_3200 03/06/2008 14:22:29 PAGE 6
304 1 {
305 2 LCDDisp_XPos++;
306 2 }
307 1
308 1 }
309
310
311
312
313
314 void printfLCD(uchar *chr_ptr, ...)
315 /******************************************************************************
316 Function : void printfLCD()
317 Parameters : (uchar *chr_ptr, ...)
318 Description: works as prinf, but for LCD
319 ******************************************************************************/
320 {
321 1
322 1 unsigned char *var_ptr=&chr_ptr+1;
323 1 unsigned char var;
324 1 unsigned int i;
325 1
326 1 while (*chr_ptr != NULL)
327 1 {
328 2 BusyCheck();
329 2 if (*chr_ptr == '\r')
330 2 {
331 3 chr_ptr++;
332 3 Cursor_LCD &= 0xC0; //return to position 0 at current line
333 3 LCD_reg.LCD_CMD_WR = Cursor_LCD;
334 3
335 3 LCDDisp_XPos = 0;
336 3 }
337 2 else
338 2 if (*chr_ptr == '\n')
339 2 {
340 3 chr_ptr++;
341 3 Cursor_LCD ^= 0x40; //goto next line
342 3 Cursor_LCD &= 0xC0; //return to position 0
343 3 LCD_reg.LCD_CMD_WR = Cursor_LCD;
344 3
345 3 LCDDisp_XPos = 0;
346 3 LCDDisp_YPos = LCDDisp_YPos < LCD_RowNum-1 ? LCDDisp_YPos+1:0;
347 3 }
348 2 else
349 2 if (*chr_ptr == '%')
350 2 {
351 3 chr_ptr++;
352 3 if (*chr_ptr == 'd') // display 1 digit decimal 0-9
353 3 {
354 4 chr_ptr++;
355 4 var = *var_ptr++;
356 4 putch_LCD((var & 0x0F)+'0'); // Out character to LCD Display RAM
357 4 }
358 3 else
359 3 if (*chr_ptr == 'x') // display 1 byte hex 00-FF
360 3 {
361 4 chr_ptr++;
362 4 var = *var_ptr++;
363 4 putch_LCD(htoa_hi(var)); // Out character to LCD Display RAM
364 4 putch_LCD(htoa_lo(var)); // Out character to LCD Display RAM
365 4 }
C51 COMPILER V8.05a LCD_3200 03/06/2008 14:22:29 PAGE 7
366 3 else
367 3 if (*chr_ptr == 'w') // display 1 word hex 0000-FFFF
368 3 {
369 4 chr_ptr++;
370 4 var = *var_ptr++;
371 4 putch_LCD(htoa_hi(var)); // Out character to LCD Display RAM
372 4 putch_LCD(htoa_lo(var)); // Out character to LCD Display RAM
373 4 var = *var_ptr++;
374 4 putch_LCD(htoa_hi(var)); // Out character to LCD Display RAM
375 4 putch_LCD(htoa_lo(var)); // Out character to LCD Display RAM
376 4 }
377 3 else
378 3 if (*chr_ptr == 'c') // Display 1 character
379 3 {
380 4 chr_ptr++;
381 4 var = *var_ptr++;
382 4 putch_LCD(var); // Out character to LCD Display RAM
383 4 }
384 3 else
385 3 if (*chr_ptr == 'B') // display 1 byte
386 3 {
387 4 chr_ptr++;
388 4 var = *var_ptr++;
389 4 putch_LCD(48+(var/100)); // Out character to LCD Display RAM
390 4 var = var % 100;
391 4 putch_LCD(48+(var/10)); // Out character to LCD Display RAM
392 4 var = var % 10;
393 4 putch_LCD(48+var); // Out character to LCD Display RAM
394 4 }
395 3 else
396 3 if (*chr_ptr == 'W') // display 1 word
397 3 {
398 4 chr_ptr++;
399 4 i = (*var_ptr++);
400 4 i = i*256;
401 4 i = i+(*var_ptr++);
402 4 putch_LCD(48+(i/10000)); // Out character to LCD Display RAM
403 4 i = i % 10000;
404 4 putch_LCD(48+(i/1000)); // Out character to LCD Display RAM
405 4 i = i % 1000;
406 4 putch_LCD(48+(i/100)); // Out character to LCD Display RAM
407 4 i = i % 100;
408 4 putch_LCD(48+(i/10)); // Out character to LCD Display RAM
409 4 i = i % 10;
410 4 putch_LCD(48+i); // Out character to LCD Display RAM
411 4 }
412 3
413 3
414 3 else
415 3 {
416 4 putch_LCD(*chr_ptr++); // Out character to LCD Display RAM
417 4 }
418 3
419 3 }
420 2 else
421 2 {
422 3 putch_LCD(*chr_ptr++); // Out character to LCD Display RAM
423 3 }
424 2 }
425 1 }
426
427
C51 COMPILER V8.05a LCD_3200 03/06/2008 14:22:29 PAGE 8
428
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1033 ----
CONSTANT SIZE = 9 ----
XDATA SIZE = ---- 52
PDATA SIZE = ---- ----
DATA SIZE = 39 ----
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 + -