📄 main.lst
字号:
.................... // 注 意: 本函数具有自动换行功能
.................... Flag=0 正常显示
.................... Flag=1 反白显示
.................... ***************************************************/
.................... void Display_En_16X8(int8 page,int8 column,int8 len,int8 *En,int1 Flag)
.................... {
.................... int8 i,j,count;
.................... // count=column; //对列进行计数,若大于本行的最大列,则转移到下一行。
....................
.................... page=page%PAGES; //防止输入的行超过0-7
.................... column=column%COLUMNS; //防止输入的列超过0-131
....................
.................... for(i=0;i<len;i++)
.................... {
.................... if(column+8>COLUMNS-1 && page<PAGES-2) //如果本行已经不够显示此字符,且行小于在0-5,则转移到下一行。
.................... {
.................... page+=2;
.................... LCD_SelPage(page); //
.................... LCD_SelColumn(0);
.................... column=0;
.................... }
....................
.................... LCD_SelPage(page);
.................... LCD_SelColumn(column);
....................
.................... for(j=0;j<8;j++) //上半个字符
.................... {
.................... if(Flag)
.................... LCD_WriteDat(~En[i*16+j]);//反白
.................... else
.................... LCD_WriteDat(En[i*16+j]);
.................... }
....................
.................... page++;
.................... LCD_SelPage(page);
.................... LCD_SelColumn(column);
.................... for(j=8;j<16;j++) //下半个字符
.................... {
.................... if(Flag)
.................... LCD_WriteDat(~En[i*16+j]);//反白
.................... else
.................... LCD_WriteDat(En[i*16+j]);
.................... }
....................
.................... page--;
....................
.................... // count=count+8; //列数监视
.................... column+=8;
.................... }
.................... }
.................... /***************************************************
.................... // 函数原型: Display_Chn_16X16(int8,int8,int8,int1)
.................... // 入口参数: page 起始行,column 起始列,len 字符个数,Flag 反白显示。
.................... // 出口参数: void
.................... // 功 能: 显示16*16汉字。
.................... // 最后修改: 2008.09.29
.................... // 注 意: 本函数具有自动换行功能
.................... Flag=0 正常显示
.................... Flag=1 反白显示
.................... ***************************************************/
.................... void Display_Chn_16X16(int8 page,int8 column,int8 len,int8 *En,int1 Flag)
.................... {
.................... int8 i,j,count;
.................... page=page%PAGES; //防止输入的行超过0-7
.................... column=column%COLUMNS; //防止输入的列超过0-131
....................
.................... for(i=0;i<len;i++)
.................... {
.................... if(column+16>COLUMNS-1 && page<PAGES-2) //如果本行已经不够显示此字符,且行小于在0-5,则转移到下一行。
.................... {
.................... page+=2;
.................... LCD_SelPage(page); //
.................... LCD_SelColumn(0);
.................... column=0;
.................... }
....................
.................... LCD_SelPage(page);
.................... LCD_SelColumn(column);
....................
.................... for(j=0;j<16;j++) //上半个字符
.................... {
.................... if(Flag)
.................... LCD_WriteDat(~En[i*32+j]);//反白
.................... else
.................... LCD_WriteDat(En[i*32+j]);
.................... }
....................
.................... page++;
.................... LCD_SelPage(page);
.................... LCD_SelColumn(column);
.................... for(j=16;j<32;j++) //下半个字符
.................... {
.................... if(Flag)
.................... LCD_WriteDat(~En[i*32+j]);//反白
.................... else
.................... LCD_WriteDat(En[i*32+j]);
.................... }
....................
.................... page--;
....................
.................... // count=count+8; //列数监视
.................... column+=16;
.................... }
.................... }
.................... /***************************************************
.................... // 函数原型: Display_Chn_16X16(int8,int8,int8,int1)
.................... // 入口参数: page 起始行,column 起始列,len 字符个数,Flag 反白显示。
.................... // 出口参数: void
.................... // 功 能: 显示16*16汉字。
.................... // 最后修改: 2008.09.29
.................... // 注 意: 本函数具有自动换行功能
.................... Flag=0 正常显示
.................... Flag=1 反白显示
.................... ***************************************************/
.................... void Display_Chn_32X32(int8 page,int8 column,int8 len,int8 *En,int1 Flag)
.................... {
....................
.................... }
....................
.................... void Display_Bmp_126X64()
.................... {
.................... int8 i,j;
.................... for(i=0;i<2;i++)
*
0611: CLRF 3B
0612: MOVF 3B,W
0613: SUBLW 01
0614: BTFSS 03.0
0615: GOTO 62D
.................... {
.................... LCD_SelPage(i);
0616: MOVF 3B,W
0617: MOVWF 3D
0618: CALL 56F
.................... LCD_SelColumn(0);
0619: CLRF 3D
061A: CALL 57E
.................... for(j=0;j<128;j++)
061B: CLRF 3C
061C: MOVF 3C,W
061D: SUBLW 7F
061E: BTFSS 03.0
061F: GOTO 62B
.................... {
.................... LCD_WriteDat(nBitmapDot1[i*128+j]);
0620: CLRF 20
0621: BTFSC 3B.0
0622: BSF 20.7
0623: MOVF 20,W
0624: ADDWF 3C,W
0625: CALL 035
0626: MOVWF 3F
0627: MOVWF 40
0628: CALL 5B5
.................... }
0629: INCF 3C,F
062A: GOTO 61C
.................... }
062B: INCF 3B,F
062C: GOTO 612
.................... for(i=2;i<4;i++)
062D: MOVLW 02
062E: MOVWF 3B
062F: MOVF 3B,W
0630: SUBLW 03
0631: BTFSS 03.0
0632: GOTO 64A
.................... {
.................... LCD_SelPage(i);
0633: MOVF 3B,W
0634: MOVWF 3D
0635: CALL 56F
.................... LCD_SelColumn(0);
0636: CLRF 3D
0637: CALL 57E
.................... for(j=0;j<128;j++)
0638: CLRF 3C
0639: MOVF 3C,W
063A: SUBLW 7F
063B: BTFSS 03.0
063C: GOTO 648
.................... {
.................... LCD_WriteDat(nBitmapDot2[i*128+j]);
063D: CLRF 20
063E: BTFSC 3B.0
063F: BSF 20.7
0640: MOVF 20,W
0641: ADDWF 3C,W
0642: CALL 13C
0643: MOVWF 3F
0644: MOVWF 40
0645: CALL 5B5
.................... }
0646: INCF 3C,F
0647: GOTO 639
.................... }
0648: INCF 3B,F
0649: GOTO 62F
.................... for(i=4;i<6;i++)
064A: MOVLW 04
064B: MOVWF 3B
064C: MOVF 3B,W
064D: SUBLW 05
064E: BTFSS 03.0
064F: GOTO 667
.................... {
.................... LCD_SelPage(i);
0650: MOVF 3B,W
0651: MOVWF 3D
0652: CALL 56F
.................... LCD_SelColumn(0);
0653: CLRF 3D
0654: CALL 57E
.................... for(j=0;j<128;j++)
0655: CLRF 3C
0656: MOVF 3C,W
0657: SUBLW 7F
0658: BTFSS 03.0
0659: GOTO 665
.................... {
.................... LCD_WriteDat(nBitmapDot3[i*128+j]);
065A: CLRF 20
065B: BTFSC 3B.0
065C: BSF 20.7
065D: MOVF 20,W
065E: ADDWF 3C,W
065F: CALL 243
0660: MOVWF 3F
0661: MOVWF 40
0662: CALL 5B5
.................... }
0663: INCF 3C,F
0664: GOTO 656
.................... }
0665: INCF 3B,F
0666: GOTO 64C
.................... for(i=6;i<8;i++)
0667: MOVLW 06
0668: MOVWF 3B
0669: MOVF 3B,W
066A: SUBLW 07
066B: BTFSS 03.0
066C: GOTO 684
.................... {
.................... LCD_SelPage(i);
066D: MOVF 3B,W
066E: MOVWF 3D
066F: CALL 56F
.................... LCD_SelColumn(0);
0670: CLRF 3D
0671: CALL 57E
.................... for(j=0;j<128;j++)
0672: CLRF 3C
0673: MOVF 3C,W
0674: SUBLW 7F
0675: BTFSS 03.0
0676: GOTO 682
.................... {
.................... LCD_WriteDat(nBitmapDot4[i*128+j]);
0677: CLRF 20
0678: BTFSC 3B.0
0679: BSF 20.7
067A: MOVF 20,W
067B: ADDWF 3C,W
067C: CALL 34A
067D: MOVWF 3F
067E: MOVWF 40
067F: CALL 5B5
.................... }
0680: INCF 3C,F
0681: GOTO 673
.................... }
0682: INCF 3B,F
0683: GOTO 669
.................... }
0684: RETLW 00
.................... void LCD_Init()
.................... {
....................
.................... output_low(PIN_B6); //8080
*
04E8: BCF 06.6
.................... output_low(PIN_B5); //CS1=0;
04E9: BCF 06.5
....................
.................... //液晶复位
.................... output_low(PIN_B1);
04EA: BCF 06.1
.................... delay_ms(10);
04EB: MOVLW 0A
04EC: MOVWF 3B
04ED: CALL 4D4
.................... output_high(PIN_B1);
04EE: BSF 06.1
.................... delay_us(1);
04EF: NOP
04F0: CLRF 2E
04F1: BTFSC 0B.7
04F2: BSF 2E.7
04F3: BCF 0B.7
....................
.................... //软复位
.................... LCD_WriteCmd(0xe2);
04F4: MOVLW E2
04F5: MOVWF 41
04F6: CALL 451
04F7: BTFSC 2E.7
04F8: BSF 0B.7
.................... delay_ms(10);
04F9: MOVLW 0A
04FA: MOVWF 3B
04FB: CALL 4D4
04FC: CLRF 2E
04FD: BTFSC 0B.7
04FE: BSF 2E.7
04FF: BCF 0B.7
....................
.................... //设置ADC seg131-seg0
.................... LCD_WriteCmd(0xa1);
0500: MOVLW A1
0501: MOVWF 41
0502: CALL 451
0503: BTFSC 2E.7
0504: BSF 0B.7
0505: CLRF 2E
0506: BTFSC 0B.7
0507: BSF 2E.7
0508: BCF 0B.7
.................... //设置SHL com0-com64
.................... LCD_WriteCmd(0xc8);
0509: MOVLW C8
050A: MOVWF 41
050B: CALL 451
050C: BTFSC 2E.7
050D: BSF 0B.7
050E: CLRF 2E
050F: BTFSC 0B.7
0510: BSF 2E.7
0511: BCF 0B.7
.................... //设置Bias 1/9
.................... LCD_WriteCmd(0xa2);
0512: MOVLW A2
0513: MOVWF 41
0514: CALL 451
0515: BTFSC 2E.7
0516: BSF 0B.7
0517: CLRF 2E
0518: BTFSC 0B.7
0519: BSF 2E.7
051A: BCF 0B.7
.................... //Voltage Converter ON
.................... LCD_WriteCmd(0x2c);
051B: MOVLW 2C
051C: MOVWF 41
051D: CALL 451
051E: BTFSC 2E.7
051F: BSF 0B.7
.................... delay_ms(40);
0520: MOVLW 28
0521: MOVWF 3B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -