📄 lcd12864.lst
字号:
C51 COMPILER V8.02 LCD12864 05/19/2009 15:36:03 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.OBJ
COMPILER INVOKED BY: D:\keilc51\C51\BIN\C51.EXE LCD12864.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"C8051F020.h" //串行通信方式
2
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 #define comm 0
7 #define dat 1
8
9 uint table[8][64]={0}; // 不能写成 :uint code table[8][64]={0};
10
11 void delay (uint us) //delay time
12 {
13 1 while(us--);
14 1 }
15 void delay1 (uint ms)
16 {
17 1 uint i,j;
18 1 for(i=0;i<ms;i++)
19 1 for(j=0;j<15;j++)
20 1 delay(1);
21 1 }
22
23 //-------------------------------------------
24 //-------------------------------------------
25 void wr_lcd (uchar dat_comm,uchar content)
26 {
27 1 uchar a,i,j;
28 1 delay (50);
29 1 a=content;
30 1
31 1 P3=P3|0x01; //cs
32 1
33 1 P3=P3&0xfb; //sclk=0;
34 1 P3=P3|0x02; //std=1;
35 1 for(i=0;i<5;i++)
36 1 {
37 2 P3=P3|0x04; //sclk=1;
38 2 P3=P3&0xfb; //sclk=0;
39 2 }
40 1
41 1 P3=P3&0xfd; //write /*RW*/
42 1 P3=P3|0x04; //sclk=1;
43 1 P3=P3&0xfb; //sclk=0;
44 1
45 1 if(dat_comm)
46 1 P3=P3|0x02; //data /*RS*/
47 1 else //command
48 1 P3=P3&0xfd;
49 1 P3=P3|0x04; //sclk=1;
50 1 P3=P3&0xfb; //sclk=0;
51 1
52 1 P3=P3&0xfd; //std=0;
53 1 P3=P3|0x04; //sclk=1;
54 1 P3=P3&0xfb; //sclk=0;
55 1
C51 COMPILER V8.02 LCD12864 05/19/2009 15:36:03 PAGE 2
56 1 for(j=0;j<2;j++)
57 1 {
58 2 for(i=0;i<4;i++)
59 2 {
60 3 a=a<<1; /*a:要显示的内容;或指令*/
61 3
62 3 if(CY==1)P3=P3|0x02; //std=1; /*std=CY*/
63 3 else P3=P3&0xfd; //std=0;
64 3
65 3 P3=P3|0x04; //sclk=1;
66 3 P3=P3&0xfb; //sclk=0;
67 3 }
68 2 for(i=0;i<4;i++)
69 2 {
70 3 P3=P3&0xfd; //std=0;
71 3 P3=P3|0x04; //sclk=1;
72 3 P3=P3&0xfb; //sclk=0;
73 3 }
74 2 }
75 1 }
76 void Locat_Dot(uchar x_loc, uchar y_loc) //参数是液晶上的坐标 0~127,0~63
77 {
78 1 uint dot_data;
79 1
80 1 uchar Line,Column, move;
81 1 uchar first,second;
82 1 uchar x_axis, y_axis;
83 1
84 1 y_axis = 63-y_loc ;
85 1 x_axis = x_loc/16;
86 1 Line = y_axis;
87 1
88 1 if(y_loc<16)
89 1 {
90 2 Column=0x18+x_axis;
91 2 Line=31-Line;
92 2 }
93 1
94 1 if( (y_loc>16 )&&(y_loc>32))
95 1 {
96 2 Column=0x08+x_axis;
97 2 Line=31-Line;
98 2 }
99 1
100 1 if((y_loc>=32)&&(y_loc<48))
101 1 {
102 2 Column=0x10+x_axis;
103 2 Line=63-Line;
104 2 }
105 1
106 1 if(y_loc>=48)
107 1 {
108 2 Column=0x00+x_axis;
109 2 Line=63-Line;
110 2 }
111 1
112 1 move = x_loc%16;
113 1 dot_data = 0x8000>>move;
114 1 table[x_axis][y_axis] = table[x_axis][y_axis]|dot_data;
115 1 dot_data = table[x_axis][y_axis];
116 1
117 1 delay(100);
C51 COMPILER V8.02 LCD12864 05/19/2009 15:36:03 PAGE 3
118 1 first = dot_data/256;
119 1 second = dot_data%256;
120 1 delay(200);
121 1
122 1 wr_lcd (comm,0x34);
123 1 wr_lcd (comm,0x80+Line);
124 1 wr_lcd (comm,0x80+Column);
125 1 wr_lcd (comm,0x30);
126 1 wr_lcd (dat,first);
127 1 wr_lcd (dat,second);
128 1
129 1 wr_lcd (comm,0x36);
130 1 delay(200);
131 1 }
132
133
134 void Line(uchar x1,uchar y1,uchar x2,uchar y2)
135 {
136 1 char i,x,y;
137 1 float y_add;
138 1 x=x2-x1;
139 1 y=y2-y1;
140 1 if(x==0)
141 1 {
142 2 if(y>0)
143 2 { for(i=0;i<y;i++)
144 3 Locat_Dot(x1,y1+i);
145 3 }
146 2 else if(y==0)
147 2 Locat_Dot(x1,y1);
148 2 else
149 2 { for(i=y;i<0;i++)
150 3 Locat_Dot(x1,y1+i);
151 3 }
152 2 }
153 1 else
154 1 y_add = y*1.000/x;
155 1 if(x>0)
156 1 {
157 2 if(y_add <=1&&y_add>=-1)
158 2 {
159 3 for(i=0;i<x;i++)
160 3 { y=y1+y_add*i;
161 4 Locat_Dot(x1+i,y);
162 4 }
163 3 }
164 2 else
165 2 {
166 3 if(y>0)
167 3 {
168 4 for(i=0;i<y;i++)
169 4 { x=x1+i/y_add;
170 5 Locat_Dot(x,y1+i);
171 5 }
172 4 }
173 3 else if(y==0)
174 3 {
175 4 for(i=0;i<x;i++)
176 4 Locat_Dot(x1+i,y1);
177 4 }
178 3 else
179 3 {
C51 COMPILER V8.02 LCD12864 05/19/2009 15:36:03 PAGE 4
180 4 for(i=y;i<0;i++)
181 4 { x=x1+i/y_add;
182 5 Locat_Dot(x,y1+i);
183 5 }
184 4 }
185 3 }
186 2 }
187 1 else if(x<0)
188 1 {
189 2 if(y_add <=1&&y_add>=-1)
190 2 {
191 3 for(i=x;i<0;i++)
192 3 { y=y1+y_add*i;
193 4 Locat_Dot(x1+i,y);
194 4 }
195 3 }
196 2 else
197 2 {
198 3 if(y>0)
199 3 {
200 4 for(i=0;i<y;i++)
201 4 { x=x1+i/y_add;
202 5 Locat_Dot(x,y1+i);
203 5 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -