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

📄 lcd_hg1286.lis

📁 基于ATmega8开发的关于医疗康复的机器人
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module LCD_HG1286.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\Work\Data\程序\修订版~1.1\LCD_HG1286.c
 0000                   .dbfunc e wr_com _wr_com fV
 0000           ;            cmd -> R10
                        .even
 0000           _wr_com::
 0000 AA92              st -y,R10
 0002 A02E              mov R10,R16
 0004                   .dbline -1
 0004                   .dbline 19
 0004           ; /*****************************************************
 0004           ; * File name      : LCD_HG1286.C
 0004           ; * Description    : Header file of  main_H.H
 0004           ; * Platform       : ICCAVR 
 0004           ; * Author         : xiao xue      
 0004           ; * Email          : ay1509@yahoo.com
 0004           ; * Date           : 2008-03-13
 0004           ; * Description    : LCD Show
 0004           ; /********************头文件*************************/
 0004           ; #include"main_H.h"
 0004           ; /***************写命令***************
 0004           ; *函    数:wr_com
 0004           ; *函数功能:写命令字
 0004           ; *入口参数:cmd
 0004           ; *返 回 值:无
 0004           ; *备    注:
 0004           ; ************************************/
 0004           ; void wr_com(uchar cmd)
 0004           ; {
 0004                   .dbline 20
 0004           ;       PORTB=cmd;                      //命令送至B端口
 0004 A8BA              out 0x18,R10
 0006                   .dbline 21
 0006           ;       RS_clear;               //写命令
 0006 AA98              cbi 0x15,2
 0008                   .dbline 22
 0008           ;       RW_clear;               //写使能        
 0008 AC98              cbi 0x15,4
 000A                   .dbline 23
 000A           ;       E_clear;                //模块使能
 000A AD98              cbi 0x15,5
 000C                   .dbline 24
 000C           ;       delay_nus(300);
 000C 0CE2              ldi R16,300
 000E 11E0              ldi R17,1
 0010 FFD1              rcall _delay_nus
 0012                   .dbline 25
 0012           ;       E_set;                          //关闭使能
 0012 AD9A              sbi 0x15,5
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 A990              ld R10,y+
 0016 0895              ret
 0018                   .dbsym r cmd 10 c
 0018                   .dbend
 0018                   .dbfunc e wr_date _wr_date fV
 0018           ;           data -> R10,R11
                        .even
 0018           _wr_date::
 0018 AA92              st -y,R10
 001A BA92              st -y,R11
 001C 5801              movw R10,R16
 001E                   .dbline -1
 001E                   .dbline 36
 001E           ; }
 001E           ; 
 001E           ; /*****************写数据**************
 001E           ; *函    数:wr_date
 001E           ; *函数功能:写数据
 001E           ; *入口参数:*data
 001E           ; *返 回 值:无
 001E           ; *备    注:
 001E           ; ************************************/
 001E           ; void wr_date(uchar *data)
 001E           ; {
 001E                   .dbline 37
 001E           ;       PORTB=*data;            //数据传至B端口
 001E F501              movw R30,R10
 0020 2080              ldd R2,z+0
 0022 28BA              out 0x18,R2
 0024                   .dbline 38
 0024           ;       RS_set;                 //写数据
 0024 AA9A              sbi 0x15,2
 0026                   .dbline 39
 0026           ;       RW_clear;               //写使能                
 0026 AC98              cbi 0x15,4
 0028                   .dbline 40
 0028           ;       E_clear;                //模块使能
 0028 AD98              cbi 0x15,5
 002A                   .dbline 41
 002A           ;       delay_nus(300);
 002A 0CE2              ldi R16,300
 002C 11E0              ldi R17,1
 002E F0D1              rcall _delay_nus
 0030                   .dbline 42
 0030           ;       E_set;                          //关闭使能
 0030 AD9A              sbi 0x15,5
 0032                   .dbline -2
 0032           L2:
 0032                   .dbline 0 ; func end
 0032 B990              ld R11,y+
 0034 A990              ld R10,y+
 0036 0895              ret
 0038                   .dbsym r data 10 pc
 0038                   .dbend
 0038                   .dbfunc e lcd_init _lcd_init fV
                        .even
 0038           _lcd_init::
 0038                   .dbline -1
 0038                   .dbline 52
 0038           ; }
 0038           ; /******************初始化**********
 0038           ; *函    数:lcd_init
 0038           ; *函数功能:液晶始化
 0038           ; *入口参数:无
 0038           ; *返 回 值:无
 0038           ; *备    注:
 0038           ; **********************************/
 0038           ; void lcd_init(void)
 0038           ; {     
 0038                   .dbline 53
 0038           ;       DDRB=0xff;
 0038 8FEF              ldi R24,255
 003A 87BB              out 0x17,R24
 003C                   .dbline 54
 003C           ;       DDRC=0xff;
 003C 84BB              out 0x14,R24
 003E                   .dbline 55
 003E           ;       PORTB=0XFF;
 003E 88BB              out 0x18,R24
 0040                   .dbline 56
 0040           ;       PORTC=0XFF;
 0040 85BB              out 0x15,R24
 0042                   .dbline 57
 0042           ;       wr_com(0x01);           //清DDRAM
 0042 01E0              ldi R16,1
 0044 DDDF              rcall _wr_com
 0046                   .dbline 58
 0046           ;       wr_com(0x30);           //功能设置,一次送8位数据(基本指令集)
 0046 00E3              ldi R16,48
 0048 DBDF              rcall _wr_com
 004A                   .dbline 59
 004A           ;       wr_com(0x02);           //DDRAM地址归位
 004A 02E0              ldi R16,2
 004C D9DF              rcall _wr_com
 004E                   .dbline 60
 004E           ;       wr_com(0x04);
 004E 04E0              ldi R16,4
 0050 D7DF              rcall _wr_com
 0052                   .dbline 61
 0052           ;       wr_com(0x0C);           //整体显示,游标off,游标位置off         
 0052 0CE0              ldi R16,12
 0054 D5DF              rcall _wr_com
 0056                   .dbline 62
 0056           ;       wr_com(0x80);           //设定DDRAM7位地址到地址计数器AC        
 0056 00E8              ldi R16,128
 0058 D3DF              rcall _wr_com
 005A                   .dbline -2
 005A           L3:
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbend
 005C                   .dbfunc e dis _dis fV
 005C           ;              k -> R10
 005C           ;          datas -> y+8
 005C           ;            sum -> R12
 005C           ;              h -> R14
                        .even
 005C           _dis::
 005C 00D0              rcall push_xgset30FC
 005E C22E              mov R12,R18
 0060 E02E              mov R14,R16
 0062                   .dbline -1
 0062                   .dbline 69
 0062           ; }
 0062           ; /******************显示数据******************
 0062           ; *h代表行数可取(1,2,3,4)
 0062           ; * SUM表示一次要显示汉字的总个数。(1--32)
 0062           ; ********************************************/
 0062           ; void dis(uchar h , uchar sum , uchar *datas )
 0062           ; { 
 0062                   .dbline 70
 0062           ;       unsigned char k=0; 
 0062 AA24              clr R10
 0064                   .dbline 71
 0064           ;       switch (h){                     //判断所要显示行
 0064 4E2D              mov R20,R14
 0066 5527              clr R21
 0068 4130              cpi R20,1
 006A E0E0              ldi R30,0
 006C 5E07              cpc R21,R30
 006E 69F0              breq L8
 0070           X0:
 0070 4230              cpi R20,2
 0072 E0E0              ldi R30,0
 0074 5E07              cpc R21,R30
 0076 61F0              breq L9
 0078           X1:
 0078 4330              cpi R20,3
 007A E0E0              ldi R30,0
 007C 5E07              cpc R21,R30
 007E 59F0              breq L10
 0080           X2:
 0080 4430              cpi R20,4
 0082 E0E0              ldi R30,0
 0084 5E07              cpc R21,R30
 0086 51F0              breq L11
 0088           X3:
 0088 14C0              rjmp L13
 008A           L8:
 008A                   .dbline 72
 008A           ;               case 1: wr_com(0x80);break;
 008A 00E8              ldi R16,128
 008C B9DF              rcall _wr_com
 008E                   .dbline 72
 008E 11C0              rjmp L13
 0090           L9:
 0090                   .dbline 73
 0090           ;               case 2: wr_com(0x90);break;
 0090 00E9              ldi R16,144
 0092 B6DF              rcall _wr_com
 0094                   .dbline 73
 0094 0EC0              rjmp L13
 0096           L10:
 0096                   .dbline 74
 0096           ;               case 3: wr_com(0x88);break;
 0096 08E8              ldi R16,136
 0098 B3DF              rcall _wr_com
 009A                   .dbline 74
 009A 0BC0              rjmp L13
 009C           L11:
 009C                   .dbline 75
 009C           ;               case 4: wr_com(0x98);break;
 009C 08E9              ldi R16,152
 009E B0DF              rcall _wr_com
 00A0                   .dbline 75
 00A0 08C0              rjmp L13
 00A2           L12:
 00A2                   .dbline 77
 00A2           ;     }//end switch 
 00A2           ;       while(k<=sum){          //显示数据个数
 00A2                   .dbline 78
 00A2           ;               wr_date(&(*(datas+k)));         //写入数据
 00A2 0A2D              mov R16,R10
 00A4 1127              clr R17
 00A6 0884              ldd R0,y+8
 00A8 1984              ldd R1,y+9
 00AA 000D              add R16,R0
 00AC 111D              adc R17,R1
 00AE B4DF              rcall _wr_date
 00B0                   .dbline 79
 00B0           ;               k++;
 00B0 A394              inc R10
 00B2                   .dbline 80
 00B2           ;     }//end while
 00B2           L13:
 00B2                   .dbline 77
 00B2 2C2C              mov R2,R12
 00B4 3324              clr R3
 00B6 4A2C              mov R4,R10
 00B8 5524              clr R5
 00BA 2414              cp R2,R4
 00BC 3504              cpc R3,R5
 00BE 8CF7              brge L12
 00C0           X4:
 00C0                   .dbline -2
 00C0           L4:
 00C0                   .dbline 0 ; func end
 00C0 00C0              rjmp pop_xgset30FC
 00C2                   .dbsym r k 10 c
 00C2                   .dbsym l datas 8 pc
 00C2                   .dbsym r sum 12 c
 00C2                   .dbsym r h 14 c
 00C2                   .dbend
 00C2                   .dbfunc e lcd_dis _lcd_dis fV
 00C2           ;          datac -> R20,R21
 00C2           ;              y -> R22
 00C2           ;              x -> R10
                        .even
 00C2           _lcd_dis::
 00C2 00D0              rcall push_xgsetF00C
 00C4 622F              mov R22,R18
 00C6 A02E              mov R10,R16
 00C8 4E81              ldd R20,y+6
 00CA 5F81              ldd R21,y+7
 00CC                   .dbline -1
 00CC                   .dbline 89
 00CC           ; } 
 00CC           ; /***********************定点显示数据*********************
 00CC           ; *LCD显示子程序(一次写入两个字节)
 00CC           ; *            x代表行数可取:1,2,3,4(十进制)
 00CC           ; *            y代表列数可取:0X0,0X1————0X7(十六进制) 
 00CC           ; *           *data代表显示数据
 00CC           ; ********************************************************/

⌨️ 快捷键说明

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