📄 lcd_19264_driver.lst
字号:
256 1 P0=LCD_JHD19264A_DISPLAY_ON; //开显示
257 1 LCD_JHD19264A_E=0; //指令有效
258 1
259 1 LCD_JHD19264A_CSB=0;
260 1 LCD_JHD19264A_CSA=1; //开片选10
261 1 LCD_JHD19264A_Busy();
262 1 LCD_JHD19264A_RS=0;
263 1 LCD_JHD19264A_RW=0; //送指令
264 1 LCD_JHD19264A_E=1;
265 1 P0=LCD_JHD19264A_DISPLAY_ON; //开显示
266 1 LCD_JHD19264A_E=0; //指令有效
267 1 }
268
269 //*******************************************
270 //函数名称:void LCD_JHD19264A_Write(uchar adress,uchar page,uchar count,uchar *pTAB)
271 //函数功能:在液晶上绘制(宽*高=count*8)图形函数.切记:count代表宽!!!!!
272 //形式参数:uchar adress,uchar page,uchar count,uchar *pTAB
273 //行参说明:
274 // adress: 列地址(bit0-5:adressY;bit6-7:CS)
275 // page : 行地址,取值范围0~7
276 // count : 列的点阵个数
277 // *pTAB : 图形点阵表首地址
278 //返回参数:无
279 //使用说明:无
280 //*******************************************
281 void LCD_JHD19264A_Write(uchar adress,uchar page,uchar count,uchar DATA)
282 {
*** WARNING C235 IN LINE 282 OF LCD_19264_DRIVER.C: parameter 4: different types
283 1 uchar dcode;
284 1
285 1 dcode = adress & 0x80; //根据地址DB7设置片选
286 1
287 1 if(dcode)
288 1 LCD_JHD19264A_CSA = 1;
289 1 else
290 1 LCD_JHD19264A_CSA = 0;
291 1
292 1 dcode = adress&0x40;
293 1
294 1 if(dcode) //根据地址DB6设置片选
295 1 LCD_JHD19264A_CSB = 1;
296 1 else
297 1 LCD_JHD19264A_CSB = 0;
298 1
299 1 page |= 0xb8; //设置页地址
300 1 LCD_JHD19264A_Busy();
C51 COMPILER V7.20 LCD_19264_DRIVER 09/20/2008 06:44:13 PAGE 6
301 1 LCD_JHD19264A_RS = 0;
302 1 LCD_JHD19264A_RW = 0; //送指令
303 1 LCD_JHD19264A_E = 1;
304 1 P0 = page;
305 1 LCD_JHD19264A_E=0; //指令有效
306 1
307 1 dcode = adress & 0x3f; //根据DB5~DB0设置起始Y地址
308 1 dcode |= 0x40; //设置Y地址指令的标志位
309 1 LCD_JHD19264A_Busy();
310 1 LCD_JHD19264A_RS = 0;
311 1 LCD_JHD19264A_RW = 0;
312 1 LCD_JHD19264A_E = 1;
313 1 P0 = dcode;
314 1 LCD_JHD19264A_E = 0; //指令有效
315 1
316 1 for( ; count ; count--) //发送显示数据
317 1 {
318 2 dcode = ~DATA;
319 2 LCD_JHD19264A_Busy();
320 2 LCD_JHD19264A_RS = 1;
321 2 LCD_JHD19264A_RW = 0; //写数据
322 2 LCD_JHD19264A_E = 1;
323 2 P0 = dcode;
324 2 LCD_JHD19264A_E = 0; //数据有效
325 2 }
326 1 }
327
328 //*******************************************
329 //函数名称:void LCD_JHD19264A_Clear(void)
330 //函数功能:清屏
331 //形式参数:
332 //行参说明:
333 //返回参数:无
334 //使用说明:无
335 //*******************************************
336 void LCD_JHD19264A_Clear(void)
337 {
338 1 uchar i;
339 1 for(i=0;i<8;i++)
340 1 {
341 2 LCD_JHD19264A_Write(0,i,64,0x00);
342 2 }
343 1 for(i=0;i<8;i++)
344 1 {
345 2 LCD_JHD19264A_Write(0x40,i,64,0x00);
346 2 }
347 1 for(i=0;i<8;i++)
348 1 {
349 2 LCD_JHD19264A_Write(0x80,i,64,0x00);
350 2 }
351 1 }
352
353 //*******************************************
354 //函数名称:void LCD_JHD19264A_Draw_miki(void)
355 //函数功能:画一幅192*64图,米老鼠
356 //形式参数:专业取模软件,纵向取模,字节倒序
357 //行参说明:
358 //返回参数:无
359 //使用说明:无
360 //*******************************************
361 void LCD_JHD19264A_Draw(uchar *Tab)
362 {
C51 COMPILER V7.20 LCD_19264_DRIVER 09/20/2008 06:44:13 PAGE 7
363 1 uint m=0;
364 1 uchar i,j,k=0;
365 1
366 1 {
367 2 for(k=0;k<8;)
368 2 {
369 3 i = *Tab;
370 3 LCD_JHD19264A_Write(k,2,1,i);
371 3 k++;
372 3 Tab++;
373 3 }
374 2 for(k=0;k<8;)
375 2 {
376 3 i = *Tab;
377 3 LCD_JHD19264A_Write(k,1,1,i);
378 3 k++;
379 3 Tab++;
380 3 }
381 2 for(k=8;k<16;)
382 2 {
383 3 i = *Tab;
384 3 LCD_JHD19264A_Write(k,2,1,i);
385 3 k++;
386 3 Tab++;
387 3 }
388 2 for(k=8;k<16;)
389 2 {
390 3 i = *Tab;
391 3 LCD_JHD19264A_Write(k,1,1,i);
392 3 k++;
393 3 Tab++;
394 3 }
395 2 Tab=Tab-32;
396 2 }
397 1 }
*** WARNING C280 IN LINE 364 OF LCD_19264_DRIVER.C: 'j': unreferenced local variable
398
399
400 //从flash中读32字节并转换
401 void getto()
402 {
403 1 uint i = 0;
404 1 ulong adre = 0x1dbc0,buff;
405 1 while(adre < 0x7ffff)
406 1 {
407 2 buff = adre;
408 2 P3 = buff;
409 2 buff >>= 8;
410 2 P7 = buff;
411 2 buff >>= 5;
412 2 P2 = buff;
413 2 adre ++;
414 2
415 2 C29040_OE = 0;
416 2 C29040_OE = 0;
417 2 TAB_274001_1[i] = P6;
418 2 i++;
419 2 if(i==4096)
420 2 adre = 0x7ffff;
421 2 C29040_OE = 1;
422 2
423 2 LCD_JHD19264A_Draw(TAB_274001_1);
C51 COMPILER V7.20 LCD_19264_DRIVER 09/20/2008 06:44:13 PAGE 8
424 2 }
425 1
426 1 }
427
428
429 //以下为测试用例
430
431 void main(void)
432 {
433 1
434 1 uint i = 16,m,n;
435 1 ulong adre = 0x1dbc0,buff;
436 1
437 1 Init_Device();
438 1 LCD_JHD19264A_Init();
439 1 LCD_JHD19264A_Clear();
440 1 /* A16 = 0;
441 1 A17 = 0;
442 1 A18 = 0;
443 1 P3 = 0x00;
444 1 P7 = 0x00;
445 1 C29040_CE = 1;
446 1 C29040_OE = 1;
447 1 // getto();
448 1 LCD_JHD19264A_Draw(TAB_01);
449 1 while(1);
450 1 */
451 1
452 1 /*
453 1
454 1
455 1 while(i)
456 1 {
457 1 buff = adre;
458 1 P3 = i;
459 1 buff >>= 8;
460 1 P7 = 0x00;
461 1 buff >>= 5;
462 1 P2 = buff;
463 1 adre ++;
464 1
465 1 C29040_OE = 0;
466 1 C29040_OE = 0;
467 1 TAB_274001_1[i] = P6;
468 1 i++;
469 1 if(i==12287)
470 1 i=0;
471 1 C29040_OE = 1;
472 1
473 1 LCD_JHD19264A_Draw(TAB_274001_2);
474 1 if(i==48)
475 1 {i=0;break;
476 1 }
477 1 }
478 1 while(1)
479 1 {
480 1 LCD_JHD19264A_Draw(TAB_274001_2);
481 1 }
482 1 */
483 1 while(1)
484 1 {
485 2 LCD_JHD19264A_Draw(TAB_01);
C51 COMPILER V7.20 LCD_19264_DRIVER 09/20/2008 06:44:13 PAGE 9
486 2 for(m=0;m<65535;m++)
487 2 for(n=0;n<25;n++);
488 2 LCD_JHD19264A_Draw(TAB_02);
489 2 for(m=0;m<65535;m++)
490 2 for(n=0;n<30;n++);
491 2 LCD_JHD19264A_Draw(TAB_03);
492 2 for(m=0;m<65535;m++)
493 2 for(n=0;n<30;n++);
494 2 LCD_JHD19264A_Draw(TAB_04);
495 2 for(m=0;m<65535;m++)
496 2 for(n=0;n<30;n++);
497 2
498 2 }
499 1 }
*** WARNING C280 IN LINE 435 OF LCD_19264_DRIVER.C: 'buff': unreferenced local variable
500
501
502
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 940 ----
CONSTANT SIZE = 6144 ----
XDATA SIZE = 1537 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -