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

📄 lcd20x4.lis

📁 用ATmega16驱动的LCD2004的源程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 008C           L15:
 008C                   .dbline 91
 008C           L16:
 008C                   .dbline 91
 008C           ;     while(Lcd_Busy()); //判断lcd是否内部操作状态
 008C D0DF              xcall _Lcd_Busy
 008E 0023              tst R16
 0090 E9F7              brne L15
 0092                   .dbline 92
 0092           ;     E_L;RS_H;RW_L;     //E=0(致能),RS=1(数据),RW=0(写)
 0092 9798              cbi 0x12,7
 0094                   .dbline 92
 0094 959A              sbi 0x12,5
 0096                   .dbline 92
 0096 9698              cbi 0x12,6
 0098                   .dbline 93
 0098           ;     delay_us(2);       //液晶延时子程序
 0098 02E0              ldi R16,2
 009A 10E0              ldi R17,0
 009C B1DF              xcall _delay_us
 009E                   .dbline 94
 009E           ;     E_H;
 009E 979A              sbi 0x12,7
 00A0                   .dbline 95
 00A0           ;     PORTB = Data;      //向lcd写入一个字符
 00A0 48BB              out 0x18,R20
 00A2                   .dbline 96
 00A2           ;     delay_us(2);       //液晶延时子程序
 00A2 02E0              ldi R16,2
 00A4 10E0              ldi R17,0
 00A6 ACDF              xcall _delay_us
 00A8                   .dbline 97
 00A8           ;     E_L;
 00A8 9798              cbi 0x12,7
 00AA                   .dbline -2
 00AA           L14:
 00AA 0E940000          xcall pop_gset1
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0                   .dbsym r Data 20 c
 00B0                   .dbend
 00B0                   .dbfunc e Lcd_Init _Lcd_Init fV
                        .even
 00B0           _Lcd_Init::
 00B0                   .dbline -1
 00B0                   .dbline 109
 00B0           ; }
 00B0           ; 
 00B0           ; 
 00B0           ; /*=======================================================
 00B0           ; LCD第1行显示地址1~20(0x80~0x93)
 00B0           ; LCD第2行显示地址1~20(0xc0~0xd3)
 00B0           ; LCD第3行显示地址1~20(0x94~0xa7)
 00B0           ; LCD第4行显示地址1~20(0xd4~0xe7)
 00B0           ; =======================================================*/
 00B0           ; //初始化LCD_8位接口,4行x20字符的工作方式
 00B0           ; void Lcd_Init()
 00B0           ; {
 00B0                   .dbline 110
 00B0           ;     DDRB = 0xff;       //端口B设为输出方式
 00B0 8FEF              ldi R24,255
 00B2 87BB              out 0x17,R24
 00B4                   .dbline 111
 00B4           ;     DDRD = 0xff;       //端口D设为输出方式
 00B4 81BB              out 0x11,R24
 00B6                   .dbline 112
 00B6           ;     Lcd_Command(0x38); //
 00B6 08E3              ldi R16,56
 00B8 D1DF              xcall _Lcd_Command
 00BA                   .dbline 113
 00BA           ;     Lcd_Command(0x38); //
 00BA 08E3              ldi R16,56
 00BC CFDF              xcall _Lcd_Command
 00BE                   .dbline 114
 00BE           ;     Lcd_Command(0x38); //
 00BE 08E3              ldi R16,56
 00C0 CDDF              xcall _Lcd_Command
 00C2                   .dbline 115
 00C2           ;     Lcd_Command(0x38); //
 00C2 08E3              ldi R16,56
 00C4 CBDF              xcall _Lcd_Command
 00C6                   .dbline 116
 00C6           ;     Lcd_Command(0x08); //令显示器off
 00C6 08E0              ldi R16,8
 00C8 C9DF              xcall _Lcd_Command
 00CA                   .dbline 117
 00CA           ;     Lcd_Command(0x01); //清除显示器
 00CA 01E0              ldi R16,1
 00CC C7DF              xcall _Lcd_Command
 00CE                   .dbline 118
 00CE           ;     Lcd_Command(0x06); //令LCD每接收到1Byte数据后,AC自动加1
 00CE 06E0              ldi R16,6
 00D0 C5DF              xcall _Lcd_Command
 00D2                   .dbline 119
 00D2           ;     Lcd_Command(0x0C); //令光标,0x0c=不显示,0x0d=显示闪动. 
 00D2 0CE0              ldi R16,12
 00D4 C3DF              xcall _Lcd_Command
 00D6                   .dbline -2
 00D6           L18:
 00D6                   .dbline 0 ; func end
 00D6 0895              ret
 00D8                   .dbend
 00D8                   .dbfunc e asc_tran _asc_tran fV
 00D8           ;            asc -> R20,R21
                        .even
 00D8           _asc_tran::
 00D8 0E940000          xcall push_gset1
 00DC A801              movw R20,R16
 00DE                   .dbline -1
 00DE                   .dbline 125
 00DE           ; }
 00DE           ; 
 00DE           ; //=======================================================
 00DE           ; //写ASCII字符串程序
 00DE           ; void asc_tran(unsigned char *asc)
 00DE           ; {
 00DE 05C0              xjmp L21
 00E0           L20:
 00E0                   .dbline 127
 00E0                   .dbline 128
 00E0 FA01              movw R30,R20
 00E2 0081              ldd R16,z+0
 00E4 D0DF              xcall _Lcd_Write
 00E6                   .dbline 129
 00E6 4F5F              subi R20,255  ; offset = 1
 00E8 5F4F              sbci R21,255
 00EA                   .dbline 130
 00EA           L21:
 00EA                   .dbline 126
 00EA           ;     while((*asc) != 0)   //判断字是否结束
 00EA FA01              movw R30,R20
 00EC 2080              ldd R2,z+0
 00EE 2220              tst R2
 00F0 B9F7              brne L20
 00F2                   .dbline -2
 00F2           L19:
 00F2 0E940000          xcall pop_gset1
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r asc 20 pc
 00F8                   .dbend
 00F8                   .dbfunc e main _main fV
                        .even
 00F8           _main::
 00F8                   .dbline -1
 00F8                   .dbline 136
 00F8           ;     {
 00F8           ;         Lcd_Write(*asc); //向lcd写入字符串
 00F8           ;         asc++;           //移下一个字符
 00F8           ;     }
 00F8           ; }
 00F8           ; 
 00F8           ; //=======================================================
 00F8           ; //测试主LCD主程序
 00F8           ; void main()
 00F8           ; {
 00F8                   .dbline 137
 00F8           ;     Lcd_Init(); //初始化LCD
 00F8 DBDF              xcall _Lcd_Init
 00FA 1EC0              xjmp L25
 00FC           L24:
 00FC                   .dbline 139
 00FC                   .dbline 140
 00FC 03E8              ldi R16,131
 00FE AEDF              xcall _Lcd_Command
 0100                   .dbline 141
 0100 00E0              ldi R16,<L27
 0102 10E0              ldi R17,>L27
 0104 E9DF              xcall _asc_tran
 0106                   .dbline 142
 0106 07E9              ldi R16,151
 0108 A9DF              xcall _Lcd_Command
 010A                   .dbline 143
 010A 00E0              ldi R16,<L28
 010C 10E0              ldi R17,>L28
 010E E4DF              xcall _asc_tran
 0110                   .dbline 144
 0110 08EE              ldi R16,1000
 0112 13E0              ldi R17,3
 0114 7DDF              xcall _delay_ms
 0116                   .dbline 145
 0116 01E0              ldi R16,1
 0118 A1DF              xcall _Lcd_Command
 011A                   .dbline 147
 011A 03E8              ldi R16,131
 011C 9FDF              xcall _Lcd_Command
 011E                   .dbline 148
 011E 00E0              ldi R16,<L29
 0120 10E0              ldi R17,>L29
 0122 DADF              xcall _asc_tran
 0124                   .dbline 149
 0124 04E9              ldi R16,148
 0126 9ADF              xcall _Lcd_Command
 0128                   .dbline 150
 0128 00E0              ldi R16,<L30
 012A 10E0              ldi R17,>L30
 012C D5DF              xcall _asc_tran
 012E                   .dbline 151
 012E 08EE              ldi R16,1000
 0130 13E0              ldi R17,3
 0132 6EDF              xcall _delay_ms
 0134                   .dbline 152
 0134 01E0              ldi R16,1
 0136 92DF              xcall _Lcd_Command
 0138                   .dbline 153
 0138           L25:
 0138                   .dbline 138
 0138 E1CF              xjmp L24
 013A           X1:
 013A                   .dbline -2
 013A           L23:
 013A                   .dbline 0 ; func end
 013A 0895              ret
 013C                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\AVR应用实例\LCD20x4\LCD20x4.c
 0000           L30:
 0000                   .blkb 20
                        .area idata
 0000 687474703A2F2F35392E33362E39362E  .byte 'h,'t,'t,'p,58,47,47,53,57,46,51,54,46,57,54,46
 0010 31393600          .byte 49,57,54,0
                        .area data(ram, con, rel)
 0014                   .dbfile E:\AVR应用实例\LCD20x4\LCD20x4.c
 0014           L29:
 0014                   .blkb 15
                        .area idata
 0014 2D2D2D2D2D5E5F5E2D2D2D2D2D2D00    .byte 45,45,45,45,45,94,95,94,45,45,45,45,45,45,0
                        .area data(ram, con, rel)
 0023                   .dbfile E:\AVR应用实例\LCD20x4\LCD20x4.c
 0023           L28:
 0023                   .blkb 15
                        .area idata
 0023 7777772E6F75726176722E636F6D00    .byte 'w,'w,'w,46,'o,'u,'r,'a,'v,'r,46,'c,'o,'m,0
                        .area data(ram, con, rel)
 0032                   .dbfile E:\AVR应用实例\LCD20x4\LCD20x4.c
 0032           L27:
 0032                   .blkb 15
                        .area idata
 0032 2D2D2D2D2D405F402D2D2D2D2D2D00    .byte 45,45,45,45,45,64,95,64,45,45,45,45,45,45,0
                        .area data(ram, con, rel)
 0041                   .dbfile E:\AVR应用实例\LCD20x4\LCD20x4.c

⌨️ 快捷键说明

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