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

📄 12864-7920.lis

📁 12864-7902液晶驱动程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _12864-7920.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\wdd\MYDOCU~1\12864-7920液晶\12864-7920.c
 0000                   .dbfunc e s_ms _s_ms fV
 0000           ;             ms -> R16,R17
                        .even
 0000           _s_ms::
 0000                   .dbline -1
 0000                   .dbline 20
 0000           ; //12864液晶的试验程序,驱动芯片为ST7920
 0000           ; //目标板为DDC-16A
 0000           ; //驱动方式-并口
 0000           ; //JP10短路块位于右侧,JP1两个短路块均插好
 0000           ; //调节V0电位器调整对比度
 0000           ; //注意:因为厂家不同液晶的19脚和20脚(背光)有时会不同,导致背光不亮,需要注意。
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <string.h>
 0000           ; 
 0000           ; #define uchar unsigned char 
 0000           ; #define uint unsigned int 
 0000           ; 
 0000           ; #define RS (1<<5)
 0000           ; #define RW (1<<6)
 0000           ; #define EN (1<<7)
 0000           ; 
 0000           ; //延时函数
 0000           ; void s_ms(uint ms)
 0000           ; {
 0000                   .dbline 21
 0000           ;       for(;ms>1;ms--);
 0000 02C0              xjmp L5
 0002           L2:
 0002                   .dbline 21
 0002           L3:
 0002                   .dbline 21
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L5:
 0006                   .dbline 21
 0006 81E0              ldi R24,1
 0008 90E0              ldi R25,0
 000A 8017              cp R24,R16
 000C 9107              cpc R25,R17
 000E C8F3              brlo L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r ms 16 i
 0012                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\wdd\MYDOCU~1\12864-7920液晶\12864-7920.c
 0000           _text_1::
 0000                   .blkb 15
                        .area idata
 0000 B1B1BEA9B6ABBFD8BFAAB7A2B0E500    .byte 177,177,190,169,182,171,191,216,191,170,183,162,176,229,0
                        .area data(ram, con, rel)
 000F                   .dbfile C:\DOCUME~1\wdd\MYDOCU~1\12864-7920液晶\12864-7920.c
 000F                   .dbsym e text_1 _text_1 A[15:15]c
 000F           _text_2::
 000F                   .blkb 14
                        .area idata
 000F 5757572E49534D43552E434F4D00      .byte 'W,'W,'W,46,'I,'S,'M,'C,'U,46,'C,'O,'M,0
                        .area data(ram, con, rel)
 001D                   .dbfile C:\DOCUME~1\wdd\MYDOCU~1\12864-7920液晶\12864-7920.c
 001D                   .dbsym e text_2 _text_2 A[14:14]c
 001D           _text_3::
 001D                   .blkb 15
                        .area idata
 001D 5744445F434E403132362E434F4D00    .byte 'W,'D,'D,95,'C,'N,64,49,50,54,46,'C,'O,'M,0
                        .area data(ram, con, rel)
 002C                   .dbfile C:\DOCUME~1\wdd\MYDOCU~1\12864-7920液晶\12864-7920.c
 002C                   .dbsym e text_3 _text_3 A[15:15]c
 002C           _text_4::
 002C                   .blkb 10
                        .area idata
 002C 51513A36323135323000      .byte 'Q,'Q,58,54,50,49,53,50,48,0
                        .area data(ram, con, rel)
 0036                   .dbfile C:\DOCUME~1\wdd\MYDOCU~1\12864-7920液晶\12864-7920.c
 0036                   .dbsym e text_4 _text_4 A[10:10]c
                        .area text(rom, con, rel)
 0012                   .dbfile C:\DOCUME~1\wdd\MYDOCU~1\12864-7920液晶\12864-7920.c
 0012                   .dbfunc e WriteDataLCM _WriteDataLCM fV
 0012           ;          WDLCM -> R10
                        .even
 0012           _WriteDataLCM::
 0012 AA92              st -y,R10
 0014 A02E              mov R10,R16
 0016                   .dbline -1
 0016                   .dbline 32
 0016           ; }     
 0016           ; 
 0016           ; //此处定义字符串
 0016           ; char text_1[]={"北京东控开发板"};
 0016           ; char text_2[]={"WWW.ISMCU.COM"};
 0016           ; char text_3[]={"WDD_CN@126.COM"};
 0016           ; char text_4[]={"QQ:621520"};
 0016           ; 
 0016           ; //写数据
 0016           ; void WriteDataLCM(unsigned char WDLCM)
 0016           ; {
 0016                   .dbline 34
 0016           ;       //ReadStatusLCM(); //检测忙
 0016           ;       s_ms(100);
 0016 04E6              ldi R16,100
 0018 10E0              ldi R17,0
 001A F2DF              xcall _s_ms
 001C                   .dbline 35
 001C           ;       PORTA|=RS;       //RS=1    
 001C DD9A              sbi 0x1b,5
 001E                   .dbline 36
 001E           ;       s_ms(100);
 001E 04E6              ldi R16,100
 0020 10E0              ldi R17,0
 0022 EEDF              xcall _s_ms
 0024                   .dbline 37
 0024           ;       PORTA&=~RW;      //RW=0
 0024 DE98              cbi 0x1b,6
 0026                   .dbline 38
 0026           ;       s_ms(100);
 0026 04E6              ldi R16,100
 0028 10E0              ldi R17,0
 002A EADF              xcall _s_ms
 002C                   .dbline 39
 002C           ;       PORTA|=EN;       //EN=1
 002C DF9A              sbi 0x1b,7
 002E                   .dbline 40
 002E           ;       s_ms(100);
 002E 04E6              ldi R16,100
 0030 10E0              ldi R17,0
 0032 E6DF              xcall _s_ms
 0034                   .dbline 41
 0034           ;       PORTD=WDLCM;     //输出数据
 0034 A2BA              out 0x12,R10
 0036                   .dbline 42
 0036           ;       s_ms(100);
 0036 04E6              ldi R16,100
 0038 10E0              ldi R17,0
 003A E2DF              xcall _s_ms
 003C                   .dbline 43
 003C           ;       PORTA&=~EN;      //EN=0
 003C DF98              cbi 0x1b,7
 003E                   .dbline 44
 003E           ;       s_ms(100);
 003E 04E6              ldi R16,100
 0040 10E0              ldi R17,0
 0042 DEDF              xcall _s_ms
 0044                   .dbline -2
 0044           L6:
 0044                   .dbline 0 ; func end
 0044 A990              ld R10,y+
 0046 0895              ret
 0048                   .dbsym r WDLCM 10 c
 0048                   .dbend
 0048                   .dbfunc e WriteCommandLCM _WriteCommandLCM fV
 0048           ;          WCLCM -> R10
                        .even
 0048           _WriteCommandLCM::
 0048 AA92              st -y,R10
 004A A02E              mov R10,R16
 004C                   .dbline -1
 004C                   .dbline 49
 004C           ; }
 004C           ; 
 004C           ; //写指令
 004C           ; void WriteCommandLCM(unsigned char WCLCM) 
 004C           ; {
 004C                   .dbline 51
 004C           ;       //ReadStatusLCM(); //根据需要检测忙
 004C           ;       s_ms(100);
 004C 04E6              ldi R16,100
 004E 10E0              ldi R17,0
 0050 D7DF              xcall _s_ms
 0052                   .dbline 52
 0052           ;       PORTA&=~RS;      //RS=0
 0052 DD98              cbi 0x1b,5
 0054                   .dbline 53
 0054           ;       s_ms(100);
 0054 04E6              ldi R16,100
 0056 10E0              ldi R17,0
 0058 D3DF              xcall _s_ms
 005A                   .dbline 54
 005A           ;       PORTA&=~RW;      //RW=0
 005A DE98              cbi 0x1b,6
 005C                   .dbline 55
 005C           ;       s_ms(100);
 005C 04E6              ldi R16,100
 005E 10E0              ldi R17,0
 0060 CFDF              xcall _s_ms
 0062                   .dbline 56
 0062           ;       PORTA|=EN;       //EN=1
 0062 DF9A              sbi 0x1b,7
 0064                   .dbline 57
 0064           ;       s_ms(100);
 0064 04E6              ldi R16,100
 0066 10E0              ldi R17,0
 0068 CBDF              xcall _s_ms
 006A                   .dbline 58
 006A           ;       PORTD=WCLCM;     //输出指令
 006A A2BA              out 0x12,R10
 006C                   .dbline 59
 006C           ;       s_ms(100);
 006C 04E6              ldi R16,100
 006E 10E0              ldi R17,0
 0070 C7DF              xcall _s_ms
 0072                   .dbline 60
 0072           ;       PORTA&=~EN;      //EN=0
 0072 DF98              cbi 0x1b,7
 0074                   .dbline 61
 0074           ;       s_ms(100);
 0074 04E6              ldi R16,100
 0076 10E0              ldi R17,0
 0078 C3DF              xcall _s_ms
 007A                   .dbline -2
 007A           L7:
 007A                   .dbline 0 ; func end
 007A A990              ld R10,y+
 007C 0895              ret
 007E                   .dbsym r WCLCM 10 c
 007E                   .dbend
 007E                   .dbfunc e ReadStatusLCM _ReadStatusLCM fV
 007E           ;           flag -> R20
 007E           ;           temp -> R10
                        .even
 007E           _ReadStatusLCM::
 007E AA92              st -y,R10
 0080 4A93              st -y,R20
 0082                   .dbline -1
 0082                   .dbline 66
 0082           ; }
 0082           ; 
 0082           ; //读状态:检测忙
 0082           ; void ReadStatusLCM(void)
 0082           ; {
 0082                   .dbline 68
 0082           ;       uchar temp;
 0082           ;     uchar flag = 1;
 0082 41E0              ldi R20,1
 0084 2AC0              xjmp L10
 0086           L9:
 0086                   .dbline 70
 0086           ;     while(flag==1)
 0086           ;       {
 0086                   .dbline 71
 0086           ;           DDRD=0x00;      //端口A改为输入
 0086 2224              clr R2
 0088 21BA              out 0x11,R2
 008A                   .dbline 72
 008A           ;               PORTD=0xff;    
 008A 8FEF              ldi R24,255
 008C 82BB              out 0x12,R24
 008E                   .dbline 73
 008E           ;               s_ms(100);
 008E 04E6              ldi R16,100
 0090 10E0              ldi R17,0
 0092 B6DF              xcall _s_ms
 0094                   .dbline 74
 0094           ;               PORTA&=~RS;     //RS=0
 0094 DD98              cbi 0x1b,5
 0096                   .dbline 75
 0096           ;               s_ms(100);
 0096 04E6              ldi R16,100
 0098 10E0              ldi R17,0
 009A B2DF              xcall _s_ms
 009C                   .dbline 76
 009C           ;               PORTA|=RW;      //RW=1
 009C DE9A              sbi 0x1b,6
 009E                   .dbline 77
 009E           ;               s_ms(100);
 009E 04E6              ldi R16,100
 00A0 10E0              ldi R17,0
 00A2 AEDF              xcall _s_ms
 00A4                   .dbline 78
 00A4           ;               PORTA|=EN;      //EN=1
 00A4 DF9A              sbi 0x1b,7
 00A6                   .dbline 79
 00A6           ;               s_ms(1000);
 00A6 08EE              ldi R16,1000
 00A8 13E0              ldi R17,3
 00AA AADF              xcall _s_ms
 00AC                   .dbline 80
 00AC           ;               temp = PIND;    //读端口A
 00AC A0B2              in R10,0x10
 00AE                   .dbline 81
 00AE           ;               s_ms(1000);
 00AE 08EE              ldi R16,1000
 00B0 13E0              ldi R17,3
 00B2 A6DF              xcall _s_ms
 00B4                   .dbline 82
 00B4           ;               DDRD=0xff;      //端口A改为
 00B4 8FEF              ldi R24,255
 00B6 81BB              out 0x11,R24

⌨️ 快捷键说明

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