📄 lcd12864.lst
字号:
204 4 }
205 3 else if(y==0)
206 3 {
207 4 for(i=x;i<0;i++)
208 4 Locat_Dot(x1+i,y1);
209 4 }
210 3 else
211 3 {
212 4 for(i=y;i<0;i++)
213 4 { x=x1+i/y_add;
214 5 Locat_Dot(x,y1+i);
215 5 }
216 4 }
217 3 }
218 2 }
219 1 delay(200);
220 1
221 1 }
222 /*------------------初始化-----------------*/
223 void init_lcd (void)
224 {
225 1 P3=P3|0x10;
226 1 delay(20);
227 1 P3=P3&0x08;
228 1 delay(20);
229 1 wr_lcd (comm,0x30); /*30---基本指令动作*/
230 1 wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
231 1 delay (100);
232 1 wr_lcd (comm,0x06); /*光标的移动方向*/
233 1 wr_lcd (comm,0x0c); /*开显示,关游标*/
234 1 delay(200);
235 1
236 1 }
237 /*---------------显示汉字或字符----------------*/
238 void character_dis(uchar code *chn)
239 {
240 1 uchar i,j;
241 1 wr_lcd (comm,0x30);
C51 COMPILER V8.02 LCD12864 05/19/2009 15:36:03 PAGE 5
242 1 wr_lcd (comm,0x80);
243 1 for (j=0;j<4;j++)
244 1 {
245 2 for (i=0;i<16;i++)
246 2 wr_lcd (dat,chn[j*16+i]);
247 2 }
248 1
249 1 }
250 /*-----------上半屏显示汉字或字符------------*/
251 void upper_display (uchar code *chn)
252 {
253 1 uchar i,j;
254 1 wr_lcd (comm,0x30);
255 1
256 1 wr_lcd (comm,0x80);
257 1 j=0;
258 1 for (i=0;i<16;i++)
259 1 wr_lcd (dat,chn[j*16+i]);
260 1
261 1 wr_lcd (comm,0x90);
262 1 j=1;
263 1 for (i=0;i<16;i++)
264 1 wr_lcd (dat,chn[j*16+i]);
265 1 }
266 /*----------------显示图形-----------------*/
267 void graph (uchar code *img)
268 {
269 1 uchar i,j;
270 1 for(j=0;j<32;j++)
271 1 {
272 2 for(i=0;i<8;i++)
273 2 {
274 3 wr_lcd (comm,0x34);
275 3 wr_lcd (comm,0x80+j);
276 3 wr_lcd (comm,0x80+i); //上一屏
277 3 wr_lcd (comm,0x30);
278 3 wr_lcd (dat,img[j*16+i*2]);
279 3 wr_lcd (dat,img[j*16+i*2+1]);
280 3 }
281 2 }
282 1 for(j=32;j<64;j++)
283 1 {
284 2 for(i=0;i<8;i++)
285 2 {
286 3 wr_lcd (comm,0x34);
287 3 wr_lcd (comm,0x80+j-32);
288 3 wr_lcd (comm,0x88+i); //下一屏
289 3 wr_lcd (comm,0x30);
290 3 wr_lcd (dat,img[j*16+i*2]);
291 3 wr_lcd (dat,img[j*16+i*2+1]);
292 3 }
293 2 }
294 1 wr_lcd (comm,0x36);
295 1 }
296 /*-------------下半屏显示图形--------------*/
297 void down_graph (uchar code *img)
298 {
299 1 uchar i,j;
300 1 for(j=0;j<32;j++)
301 1 {
302 2 for(i=0;i<8;i++)
303 2 {
C51 COMPILER V8.02 LCD12864 05/19/2009 15:36:03 PAGE 6
304 3 wr_lcd (comm,0x34);
305 3 wr_lcd (comm,0x80+j);
306 3 wr_lcd (comm,0x88+i);
307 3 wr_lcd (comm,0x30);
308 3 wr_lcd (dat,img[j*16+i*2]);
309 3 wr_lcd (dat,img[j*16+i*2+1]);
310 3 }
311 2 }
312 1 wr_lcd (comm,0x36);
313 1 }
314 /*--------------显示点阵----------------*/
315 void lattice_disp (uchar data1,uchar data2)
316 {
317 1 uchar i,j,k,x;
318 1 x=0x80;
319 1 for(k=0;k<2;k++)
320 1 {
321 2 for(j=0;j<16;j++)
322 2 {
323 3 for(i=0;i<8;i++)
324 3 {
325 4 wr_lcd (comm,0x34);
326 4 wr_lcd (comm,0x80+j*2);
327 4 wr_lcd (comm,x+i);
328 4 wr_lcd (comm,0x30);
329 4 wr_lcd (dat,data1);
330 4 wr_lcd (dat,data1);
331 4 }
332 3 for(i=0;i<8;i++)
333 3 {
334 4 wr_lcd (comm,0x34);
335 4 wr_lcd (comm,0x80+j*2+1);
336 4 wr_lcd (comm,x+i);
337 4 wr_lcd (comm,0x30);
338 4 wr_lcd (dat,data2);
339 4 wr_lcd (dat,data2);
340 4 }
341 3 }
342 2 x=0x88;
343 2 }
344 1 wr_lcd (comm,0x36);
345 1 delay(200);
346 1
347 1 }
348 /*-----------------------------------------------*/
349 //当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.
350 void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
351 {
352 1 uchar i,j;
353 1 for(j=0;j<yl;j++)
354 1 {
355 2 for(i=0;i<xl;i++)
356 2 {
357 3 wr_lcd (comm,0x34);
358 3 wr_lcd (comm,y0+j);
359 3 wr_lcd (comm,x0+i);
360 3 wr_lcd (comm,0x30);
361 3 wr_lcd (dat,data1);
362 3 wr_lcd (dat,data2);
363 3 }
364 2 }
365 1 wr_lcd (comm,0x36);
C51 COMPILER V8.02 LCD12864 05/19/2009 15:36:03 PAGE 7
366 1 }
367 /*--------------清DDRAM------------------*/
368 void clr_ddram (void)
369 {
370 1 wr_lcd (comm,0x30);
371 1 wr_lcd (comm,0x01);
372 1 delay (180);
373 1 }
374 /*--------------清GDRAM------------------*/
375 void clr_gdram (void)
376 {
377 1 lattice_disp(0x00,0x00);
378 1 delay(200);
379 1
380 1 }
381 /*
382 void Clr_gdram(void)
383 {
384 uchar x,y;
385 wr_lcd (comm,0x34); //开启扩充指令集 并关绘图显示
386
387 for(y=0;y<32;y++)
388 {
389 wr_lcd (comm,y+0x80); //行地址
390 wr_lcd (comm,0x80); //列地址
391 for(x=0;x<16;x++)
392 {
393 wr_lcd (dat,0x00);
394 wr_lcd (dat,0x00);
395 }
396 }
397 wr_lcd (comm,0x36); //开绘图显示
398 }
399
400 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2405 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1024 39
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -