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

📄 lcd.lis

📁 基于AVR单片机的热电偶测量系统源码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0020 0895              ret
 0022                   .dbsym r bdata 16 c
 0022                   .dbend
 0022                   .dbfunc e Send_Command _Send_Command fV
 0022           ;          cdata -> R16
                        .even
 0022           _Send_Command::
 0022                   .dbline -1
 0022                   .dbline 69
 0022           ; }
 0022           ; 
 0022           ; 
 0022           ; void Send_Command(unsigned char cdata)
 0022           ; {    
 0022                   .dbline 70
 0022           ;          set_CS;
 0022 A99A              sbi 0x15,1
 0024                   .dbline 71
 0024           ;        set_RS;
 0024 AF9A              sbi 0x15,7
 0026                   .dbline 72
 0026           ;        set_WR;
 0026 959A              sbi 0x12,5
 0028                   .dbline 73
 0028           ;        _nop;               //开始发送命令
 0028 0000              nop
 002A                   .dbline 74
 002A           ;        PORTA = cdata;     //将命令字放在端口A
 002A 0BBB              out 0x1b,R16
 002C                   .dbline 75
 002C           ;        clr_RS;
 002C AF98              cbi 0x15,7
 002E                   .dbline 76
 002E           ;        clr_CS;
 002E A998              cbi 0x15,1
 0030                   .dbline 77
 0030           ;        _nop;
 0030 0000              nop
 0032                   .dbline 78
 0032           ;        clr_WR;
 0032 9598              cbi 0x12,5
 0034                   .dbline 79
 0034           ;        _nop;
 0034 0000              nop
 0036                   .dbline 80
 0036           ;        set_WR;
 0036 959A              sbi 0x12,5
 0038                   .dbline 81
 0038           ;        _nop;
 0038 0000              nop
 003A                   .dbline 82
 003A           ;        set_CS;
 003A A99A              sbi 0x15,1
 003C                   .dbline 83
 003C           ;        set_RS;
 003C AF9A              sbi 0x15,7
 003E                   .dbline -2
 003E           L2:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbsym r cdata 16 c
 0040                   .dbend
 0040                   .dbfunc e Gen_Column_MSB _Gen_Column_MSB fc
 0040           ;           temp -> R20
 0040           ;         column -> R16
                        .even
 0040           _Gen_Column_MSB::
 0040 0E940000          xcall push_gset1
 0044                   .dbline -1
 0044                   .dbline 89
 0044           ; }
 0044           ; 
 0044           ; 
 0044           ; 
 0044           ; unsigned char Gen_Column_MSB(unsigned char column)
 0044           ; {
 0044                   .dbline 91
 0044           ;     unsigned char temp; //用于保存列数的高4bit命令字
 0044           ;     temp = column+0x04 ;      
 0044 402F              mov R20,R16
 0046 4C5F              subi R20,252    ; addi 4
 0048                   .dbline 92
 0048           ;     temp = temp >>4;  //右移4位,得到高4位的列数据
 0048 842F              mov R24,R20
 004A 8295              swap R24
 004C 8F70              andi R24,#0x0F
 004E 482F              mov R20,R24
 0050                   .dbline 93
 0050           ;     temp |=0x10;   //00010000,将列地址的DB4置1
 0050 4061              ori R20,16
 0052                   .dbline 94
 0052           ;     return temp;
 0052 042F              mov R16,R20
 0054                   .dbline -2
 0054           L3:
 0054 0E940000          xcall pop_gset1
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym r temp 20 c
 005A                   .dbsym r column 16 c
 005A                   .dbend
 005A                   .dbfunc e Gen_Column_LSB _Gen_Column_LSB fc
 005A           ;           temp -> R20
 005A           ;         column -> R16
                        .even
 005A           _Gen_Column_LSB::
 005A 0E940000          xcall push_gset1
 005E                   .dbline -1
 005E                   .dbline 101
 005E           ; }
 005E           ; 
 005E           ; 
 005E           ; 
 005E           ; 
 005E           ; unsigned char Gen_Column_LSB(unsigned char column)
 005E           ; {
 005E                   .dbline 102
 005E           ;     unsigned char temp = column;
 005E 402F              mov R20,R16
 0060                   .dbline 103
 0060           ;     temp = column+0x04 ;      
 0060 4C5F              subi R20,252    ; addi 4
 0062                   .dbline 104
 0062           ;     temp &= 0x0f;     //取出column的低四位
 0062 4F70              andi R20,15
 0064                   .dbline 105
 0064           ;     return temp;
 0064 042F              mov R16,R20
 0066                   .dbline -2
 0066           L4:
 0066 0E940000          xcall pop_gset1
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbsym r temp 20 c
 006C                   .dbsym r column 16 c
 006C                   .dbend
 006C                   .dbfunc e Gen_Page _Gen_Page fc
 006C           ;           temp -> R20
 006C           ;           page -> R16
                        .even
 006C           _Gen_Page::
 006C 0E940000          xcall push_gset1
 0070                   .dbline -1
 0070                   .dbline 112
 0070           ; }
 0070           ; 
 0070           ; 
 0070           ; 
 0070           ; 
 0070           ; unsigned char Gen_Page(unsigned char page)
 0070           ; {
 0070                   .dbline 114
 0070           ;     unsigned char temp;
 0070           ;     temp = page & 0x0f;
 0070 402F              mov R20,R16
 0072 4F70              andi R20,15
 0074                   .dbline 115
 0074           ;     temp |= 0xb0;   //得到显示数据页的控制字
 0074 406B              ori R20,176
 0076                   .dbline 116
 0076           ;     return temp;
 0076 042F              mov R16,R20
 0078                   .dbline -2
 0078           L5:
 0078 0E940000          xcall pop_gset1
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbsym r temp 20 c
 007E                   .dbsym r page 16 c
 007E                   .dbend
 007E                   .dbfunc e Initial_LCD _Initial_LCD fV
                        .even
 007E           _Initial_LCD::
 007E                   .dbline -1
 007E                   .dbline 123
 007E           ; }
 007E           ; 
 007E           ; 
 007E           ; 
 007E           ; 
 007E           ; void Initial_LCD(void)
 007E           ; {
 007E                   .dbline 124
 007E           ;         Send_Command(0xe2);   //初始化内部功能(RESET),初始化初始显示线,列地址,页地址和普通
 007E 02EE              ldi R16,226
 0080 D0DF              xcall _Send_Command
 0082                   .dbline 126
 0082           ;                               //输出地址状态到初始状态,但是不能影响显示数据RAM的内容
 0082           ;           wait;                 //等待2个时钟周期
 0082 0000              nop
 0084 0000               nop
 0086                   .dbline 127
 0086           ;         Send_Command(0xaf);   //Display on
 0086 0FEA              ldi R16,175
 0088 CCDF              xcall _Send_Command
 008A                   .dbline 128
 008A           ;         Send_Command(0x23);   //internal voltage regulator resistor ratio,(4.5)0x23
 008A 03E2              ldi R16,35
 008C CADF              xcall _Send_Command
 008E                   .dbline 129
 008E           ;         Send_Command(0x2f);   //内部供电VC=VR=VF:111,使内部VC,VR,VF的电压控制电路工作
 008E 0FE2              ldi R16,47
 0090 C8DF              xcall _Send_Command
 0092                   .dbline 130
 0092           ;         Send_Command(0x40);   //初始化显示线在line address 0
 0092 00E4              ldi R16,64
 0094 C6DF              xcall _Send_Command
 0096                   .dbline 131
 0096           ;         Send_Command(0x81);   //设置参考电压模式对比度共64级  
 0096 01E8              ldi R16,129
 0098 C4DF              xcall _Send_Command
 009A                   .dbline 132
 009A           ;         Send_Command(0xa1);   
 009A 01EA              ldi R16,161
 009C C2DF              xcall _Send_Command
 009E                   .dbline 133
 009E           ;         Send_Command(0xa1);   
 009E 01EA              ldi R16,161
 00A0 C0DF              xcall _Send_Command
 00A2                   .dbline 134
 00A2           ;         Send_Command(0xa3);   //选择LCD偏置电压比率以驱动LCD,bias=1
 00A2 03EA              ldi R16,163
 00A4 BEDF              xcall _Send_Command
 00A6                   .dbline 135
 00A6           ;         Send_Command(0xa4);   //全亮显示,EON=0,normal display(不管显示RAM中有何数据)
 00A6 04EA              ldi R16,164
 00A8 BCDF              xcall _Send_Command
 00AA                   .dbline 136
 00AA           ;         Send_Command(0xb0);   //设置页地址为0
 00AA 00EB              ldi R16,176
 00AC BADF              xcall _Send_Command
 00AE                   .dbline 137
 00AE           ;         Send_Command(0x0c);   //选择COM(行地址)输出扫描方向,决定LCD驱动器的输出状态。SHL=0,normal direction(COM0-COM63)
 00AE 0CE0              ldi R16,12
 00B0 B8DF              xcall _Send_Command
 00B2                   .dbline 138
 00B2           ;         Send_Command(0xad);   //设置STATIC INDICATOR STATUS(SM=1,STATIC INDICATOR ON)
 00B2 0DEA              ldi R16,173
 00B4 B6DF              xcall _Send_Command
 00B6                   .dbline 139
 00B6           ;         Send_Command(0x03);   //STATUS OF STATIC INDICATOR OUTPUT ALWAYS ON
 00B6 03E0              ldi R16,3
 00B8 B4DF              xcall _Send_Command
 00BA                   .dbline -2
 00BA           L6:
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbend
 00BC                   .dbfunc e Clear_DDRAM _Clear_DDRAM fV
 00BC           ;   c_column_lsb -> R20
 00BC           ;   c_column_msb -> R20
 00BC           ;     start_page -> R22
 00BC           ;              j -> R20
 00BC           ;              i -> R12
 00BC           ;     c_page_end -> R10
 00BC           ;   c_page_start -> R12
                        .even
 00BC           _Clear_DDRAM::
 00BC 0E940000          xcall push_gset4
 00C0 A22E              mov R10,R18
 00C2 C02E              mov R12,R16
 00C4                   .dbline -1
 00C4                   .dbline 145
 00C4           ; }
 00C4           ; 
 00C4           ; 
 00C4           ; 
 00C4           ; void Clear_DDRAM(unsigned char c_page_start,unsigned char c_page_end)
 00C4           ; { 
 00C4                   .dbline 148
 00C4           ;       unsigned char i,j;
 00C4           ;       unsigned char start_page;   //用于存放清除的起始页数
 00C4           ;       unsigned char c_column_msb=0x10,c_column_lsb=0x04;  //清除的起始列为第4列
 00C4 40E1              ldi R20,16
 00C6                   .dbline 148
 00C6 44E0              ldi R20,4
 00C8                   .dbline 150
 00C8           ;       
 00C8           ;       start_page = Gen_Page(c_page_start);    //取得清除的起始页地址
 00C8 0C2D              mov R16,R12
 00CA D0DF              xcall _Gen_Page
 00CC 602F              mov R22,R16
 00CE                   .dbline 151
 00CE           ;       for(j=c_page_start;j<=c_page_end;j++)
 00CE 4C2D              mov R20,R12
 00D0 10C0              xjmp L11
 00D2           L8:
 00D2                   .dbline 152
 00D2           ;       {
 00D2                   .dbline 153
 00D2           ;       Send_Command(0x10);     //从第4列开始清除LCD显示的数据
 00D2 00E1              ldi R16,16
 00D4 A6DF              xcall _Send_Command
 00D6                   .dbline 154
 00D6           ;         Send_Command(0x04);
 00D6 04E0              ldi R16,4
 00D8 A4DF              xcall _Send_Command
 00DA                   .dbline 155
 00DA           ;         Send_Command(start_page);     //清除位置在第start_page页
 00DA 062F              mov R16,R22
 00DC A2DF              xcall _Send_Command
 00DE                   .dbline 156
 00DE           ;         for(i=0;i<=127;i++)
 00DE CC24              clr R12
 00E0 03C0              xjmp L15
 00E2           L12:
 00E2                   .dbline 157
 00E2                   .dbline 158
 00E2 0027              clr R16
 00E4 8DDF              xcall _Send_Byte
 00E6                   .dbline 159
 00E6           L13:
 00E6                   .dbline 156
 00E6 C394              inc R12
 00E8           L15:
 00E8                   .dbline 156
 00E8 8FE7              ldi R24,127
 00EA 8C15              cp R24,R12
 00EC D0F7              brsh L12
 00EE                   .dbline 160
 00EE 6395              inc R22
 00F0                   .dbline 161
 00F0           L9:
 00F0                   .dbline 151
 00F0 4395              inc R20
 00F2           L11:
 00F2                   .dbline 151
 00F2 A416              cp R10,R20
 00F4 70F7              brsh L8

⌨️ 快捷键说明

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