1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| #include "lcd.h"
uchar code agd[] = { 0x04,0x1f,0x11,0x0a,0x1f,0x04,0x1B,0x00, 0x00,0x1f,0x04,0x04,0x04,0x04,0x1f,0x00, 0x04,0x04,0x1f,0x04,0x04,0x0a,0x11,0x00 };
void delay(uint j) { uchar i=250; for(;j>0;j--) { while(--i); i=249; while(--i); i=250; } }
void check_busy(void) { uchar dt; do { LCDDATA =0xff; E=0; RS=0; RW=1; E=1; dt= LCDDATA; }while(dt&0x80); E=0; }
void write_command(uchar com) { check_busy(); E=0; RS=0; RW=0; LCDDATA =com; E=1; _nop_( ); E=0; delay(1); } void write_data(uchar dat) { check_busy(); E=0; RS=1; RW=0; LCDDATA =dat; E=1; _nop_(); E=0; delay(1); }
void lcd_initial(void) { delay(100); write_command(0x38); write_command(0x0c); write_command(0x06); write_command(0x01); delay(1); }
void string(uchar ad,uchar *s) { write_command(ad); while(*s>0) { write_data(*s++); delay(1); } }
void lcd_writeCGRAM(void) { uchar i; write_command(0x40+0x00); for (i=0;i<24;i++) { write_data(agd[i]); } }
void lcd_CG_Disp(void) { write_command(0x80+0x02); write_data(0x00); delay(100); write_data(0x01); delay(100); write_data(0x02); delay(100); }
void write_sfm(uchar ad, uchar dat) { write_command(ad); write_data(dat/10%10+0x30); write_data(dat/1%10+0x30); }
|