📄 lcd12864.lst
字号:
C51 COMPILER V8.02 LCD12864 01/16/2009 17:06:33 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN lcd12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "lcd12864.h"
2
3 unsigned char pointX=32;
4 unsigned char pointY=32;
5
6 void loop_lcd_is_busy(unsigned char right)
7 {
8 1 unsigned char tmp,counter=0;
9 1 do {
10 2 if(right) tmp = LCD_RCR;
11 2 else tmp = LCD_LCR;
12 2 if(counter++>50) break;//超时跳出
13 2 }
14 1 while ((tmp|0x7f)==0xff);
15 1 }
16
17 void lcd_cmd_wr(unsigned char cmdcode,unsigned char right)
18 {
19 1 loop_lcd_is_busy(right);
20 1 if(right) LCD_RCW = cmdcode;
21 1 else LCD_LCW = cmdcode;
22 1 }
23
24 void lcd_dat_wr(unsigned char ldata,unsigned char right)
25 {
26 1 loop_lcd_is_busy(right);
27 1 if(right) LCD_RDW = ldata;
28 1 else LCD_LDW = ldata;
29 1 }
30
31 void lcd_clr(void)
32 {
33 1 unsigned char i,j;
34 1 for(i=0;i<8;i++) {
35 2 lcd_cmd_wr(ORGY+i,0);
36 2 lcd_cmd_wr(ORGX,0);
37 2 lcd_cmd_wr(ORGY+i,1);
38 2 lcd_cmd_wr(ORGX,1);
39 2 for(j=0;j<64;j++) {
40 3 lcd_dat_wr(0,0);
41 3 lcd_dat_wr(0,1);
42 3 }
43 2 }
44 1 }
45
46 void lcd_init(void)
47 {
48 1 lcd_cmd_wr(DISPON,0);
49 1 lcd_cmd_wr(DISPFIRST,0);
50 1 lcd_cmd_wr(ORGY,0);
51 1 lcd_cmd_wr(ORGX,0);
52 1 lcd_cmd_wr(DISPON,1);
53 1 lcd_cmd_wr(DISPFIRST,1);
54 1 lcd_cmd_wr(ORGY,1);
55 1 lcd_cmd_wr(ORGX,1);
C51 COMPILER V8.02 LCD12864 01/16/2009 17:06:33 PAGE 2
56 1 lcd_clr();
57 1 }
58
59 //LCD更新指定列,以列为单位,一次更新1列
60 void lcd_row_wr(unsigned char x,unsigned char *da)//x是列坐标,*da是8字节列数据
61 {
62 1 unsigned char j;
63 1 if(x<64) { //根据列坐标选择左右半屏
64 2 for(j=0;j<8;j++) { //写左半屏
65 3 lcd_cmd_wr(ORGY+j,0);
66 3 lcd_cmd_wr(ORGX+x,0);
67 3 lcd_dat_wr(da[j],0);
68 3 }
69 2 }
70 1 else {
71 2 x-=64;//坐标调整
72 2 for(j=0;j<8;j++) { //写右半屏
73 3 lcd_cmd_wr(ORGY+j,1);
74 3 lcd_cmd_wr(ORGX+x,1);
75 3 lcd_dat_wr(da[j],1);
76 3 }
77 2 }
78 1 }
79
80
81 void lcd_disp(unsigned char x,unsigned char y)
82 {
83 1 unsigned char da[8];
84 1 unsigned char j;
85 1 y = 63-y;
86 1 for(j=1;j<7;j++) da[j] = 0x0;
87 1 {//绘制边框
88 2 da[0]=0x01;
89 2 da[7]=0x80;
90 2 if((x==0)||(x==127)) {
91 3 for(j=0;j<8;j++) da[j] = 0xff;
92 3 }
93 2 }
94 1
95 1 //绘制由变量pointY控制游标线
96 1 if(x%5==0) da[pointY>>3] |= 0x01 << (pointY&0x07);
97 1 //绘制信号波形
98 1 da[y/8] |= 0x01<<(y%8);
99 1 lcd_row_wr(x,da);
100 1 }
101
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 442 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 14
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 + -