⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3310lcd_function.lis

📁 AVR单片机系统开发经典实例部分源程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 02DA 0C00              .byte 12,0
 02DC 0201              .byte 2,1
 02DE 0004              .byte 0,4
 02E0 0502              .byte 5,2
 02E2 0100              .byte 1,0
 02E4 0102              .byte 1,2
 02E6 0400              .byte 4,0
 02E8 08F9              .byte 8,249
 02EA 0200              .byte 2,0
 02EC FE42              .byte 254,'B
 02EE 41FE              .byte 'A,254
 02F0 0282              .byte 2,130
 02F2 FE00              .byte 254,0
 02F4 0601              .byte 6,1
 02F6 0202              .byte 2,2
 02F8 0404              .byte 4,4
 02FA 0405              .byte 4,5
 02FC 0404              .byte 4,4
 02FE 0400              .byte 4,0
 0300 1012              .byte 16,18
 0302 14F8              .byte 20,248
 0304 101F              .byte 16,31
 0306 F018              .byte 240,24
 0308 1412              .byte 20,18
 030A 1000              .byte 16,0
 030C 0404              .byte 4,4
 030E 0201              .byte 2,1
 0310 0000              .byte 0,0
 0312 0304              .byte 3,4
 0314 0404              .byte 4,4
 0316 0700              .byte 7,0
 0318 FC00              .byte 252,0
 031A FF00              .byte 255,0
 031C 10CC              .byte 16,204
 031E 47CC              .byte 'G,204
 0320 5444              .byte 'T,'D
 0322 C400              .byte 196,0
 0324 0100              .byte 1,0
 0326 0700              .byte 7,0
 0328 0007              .byte 0,7
 032A 0203              .byte 2,3
 032C 0202              .byte 2,2
 032E 0700              .byte 7,0
 0330 0484              .byte 4,132
 0332 4424              .byte 'D,36
 0334 14FF              .byte 20,255
 0336 1424              .byte 20,36
 0338 4486              .byte 'D,134
 033A 0400              .byte 4,0
 033C 0100              .byte 1,0
 033E 0101              .byte 1,1
 0340 0107              .byte 1,7
 0342 0101              .byte 1,1
 0344 0100              .byte 1,0
 0346 0100              .byte 1,0
 0348 00FF              .byte 0,255
 034A 4931              .byte 'I,49
 034C 4D81              .byte 'M,129
 034E 4931              .byte 'I,49
 0350 CD01              .byte 205,1
 0352 FF00              .byte 255,0
 0354 0007              .byte 0,7
 0356 0000              .byte 0,0
 0358 0000              .byte 0,0
 035A 0000              .byte 0,0
 035C 0404              .byte 4,4
 035E 0700              .byte 7,0
 0360 0475              .byte 4,'u
 0362 8674              .byte 134,'t
 0364 04C0              .byte 4,192
 0366 407F              .byte 64,127
 0368 44C4              .byte 'D,196
 036A 0400              .byte 4,0
 036C 0202              .byte 2,2
 036E 0101              .byte 1,1
 0370 0107              .byte 1,7
 0372 0202              .byte 2,2
 0374 0207              .byte 2,7
 0376 0000              .byte 0,0
 0378 001C              .byte 0,28
 037A 7E7E              .byte 126,126
 037C 1C00              .byte 28,0
 037E 0000              .byte 0,0
 0380 0000              .byte 0,0
 0382 0000              .byte 0,0
 0384 0000              .byte 0,0
 0386 0303              .byte 3,3
 0388 0000              .byte 0,0
 038A 0000              .byte 0,0
 038C 0000              .byte 0,0
 038E 0000              .byte 0,0
 0390                   .dbfile C:\AVR\M\1/move_chinese_string_pixel.h
 0390                   .dbsym e move_chinese_string _move_chinese_string A[192:8:24]kc
                        .area text(rom, con, rel)
 0000                   .dbfile C:\AVR\M\1/move_chinese_string_pixel.h
 0000                   .dbfile C:\AVR\M\1\3310LCD_function.c
 0000                   .dbfunc e LCD_init _LCD_init fV
                        .even
 0000           _LCD_init::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ; #include <iom128v.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           ; #include "SPI.h"
 0000           ; 
 0000           ; void LCD_init(void)
 0000           ;   {
 0000                   .dbline 11
 0000           ;     DDRA |= LCD_RST | LCD_DC | LCD_CE;
 0000 8AB3              in R24,0x1a
 0002 8067              ori R24,112
 0004 8ABB              out 0x1a,R24
 0006                   .dbline 12
 0006           ;     PORTA &= ~LCD_RST;          // 产生一个让LCD复位的低电平脉冲
 0006 DD98              cbi 0x1b,5
 0008                   .dbline 13
 0008           ;     delay_1us();
 0008 0E940000          xcall _delay_1us
 000C                   .dbline 14
 000C           ;     PORTA |= LCD_RST;
 000C DD9A              sbi 0x1b,5
 000E                   .dbline 16
 000E           ;     
 000E           ;     PORTA &= ~LCD_CE ;                // 关闭LCD
 000E DC98              cbi 0x1b,4
 0010                   .dbline 17
 0010           ;     delay_1us();
 0010 0E940000          xcall _delay_1us
 0014                   .dbline 18
 0014           ;     PORTA |= LCD_CE;          // 使能LCD
 0014 DC9A              sbi 0x1b,4
 0016                   .dbline 19
 0016           ;     delay_1us();
 0016 0E940000          xcall _delay_1us
 001A                   .dbline 21
 001A           ; 
 001A           ;     LCD_write_byte(0x21, 0);  // 使用扩展命令设置LCD模式
 001A 2227              clr R18
 001C 01E2              ldi R16,33
 001E A6D1              xcall _LCD_write_byte
 0020                   .dbline 22
 0020           ;     LCD_write_byte(0xc8, 0);  // 设置偏置电压
 0020 2227              clr R18
 0022 08EC              ldi R16,200
 0024 A3D1              xcall _LCD_write_byte
 0026                   .dbline 23
 0026           ;     LCD_write_byte(0x06, 0);  // 温度校正
 0026 2227              clr R18
 0028 06E0              ldi R16,6
 002A A0D1              xcall _LCD_write_byte
 002C                   .dbline 24
 002C           ;     LCD_write_byte(0x13, 0);  // 1:48
 002C 2227              clr R18
 002E 03E1              ldi R16,19
 0030 9DD1              xcall _LCD_write_byte
 0032                   .dbline 25
 0032           ;     LCD_write_byte(0x20, 0);  // 使用基本命令
 0032 2227              clr R18
 0034 00E2              ldi R16,32
 0036 9AD1              xcall _LCD_write_byte
 0038                   .dbline 26
 0038           ;     LCD_clear();              // 清屏
 0038 05D0              xcall _LCD_clear
 003A                   .dbline 27
 003A           ;     LCD_write_byte(0x0c, 0);  // 设定显示模式,正常显示
 003A 2227              clr R18
 003C 0CE0              ldi R16,12
 003E 96D1              xcall _LCD_write_byte
 0040                   .dbline 29
 0040           ;         
 0040           ;     PORTA &= ~LCD_CE ;          // 关闭LCD
 0040 DC98              cbi 0x1b,4
 0042                   .dbline -2
 0042           L1:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbend
 0044                   .dbfunc e LCD_clear _LCD_clear fV
 0044           ;              i -> R20,R21
                        .even
 0044           _LCD_clear::
 0044 0E940000          xcall push_gset1
 0048                   .dbline -1
 0048                   .dbline 39
 0048           ;   }
 0048           ; 
 0048           ; /*-----------------------------------------------------------------------
 0048           ; LCD_clear         : LCD清屏函数
 0048           ; 
 0048           ; 编写日期          :2004-8-10 
 0048           ; 最后修改日期      :2004-8-10 
 0048           ; -----------------------------------------------------------------------*/
 0048           ; void LCD_clear(void)
 0048           ;   {
 0048                   .dbline 42
 0048           ;     unsigned int i;
 0048           ; 
 0048           ;     LCD_write_byte(0x0c, 0);                  
 0048 2227              clr R18
 004A 0CE0              ldi R16,12
 004C 8FD1              xcall _LCD_write_byte
 004E                   .dbline 43
 004E           ;     LCD_write_byte(0x80, 0);                  
 004E 2227              clr R18
 0050 00E8              ldi R16,128
 0052 8CD1              xcall _LCD_write_byte
 0054                   .dbline 45
 0054           ; 
 0054           ;     for (i=0; i<504; i++)
 0054 4427              clr R20
 0056 5527              clr R21
 0058 05C0              xjmp L6
 005A           L3:
 005A                   .dbline 46
 005A 21E0              ldi R18,1
 005C 0027              clr R16
 005E 86D1              xcall _LCD_write_byte
 0060           L4:
 0060                   .dbline 45
 0060 4F5F              subi R20,255  ; offset = 1
 0062 5F4F              sbci R21,255
 0064           L6:
 0064                   .dbline 45
 0064 483F              cpi R20,248
 0066 E1E0              ldi R30,1
 0068 5E07              cpc R21,R30
 006A B8F3              brlo L3
 006C                   .dbline -2
 006C           L2:
 006C 0E940000          xcall pop_gset1
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbsym r i 20 i
 0072                   .dbend
 0072                   .dbfunc e LCD_set_XY _LCD_set_XY fV
 0072           ;              Y -> R22
 0072           ;              X -> R20
                        .even
 0072           _LCD_set_XY::
 0072 0E940000          xcall push_gset2
 0076 622F              mov R22,R18
 0078 402F              mov R20,R16
 007A                   .dbline -1
 007A                   .dbline 59
 007A           ;       LCD_write_byte(0, 1);                   
 007A           ;   }
 007A           ; 
 007A           ; /*-----------------------------------------------------------------------
 007A           ; LCD_set_XY        : 设置LCD坐标函数
 007A           ; 
 007A           ; 输入参数:X       :0-83
 007A           ;           Y       :0-5
 007A           ; 
 007A           ; 编写日期          :2004-8-10 
 007A           ; 最后修改日期      :2004-8-10 
 007A           ; -----------------------------------------------------------------------*/
 007A           ; void LCD_set_XY(unsigned char X, unsigned char Y)
 007A           ;   {
 007A                   .dbline 60
 007A           ;     LCD_write_byte(0x40 | Y, 0);              // column
 007A 2227              clr R18
 007C 062F              mov R16,R22
 007E 0064              ori R16,64
 0080 75D1              xcall _LCD_write_byte
 0082                   .dbline 61
 0082           ;     LCD_write_byte(0x80 | X, 0);              // row
 0082 2227              clr R18
 0084 042F              mov R16,R20
 0086 0068              ori R16,128
 0088 71D1              xcall _LCD_write_byte
 008A                   .dbline -2
 008A           L7:
 008A 0E940000          xcall pop_gset2
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbsym r Y 22 c
 0090                   .dbsym r X 20 c
 0090                   .dbend
 0090                   .dbfunc e LCD_write_char _LCD_write_char fV
 0090           ;           line -> R20
 0090           ;              c -> R22
                        .even
 0090           _LCD_write_char::
 0090 0E940000          xcall push_gset2
 0094 602F              mov R22,R16
 0096                   .dbline -1
 0096                   .dbline 73
 0096           ;   }
 0096           ; 
 0096           ; /*-----------------------------------------------------------------------
 0096           ; LCD_write_char    : 显示英文字符
 0096           ; 
 0096           ; 输入参数:c       :显示的字符;
 0096           ; 
 0096           ; 编写日期          :2004-8-10 
 0096           ; 最后修改日期      :2004-8-10 
 0096           ; -----------------------------------------------------------------------*/
 0096           ; void LCD_write_char(unsigned char c)
 0096           ;   {
 0096                   .dbline 76
 0096           ;     unsigned char line;
 0096           ; 
 0096           ;     c -= 32;
 0096 6052              subi R22,32
 0098                   .dbline 78
 0098           ; 
 0098           ;     for (line=0; line<6; line++)
 0098 4427              clr R20
 009A 0FC0              xjmp L12
 009C           L9:
 009C                   .dbline 79
 009C 21E0              ldi R18,1
 009E 86E0              ldi R24,6
 00A0 869F              mul R24,R22
 00A2 1001              movw R2,R0
 00A4 80E0              ldi R24,<_font6x8
 00A6 90E0              ldi R25,>_font6x8
 00A8 280E              add R2,R24
 00AA 391E              adc R3,R25
 00AC E42F              mov R30,R20
 00AE FF27              clr R31
 00B0 E20D              add R30,R2
 00B2 F31D              adc R31,R3
 00B4 0491              lpm R16,Z
 00B6 5AD1              xcall _LCD_write_byte
 00B8           L10:
 00B8                   .dbline 78
 00B8 4395              inc R20
 00BA           L12:
 00BA                   .dbline 78
 00BA 4630              cpi R20,6
 00BC 78F3              brlo L9
 00BE                   .dbline -2
 00BE           L8:
 00BE 0E940000          xcall pop_gset2
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbsym r line 20 c
 00C4                   .dbsym r c 22 c
 00C4                   .dbend
 00C4                   .dbfunc e LCD_write_english_string _LCD_write_english_string fV
 00C4           ;              s -> R20,R21
 00C4           ;              Y -> R10
 00C4           ;              X -> R22
                        .even
 00C4           _LCD_write_english_string::
 00C4 0E940000          xcall push_gset3
 00C8 A22E              mov R10,R18
 00CA 602F              mov R22,R16
 00CC 4E81              ldd R20,y+6
 00CE 5F81              ldd R21,y+7
 00D0                   .dbline -1
 00D0                   .dbline 92
 00D0           ;       LCD_write_byte(font6x8[c][line], 1);
 00D0           ;   }
 00D0           ; 
 00D0           ; /*-----------------------------------------------------------------------
 00D0           ; LCD_write_english_String  : 英文字符串显示函数
 00D0           ; 
 00D0           ; 输入参数:*s      :英文字符串指针;
 00D0           ;           X、Y    : 显示字符串的位置,x 0-83 ,y 0-5
 00D0           ; 
 00D0           ; 编写日期          :2004-8-10 
 00D0           ; 最后修改日期      :2004-8-10                 
 00D0           ; -----------------------------------------------------------------------*/
 00D0           ; void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
 00D0           ;   {
 00D0                   .dbline 93
 00D0           ;     LCD_set_XY(X,Y);
 00D0 2A2D              mov R18,R10

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -