📄 p0902-ird.lst
字号:
247 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00
248 };
249
250 //---------------------------------------
251 //名称: 5110LCD初始化函数
252 //作者:cby
253 //网站:宁波单片机开发网
254 //网址:www.nbdpj.com
255 //邮箱:nbdpj@nbdpj.com
256 //日期:20081111
257 //-----------------------------------------
258 void LCD_init(void)
259 {
260 1 LCD_write_byte(0x21,0);//LCD功能设置:芯片活动,水平寻址,使用扩展指令
261 1 LCD_write_byte(0xc5,0);//设置VOP值,室温下的编程范围为3.00-10.68
262 1 //Vlcd=3.06+(VOP)*0.06,本例VOP为0B0101 0000为十进制的80,Vlcd=7.86V
263 1 LCD_write_byte(0x20,0);//LCD功能设置:芯片活动,水平寻址,使用基本指令
264 1 LCD_write_byte(0x0C,0);//设定显示配置:普通模式
265 1 }
266 //---------------------------------------
267 //名称: LCD清屏函数
268 //作者:cby
269 //网站:宁波单片机开发网
270 //网址:www.nbdpj.com
271 //邮箱:nbdpj@nbdpj.com
272 //日期:20081111
273 //-----------------------------------------
274 void LCD_clear(void)
275 {
276 1 unsigned char t;
277 1 unsigned char k;
278 1 for(t=0;t<6;t++)
279 1 {
280 2 for(k=0;k<84;k++)
281 2 {
282 3 LCD_write_byte(0,1);
283 3 }
284 2 }
285 1 }
286 //---------------------------------------
287 //名称: 设置坐标函数
288 //参数:X:0-83 Y:0-5
289 //作者:cby
290 //网站:宁波单片机开发网
291 //网址:www.nbdpj.com
292 //邮箱:nbdpj@nbdpj.com
293 //日期:20081111
294 //-----------------------------------------
295 void LCD_set_XY(unsigned char X, unsigned char Y)
296 {
297 1 LCD_write_byte(0x40 | Y, 0);
298 1 LCD_write_byte(0x80 | X, 0);
299 1 }
300 //---------------------------------------
301 //名称: SPI初始化函数
302 //作者:cby
303 //网站:宁波单片机开发网
C51 COMPILER V8.05a P0902_IRD 04/01/2009 22:16:33 PAGE 6
304 //网址:www.nbdpj.com
305 //邮箱:nbdpj@nbdpj.com
306 //日期:20090325
307 //-----------------------------------------
308 void init_spi()
309 {
310 1 P1M0=0X00;
311 1 P1M1=0XA0;
312 1 SPCTL=0XD0;
313 1 SPSTAT=0XC0;
314 1 }
315 //---------------------------------------
316 //名称: 使用SPI接口写数据到LCD
317 //参数:dt:写入的数据 command: 1-数据/0-命令
318 //作者:cby
319 //网站:宁波单片机开发网
320 //网址:www.nbdpj.com
321 //邮箱:nbdpj@nbdpj.com
322 //日期:20090325
323 //-----------------------------------------
324 void LCD_write_byte(unsigned char dt, unsigned char command)
325 {
326 1 sce=0;
327 1 dc=command;
328 1 SPDAT=dt;
329 1 while(!(SPSTAT&0X80));
330 1 SPSTAT=0XC0;
331 1 dc=1;
332 1 sce=1;
333 1 sdin=1;
334 1 }
335 //---------------------------------------
336 //名称: 写一个汉字到LCD函数
337 //参数:x,y:写入汉字的地址 address: 写入汉字在han表格中的位置
338 //作者:cby
339 //网站:宁波单片机开发网
340 //网址:www.nbdpj.com
341 //邮箱:nbdpj@nbdpj.com
342 //日期:20081111
343 //-----------------------------------------
344 void disp16_16(unsigned char x,unsigned char y,unsigned char address)
345 {
346 1 unsigned char c;
347 1 LCD_set_XY(x*8, y);
348 1 for(c=0;c<16;c++)
349 1 {
350 2 LCD_write_byte(han[address*32+c],1);
351 2 }
352 1 LCD_set_XY(x*8, y+1);
353 1 for(c=16;c<32;c++)
354 1 {
355 2 LCD_write_byte(han[address*32+c],1);
356 2 }
357 1 }
358 //---------------------------------------
359 //名称: 写一个字符到LCD函数(8*16点阵)
360 //参数:x,y:写入字符的地址 c: 写入字符在shu表格中的位置
361 //作者:cby
362 //网站:宁波单片机开发网
363 //网址:www.nbdpj.com
364 //邮箱:nbdpj@nbdpj.com
365 //日期:20081111
C51 COMPILER V8.05a P0902_IRD 04/01/2009 22:16:33 PAGE 7
366 //-----------------------------------------
367 void disp8_16(unsigned char x,unsigned char y,unsigned char c)
368 {
369 1 unsigned char i;
370 1 LCD_set_XY(x*8, y);
371 1 for(i=0; i<8;i++)
372 1 {
373 2 LCD_write_byte(shuzi[c*16+i],1);
374 2 }
375 1 LCD_set_XY(x*8, y+1);
376 1 for(i=8; i<16;i++)
377 1 {
378 2 LCD_write_byte(shuzi[c*16+i],1);
379 2 }
380 1 }
381 //---------------------------------------
382 //名称: 初始化函数
383 //作者:cby
384 //网站:宁波单片机开发网
385 //网址:www.nbdpj.com
386 //邮箱:nbdpj@nbdpj.com
387 //日期:20081111
388 //-----------------------------------------
389 void init()
390 {
391 1 P2M0=0x0c;
392 1 P2M1=0x00;
393 1 }
394 //---------------------------------------
395 //名称: 按键扫描函数
396 //作者:cby
397 //网站:宁波单片机开发网
398 //网址:www.nbdpj.com
399 //邮箱:nbdpj@nbdpj.com
400 //日期:20081111
401 //-----------------------------------------
402 unsigned char scakey()
403 {
404 1 h1=0;
405 1 h2=1;
406 1 _nop_();
407 1 if(l1==0)
408 1 {
409 2 return 1;
410 2 }
411 1 else if(l2==0)
412 1 {
413 2 return 2;
414 2 }
415 1 h1=1;
416 1 h2=0;
417 1 _nop_();
418 1 if(l1==0)
419 1 {
420 2 return 3;
421 2 }
422 1 else if(l2==0)
423 1 {
424 2 return 4;
425 2 }
426 1 return 0;
427 1 }
C51 COMPILER V8.05a P0902_IRD 04/01/2009 22:16:33 PAGE 8
428 //---------------------------------------
429 //名称: 按键处理函数
430 //作者:cby
431 //网站:宁波单片机开发网
432 //网址:www.nbdpj.com
433 //邮箱:nbdpj@nbdpj.com
434 //日期:20081111
435 //-----------------------------------------
436 void keypro()
437 {
438 1 unsigned char buf;
439 1 buf=scakey();
440 1 if(buf==0)
441 1 {
442 2 if(keybit==0)
443 2 {
444 3 if(++keycon>2000)
445 3 {
446 4 keycon=0;
447 4 keybit=1;
448 4 LCD_clear(); //清屏幕
449 4 }
450 3 }
451 2 }
452 1 else if(buf==1) //K1键处理程序
453 1 {
454 2 if(keybit==1)
455 2 {
456 3 keybit=0;
457 3 disp16_16(0,0,0); //已
458 3 disp16_16(2,0,1); //按
459 3 disp16_16(4,0,2); //下
460 3 disp8_16(6,0,20); //K
461 3 disp8_16(7,0,1); //1
462 3 disp16_16(8,0,3); //键
463 3 send_all(0x00,0x08);
464 3 while(l1==0)
465 3 {
466 4 repeat();
467 4 }
468 3 }
469 2 }
470 1 else if(buf==2) //K2键处理程序
471 1 {
472 2 if(keybit==1)
473 2 {
474 3 keybit=0;
475 3 disp16_16(0,0,0); //已
476 3 disp16_16(2,0,1); //按
477 3 disp16_16(4,0,2); //下
478 3 disp8_16(6,0,20); //K
479 3 disp8_16(7,0,2); //2
480 3 disp16_16(8,0,3); //键
481 3 send_all(0x00,0x09);
482 3 while(l2==0)
483 3 {
484 4 repeat();
485 4 }
486 3 }
487 2 }
488 1 else if(buf==3) //K3键处理程序
489 1 {
C51 COMPILER V8.05a P0902_IRD 04/01/2009 22:16:33 PAGE 9
490 2 if(keybit==1)
491 2 {
492 3 keybit=0;
493 3 disp16_16(0,0,0); //已
494 3 disp16_16(2,0,1); //按
495 3 disp16_16(4,0,2); //下
496 3 disp8_16(6,0,20); //K
497 3 disp8_16(7,0,3); //3
498 3 disp16_16(8,0,3); //键
499 3 send_all(0x00,0x11);
500 3 while(l1==0)
501 3 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -