📄 lcd.i
字号:
#line 1 "Source\lcd.c" /0 #line 1 "C:\KEIL\C51\INC\CYGNAL\C8051F020.H" /0 sfr P0 = 0x80; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr P4 = 0x84; sfr P5 = 0x85; sfr P6 = 0x86; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr CKCON = 0x8E; sfr PSCTL = 0x8F; sfr P1 = 0x90; sfr TMR3CN = 0x91; sfr TMR3RLL = 0x92; sfr TMR3RLH = 0x93; sfr TMR3L = 0x94; sfr TMR3H = 0x95; sfr P7 = 0x96; sfr SCON0 = 0x98; sfr SBUF0 = 0x99; sfr SPI0CFG = 0x9A; sfr SPI0DAT = 0x9B; sfr ADC1 = 0x9C; sfr SPI0CKR = 0x9D; sfr CPT0CN = 0x9E; sfr CPT1CN = 0x9F; sfr P2 = 0xA0; sfr EMI0TC = 0xA1; sfr EMI0CF = 0xA3; sfr P0MDOUT = 0xA4; sfr P1MDOUT = 0xA5; sfr P2MDOUT = 0xA6; sfr P3MDOUT = 0xA7; sfr IE = 0xA8; sfr SADDR0 = 0xA9; sfr ADC1CN = 0xAA; sfr ADC1CF = 0xAB; sfr AMX1SL = 0xAC; sfr P3IF = 0xAD; sfr SADEN1 = 0xAE; sfr EMI0CN = 0xAF; sfr P3 = 0xB0; sfr OSCXCN = 0xB1; sfr OSCICN = 0xB2; sfr P74OUT = 0xB5; sfr FLSCL = 0xB6; sfr FLACL = 0xB7; sfr IP = 0xB8; sfr SADEN0 = 0xB9; sfr AMX0CF = 0xBA; sfr AMX0SL = 0xBB; sfr ADC0CF = 0xBC; sfr P1MDIN = 0xBD; sfr ADC0L = 0xBE; sfr ADC0H = 0xBF; sfr SMB0CN = 0xC0; sfr SMB0STA = 0xC1; sfr SMB0DAT = 0xC2; sfr SMB0ADR = 0xC3; sfr ADC0GTL = 0xC4; sfr ADC0GTH = 0xC5; sfr ADC0LTL = 0xC6; sfr ADC0LTH = 0xC7; sfr T2CON = 0xC8; sfr T4CON = 0xC9; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2 = 0xCC; sfr TH2 = 0xCD; sfr SMB0CR = 0xCF; sfr PSW = 0xD0; sfr REF0CN = 0xD1; sfr DAC0L = 0xD2; sfr DAC0H = 0xD3; sfr DAC0CN = 0xD4; sfr DAC1L = 0xD5; sfr DAC1H = 0xD6; sfr DAC1CN = 0xD7; sfr PCA0CN = 0xD8; sfr PCA0MD = 0xD9; sfr PCA0CPM0 = 0xDA; sfr PCA0CPM1 = 0xDB; sfr PCA0CPM2 = 0xDC; sfr PCA0CPM3 = 0xDD; sfr PCA0CPM4 = 0xDE; sfr ACC = 0xE0; sfr XBR0 = 0xE1; sfr XBR1 = 0xE2; sfr XBR2 = 0xE3; sfr RCAP4L = 0xE4; sfr RCAP4H = 0xE5; sfr EIE1 = 0xE6; sfr EIE2 = 0xE7; sfr ADC0CN = 0xE8; sfr PCA0L = 0xE9; sfr PCA0CPL0 = 0xEA; sfr PCA0CPL1 = 0xEB; sfr PCA0CPL2 = 0xEC; sfr PCA0CPL3 = 0xED; sfr PCA0CPL4 = 0xEE; sfr RSTSRC = 0xEF; sfr B = 0xF0; sfr SCON1 = 0xF1; sfr SBUF1 = 0xF2; sfr SADDR1 = 0xF3; sfr TL4 = 0xF4; sfr TH4 = 0xF5; sfr EIP1 = 0xF6; sfr EIP2 = 0xF7; sfr SPI0CN = 0xF8; sfr PCA0H = 0xF9; sfr PCA0CPH0 = 0xFA; sfr PCA0CPH1 = 0xFB; sfr PCA0CPH2 = 0xFC; sfr PCA0CPH3 = 0xFD; sfr PCA0CPH4 = 0xFE; sfr WDTCN = 0xFF; sbit TF1 = TCON ^ 7; sbit TR1 = TCON ^ 6; sbit TF0 = TCON ^ 5; sbit TR0 = TCON ^ 4; sbit IE1 = TCON ^ 3; sbit IT1 = TCON ^ 2; sbit IE0 = TCON ^ 1; sbit IT0 = TCON ^ 0; sbit SM00 = SCON0 ^ 7; sbit SM10 = SCON0 ^ 6; sbit SM20 = SCON0 ^ 5; sbit REN0 = SCON0 ^ 4; sbit TB80 = SCON0 ^ 3; sbit RB80 = SCON0 ^ 2; sbit TI0 = SCON0 ^ 1; sbit RI0 = SCON0 ^ 0; sbit EA = IE ^ 7; sbit ET2 = IE ^ 5; sbit ES0 = IE ^ 4; sbit ET1 = IE ^ 3; sbit EX1 = IE ^ 2; sbit ET0 = IE ^ 1; sbit EX0 = IE ^ 0; sbit PT2 = IP ^ 5; sbit PS = IP ^ 4; sbit PT1 = IP ^ 3; sbit PX1 = IP ^ 2; sbit PT0 = IP ^ 1; sbit PX0 = IP ^ 0; sbit BUSY = SMB0CN ^ 7; sbit ENSMB = SMB0CN ^ 6; sbit STA = SMB0CN ^ 5; sbit STO = SMB0CN ^ 4; sbit SI = SMB0CN ^ 3; sbit AA = SMB0CN ^ 2; sbit SMBFTE = SMB0CN ^ 1; sbit SMBTOE = SMB0CN ^ 0; sbit TF2 = T2CON ^ 7; sbit EXF2 = T2CON ^ 6; sbit RCLK0 = T2CON ^ 5; sbit TCLK0 = T2CON ^ 4; sbit EXEN2 = T2CON ^ 3; sbit TR2 = T2CON ^ 2; sbit CT2 = T2CON ^ 1; sbit CPRL2 = T2CON ^ 0; sbit CY = PSW ^ 7; sbit AC = PSW ^ 6; sbit F0 = PSW ^ 5; sbit RS1 = PSW ^ 4; sbit RS0 = PSW ^ 3; sbit OV = PSW ^ 2; sbit F1 = PSW ^ 1; sbit P = PSW ^ 0; sbit CF = PCA0CN ^ 7; sbit CR = PCA0CN ^ 6; sbit CCF4 = PCA0CN ^ 4; sbit CCF3 = PCA0CN ^ 3; sbit CCF2 = PCA0CN ^ 2; sbit CCF1 = PCA0CN ^ 1; sbit CCF0 = PCA0CN ^ 0; sbit AD0EN = ADC0CN ^ 7; sbit AD0TM = ADC0CN ^ 6; sbit AD0INT = ADC0CN ^ 5; sbit AD0BUSY = ADC0CN ^ 4; sbit AD0CM1 = ADC0CN ^ 3; sbit AD0CM0 = ADC0CN ^ 2; sbit AD0WINT = ADC0CN ^ 1; sbit AD0LJST = ADC0CN ^ 0; sbit SPIF = SPI0CN ^ 7; sbit WCOL = SPI0CN ^ 6; sbit MODF = SPI0CN ^ 5; sbit RXOVRN = SPI0CN ^ 4; sbit TXBSY = SPI0CN ^ 3; sbit SLVSEL = SPI0CN ^ 2; sbit MSTEN = SPI0CN ^ 1; sbit SPIEN = SPI0CN ^ 0; #line 25 "Source\lcd.c" /0 #line 1 "SOURCE\LCD.H" /0 void LCDC_Init(void); void LCDC_CheckBusy(void); void LCDC_DisFull(unsigned char Flag); void LCDC_WrCmd(unsigned char dd); void LCDC_SetXY(unsigned char x,unsigned char y); void LCDC_WrData(unsigned char x,unsigned char y,unsigned char dd); unsigned char LCDC_RdData(unsigned char x,unsigned char y); void LCDC_DrawByte(unsigned char x,y,value); void LCDC_DispWord(unsigned char x,y,unsigned char code *p,unsigned char line,length,Flag); void LCDC_DispFWord(unsigned char x,y,unsigned char xdata *p,unsigned char line,length,Flag); #line 26 "Source\lcd.c" /0 #line 1 "C:\KEIL\C51\INC\INTRINS.H" /0 extern void _nop_ (void); extern bit _testbit_ (bit); extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float); extern void _push_ (unsigned char _sfr); extern void _pop_ (unsigned char _sfr); #line 27 "Source\lcd.c" /0 #line 1 "C:\KEIL\C51\INC\MATH.H" /0 #pragma SAVE #pragma REGPARMS extern char cabs (char val); extern int abs (int val); extern long labs (long val); extern float fabs (float val); extern float sqrt (float val); extern float exp (float val); extern float log (float val); extern float log10 (float val); extern float sin (float val); extern float cos (float val); extern float tan (float val); extern float asin (float val); extern float acos (float val); extern float atan (float val); extern float sinh (float val); extern float cosh (float val); extern float tanh (float val); extern float atan2 (float y, float x); extern float ceil (float val); extern float floor (float val); extern float modf (float val, float *n); extern float fmod (float x, float y); extern float pow (float x, float y); #pragma RESTORE #line 28 "Source\lcd.c" /0 unsigned int xdata addr; unsigned char xdata *tp; void LCDC_Init (void) { EA=0; addr = 0x9000 | 0x000c | 0x0000; LCDC_WrCmd (0xc0); LCDC_WrCmd (0x40); LCDC_WrCmd (0xb8); LCDC_WrCmd (0x3f ); EA=1; } void LCDC_DisFull (unsigned char Flag) { unsigned char x,y; if (!Flag) { for (y=0; y<8; y++) for (x=0; x<128; x++) LCDC_WrData (x, y, 0X00); } else { for (y=0; y<8; y++) for (x=0; x<128; x++) LCDC_WrData (x, y, 0XFF); } } void LCDC_CheckBusy (void) { addr = 0x9000 | 0x000c | 0x0002; _nop_();_nop_(); _nop_();_nop_(); do tp = addr; while ((*tp&0x80)==0x80); } void LCDC_WrCmd (unsigned char dd) { EA=0; addr = 0x9000 | 0x000c | 0x0000; tp = addr; *tp = dd; addr &= 0x0800; _nop_();_nop_(); _nop_();_nop_(); EA=1; } void LCDC_SetXY (unsigned char x, unsigned char y) { EA=0; LCDC_CheckBusy (); y &= 0x07; y |= 0xb8; LCDC_WrCmd (y); x &= 0x3f; x |= 0x40; LCDC_WrCmd (x); EA=1; } void LCDC_WrData (unsigned char x, unsigned char y, unsigned char dd) { EA=0; LCDC_SetXY (x,y); LCDC_CheckBusy (); if (x<64) tp = 0x9000 | 0x0004 | 0x0001; else tp = 0x9000 | 0x0008 | 0x0001; *tp = dd; EA=1; } unsigned char LCDC_RdData (unsigned char x, unsigned char y) { unsigned char xdata readdata; LCDC_SetXY (x, y); LCDC_CheckBusy (); if (x<64) { addr = 0x9000 | 0x0004 | 0x0003; tp = 0x9000 | 0x0004 | 0x0003; } else { addr = 0x9000 | 0x0008 | 0x0003; tp = 0x9000 | 0x0008 | 0x0003; } readdata = *tp; LCDC_CheckBusy (); if (x<64) { addr = 0x9000 | 0x0004 | 0x0003; tp = 0x9000 | 0x0004 | 0x0003; } else { addr = 0x9000 | 0x0008 | 0x0003; tp = 0x9000 | 0x0008 | 0x0003; } readdata = *tp; return readdata; } void LCDC_DrawByte (unsigned char x, y, value) { unsigned char data temp,bit_x; bit_x = y%8; y = y/8; if (bit_x==0) LCDC_WrData (x, y, value); else { temp = LCDC_RdData (x, y); temp &= (0xff>>(8-bit_x)); temp |= (value<<bit_x); LCDC_WrData (x, y, temp); temp = LCDC_RdData(x, y+1); temp &= (0xff<<bit_x); temp |= (value>>(8-bit_x)); LCDC_WrData (x, y+1, temp); } } void LCDC_DispWord (unsigned char x, y, unsigned char code *p, unsigned char line, length, Flag) { unsigned char data i,j; y += (4<<line); if (y>64) y = 64; y = 64-y; if (Flag) { for (i=0; i<line; i++) for (j=0; j<length; j++) LCDC_DrawByte (x+j, y+i*8, *p++); } else { for (i=0; i<line; i++) for (j=0; j<length; j++) LCDC_DrawByte (x+j, y+i*8, ~*p++); } } void LCDC_DispFWord (unsigned char x, y, unsigned char xdata *p, unsigned char line, length, Flag) { unsigned char data i,j; y += (4<<line); if (y>64) y=64; y = 64-y; if (Flag) { for (i=0; i<line; i++) for (j=0; j<length; j++) LCDC_DrawByte(x+j, y+i*8, *p++); } else { for (i=0; i<line; i++) for (j=0; j<length; j++) LCDC_DrawByte (x+j, y+i*8, ~*p++); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -