📄 display.lst
字号:
211 1 if( display_flag )
212 1 {/*要求反显*/
213 2 lcd_write_command(LCD_CMD_REVERSE);
214 2 }
215 1 else
216 1 {/*正常显示*/
217 2 lcd_write_command(LCD_CMD_NORMAL);
218 2 }
219 1
220 1
221 1 return(0);
222 1 }
223
224 /***************************************
225 *
226 *return 0:OK, other:ERROR
227 ****************************************/
228 char display_position_increment(void)
229 {
230 1
231 1 display_column ++;
232 1 if( display_column == LCD_WIDTH )
233 1 {
234 2 if( display_row == (LCD_LINES-1) )
235 2 return -1;
236 2 else
237 2 {
238 3 display_column = 0;
C51 COMPILER V7.09 DISPLAY 09/25/2008 11:56:15 PAGE 5
239 3 display_row ++;
240 3 }
241 2
242 2 display_attribute(display_column, display_row, display_flag);
243 2 }
244 1
245 1 return 0;
246 1 }
247
248 void lcd_start_ddram(void)
249 {
250 1 lcd_serial_send(0xFA); /*RW=0, RS=1*/
251 1 }
252
253 /*向LCD的显示缓冲区中写入数据*/
254 char lcd_write_ddram(unsigned char value)
255 {
256 1 unsigned char tmp;
257 1
258 1 if( display_column >= LCD_WIDTH )
259 1 {
260 2 if( display_row >= (LCD_LINES-1) )
261 2 return -1;
262 2 else
263 2 {
264 3 display_column = 0;
265 3 display_row ++;
266 3 }
267 2
268 2 lcd_delay();
269 2 display_attribute(display_column, display_row, display_flag);
270 2 lcd_delay();
271 2 lcd_start_ddram();
272 2 }
273 1
274 1 tmp = value & 0xF0;
275 1 lcd_serial_send(tmp);
276 1 tmp = (value & 0x0F) * 16;
277 1 lcd_serial_send(tmp);
278 1
279 1 display_column ++;
280 1 *dispBufPtr++ = value;
281 1 //lcd_delay();
282 1 return(0);
283 1 }
284
285 void lcd_clear_srceen(void)
286 {
287 1 unsigned char i;
288 1
289 1 lcd_write_command(LCD_CMD_CLS);
290 1 for(i=0; i<LCD_WIDTH*LCD_LINES; i++)
291 1 displayBuffer[i] = 0x20;
292 1 lcd_delay();
293 1 }
294
295
296 /****************************************************
297 *在当前位置显示一串字符串。
298 *汉字要求在0,2,4,6,8,10,12,14列。否则无法正常显示汉字和自定义字符。
299 *****************************************************/
300 unsigned char display_string(unsigned char *strLcd)
C51 COMPILER V7.09 DISPLAY 09/25/2008 11:56:15 PAGE 6
301 {
302 1 unsigned char tmp;
303 1
304 1 if( *strLcd )
305 1 lcd_start_ddram();
306 1
307 1 if( (*strLcd < 0xA0) && (display_column&1) )
308 1 {/*第1个字符是ASCII,且显示在半个汉字位置,要补齐高位字节*/
309 2 tmp = *dispBufPtr;
310 2 display_column--;
311 2 lcd_write_ddram(tmp);
312 2 lcd_delay();
313 2 }
314 1
315 1 while( *strLcd )
316 1 {
317 2 if( *strLcd <0x80 )
318 2 {/*显示ASCII*/
319 3 lcd_write_ddram(*strLcd++);
320 3 }
321 2 else if( *strLcd >= 0xA0 )
322 2 {/*显示汉字*/
323 3 if( display_column&1 )
324 3 {
325 4 lcd_write_ddram(0x20);
326 4 }
327 3
328 3 lcd_write_ddram(*strLcd++);
329 3 lcd_write_ddram(*strLcd++);
330 3 }
331 2 else
332 2 {/*显示自定义符号*/
333 3 tmp = *strLcd ++;
334 3
335 3 if( display_column&1 )
336 3 {
337 4 lcd_write_ddram(0x20);
338 4 }
339 3
340 3 if( tmp == GRAPHICS_GPS )
341 3 {
342 4 lcd_write_ddram(0x00);
343 4 lcd_write_ddram(0x00);
344 4 }
345 3 else if( tmp == GRAPHICS_GPRS )
346 3 {
347 4 lcd_write_ddram(0x00);
348 4 lcd_write_ddram(0x02);
349 4 }
350 3 else if(tmp == GRAPHICS_ALARM)
351 3 {
352 4 lcd_write_ddram(0x00);
353 4 lcd_write_ddram(0x04);
354 4 }
355 3 else
356 3 {
357 4 lcd_write_ddram(0x00);
358 4 lcd_write_ddram(0x06);
359 4 }
360 3 }
361 2
362 2 }
C51 COMPILER V7.09 DISPLAY 09/25/2008 11:56:15 PAGE 7
363 1 return 1;
364 1 }
365
366 void lcd_set_bitmap(void)
367 {
368 1 unsigned char gi;
369 1
370 1 for(gi=0;gi<16;gi++)
371 1 {
372 2 lcd_set_cgram_site(GRAPHICS_GPS & 0x03, gi);
373 2 lcd_write_data(bitmap_gps_up[gi][0]);
374 2 lcd_write_data(bitmap_gps_up[gi][1]);
375 2 }
376 1 for(gi=0;gi<16;gi++)
377 1 {
378 2 lcd_set_cgram_site(GRAPHICS_GPRS & 0x03, gi);
379 2 lcd_write_data(bitmap_gprs_up[gi][0]);
380 2 lcd_write_data(bitmap_gprs_up[gi][1]);
381 2 }
382 1 for(gi=0;gi<16;gi++)
383 1 {
384 2 lcd_set_cgram_site(GRAPHICS_ALARM & 0x03, gi);
385 2 lcd_write_data(bitmap_warning[gi][0]);
386 2 lcd_write_data(bitmap_warning[gi][1]);
387 2 }
388 1 for(gi=0;gi<16;gi++)
389 1 {
390 2 lcd_set_cgram_site(GRAPHICS_MESSAGE & 0x03, gi);
391 2 lcd_write_data(bitmap_message[gi][0]);
392 2 lcd_write_data(bitmap_message[gi][1]);
393 2 }
394 1 }
395
396 void lcd_init(void)
397 {
398 1 display_column = 0;
399 1 display_row = 0;
400 1 dispBufPtr = displayBuffer;
401 1
402 1 lcd_write_command(LCD_CMD_BASE);
403 1 lcd_write_command(LCD_CMD_INC);
404 1 lcd_write_command(LCD_CMD_ZERO);
405 1
406 1 lcd_clear_srceen();
407 1
408 1 lcd_set_bitmap();
409 1
410 1 lcd_write_command(LCD_CMD_NORMAL);
411 1 //lcd_delay();
412 1 }
413
414
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 950 ----
CONSTANT SIZE = 128 ----
XDATA SIZE = 70 6
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.09 DISPLAY 09/25/2008 11:56:15 PAGE 8
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -