📄 lcd12864.lst
字号:
178 1 return 0;
179 1 else
C51 COMPILER V8.02 LCD12864 03/12/2009 22:02:27 PAGE 4
180 1 return 1;
181 1 }
182
183 /***************************************
184 向LCD指定位置画一条长度为Length的指定颜色的水平线
185 ****************************************/
186 void Lcd_HoriLine(unsigned char x,unsigned char y,unsigned char Length,unsigned char Color)
187 {
188 1 unsigned char i;
189 1 if(Length==0)
190 1 return;
191 1 for(i=0;i<Length;i++)
192 1 {
193 2 Lcd_PutPixel(x+i,y,Color);
194 2 }
195 1 }
196
197 /***************************************
198 向LCD指定位置画一条长度为Length的指定颜色的垂直线
199 ****************************************/
200 void Lcd_VertLine(unsigned char x,unsigned char y,unsigned char Length,unsigned char Color)
201 {
202 1 unsigned char i;
203 1 if(Length==0)
204 1 return;
205 1 for(i=0;i<Length;i++)
206 1 {
207 2 Lcd_PutPixel(x,y+i,Color);
208 2 }
209 1 }
210
211 /*******************************************
212 向LCD指定起始坐标和结束坐标之间画一条指定颜色的直线
213 ********************************************/
214 void Lcd_Line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char Color)
215 {
216 1 unsigned int x,y;
217 1 unsigned int d_x,d_y;//d_x=x2-x1;d_y=y2-y1;
218 1 int err=0;
219 1 unsigned char temp=0;
220 1 if(y2<y1)
221 1 {
222 2 x=x1;
223 2 y=y1;
224 2 x1=x2;
225 2 y1=y2;
226 2 x2=x;
227 2 y2=y;
228 2 }
229 1 d_y=y2-y1;
230 1 if (d_y==0)
231 1 {
232 2 if (x1>x2)
233 2 {
234 3 x=x1;
235 3 x1=x2;
236 3 x2=x;
237 3 }
238 2 for (x=x1;x<=x2;x++)
239 2 Lcd_PutPixel(x,y1,Color);
240 2 }
241 1
C51 COMPILER V8.02 LCD12864 03/12/2009 22:02:27 PAGE 5
242 1 else
243 1 {
244 2 if(x2>=x1)
245 2 {
246 3 temp=1;
247 3 d_x=x2-x1;
248 3 }
249 2 else
250 2 d_x=x1-x2;
251 2 x=x1;
252 2 y=y1;
253 2 Lcd_PutPixel(x,y,1);
254 2
255 2 if(temp&&(d_y<=d_x))
256 2 while(x!=x2)
257 2 {
258 3 if(err<0)
259 3 {
260 4 x=x+1;
261 4 err=err+(y2-y);
262 4 }
263 3 else
264 3 {
265 4 x=x+1;
266 4 y=y+1;
267 4 err=err+(y2-y)-(x2-x);
268 4 }
269 3 Lcd_PutPixel(x,y,Color);
270 3 }
271 2
272 2 else if(temp&&(d_y>d_x))
273 2 while(y!=y2)
274 2 {
275 3 d_x=x2-x;
276 3 d_y=y2-y;
277 3 if(err<0)
278 3 {
279 4 x=x+1;
280 4 y=y+1;
281 4 err=err+d_y-d_x;
282 4 }
283 3 else
284 3 {
285 4 y=y+1;
286 4 err=err-d_x;
287 4 }
288 3 Lcd_PutPixel(x,y,Color);
289 3
290 3 }
291 2
292 2 else if(!temp&&(d_y<=d_x))
293 2 while(x!=x2)
294 2 {
295 3 d_x=x-x2;
296 3 d_y=y2-y;
297 3 if(err<0)
298 3 {
299 4 x=x-1;
300 4 err=err+d_y;
301 4 }
302 3 else
303 3 {
C51 COMPILER V8.02 LCD12864 03/12/2009 22:02:27 PAGE 6
304 4 x=x-1;
305 4 y=y+1;
306 4 err=err+d_y-d_x;
307 4 }
308 3 Lcd_PutPixel(x,y,Color);
309 3 }
310 2
311 2 else if(!temp &&(d_y>d_x))
312 2 while(y!=y2)
313 2 {
314 3 d_x=x-x2;
315 3 d_y=y2-y;
316 3 if(err<0)
317 3 {
318 4 x=x-1;
319 4 y=y+1;
320 4 err=err+d_y-d_x;
321 4 }
322 3 else
323 3 {
324 4 y=y+1;
325 4 err=err-d_x;
326 4 }
327 3 Lcd_PutPixel(x,y,Color);
328 3 }
329 2 }
330 1 }
331
332 /*******************************************
333 向LCD指定左上角坐标和右下角坐标画一个指定颜色的矩形
334 ********************************************/
335 void Lcd_Rectangle(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char Color
-)
336 {
337 1 unsigned char Temp;
338 1 if(x0>x1)
339 1 {
340 2 Temp=x0;
341 2 x0=x1;
342 2 x1=Temp;
343 2 }
344 1 if(y0>y1)
345 1 {
346 2 Temp=y0;
347 2 y0=y1;
348 2 y1=Temp;
349 2 }
350 1 Lcd_VertLine(x0,y0,y1-y0+1,Color);
351 1 Lcd_VertLine(x1,y0,y1-y0+1,Color);
352 1 Lcd_HoriLine(x0,y0,x1-x0+1,Color);
353 1 Lcd_HoriLine(x0,y1,x1-x0+1,Color);
354 1 }
355
356 /****************************************
357 对称法画圆的8个镜像点
358 *****************************************/
359 void CircleDot(unsigned char x,unsigned char y,char xx,char yy,unsigned char Color)//内部函数,对称法画圆
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -