📄 lcd12864.lst
字号:
235 2 }
236 1 else if(srcnum<100)
237 1 for(i=0,j=10,digit=0;i<2;i++)
238 1 {
239 2 digit = srcnum / j;
240 2 srcnum -= digit * j;
241 2 j /= 10;
C51 COMPILER V6.12 LCD12864 07/30/2005 03:09:00 PAGE 5
242 2 line_num = lcd_char_send(char_code[digit+16],page,line_num,bclr);
243 2 }
244 1
245 1 else if(srcnum<1000)
246 1 for(i=0,j=100,digit=0;i<3;i++)
247 1 {
248 2 digit = srcnum / j;
249 2 srcnum -= digit * j;
250 2 j /= 10;
251 2 line_num = lcd_char_send(char_code[digit+16],page,line_num,bclr);
252 2 }
253 1
254 1 else if(srcnum<10000)
255 1 for(i=0,j=1000,digit=0;i<4;i++)
256 1 {
257 2 digit = srcnum / j;
258 2 srcnum -= digit * j;
259 2 j /= 10;
260 2 line_num = lcd_char_send(char_code[digit+16],page,line_num,bclr);
261 2 }
262 1
263 1 else
264 1 for(i=0,j=10000,digit=0;i<5;i++)
265 1 {
266 2 digit = srcnum / j;
267 2 srcnum -= digit * j;
268 2 j/=10;
269 2 line_num = lcd_char_send(char_code[digit+16],page,line_num,bclr);
270 2 }
271 1 return line_num;
272 1
273 1 }
274 //************************************
275 void screen_up(BYTE ustep,WORD ctime)
276 {
277 1 BYTE i;
278 1 for(i=0;i<LCD_NROW;)
279 1 {
280 2 lcd_cmd1_send(i|0xC0);
281 2 lcd_cmd2_send(i|0xC0);
282 2 i += ustep;
283 2 delay(ctime);
284 2 }
285 1 lcd_cmd1_send(0xC0);
286 1 lcd_cmd2_send(0xC0);
287 1
288 1
289 1 }
290 //*******************************************
291 void screen_down(BYTE dstep,WORD ctime)
292 {
293 1 BYTE i;
294 1 for(i=LCD_NROW-1;i<LCD_NROW;)
295 1 {
296 2 lcd_cmd1_send(i|0xC0);
297 2 lcd_cmd2_send(i|0xC0);
298 2 i -= dstep;
299 2 delay(ctime);
300 2 }
301 1 lcd_cmd1_send(0xC0);
302 1 lcd_cmd2_send(0xC0);
303 1
C51 COMPILER V6.12 LCD12864 07/30/2005 03:09:00 PAGE 6
304 1 }
305 //**********************************************
306 void setpos(BYTE px,BYTE py,bit bclr)
307 {
308 1 BYTE page;
309 1 BYTE posdata;
310 1 page = py % 8;
311 1 posdata = 0x01;
312 1 if(page) posdata = _crol_(posdata,page);
313 1 page = py / 8;
314 1 page = page|0xB8;
315 1 if(px<64)
316 1 {
317 2 lcd_cmd1_send(page);
318 2 lcd_cmd1_send(px|0x40);
319 2 if(bclr) lcd_data1_send(posdata);
320 2 else lcd_data1_send(~posdata);
321 2 }
322 1 else
323 1 {
324 2 lcd_cmd2_send(page);
325 2 lcd_cmd2_send((px-64)|0x40);
326 2 if(bclr) lcd_data2_send(posdata);
327 2 else lcd_data2_send(~posdata);
328 2 }
329 1
330 1 }
331 //***********************************************
332 void drawline(BYTE xb,BYTE yb,BYTE xe,BYTE ye,bit bclr)
333 {
334 1 char fm;
335 1 char xstep,ystep;
336 1 BYTE estep;
337 1 BYTE ncase;
338 1 if ( (xe>=xb) && (ye>=yb) ) ncase = 1;
339 1 else if ( (xe<xb) && (ye>=yb) ) ncase = 2;
340 1 else if ( (xe<xb) && (ye<yb) ) ncase = 3;
341 1 else ncase = 4;
342 1 fm = xstep = ystep = 0;
343 1 estep = abs(xe-xb) + 1;
344 1 do
345 1 {
346 2 setpos(xb+xstep,yb+ystep,bclr);
347 2 if(fm>=0)
348 2 {
349 3 switch(ncase)
350 3 {
351 4 case 1: xstep++;
352 4 break;
353 4 case 2: xstep--;
354 4 break;
355 4 case 3: xstep--;
356 4 break;
357 4 case 4: xstep++;
358 4 break;
359 4 default:break;
360 4 }
361 3 fm -= abs(ye-yb);
362 3 estep--;
363 3 }
364 2 else
365 2 {
C51 COMPILER V6.12 LCD12864 07/30/2005 03:09:00 PAGE 7
366 3 switch(ncase)
367 3 {
368 4 case 1: ystep++;
369 4 break;
370 4 case 2: ystep++;
371 4 break;
372 4 case 3: ystep--;
373 4 break;
374 4 case 4: ystep--;
375 4 break;
376 4 default:break;
377 4 }
378 3 fm += abs(xe-xb);
379 3 }
380 2 }while(estep);
381 1
382 1 }
383 //************************************************************************
384 void drawrect(BYTE xb,BYTE yb,BYTE rwidth,BYTE rheight,bit bclr)
385 {
386 1 BYTE i;
387 1 for(i=xb;i<xb+rwidth;i++)
388 1 {
389 2 setpos(i,yb,bclr);
390 2 setpos(i,yb+rheight,bclr);
391 2 }
392 1 for(i=yb;i<yb+rheight;i++)
393 1 {
394 2 setpos(xb,i,bclr);
395 2 setpos(xb+rwidth,i,bclr);
396 2 }
397 1 }
398 //*************************************************************************
399 void drawcircle(BYTE xb,BYTE yb,BYTE cr,bit bclr)
400 {
401 1 int fm;
402 1 char xstep,ystep;
403 1 BYTE estep;
404 1 fm = 0;
405 1 xstep = xb;
406 1 ystep = yb+cr-1;
407 1 estep = 4*cr-3;
408 1 do
409 1 {
410 2 setpos(xstep,ystep,bclr);
411 2 if(fm>=0)
412 2 {
413 3 if ( (xstep>=xb) && (ystep>=yb) )
414 3 {
415 4 xstep--;estep--;
416 4 fm -= (2*xstep-1);
417 4 }
418 3 else if ( (xstep<xb) && (ystep>=yb) )
419 3 {
420 4 ystep--;
421 4 fm -= (2*ystep-1);
422 4 }
423 3 else if ( (xstep<xb) && (ystep<yb) )
424 3 {
425 4 xstep++;estep--;
426 4 fm -= (2*xstep-1);
427 4 }
C51 COMPILER V6.12 LCD12864 07/30/2005 03:09:00 PAGE 8
428 3 else
429 3 {
430 4 ystep++;
431 4 fm -= (2*ystep-1);
432 4 }
433 3 }
434 2 else
435 2 {
436 3 if ( (xstep>=xb) && (ystep>=yb) )
437 3 {
438 4 ystep++;
439 4 fm += (2*ystep+1);
440 4 }
441 3 else if ( (xstep<xb) && (ystep>=yb) )
442 3 {
443 4 xstep--;estep--;
444 4 fm += (2*xstep+1);
445 4 }
446 3 else if ( (xstep<xb) && (ystep<yb) )
447 3 {
448 4 ystep--;
449 4 fm += (2*ystep+1);
450 4 }
451 3 else
452 3 {
453 4 xstep++;estep--;
454 4 fm += (2*xstep+1);
455 4 }
456 3 }
457 2 }while(estep);
458 1
459 1 }
460
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2080 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 63
IDATA SIZE = ---- ----
BIT SIZE = ---- 9
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -