📄 lcd_12864.lst
字号:
248 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
249 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
250 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
251 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
252 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
253 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
254 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
255 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
256 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
257 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
258 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
259 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
260 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
261 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
262 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
263 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
264 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
265 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
266 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
267 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
268 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
269 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
270 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
271 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
272 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
273 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
274 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
275 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
276
277 };
278
279 void System_initial( )
280 {
281 1 uint i;
282 1
283 1 WDTCN=0xde;
284 1 WDTCN=0xad;
285 1
286 1 OSCXCN=0x67;
287 1 for (i=0;i<256;i++) ;
288 1 while (!(OSCXCN&0x80));
289 1 OSCICN = 0x88;
290 1
291 1 }
292
293 void Port_initial( ) //端口配置对程序很有影响
294 {
295 1 XBR0=0x00;
296 1 XBR1=0x00;
297 1 XBR2=0x40;
298 1 P74OUT=0xff; //p4口低3位做液晶控制口,p5口做液晶数据口
299 1 //P7做AD7520的高8位,P6低2位做ad7520低2位
300 1
301 1 P0MDOUT=0xff; //P0口作FPGA数据口
302 1 P1MDOUT=0x00; //P1口键盘输入
303 1 P2MDOUT=0xff; //P2口高3位控制AD9851,P2低2位控制FPGA的数据选择位
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 6
304 1 P3MDOUT=0xff; //P3口做AD9851的数据口
305 1
306 1
307 1 }
308
309
310 /*------------------初始化-----------------*/
311 void init_lcd (void)
312 {
313 1 //P4=P4&0xfe;//LCD_RST=0; //P4=P4&0x 1110 1111
314 1 //delay(10);
315 1 //P4=P4|0x80;
316 1 //P4=P4|0x01;//LCD_RST=1; //P4=P4|0x 0001 0000
317 1 //delay(10);
318 1
319 1 P0=P0|0x10;
320 1 delay(20);
321 1 P0=P0|0x08;
322 1 delay(20);
323 1 wr_lcd (comm,0x30);/*30---基本指令动作*/
324 1 delay(20);
325 1 wr_lcd (comm,0x0c); /*开显示,关游标*/
326 1 delay(20);
327 1 wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
328 1 delay(20);
329 1 wr_lcd (comm,0x06); /*光标的移动方向*/
330 1 delay(20);
331 1
332 1 }
333 /*---------------显示汉字或字符----------------*/
334 void chn_disp (uchar code *chn)
335 {
336 1 uchar i,j;
337 1 wr_lcd (comm,0x30);
338 1 wr_lcd (comm,0x80);
339 1 for (j=0;j<4;j++)
340 1 {
341 2 for (i=0;i<16;i++)
342 2 wr_lcd (dat,chn[j*16+i]);
343 2 }
344 1 }
345 /*-----------上半屏显示汉字或字符------------*/
346 void chn_disp1 (uchar code *chn)
347 {
348 1 uchar i,j;
349 1 wr_lcd (comm,0x30);
350 1 wr_lcd (comm,0x80);
351 1 j=0;
352 1 for (i=0;i<16;i++)
353 1 wr_lcd (dat,chn[j*16+i]);
354 1 wr_lcd (comm,0x90);
355 1 j=1;
356 1 for (i=0;i<16;i++)
357 1 wr_lcd (dat,chn[j*16+i]);
358 1 }
359
360 /*void point()
361 {
362 wr_lcd (comm,0x34);
363 wr_lcd (comm,y+20);
364 wr_lcd (comm,x1+21);
365 wr_lcd (comm,0x30);
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 7
366 wr_lcd (dat,0xaa);
367 wr_lcd (dat,0xaa);
368 wr_lcd (comm,0x36);
369 }*/
370
371 void Locat_Dot(uchar x_loc,uchar y_loc)//参数是:点的坐标
372 {
373 1 uchar s0;
374 1 uint dot_data,ori_data1,ori_data2;
375 1 uchar Column,move;
376 1 if(y_loc>31){
377 2 Column = x_loc/16;
378 2 y_loc = 63 - y_loc ;}
379 1 else
380 1 {
381 2 y_loc = 31 - y_loc ;
382 2 Column = (x_loc/16)+8;
383 2 }
384 1 move = x_loc%16;
385 1 /*wr_lcd (comm,0x34);
386 1 wr_lcd (comm,y+y_loc);
387 1 wr_lcd (comm,x1+Column);
388 1 wr_lcd (dat,0xbb);
389 1 wr_lcd (dat,0xaa);
390 1 wr_lcd (comm,0x36);*/
391 1 wr_lcd (comm,0x34);
392 1 wr_lcd (comm,y+y_loc);
393 1 wr_lcd (comm,x1+Column);
394 1 s0=Read_state();
395 1 ori_data1=Read_state();
396 1 ori_data2=Read_state();
397 1 if(move<8){
398 2 dot_data = 0x80>>move;
399 2 dot_data = dot_data | ori_data1;
400 2 wr_lcd (comm,0x34);
401 2 wr_lcd (comm,y+y_loc);
402 2 wr_lcd (comm,x1+Column);
403 2 wr_lcd (comm,0x30);
404 2 wr_lcd (dat,dot_data);
405 2 wr_lcd (dat,ori_data2);
406 2 wr_lcd (comm,0x36);
407 2 delay(20);
408 2 }
409 1 else{
410 2 move=move-8;
411 2 dot_data = 0x80>>move;
412 2 dot_data = dot_data | ori_data2;
413 2 wr_lcd (comm,0x34);
414 2 wr_lcd (comm,y+y_loc);
415 2 wr_lcd (comm,x1+Column);
416 2 wr_lcd (comm,0x30);
417 2 wr_lcd (dat,ori_data1);
418 2 wr_lcd (dat,dot_data);
419 2 wr_lcd (comm,0x36);
420 2 delay(20);
421 2 }
422 1
423 1 }
424
425 void Line(uchar a1,uchar b1,uchar a2,uchar b2)
426 {
427 1 //y1 = 64 - y1 ;
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 8
428 1 //y2 = 64 - y2 ;
429 1 char i;
430 1 char a,b;
431 1 float y_add;
432 1 a=a2-a1;
433 1 b=b2-b1;
434 1 if(a==0)//画竖线
435 1 {
436 2 if(b>0)
437 2 { for(i=0;i<b;i++)//上升
438 3 Locat_Dot(a1,b1+i);
439 3 }
440 2 else if(b==0) //画点
441 2 Locat_Dot(a1,b1);
442 2 else //下降
443 2 { for(i=b;i<0;i++)
444 3 Locat_Dot(a1,b1+i);
445 3 }
446 2 }
447 1 else y_add = b*1.000/a; //斜线:斜率
448 1
449 1 if(a>0)//正向
450 1 {
451 2 if((y_add<=1)&&(y_add>=-1))//0°~~ 45°到135°~~ 180°
452 2 {
453 3 for(i=0;i<a;i++)
454 3 {
455 4 delay(20);
456 4 b=b1+y_add*i;
457 4 Locat_Dot(a1+i,b);
458 4 }
459 3 }
460 2 else
461 2 {
462 3 if(b>0) //正向上升
463 3 {
464 4 for(i=0;i<b;i++)
465 4 {
466 5 a=a1+i/y_add;
467 5 Locat_Dot(a,b1+i);
468 5 }
469 4 }
470 3 else if(b==0)//水平线
471 3 {
472 4 for(i=0;i<a;i++)
473 4 Locat_Dot(a1+i,b1);
474 4 }
475 3 else //正向下降
476 3 {
477 4 for(i=b;i<0;i++)
478 4 {
479 5 a=a1+i/y_add;
480 5 Locat_Dot(a,b1+i);
481 5 }
482 4 }
483 3 }
484 2 }//正向
485 1 else if(a<0)//反向
486 1 {
487 2 if(y_add <=1&&y_add>=-1)//0°~ 45°到 135°~ 180°
488 2 {
489 3 for(i=a;i<0;i++)
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 9
490 3 {
491 4 b=b1+y_add*i;
492 4 Locat_Dot(a1+i,b);
493 4 }
494 3 }
495 2 else
496 2 {
497 3 if(b>0)
498 3 {
499 4 for(i=0;i<b;i++)
500 4 {
501 5 a=a1+i/y_add;
502 5 Locat_Dot(a,b1+i);
503 5 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -