📄 3310lcd_function.lis
字号:
02AE 0201 .byte 2,1
02B0 0000 .byte 0,0
02B2 0304 .byte 3,4
02B4 0404 .byte 4,4
02B6 0700 .byte 7,0
02B8 FC00 .byte 252,0
02BA FF00 .byte 255,0
02BC 10CC .byte 16,204
02BE 47CC .byte 'G,204
02C0 5444 .byte 'T,'D
02C2 C400 .byte 196,0
02C4 0100 .byte 1,0
02C6 0700 .byte 7,0
02C8 0007 .byte 0,7
02CA 0203 .byte 2,3
02CC 0202 .byte 2,2
02CE 0700 .byte 7,0
02D0 0484 .byte 4,132
02D2 4424 .byte 'D,36
02D4 14FF .byte 20,255
02D6 1424 .byte 20,36
02D8 4486 .byte 'D,134
02DA 0400 .byte 4,0
02DC 0100 .byte 1,0
02DE 0101 .byte 1,1
02E0 0107 .byte 1,7
02E2 0101 .byte 1,1
02E4 0100 .byte 1,0
02E6 0100 .byte 1,0
02E8 00FF .byte 0,255
02EA 4931 .byte 'I,49
02EC 4D81 .byte 'M,129
02EE 4931 .byte 'I,49
02F0 CD01 .byte 205,1
02F2 FF00 .byte 255,0
02F4 0007 .byte 0,7
02F6 0000 .byte 0,0
02F8 0000 .byte 0,0
02FA 0000 .byte 0,0
02FC 0404 .byte 4,4
02FE 0700 .byte 7,0
0300 0475 .byte 4,'u
0302 8674 .byte 134,'t
0304 04C0 .byte 4,192
0306 407F .byte 64,127
0308 44C4 .byte 'D,196
030A 0400 .byte 4,0
030C 0202 .byte 2,2
030E 0101 .byte 1,1
0310 0107 .byte 1,7
0312 0202 .byte 2,2
0314 0207 .byte 2,7
0316 0000 .byte 0,0
0318 001C .byte 0,28
031A 7E7E .byte 126,126
031C 1C00 .byte 28,0
031E 0000 .byte 0,0
0320 0000 .byte 0,0
0322 0000 .byte 0,0
0324 0000 .byte 0,0
0326 0303 .byte 3,3
0328 0000 .byte 0,0
032A 0000 .byte 0,0
032C 0000 .byte 0,0
032E 0000 .byte 0,0
0330 .dbfile D:\AVR\527dz\0----test\实验三\3310/move_chinese_string_pixel.h
0330 .dbsym e move_chinese_string _move_chinese_string A[192:8:24]kc
.area text(rom, con, rel)
0000 .dbfile D:\AVR\527dz\0----test\实验三\3310/move_chinese_string_pixel.h
0000 .dbfile D:\AVR\527dz\0----test\实验三\3310\3310LCD_function.c
0000 .dbfunc e LCD_init _LCD_init fV
.even
0000 _LCD_init::
0000 .dbline -1
0000 .dbline 15
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "3310LCD_function.h"
0000 ; #include "english_6x8_pixel.h"
0000 ; #include "write_chinese_string_pixel.h"
0000 ; #include "move_chinese_string_pixel.h"
0000 ;
0000 ; /*-----------------------------------------------------------------------
0000 ; LCD_init : 3310LCD初始化
0000 ;
0000 ; 编写日期 :2004-8-10
0000 ; 最后修改日期 :2004-8-10
0000 ; -----------------------------------------------------------------------*/
0000 ; void LCD_init(void)
0000 ; {
0000 .dbline 16
0000 ; PORTB &= ~LCD_RST; // 产生一个让LCD复位的低电平脉冲
0000 C498 cbi 0x18,4
0002 .dbline 17
0002 ; delay_1us();
0002 00D0 rcall _delay_1us
0004 .dbline 18
0004 ; PORTB |= LCD_RST;
0004 C49A sbi 0x18,4
0006 .dbline 20
0006 ;
0006 ; PORTB &= ~LCD_CE ; // 关闭LCD
0006 C298 cbi 0x18,2
0008 .dbline 21
0008 ; delay_1us();
0008 00D0 rcall _delay_1us
000A .dbline 22
000A ; PORTB |= LCD_CE; // 使能LCD
000A C29A sbi 0x18,2
000C .dbline 23
000C ; delay_1us();
000C 00D0 rcall _delay_1us
000E .dbline 25
000E ;
000E ; LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
000E 2227 clr R18
0010 01E2 ldi R16,33
0012 8ED1 rcall _LCD_write_byte
0014 .dbline 26
0014 ; LCD_write_byte(0xc8, 0); // 设置偏置电压
0014 2227 clr R18
0016 08EC ldi R16,200
0018 8BD1 rcall _LCD_write_byte
001A .dbline 27
001A ; LCD_write_byte(0x06, 0); // 温度校正
001A 2227 clr R18
001C 06E0 ldi R16,6
001E 88D1 rcall _LCD_write_byte
0020 .dbline 28
0020 ; LCD_write_byte(0x13, 0); // 1:48
0020 2227 clr R18
0022 03E1 ldi R16,19
0024 85D1 rcall _LCD_write_byte
0026 .dbline 29
0026 ; LCD_write_byte(0x20, 0); // 使用基本命令
0026 2227 clr R18
0028 00E2 ldi R16,32
002A 82D1 rcall _LCD_write_byte
002C .dbline 30
002C ; LCD_clear(); // 清屏
002C 05D0 rcall _LCD_clear
002E .dbline 31
002E ; LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
002E 2227 clr R18
0030 0CE0 ldi R16,12
0032 7ED1 rcall _LCD_write_byte
0034 .dbline 33
0034 ;
0034 ; PORTB &= ~LCD_CE ; // 关闭LCD
0034 C298 cbi 0x18,2
0036 .dbline -2
0036 L1:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
0038 .dbfunc e LCD_clear _LCD_clear fV
0038 ; i -> R20,R21
.even
0038 _LCD_clear::
0038 00D0 rcall push_gset1
003A .dbline -1
003A .dbline 43
003A ; }
003A ;
003A ; /*-----------------------------------------------------------------------
003A ; LCD_clear : LCD清屏函数
003A ;
003A ; 编写日期 :2004-8-10
003A ; 最后修改日期 :2004-8-10
003A ; -----------------------------------------------------------------------*/
003A ; void LCD_clear(void)
003A ; {
003A .dbline 46
003A ; unsigned int i;
003A ;
003A ; LCD_write_byte(0x0c, 0);
003A 2227 clr R18
003C 0CE0 ldi R16,12
003E 78D1 rcall _LCD_write_byte
0040 .dbline 47
0040 ; LCD_write_byte(0x80, 0);
0040 2227 clr R18
0042 00E8 ldi R16,128
0044 75D1 rcall _LCD_write_byte
0046 .dbline 49
0046 ;
0046 ; for (i=0; i<504; i++)
0046 4427 clr R20
0048 5527 clr R21
004A 05C0 rjmp L6
004C L3:
004C .dbline 50
004C 21E0 ldi R18,1
004E 0027 clr R16
0050 6FD1 rcall _LCD_write_byte
0052 L4:
0052 .dbline 49
0052 4F5F subi R20,255 ; offset = 1
0054 5F4F sbci R21,255
0056 L6:
0056 .dbline 49
0056 483F cpi R20,248
0058 E1E0 ldi R30,1
005A 5E07 cpc R21,R30
005C B8F3 brlo L3
005E .dbline -2
005E L2:
005E 00D0 rcall pop_gset1
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbsym r i 20 i
0062 .dbend
0062 .dbfunc e LCD_set_XY _LCD_set_XY fV
0062 ; Y -> R22
0062 ; X -> R20
.even
0062 _LCD_set_XY::
0062 00D0 rcall push_gset2
0064 622F mov R22,R18
0066 402F mov R20,R16
0068 .dbline -1
0068 .dbline 63
0068 ; LCD_write_byte(0, 1);
0068 ; }
0068 ;
0068 ; /*-----------------------------------------------------------------------
0068 ; LCD_set_XY : 设置LCD坐标函数
0068 ;
0068 ; 输入参数:X :0-83
0068 ; Y :0-5
0068 ;
0068 ; 编写日期 :2004-8-10
0068 ; 最后修改日期 :2004-8-10
0068 ; -----------------------------------------------------------------------*/
0068 ; void LCD_set_XY(unsigned char X, unsigned char Y)
0068 ; {
0068 .dbline 64
0068 ; LCD_write_byte(0x40 | Y, 0); // column
0068 2227 clr R18
006A 062F mov R16,R22
006C 0064 ori R16,64
006E 60D1 rcall _LCD_write_byte
0070 .dbline 65
0070 ; LCD_write_byte(0x80 | X, 0); // row
0070 2227 clr R18
0072 042F mov R16,R20
0074 0068 ori R16,128
0076 5CD1 rcall _LCD_write_byte
0078 .dbline -2
0078 L7:
0078 00D0 rcall pop_gset2
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r Y 22 c
007C .dbsym r X 20 c
007C .dbend
007C .dbfunc e LCD_write_char _LCD_write_char fV
007C ; line -> R20
007C ; c -> R22
.even
007C _LCD_write_char::
007C 00D0 rcall push_gset2
007E 602F mov R22,R16
0080 .dbline -1
0080 .dbline 77
0080 ; }
0080 ;
0080 ; /*-----------------------------------------------------------------------
0080 ; LCD_write_char : 显示英文字符
0080 ;
0080 ; 输入参数:c :显示的字符;
0080 ;
0080 ; 编写日期 :2004-8-10
0080 ; 最后修改日期 :2004-8-10
0080 ; -----------------------------------------------------------------------*/
0080 ; void LCD_write_char(unsigned char c)
0080 ; {
0080 .dbline 80
0080 ; unsigned char line;
0080 ;
0080 ; c -= 32;
0080 6052 subi R22,32
0082 .dbline 82
0082 ;
0082 ; for (line=0; line<6; line++)
0082 4427 clr R20
0084 0FC0 rjmp L12
0086 L9:
0086 .dbline 83
0086 21E0 ldi R18,1
0088 86E0 ldi R24,6
008A 869F mul R24,R22
008C 1001 movw R2,R0
008E 80E0 ldi R24,<_font6x8
0090 90E0 ldi R25,>_font6x8
0092 280E add R2,R24
0094 391E adc R3,R25
0096 E42F mov R30,R20
0098 FF27 clr R31
009A E20D add R30,R2
009C F31D adc R31,R3
009E 0491 lpm R16,Z
00A0 47D1 rcall _LCD_write_byte
00A2 L10:
00A2 .dbline 82
00A2 4395 inc R20
00A4 L12:
00A4 .dbline 82
00A4 4630 cpi R20,6
00A6 78F3 brlo L9
00A8 .dbline -2
00A8 L8:
00A8 00D0 rcall pop_gset2
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbsym r line 20 c
00AC .dbsym r c 22 c
00AC .dbend
00AC .dbfunc e LCD_write_english_string _LCD_write_english_string fV
00AC ; s -> R20,R21
00AC ; Y -> R10
00AC ; X -> R22
.even
00AC _LCD_write_english_string::
00AC 00D0 rcall push_gset3
00AE A22E mov R10,R18
00B0 602F mov R22,R16
00B2 4E81 ldd R20,y+6
00B4 5F81 ldd R21,y+7
00B6 .dbline -1
00B6 .dbline 96
00B6 ; LCD_write_byte(font6x8[c][line], 1);
00B6 ; }
00B6 ;
00B6 ; /*-----------------------------------------------------------------------
00B6 ; LCD_write_english_String : 英文字符串显示函数
00B6 ;
00B6 ; 输入参数:*s :英文字符串指针;
00B6 ; X、Y : 显示字符串的位置,x 0-83 ,y 0-5
00B6 ;
00B6 ; 编写日期 :2004-8-10
00B6 ; 最后修改日期 :2004-8-10
00B6 ; -----------------------------------------------------------------------*/
00B6 ; void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
00B6 ; {
00B6 .dbline 97
00B6 ; LCD_set_XY(X,Y);
00B6 2A2D mov R18,R10
00B8 062F mov R16,R22
00BA D3DF rcall _LCD_set_XY
00BC 05C0 rjmp L15
00BE L14:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -