12864LCD with Chinese character library (PIC program)

EL-C1600N100013-B
13MHZ original stock
Probe high frequency needle 10445 with line high frequency needle with 1 high frequency core can pass 3A
#include ;__CONFIG_DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ; chip configuration word, watchdog off, power-on delay on, power-down detection off, low-voltage programming off, encryption, 4M crystal HS oscillation #define RSPORTA,5 ; Command/Data Selection #define RWPORTA,4 ; read/write selection #define EPORTA,3 ; Enable signal #define PSBPORTA, 2 ; parallel port / serial port selection (H / L) #define RSTPORTA,0 ; reset signal ;----------------------------------------------- LCD_X EQU 30H ; page address LCD_Y EQU 31H ; Y address COUNT EQU 32H ; loop count COUNT1 EQU 33H ; loop count COUNT2 EQU 34H ; loop count COUNT3 EQU 35H ;----------------------------------------------- POINT EQU 36H ; lookup table offset address POINT1 EQU 37H ; lookup table offset address POINT2 EQU 38H ; lookup table offset address POINT3 EQU 40H TEMP EQU 39H ; temporary register TEMP1 EQU 3AH ; temporary register ;----------------------------------------------- ORG 0000H ; reset address NOP ; empty instructions required by ICD GOTO MAIN ; jump to the main program ;********************** main program ************************** MAIN BANKSEL TRISA CLRF TRISA ; A port output CLRF TRISD ; D port output BANKSEL ADCON1 MOVLW 06H MOVWF ADCON1 ; A port is all digital port CLRF STATUS BCF RST ; reset LCD CALL DELAY ; delay for a while BSF RST ; clear reset signal NOP BSF PSB ; parallel communication ;**************************initialization********************** MOVLW 30H ; basic instruction operation CALL SEND_I MOVLW 01H ; clear display CALL SEND_I MOVLW 06H ; specifies the direction in which the cursor moves when writing or reading CALL SEND_I MOVLW 0CH ; On display, off cursor, not flashing CALL SEND_I ;***********************Show Chinese characters ************************** HAN_WR2 CALL CLEAR_P ; clear screen HAN_WR2A ; "Shenzhen Ganlongsheng Electronics" CALL QUSHU GOTO $ ;************************ Write preparation*********************** WR_ZB MOVLW 34H CALL SEND_I MOVFW LCD_Y ; Y address CALL SEND_I MOVFW LCD_X ; page address CALL SEND_I MOVLW 30H CALL SEND_I RETURN ;***********************Clear screen************************ CLEAR_P MOVLW 1H ; clear display CALL SEND_I RETURN ;***********************Fetch display program ******************* CLRF POINT ; the lower address of the fetch address CLRF POINT+1 ; the address of the fetch is 8 bits high (because a total of (128/8) * 64 data is required) CLRF POINT2 ; temporary register of POINT CLRF POINT3 ; temporary register of POINT+1 MOVLW 02H ; the whole screen is divided into two small screens (32 lines per small screen) MOVWF COUNT3 MOVLW 80H ; starting address of the upper half of the screen MOVWF LCD_X QUSHU1 MOVLW 80H ; the address of the first byte of each line MOVWF LCD_Y MOVLW 20H ; 32 lines per small screen MOVWF COUNT2 QUSHU2 MOVLW 10H ; 16 bytes per line (16*8=128) MOVWF COUNT1 CALL WR_ZB ; call write preparation function QUSHU3 CALL TAB1 ; look up the table CALL SEND_D ; written to the GDROM of the LCD CLRF POINT3 INCF POINT, 1 ; offset address plus 1, find the next data BTFSC STATUS, Z ; whether there are overflows in the lower 8 bits INCF POINT+1, 1 ; Yes, high 8 digits +1 DECFSZ COUNT1, 1 ; whether to write a line of 16 bytes GOTO QUSHU3 ; No, go back and continue writing INCFLCD_Y, 1 ; Yes, write a line DECFSZ COUNT2, 1 ; whether to write 32 lines GOTO QUSHU2 ; No, continue to write MOVLW 88H ; Yes, write half screen MOVWF LCD_X DECFSZ COUNT3, 1 ; whether to write the lower half of the screen GOTO QUSHU1 ; No, continue to write ; yes, open display MOVLW 36H ; extended instruction, graphic display on CALL SEND_I MOVLW 30H ; basic instructions CALL SEND_I RETURN ;************************ Send data to LCD*********************** ; write data subroutine ; RS=1, RW=0, E=high pulse, D0-D7=data ;************************************************* ********* SEND_D MOVWF TEMP1 ; temporary data CALL CHK_BUSY ; determine if the bus is busy BSF RS BCF RW MOVFW TEMP1 MOVWF PORTD ; send data BSF E NOP NOP BCF E RETURN ;************************ Send commands to LCD*********************** ; write instruction subroutine ; RS=0, RW=0, E=high pulse, D0-D7=execution code ;************************************************* ********* SEND_I MOVWF TEMP1 ; staging command CALL CHK_BUSY ; determine if the bus is busy BCF RS BCF RW MOVFW TEMP1 MOVWF PORTD ; send command BSF E NOP NOP BCF E RETURN ;************************Check if the bus is busy *********************** ; measuring busy subroutine ; RS=0, RW=1, E=H, D0-D7=Status Word ;************************************************* ********* CHK_BUSY BANKSEL TRISD MOVLW 0FFH MOVWF TRISD ; D port is set to input CLRF STATUS MOVLW 0FFH MOVWF PORTD BCF RS BSF RW CHECK_BUSY_1 NOP NOP NOP BSF E NOP NOP NOP BTFSS PORTD, 7 ; D7 is high for bus busy, low for bus idle GOTO $+6 NOP NOP NOP BCF E GOTO CHECK_BUSY_1 BCF E BANKSEL TRISD CLRF TRISD ; restore D port as output CLRF STATUS RETURN ;***************************Delay program******************* DELAY MOVLW 0afH MOVWF 20H MOVLW 0ffh MOVWF 21H DECFSZ 21H, 1 GOTO $-1 DECFSZ 20H, 1 GOTO $-5 RETURN ;***************************Delay program 1****************** ; display flashing DELAY1 MOVLW 05H MOVWF 22H CALL DELAY DECFSZ 22H, 1 GOTO $-2 RETURN ;***************************Data Form******************** TAB1 MOVLW LOW(TAB1A); Get the lower 8-bit address of the data header ADDWF POINT, 0 ; and take the lower 8 bits of the number MOVWF POINT2 ; dumped to POINT2 BTFSC STATUS, C ; determine if the lower 8 bits have overflow INCF POINT3, 1 ; Yes, high 8 digits +1 MOVLW HIGH(TAB1A); Get the upper 8-bit address of the data header ADDWF POINT3, 0 ADDWF POINT+1, 0 ; and the upper 8 bits of the number MOVWF PCLATH ; prepare the top 5 of the PC MOVFW POINT2 MOVWF PCL ; prepare the lower 8 bits of the PC TAB1A: ; data sheet DT 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00 DT 0X18, 0XFC, 0XB7, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XE0, 0X00, 0X00 DT 0X1E, 0X7F, 0X0C, 0X00, 0X00, 0X07, 0XFF, 0XFF, 0X80, 0X00, 0X0F, 0XF8, 0X7F, 0XE0, 0X03, 0XC0 DT 0X1F, 0XE7, 0X80, 0X00, 0X00, 0X7F, 0XFF, 0XFF, 0XC0, 0X00, 0X7F, 0XE1, 0XFF, 0XE0, 0X0C, 0X60 DT 0X1F, 0X9B, 0XE0, 0X00, 0X01, 0XFF, 0XFF, 0XFF, 0XF0, 0X01, 0X80, 0X07, 0XFF, 0XE0, 0X0C, 0X60 DT 0X1F, 0XCF, 0XE0, 0X00, 0X1F, 0XFF, 0XFF, 0XFF, 0XF8, 0X01, 0X00, 0X1F, 0XFF, 0XE0, 0X0C, 0X60 DT 0X13, 0XE4, 0XF0, 0X00, 0X7F, 0XFF, 0XFF, 0XFF, 0XFE, 0X00, 0X00, 0XFF, 0X0E, 0X20, 0X0C, 0X60 DT 0X10,0XF0,0XF0,0X00,0XFF,0XFE,0XFF,0XFF,0XFF,0X00,0X00,0XF8,0X0E,0X20,0X0C,0X60 DT 0X1C, 0X7C, 0X38, 0X01, 0XEF, 0XF4, 0X0F, 0XFF, 0XFF, 0X80, 0X00, 0X00, 0X7F, 0XE0, 0X0C, 0X60 DT 0X1F, 0X1E, 0X08, 0X03, 0X9F, 0XC0, 0X00, 0XFE, 0XFF, 0XC0, 0X00, 0X07, 0XFF, 0XE0, 0X0D, 0X60 DT 0X1F, 0X03, 0X80, 0X07, 0X27, 0X80, 0X00, 0X3F, 0X3F, 0XE0, 0X00, 0X7F, 0XFF, 0XE0, 0X0D, 0XE0 DT 0X1E, 0XE0, 0XC0, 0X06, 0X4F, 0X00, 0X00, 0X3F, 0XBF, 0XF0, 0X00, 0XFE, 0X1C, 0X20, 0X07, 0XC0 DT 0X1F, 0XF0, 0X20, 0X0E, 0X4E, 0X00, 0X00, 0X1F, 0XCF, 0XF8, 0X00, 0X00, 0X7F, 0XA0, 0X00, 0XC0 DT 0X1F, 0XFE, 0X00, 0X0C, 0X9C, 0X00, 0X00, 0X0F, 0XFF, 0XF8, 0X00, 0X00, 0X7F, 0XE0, 0X00, 0XE0 DT 0X1F, 0XFF, 0X80, 0X1D, 0XF8, 0X00, 0X00, 0X0F, 0XF3, 0XFC, 0X00, 0X3F, 0X8E, 0XE0, 0X00, 0X00 DT 0X1E, 0X03, 0X00, 0X1F, 0X78, 0X00, 0X00, 0X07, 0XC7, 0XFC, 0X00, 0X0F, 0X7F, 0XA0, 0X00, 0X00 DT 0X1F, 0X80, 0X00, 0X1B, 0XF0, 0X00, 0X00, 0X09, 0XCF, 0XFC, 0X00, 0X00, 0X0F, 0XE0, 0X0F, 0X00 DT 0X1F, 0XFE, 0X00, 0X19, 0XF0, 0X00, 0X00, 0X07, 0XC9, 0XFE, 0X00, 0X07, 0X1F, 0XE0, 0X06, 0X00 DT 0X1F, 0XFF, 0XC0, 0X0F, 0XE0, 0X00, 0X00, 0X03, 0XC1, 0XFE, 0X00, 0XFF, 0XFF, 0XE0, 0X06, 0X00 DT 0X1F, 0XC0, 0X40, 0X0F, 0XC0, 0X00, 0X00, 0X03, 0XE7, 0XFE, 0X00, 0X9F, 0XFF, 0X20, 0X06, 0X00 DT 0X1F, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X07, 0XE7, 0XFC, 0X00, 0X0B, 0XCF, 0X20, 0X06, 0X00 DT 0X1F, 0X78, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X07, 0XE7, 0XFC, 0X00, 0X00, 0X0F, 0XE0, 0X06, 0X00 DT 0X1F, 0XFF, 0X80, 0X07, 0XF0, 0X00, 0X00, 0X03, 0XEF, 0XFC, 0X00, 0X00, 0X3F, 0XE0, 0X06, 0X00 DT 0X13, 0XFF, 0XE0, 0X07, 0XFE, 0X01, 0XE0, 0X01, 0XCF, 0XFC, 0X00, 0X00, 0X3F, 0XE0, 0X06, 0X60 DT 0X1F, 0XFC, 0X00, 0X07, 0XE3, 0X03, 0XF8, 0X06, 0XDF, 0XFC, 0X00, 0X1F, 0XFE, 0X60, 0X06, 0X60 DT 0X1F, 0X80, 0X00, 0X03, 0X80, 0X80, 0XC0, 0X01, 0XFF, 0XF8, 0X00, 0X0F, 0X3F, 0XE0, 0X0F, 0XE0 DT 0X1C, 0X00, 0X00, 0X01, 0X80, 0X41, 0XC0, 0X06, 0XFF, 0XF8, 0X00, 0X00, 0XF3, 0XE0, 0X00, 0X00 DT 0X13, 0XFC, 0X00, 0X03, 0XFC, 0X41, 0XFC, 0X03, 0X7F, 0XF0, 0X00, 0X00, 0X0F, 0XE0, 0X00, 0X00 DT 0X1F, 0XFF, 0X00, 0X03, 0XFE, 0X40, 0XFF, 0X00, 0XFF, 0XF0, 0X00, 0X07, 0XFF, 0XE0, 0X07, 0XC0 DT 0X1F, 0XC0, 0X00, 0X02, 0XF0, 0X40, 0XE1, 0X00, 0X78, 0XF0, 0X00, 0X3C, 0XFC, 0X20, 0X0C, 0X60 DT 0X1E, 0X00, 0X00, 0X02, 0XC0, 0XC0, 0X60, 0X00, 0XF3, 0X70, 0X00, 0X03, 0XFF, 0XE0, 0X00, 0X60 DT 0X10,0X00,0X00,0X02,0X00,0X80,0X60,0X00,0X67,0X30,0X00,0X00,0X7F,0XE0,0X00,0XC0 DT 0X17, 0XFF, 0X00, 0X03, 0X01, 0X80, 0X30, 0X00, 0XFC, 0XB0, 0X00, 0X3F, 0XCF, 0XE0, 0X01, 0X80 DT 0X1F, 0XFA, 0X00, 0X03, 0X03, 0X80, 0X18, 0X01, 0XFC, 0X70, 0X00, 0X3C, 0X8F, 0XE0, 0X03, 0X00 DT 0X1F, 0XB0, 0X00, 0X03, 0X0F, 0X00, 0X0C, 0X02, 0XFE, 0X30, 0X00, 0X0D, 0X3F, 0X60, 0X06, 0X00 DT 0X1F, 0X00, 0X00, 0X03, 0X0F, 0X00, 0X04, 0X05, 0XEE, 0X30, 0X00, 0X03, 0XDF, 0X20, 0X0C, 0X00 DT 0X1C, 0X00, 0X00, 0X02, 0X01, 0X06, 0X00, 0X07, 0XE3, 0X30, 0X01, 0X00, 0XDF, 0XE0, 0X0C, 0X60 DT 0X10,0X1E,0X00,0X03,0X03,0X03,0X80,0X07,0XF1,0X30,0X00,0XE0,0X33,0XE0,0X0F,0XE0 DT 0X1F, 0XEC, 0X00, 0X02, 0X03, 0X01, 0XE0, 0X09, 0XF0, 0X60, 0X00, 0X3C, 0X8E, 0X60, 0X00, 0X00 DT 0X1F, 0X30, 0X00, 0X03, 0X03, 0X9D, 0X30, 0X13, 0XFC, 0X60, 0X00, 0X1F, 0X3F, 0XA0, 0X00, 0X00 DT 0X1F, 0XC1, 0X8C, 0X02, 0X81, 0XF3, 0X10, 0X0F, 0XF0, 0XC0, 0X03, 0X87, 0XC7, 0XE0, 0X03, 0X80 DT 0X1A, 0X06, 0X30, 0X03, 0X03, 0X80, 0X08, 0X13, 0XE0, 0XC0, 0X00, 0XE3, 0XF1, 0XE0, 0X06, 0XC0 DT 0X1C, 0X1C, 0X40, 0X01, 0X82, 0X00, 0X04, 0X0F, 0XE1, 0X80, 0X00, 0X78, 0XFE, 0X60, 0X0C, 0X60 DT 0X13, 0XF8, 0X80, 0X01, 0X46, 0X00, 0X00, 0X07, 0XE3, 0X00, 0X00, 0X3E, 0X7F, 0XE0, 0X0C, 0X60 DT 0X1F, 0X63, 0X00, 0X01, 0X8C, 0X00, 0X00, 0X07, 0XFE, 0X00, 0X00, 0X0F, 0X9F, 0XE0, 0X0D, 0X60 DT 0X1F, 0X8E, 0X04, 0X01, 0X47, 0XEE, 0X00, 0X07, 0XFE, 0X00, 0X00, 0X87, 0XEF, 0XE0, 0X0D, 0X60 DT 0X1E, 0X3C, 0X1C, 0X00, 0XA7, 0XFF, 0X8C, 0X03, 0XF8, 0X00, 0X00, 0XC1, 0XFF, 0XE0, 0X0C, 0X60 DT 0X1F, 0X78, 0X38, 0X00, 0XC3, 0X93, 0X8E, 0X07, 0XF0, 0X00, 0X00, 0X78, 0X7F, 0XE0, 0X0C, 0X60 DT 0X1F, 0XF1, 0X60, 0X00, 0XE3, 0X80, 0X06, 0X07, 0XF0, 0X00, 0X00, 0X3A, 0X1F, 0XE0, 0X06, 0XC0 DT 0X1F, 0XE1, 0X40, 0X00, 0X13, 0XC8, 0X00, 0X0B, 0XF0, 0X00, 0X00, 0X1E, 0X13, 0XE0, 0X03, 0X80 DT 0X17, 0X8F, 0X84, 0X00, 0X61, 0XF8, 0X00, 0X17, 0XF0, 0X00, 0X00, 0X0F, 0XB0, 0XE0, 0X00, 0X00 DT 0X1F, 0X1E, 0X29, 0X80, 0X33, 0X00, 0X00, 0X0F, 0XFC, 0X00, 0X00, 0X43, 0XFD, 0X60, 0X00, 0X00 DT 0X1E, 0X7C, 0X73, 0X00, 0X3A, 0X10, 0X00, 0X0F, 0XF4, 0X00, 0X00, 0X21, 0XFF, 0XA0, 0X03, 0X80 DT 0X15,0XF8,0XE3,0X00,0X1E,0X18,0X00,0X1F,0XF6,0X00,0X00,0X18,0XFF,0XE0,0X06,0XC0 DT 0X1B, 0XE1, 0X86, 0X00, 0X1E, 0X00, 0X00, 0X3F, 0XE6, 0X00, 0X03, 0X0E, 0X7F, 0XE0, 0X0C, 0X60 DT 0X1F, 0XC7, 0X8C, 0X00, 0X1E, 0X00, 0X00, 0X7F, 0XE7, 0X00, 0X03, 0X85, 0X1B, 0XE0, 0X0C, 0X60 DT 0X1F, 0X0F, 0X39, 0X20, 0X07, 0X00, 0X01, 0XFF, 0XCF, 0X00, 0X01, 0XC3, 0XCD, 0XE0, 0X0D, 0X60 DT 0X1E, 0X3E, 0X73, 0X40, 0X03, 0X80, 0X0F, 0XFF, 0X9F, 0X80, 0X00, 0XF1, 0XF0, 0X60, 0X0D, 0X60 DT 0X18,0X7C,0XF6,0X20,0X01,0XE0,0X3F,0XFE,0X3F,0XE0,0X00,0X78,0XFE,0X60,0X0C,0X60 DT 0X11, 0XFB, 0XE6, 0X40, 0X01, 0XFF, 0XFF, 0XFC, 0X7F, 0XFC, 0X08, 0X3C, 0X7F, 0XE0, 0X0C, 0X60 DT 0X1F, 0XF7, 0XFE, 0X40, 0X02, 0XFF, 0XFF, 0XF9, 0XFF, 0XFF, 0X00, 0X0F, 0X3F, 0XE0, 0X06, 0XC0 DT 0X1F, 0XFF, 0XFC, 0X88, 0X06, 0XFF, 0XFD, 0XF3, 0XFF, 0XFF, 0XC1, 0X8F, 0X9F, 0XE0, 0X03, 0X80 DT 0X1F, 0XFF, 0XB9, 0X38, 0X0E, 0XFE, 0X71, 0XE7, 0XFF, 0XFF, 0XE8, 0XC3, 0XEF, 0XE0, 0X00, 0X00 DT 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00 ;***************************End of source program******************* End

Microsoft Surface Charger

Microsoft Surface charger have 4 types. For Surface Pro 1/2/3/4.

Surface Pro 1/2: 12V 3.6A

Surface Pro 3: 12V 2.58A

Surface Pro 4: 15V 1.6A


Microsoft charger has different connector with other Laptop Adapter. Its connector is magnetic tip.

Definitely Charge Faster, excellent power supply for Microsoft Surface Pro. Just drop it in your bag or even pocket and get going – no need to carry anything else, as power is always within easy reach.

Microsoft Surface Charger,Microsoft Surface RT Charger,Microsoft Surface Tablet Charger,Charger For Microsoft Surface

Shenzhen Waweis Technology Co., Ltd. , https://www.waweis.com